Commit graph

58 commits

Author SHA1 Message Date
Attila Lendvai
99574ff94b
nonguix: binary-build-system: Print the patchelf version.
* nonguix/build/binary-build-system.scm (patchelf): Output patchelf version.

Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
2024-11-10 16:46:13 -05:00
John Kehayias
f82534a8a8
build-system: binary: Add comment about patchelf version.
This is a followup to commit c7e6962eb3.

* nonguix/build-system/binary.scm (default-patchelf): Add comment and TODO
about using older patchelf-0.16 due to upstream bug.

Reported-by: Attila Lendvai <attila@lendvai.name>
2024-11-10 16:24:17 -05:00
Hilton Chain
c7e6962eb3
build-system: binary: Use patchelf-0.16 by default.
Newer patchelf may break binaries.

This commit replaces patchelf with patchelf-0.16 for binary-build-system and
nvidia-driver (known affected package).

Fixes: https://gitlab.com/nonguix/nonguix/-/issues/350

* nonguix/build-system/binary.scm (default-patchelf): Replace patchelf with
patchelf-0.16.
* nongnu/packages/nvidia.scm (nvidia-driver)[native-inputs]: Likewise.

Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
2024-11-10 16:11:07 -05:00
Ashish SHUKLA
ea84538b88
nonguix: binary: Improve .deb unpacking.
.deb could contain data.tar compressed in any format, not just .xz as it
assumes now.

* nonguix/build/binary-build-system (unpack-deb): find a data.tar archive to
extract.

Signed-off-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
2024-10-02 23:25:02 +02:00
Yelninei
877ed8cc4e
build-system/chromium-binary: Remove references to source.
Previously the resulting store object would also depend on the source.

* nonguix/build-system/chromium-binary.scm (lower): Remove reference to source
in #:wrap-inputs.

Signed-off-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
Tested-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
2024-06-21 16:05:24 +02:00
Giacomo Leidi
62daa38457
nonguix: chromium-binary: Use search-path-as-list from (guix build utils).
We rely on the upstream implementation to avoid duplicating effort.

* nonguix/build/chromium-binary-build-system (install-wrapper): Use
search-path-as-list;
* nonguix/build/utils.scm (build-paths-for-input): remove variable;
(build-paths-from-inputs): remove variable.

Signed-off-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
2024-03-30 19:50:51 +01:00
Hilton Chain
5c33acaaa5
nonguix: multiarch-container: Link fonts to /usr/share/fonts.
* nonguix/multiarch-container.scm (make-internal-script): Link fonts to
/usr/share/fonts.

Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
2024-03-22 21:14:25 -04:00
Hilton Chain
cd07617047
nonguix: multiarch-container: Expose /etc/os-release.
* nonguix/multiarch-container.scm (make-container-wrapper): Expose
/etc/os-release.

Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
2024-03-22 21:14:23 -04:00
Hilton Chain
556057f333
nonguix: multiarch-container: Preserve TZ and TZDIR.
* nonguix/multiarch-container.scm (make-container-wrapper): Preserve TZ and TZDIR.

Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
Co-authored-by: John Kehayias <john.kehayias@protonmail.com>
2024-03-22 21:14:18 -04:00
Hilton Chain
e54439a302
multiarch-container: make-internal-script: Add VDPAU paths to LD_LIBRARY_PATH.
* nonguix/multiarch-container.scm (make-container-wrapper): Don't set
VDPAU_DRIVER_PATH.
(make-internal-script): Add VDPAU paths to LD_LIBRARY_PATH.

Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
2024-03-22 21:08:42 -04:00
Hilton Chain
2d8de496b1
multiarch-container: make-container-wrapper: Set LIBVA_DRIVERS_PATH.
* nonguix/multiarch-container.scm (make-container-wrapper): Set
LIBVA_DRIVERS_PATH and preserve it.

Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
2024-03-22 21:08:41 -04:00
Hilton Chain
09151acd73
nonguix: multiarch-container: Share Wayland environment.
* nonguix/multiarch-container.scm (make-container-wrapper): Preserve environment
variables and share socket for Wayland.

Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
2024-03-22 21:08:39 -04:00
Hilton Chain
8c08d0bbe5
nonguix: multiarch-container: Symlink EGL configurations.
* nonguix/multiarch-container.scm (make-internal-script): Symlink EGL
configurations.

Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
2024-03-22 21:08:38 -04:00
Hilton Chain
1c419ee1a8
nonguix: multiarch-container: Symlink all available Vulkan layers.
* nonguix/multiarch-container.scm (make-internal-script): Symlink all
available Vulkan layers.

Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
2024-03-22 21:08:36 -04:00
Hilton Chain
3cebd9c77b
multiarch-container: make-internal-script: Improve icd-symlink.
* nonguix/multiarch-container.scm (make-internal-script)[icd-symlink]: Allow
custom directory.
Rename to…
[file-symlink]: …this.
[get-files]: New procedure to simplify find-files use.

Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
2024-03-22 21:08:35 -04:00
Michal Atlas
729ee6b62a
nongnu: multiarch-container: Fix preserved-env not being used.
* nonguix/multiarch-container.scm (make-container-wrapper): Use
ngc-preserved-env.

Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
Co-authored-by: John Kehayias <john.kehayias@protonmail.com>
2024-01-31 15:33:42 -05:00
John Kehayias
8078757b88
nonguix: multiarch-container: Allow extra shared directories.
Basic fix for #237.

