From c323f4c866cdf7c9fb958ed968b80e0911ecd899 Mon Sep 17 00:00:00 2001 From: Elijah Malaby Date: Mon, 29 May 2023 22:39:12 -0600 Subject: 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 --- nongnu/packages/steam-client.scm | 82 ++++++++++++++++------------------------ nonguix/multiarch-container.scm | 7 +++- 2 files changed, 37 insertions(+), 52 deletions(-) diff --git a/nongnu/packages/steam-client.scm b/nongnu/packages/steam-client.scm index f3cb184..b8c8de3 100644 --- a/nongnu/packages/steam-client.scm +++ b/nongnu/packages/steam-client.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2021 Kozo ;;; Copyright © 2021, 2022 John Kehayias ;;; Copyright © 2023 Giacomo Leidi +;;; Copyright © 2023 Elijah Malaby (define-module (nongnu packages steam-client) #:use-module ((guix licenses) #:prefix license:) @@ -163,59 +164,40 @@ (define steam-ld.so.cache (ld.so.conf->ld.so.cache steam-ld.so.conf)) -(define-public steam - (nonguix-container->package - (nonguix-container - (name "steam") - (wrap-package steam-client) - (run "/bin/steam") - (ld.so.conf steam-ld.so.conf) - (ld.so.cache steam-ld.so.cache) - (union64 - (fhs-union `(,@steam-client-libs - ,@steam-gameruntime-libs - ,@fhs-min-libs) - #:name "fhs-union-64")) - (union32 - (fhs-union `(,@steam-client-libs - ,@steam-gameruntime-libs - ,@fhs-min-libs) - #:name "fhs-union-32" - #:system "i686-linux")) - (link-files '("share/applications/steam.desktop" - "share/applications/steam-asound32.desktop")) - (description "Steam is a digital software distribution platform created by +(define-public steam-container + (nonguix-container + (name "steam") + (wrap-package steam-client) + (run "/bin/steam") + (ld.so.conf steam-ld.so.conf) + (ld.so.cache steam-ld.so.cache) + (union64 + (fhs-union `(,@steam-client-libs + ,@steam-gameruntime-libs + ,@fhs-min-libs) + #:name "fhs-union-64")) + (union32 + (fhs-union `(,@steam-client-libs + ,@steam-gameruntime-libs + ,@fhs-min-libs) + #:name "fhs-union-32" + #:system "i686-linux")) + (link-files '("share/applications/steam.desktop" + "share/applications/steam-asound32.desktop")) + (description "Steam is a digital software distribution platform created by Valve. This package provides a script for launching Steam in a Guix container which will use the directory @file{$HOME/.local/share/guix-sandbox-home} where -all games will be installed.")))) +all games will be installed."))) -(define-public steam-nvidia - (nonguix-container->package - (nonguix-container - (name "steam-nvidia") - (wrap-package steam-client) - (run "/bin/steam") - (ld.so.conf steam-ld.so.conf) - (ld.so.cache steam-ld.so.cache) - (union64 - (replace-mesa - (fhs-union `(,@steam-client-libs - ,@steam-gameruntime-libs - ,@fhs-min-libs) - #:name "fhs-union-64"))) - (union32 - (replace-mesa - (fhs-union `(,@steam-client-libs - ,@steam-gameruntime-libs - ,@fhs-min-libs) - #:name "fhs-union-32" - #:system "i686-linux"))) - (link-files '("share/applications/steam.desktop" - "share/applications/steam-asound32.desktop")) - (description "Steam is a digital software distribution platform created by -Valve. This package provides a script for launching Steam in a Guix container -which will use the directory @file{$HOME/.local/share/guix-sandbox-home} where -all games will be installed.")))) +(define-public steam-nvidia-container + (nonguix-container + (inherit steam-container) + (name "steam-nvidia") + (union64 (replace-mesa (ngc-union64 steam-container))) + (union32 (replace-mesa (ngc-union32 steam-container))))) + +(define-public steam (nonguix-container->package steam-container)) +(define-public steam-nvidia (nonguix-container->package steam-nvidia-container)) (define-public protonup-ng (package diff --git a/nonguix/multiarch-container.scm b/nonguix/multiarch-container.scm index 541d6f2..85d36ad 100644 --- a/nonguix/multiarch-container.scm +++ b/nonguix/multiarch-container.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2021, 2022 John Kehayias ;;; Copyright © 2023 Giacomo Leidi ;;; Copyright © 2023 Attila Lendvai +;;; Copyright © 2023 Elijah Malaby ;;; The script provided by this package may optionally be started as ;;; a shell instead of automatically launching the wrapped entrypoint by setting @@ -303,7 +304,8 @@ in a sandboxed FHS environment." ,@(exists-> "/sys/class/powercap") ; Needed for power monitoring like MangoHud. "/sys/dev" "/sys/devices" - ,@(exists-> "/var/run/dbus"))) + ,@(exists-> "/var/run/dbus") + #$@(ngc-exposed container))) ;; /dev/hidraw is needed for SteamVR to access the HMD, although here we ;; share all hidraw devices. Instead we could filter to only share specific ;; device. See, for example, this script: @@ -317,7 +319,8 @@ in a sandboxed FHS environment." ,@(exists-> (string-append home "/.config/pulse")) ,@(exists-> (string-append xdg-runtime "/pulse")) ,@(exists-> (string-append xdg-runtime "/bus")) - ,@(exists-> (getenv "XAUTHORITY")))) + ,@(exists-> (getenv "XAUTHORITY")) + #$@(ngc-shared container))) (DEBUG (equal? (getenv "DEBUG") "1")) (args (cdr (command-line))) (command (if DEBUG '() -- cgit v1.2.3