* nonguix/multiarch-container.scm (make-internal-script): Symlink all
available Vulkan layers.
Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
* 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>
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.
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.
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).
* 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".
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>
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.
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.
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.
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.
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.
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.
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>
* 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>