This allows exposing other directories or drives to the nonguix container, for
example to add additional library locations to Steam, by setting
$GUIX_SANDBOX_EXTRA_SHARES.

* nonguix/multiarch-container.scm (make-container-wrapper): Use environment
variable $GUIX_SANDBOX_EXTRA_SHARES to pass extra directories to share with
the container.
2024-01-10 11:57:37 -05:00
John Kehayias
1f91ecd3c0
nonguix: multiarch-container: Set LD_LIBRARY_PATH inside container.
Fixes #303.

Previously LD_LIBRARY_PATH was being set before the container was launched,
which could cause issues on some foreign distros where this alters what is
loaded from an FHS structure.  This was only meant to be set inside the
container, though this didn't cause any issues on a Guix System.

* nonguix/multiarch-container.scm (make-container-wrapper): Move setting
LD_LIBRARY_PATH from here ...
(make-internal-script): ... to here.
2024-01-06 17:01:18 -05:00
John Kehayias
7dd68696a2
nongnu: multiarch-container: Fix missing module on foreign distros.
Fixes #277.

See discussion in above issue for details and some education on what went
wrong here.  In short, we didn't capture the needed (guix build utils) module
in the container script.  On a Guix System this didn't cause any problems as
guix modules are found through set Guile environment variables.  But on a
foreign distro these weren't set without hacky workarounds.  This prevented
Steam from launching with a "no code for module" error.

* nonguix/multiarch-container.scm (make-container-wrapper)[make-container-wrapper]:
Use 'with-imported-modules' for (guix build utils).
2024-01-04 21:01:33 -05:00
Giacomo Leidi
a328f6c91f
nonguix: binary: Cleanup when an unknown binary extension is detected.
The binary-unpack phase suffered from a problem for unknown binary file
extensions, see: !336 (comment 1709385147) . This patch fixes the
incorrect behavior by effectively restoring the state of the directory
tree before the phase.

* nonguix/build/binary-build-system.scm (binary-unpack): Restore the
environment as it was before this phase.
* nongnu/packages/clojure.scm (clj-kondo)[arguments]: No longer delete
'binary-unpack phase.
* nongnu/packages/game-development.scm (libsteam)[arguments]: dito.

Signed-off-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
2024-01-04 23:19:53 +01:00
John Kehayias
e823034e40
nongnu: Add heroic.
* nongnu/packages/game-client.scm (heroic-client, heroic-extra-client-libs,
heroic-container, heroic-nvidia-container, heroic, heroic-nvidia): New
variables.
* nonguix/multi-arch-container.scm (make-container-wrapper): Preserve "^SSL_"
for heroic to use curl.
(make-internal-script): Add symlink for "/usr/share/glib-2.0".
2024-01-03 23:02:39 -05:00
Timo Wilken
07b884a7b1
nongnu: steam-nvidia: Fix launching .desktop files.
Steam installs .desktop files that refer to an executable called `steam'.
Installing steam-nvidia as the `steam-nvidia' executable breaks this, which
means Steam cannot be launched from its desktop icon.  This also applies to
.desktop files for individual games generated by Steam, when they are copied
from `<ngc-sandbox-home>/.local/share/applications/'.

Fix this by always installing Steam's wrapper executable as `steam'.  We add a
new field using "binary" to keep things shorter.

This has the downside that the `steam' and `steam-nvidia' packages cannot be
installed in the same profile, but likely people wouldn't want to do this
anyway.

Fixes #294.

* nongnu/packages/steam-client.scm (steam-nvidia-container)[binary-name]:
Specify for compatibility with .desktop files.
* nonguix/multiarch-container.scm (<nonguix-container>)[binary-name,
ngc-binary-name]: New field and accessor.
(nonguix-container->package): Use it to set correct executable name.
(make-internal-script): Use it in message.

Co-authored-by: John Kehayias <john.kehayias@protonmail.com>
Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
2024-01-03 17:24:44 -05:00
Giacomo Leidi
00e0b5f319
nonguix: binary: Automatically detect and unpack .deb files.
A new binary-unpack phase is added to the binary-build-system. When a
supported binary file is detected as the only file after the unpack
phase it is then decompressed in a specific directory.

* nonguix/build/binary-build-system.scm (deb-file?): new variable;
(unpack-deb): new variable;
(binary-unpack): new variable;
(%standard-phases): use the new phase.

Signed-off-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
2023-12-28 23:41:04 +01:00
John Kehayias
c398116f34
nonguix: multiarch-container: Make locale usable by pressure-vessel.
Steam's pressure-vessel startup time can be improved by not having to generate
locales.  So make sure locales are in and used by the pressure-vessel
container by linking the expected location of /usr/lib/locale (presumably so
that pressure-vessel will capture them) and setting $GUIX_LOCPATH.

* nonguix/multiarch-container.scm (make-container-wrapper): Preserve and set
GUIX_LOCPATH.
(make-internal-script): Add symlink for /usr/lib/locale.
2023-11-11 20:56:22 -05:00
John Kehayias
f89556c74c
nonguix: multiarch-container: Preserve MANGOHUD.
Now one can have set MANGOHUD=1 in their environment to have all Steam games
launch with MangoHud, rather than always setting this per game launch
settings.  Likewise for MANGOHUD_CONFIG for configuration.

* nonguix/multiarch-container.scm (make-container-wrapper): Preserve MANGOHUD
environment variables.
2023-11-11 20:56:16 -05:00
John Kehayias
3e698c64a8
nonguix: multiarch-container: Set LD_LIBRARY_PATH (for steam).
Setting $LD_LIBRARY_PATH in the container allows for non-Steam games added to
Steam to launch properly with Proton.  Otherwise they don't make it to the
pressure-vessel container as it seems they start in an environment where the
rest of our setup is not active (e.g. game will fail to launch with an error
about being unable to load libGL.so.1).

* nonguix/multiarch-container.scm (make-container-wrapper): Preserve
LD_LIBRARY_PATH and set it.
2023-11-11 20:56:10 -05:00
John Kehayias
a36cce8028
nonguix: multiarch-container: Remove pressure-vessel workaround.
Setting $PRESSURE_VESSEL_FILESYSTEMS_RO to "/gnu/store" is no longer needed
for Steam as the fix has been merged upstream.  Users can still set this
environment variable (preserved in the container) if needed.

* nonguix/multiarch-container.scm (make-container-wrapper): Remove setting
$PRESSURE_VESSEL_FILESYSTEMS_RO.
2023-11-11 20:56:03 -05:00
John Kehayias
14656d642d
nongnu: steam: Fix to work with newer mangohud.
In 0.7.0 of MangoHud the vulkan implicit layers have different names for 32-
and 64-bit so we no longer need a workaround.

* nonguix/multiarch-container.scm (make-internal-script): No longer create
/usr/share/vulkan/implicit_layer.d.  Symlink instead directly from guix-env.
Remove vulkan layer renaming from mangohud.
2023-10-14 17:09:28 -04:00
John Kehayias
e2aa9e56d4
nongnu: steam: Fix missing tray icon.
Finally, it's back!  Using something like snixembed worked around this before
by using a different tray icon format.

* nongnu/packages/steam-client.scm (steam-client-libs): Add gdk-pixbuf.
* nonguix/multiarch-container.scm (make-internal-script): Add symlink to
/usr/share/mime.
2023-09-03 22:40:05 -04:00
John Kehayias
9ef308959e
nonguix: chromium-binary-build-system: Use gcc:lib.
Effectively reverts changes that came from
9d58bb6e3e which doesn't seem to be needed
anymore.  These got carried into chromium-binary-build-system when it was
introduced.  We need libstdc++ from the gcc:lib package, which is hidden from
users but directly accessible from the build system.  The library from
make-libstdc++ has missing symbols compared to the one from gcc:lib.  The
addition of libgccjit seems to also be unneeded from this change and increases
the closure of e.g. signal-desktop by nearly 10% or 200 MiB.

Fixes #276 and #279.

* nonguix/build-system/chromium-binary.scm (lower)[host-inputs]: Use gcc:lib
again and remove libgccjit.
2023-09-03 11:26:26 -04:00
John Kehayias
c61c094e76
nongnu: steam: Allow workaround of white box bug.
See <https://gitlab.com/nonguix/nonguix/-/issues/267> and <https://github.com/ValveSoftware/steam-for-linux/issues/9306>.

* nonguix/multiarch-container.scm (make-container-wrapper): Preserve
QT_X11_NO_MITSHM to allow setting to 1 to workaround an upstream bug where
only a white box is displayed.
2023-07-15 15:51:08 -04:00
Giacomo Leidi
f2970727de
nonguix: Add chromium-binary-build-system.
This build system is an extension to the binary-build-system, designed
to abstract some common boilerplate necessary for packaging Chromium
based software.

* nonguix/build-system/chromium-binary.scm: New file;
* nonguix/build/chromium-binary-build-system.scm: new file;
* nonguix/build/utils.scm (build-paths-for-input): new variable;
(build-paths-from-inputs): New variable.

Signed-off-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
2023-07-12 23:18:05 +02:00
John Kehayias
ef015aecf7
nonguix: glibc-for-fhs: Remove variable.
* nonguix/multiarch-container.scm (glibc-for-fhs): Remove.
(fhs-min-libs): Use upstream glibc-for-fhs.
2023-06-29 14:16:12 -04:00
Elijah Malaby
c323f4c866
nongnu: Export steam containers and minor refactor.
nonguix: Make container actually respect the ngc-shared and ngc-exposed fields.

* nongnu/packages/steam-client.scm (steam-container): New variable.  This is to
export the container definition from steam.
(steam-nvidia-container): New variable.  This is the container for steam-nvidia
and now inherits from steam-container.
(steam, steam-nvidia): Container definitions moved to steam-container and
steam-nvidia-container.
* nonguix/multiarch-container.scm (make-container-wrapper): Add ngc-exposed and
ngc-shared to expose and share lists.

Signed-off-by: ison <ison@airmail.cc>
2023-05-29 22:39:12 -06:00
Attila Lendvai
5bc3c9da84
nonguix: Remove unnecessary modules from multiarch-container scripts.
* nonguix/multiarch-container.scm (packages->ld.so.conf)[computed-file]: Remove
with-imported-modules and use-modules.
(make-container-wrapper)[program-file]: Remove with-imported-modules.

Signed-off-by: ison <ison@airmail.cc>
2023-05-29 20:16:11 -06:00
Giacomo Leidi
87c9cdaeda
nonguix: Move nonguix-container to its own module.
* nonguix/multiarch-container.scm: New file. This module makes the container
code from steam-client.scm usable by other packages which require multiarch
support (which is not currently supported by the upstream Guix FHS container).

Signed-off-by: ison <ison@airmail.cc>
2023-05-15 03:45:30 -06:00
Jonathan Brielmaier
71252d2d9d
nonguix: Add missing copyright line.
This is a follow up to daa0dda76d.

* nonguix/utils.scm: Add missing copyright line for myself.
2022-12-19 17:25:05 +01:00
Jonathan Brielmaier
62a5df4222
*.scm: Use SPDX license identifiers.
Fixes https://gitlab.com/nonguix/nonguix/-/issues/224

* *.scm: Use SPDX license identifier and remove obsolete license
statement.
2022-12-19 17:17:39 +01:00
Guillaume Le Vaillant
c90d321972
nonguix: binary-build-system: Fix use of undefined variable.
Follow up to a0079cf1bd.

* nonguix/build/binary-build-system.scm (patchelf)[make-rpath]: Use 'name'
  instead of undefined 'input-or-output'.

Signed-off-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
2022-06-18 13:03:42 +02:00
Jonathan Brielmaier
399b277e82
nonguix: binary-build-system: Add copyright header for Attila.
Follow up to a0079cf1bd.
2022-05-05 23:20:58 +02:00
Attila Lendvai
a0079cf1bd
nonguix: Extend patchelf-plan syntax with optional path.
Makes it possible to define entries like the following in the patchelf-plan:
("the-binary" ("glibc" ("nss" "/lib/nss")))

* nonguix/build/binary-build-system.scm (maybe-make-rpath, make-rpath):
New functions and use them.

Signed-off-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
2022-05-05 23:14:30 +02:00
Jelle Licht
c736f26fae
nonguix: Update binary build system to pass sources.
* nonguix/build-system/binary.scm (lower): Remove #:source from
  'private-keywords'.
2021-12-13 23:07:52 +01:00
Josselin Poiret
7b13acb514
nonguix: Update binary build system to return a monadic procedure.
Fixes https://gitlab.com/nonguix/nonguix/-/issues/146.

* nonguix/build-system/binary.scm (binary-build): Update it.

Signed-off-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
2021-12-13 23:06:01 +01:00
Jonathan Brielmaier
daa0dda76d
nongnu: Adapt linux-initrd to populate-store changes.
Fixes https://gitlab.com/nonguix/nonguix/-/issues/81.
Reported-by: Jean-Baptiste Volatier.

Depends on https://git.savannah.gnu.org/cgit/guix.git/commit/?id=d88ff09.

* nonguix/modules.scm (import-nonguix-module?): New variable. Export it
instead of nonguix-module-name?.
* nongnu/system/linux-initrd.scm (microcode-initrd): Use
import-nonguix-module? instead of nonguix-module-name?.
(combined-initrd): Dito.
2020-12-22 12:56:25 +01:00
Julien Lepiller
1f61e376ce
nonguix: Allow disabling passing $0 in make-wrapper.
* nonguix/build/utils.scm (make-wrapper): Add skip-argument-0? keyword.
2020-07-02 15:50:51 +02:00
Pierre Neidhardt
12210f2393 utils: Remove 'make-desktop-entry-file' function now that it's upstream.
* nonguix/build/utils.scm (make-desktop-entry-file): Remove function.
2020-06-22 17:43:31 +02:00
Pierre Neidhardt
da95ca97d4 nonguix: Set default build-inputs priority higher than libc32 in binary-build-system.
* nonguix/build-system/binary.scm (lower): Swap native-inputs and libc32 in
  build-inputs.  In particular, this fixes static linking with GCC.
2020-05-17 14:36:27 +02:00
Pierre Neidhardt
4a4043db04 nonguix: Don't rename to32 package to avoid useless rebuilds.
* nonguix/utils.scm (to32): Reuse inherited `name' field.
2020-05-15 21:23:23 +02:00
Julien Lepiller
c9d1ea0ad3 nonguix: Use name when provided in unredistributable-url-fetch.
* nonguix/download.scm (unredistributable-url-fetch): Use name when
provided.
2020-03-13 00:30:35 +01:00
Pierre Neidhardt
39fecacaef nonguix: Use the install-plan of the copy-build-system in the binary-build-system.
* nonguix/build-system/binary.scm (lower): Adapt the default value of the
  install plan.
* nonguix/build/binary-build-system.scm (new-install): New procedure.
(old-install): Rename former `install' procedure to this.
(install): New procedure that dispatches over old-install and new-install.
2020-02-29 10:42:35 +01:00