From 2fdfb97f4e5bacc998ee265638b44be6bde0d621 Mon Sep 17 00:00:00 2001 From: John Kehayias Date: Mon, 4 Sep 2023 14:27:35 -0400 Subject: nongnu: Add heroic. * nongnu/packages/steam-client.scm: Rename to ... * nongnu/packages/game-client.scm: ... this. (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 "/usrshare/glib-2.0". --- nongnu/packages/game-client.scm | 366 +++++++++++++++++++++++++++++++++++++++ nongnu/packages/steam-client.scm | 254 --------------------------- nonguix/multiarch-container.scm | 2 + 3 files changed, 368 insertions(+), 254 deletions(-) create mode 100644 nongnu/packages/game-client.scm delete mode 100644 nongnu/packages/steam-client.scm diff --git a/nongnu/packages/game-client.scm b/nongnu/packages/game-client.scm new file mode 100644 index 0000000..3f5c600 --- /dev/null +++ b/nongnu/packages/game-client.scm @@ -0,0 +1,366 @@ +;;; SPDX-License-Identifier: GPL-3.0-or-later +;;; Copyright © 2020 pkill-9 +;;; Copyright © 2020, 2021 ison +;;; Copyright © 2021 pineapples +;;; Copyright © 2021 Jean-Baptiste Volatier +;;; Copyright © 2021 Kozo +;;; Copyright © 2021, 2022, 2023 John Kehayias +;;; Copyright © 2023 Giacomo Leidi +;;; Copyright © 2023 Elijah Malaby + +(define-module (nongnu packages game-client) + #:use-module ((guix licenses) #:prefix license:) + #:use-module ((nonguix licenses) #:prefix license:) + #:use-module (guix git-download) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix gexp) + #:use-module (guix build-system gnu) + #:use-module (guix build-system python) + #:use-module (gnu packages audio) + #:use-module (gnu packages base) + #:use-module (gnu packages bash) + #:use-module (gnu packages certs) + #:use-module (gnu packages compression) + #:use-module (gnu packages curl) + #:use-module (gnu packages elf) + #:use-module (gnu packages file) + #:use-module (gnu packages fonts) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages gawk) + #:use-module (gnu packages gcc) + #:use-module (gnu packages gl) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages graphics) + #:use-module (gnu packages gtk) + #:use-module (gnu packages libbsd) + #:use-module (gnu packages libusb) + #:use-module (gnu packages linux) + #:use-module (gnu packages llvm) + #:use-module (gnu packages logging) + #:use-module (gnu packages lsof) + #:use-module (nongnu packages nvidia) + #:use-module (gnu packages pciutils) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages python) + #:use-module (gnu packages python-web) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages toolkits) + #:use-module (gnu packages video) + #:use-module (gnu packages xorg) + #:use-module (nonguix build-system chromium-binary) + #:use-module (nonguix multiarch-container) + #:use-module (nonguix utils)) + +(define-public heroic-client + (package + (name "heroic-client") + (version "2.9.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/Heroic-Games-Launcher/" + "HeroicGamesLauncher/releases/download/v" + version "/heroic_" version "_amd64.deb")) + (sha256 + (base32 + "128x6bqp85nib7v6ldnyy39qrxppqjgwmfvi59lbf0jr5pa546jg")))) + (build-system chromium-binary-build-system) + (arguments + (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files + #:wrapper-plan + #~'("lib/Heroic/heroic" + "lib/Heroic/libEGL.so" + "lib/Heroic/libGLESv2.so" + "lib/Heroic/libvk_swiftshader.so" + "lib/Heroic/libvulkan.so.1" + "lib/Heroic/chrome-sandbox" + "lib/Heroic/chrome_crashpad_handler" + "lib/Heroic/libffmpeg.so") + #:phases + #~(modify-phases %standard-phases + (replace 'unpack + (lambda _ + (invoke "ar" "x" #$source) + (invoke "tar" "xvf" "data.tar.xz") + (copy-recursively "usr/" ".") + ;; Use the more standard lib directory for everything. + (rename-file "opt/" "lib") + ;; Remove unneeded files. + (delete-file-recursively "usr") + (delete-file "control.tar.gz") + (delete-file "data.tar.xz") + (delete-file "debian-binary") + ;; Fix the .desktop file binary location. + (substitute* '("share/applications/heroic.desktop") + (("/opt/Heroic/") + (string-append #$output "/bin/"))))) + (add-after 'install 'symlink-binary-file-and-cleanup + (lambda _ + (delete-file (string-append #$output "/environment-variables")) + (mkdir-p (string-append #$output "/bin")) + (symlink (string-append #$output "/lib/Heroic/heroic") + (string-append #$output "/bin/heroic")))) + (add-after 'install-wrapper 'wrap-where-patchelf-does-not-work + (lambda _ + (wrap-program (string-append #$output "/lib/Heroic/heroic") + `("LD_LIBRARY_PATH" ":" prefix + (,(string-join + (list + (string-append #$output "/lib/Heroic")) + ":"))))))))) + (native-inputs (list tar)) + (home-page "https://heroicgameslauncher.com") + (synopsis "A Native GOG, Amazon and Epic Games Launcher") + (description "Heroic is an Open Source Game Launcher. Right now it supports launching +games from the Epic Games Store using Legendary, GOG Games using our custom +implementation with gogdl and Amazon Games using Nile.") + (license license:gpl3))) + +(define steam-client + (package + (name "steam-client") + (version "1.0.0.75") + (source + (origin + (method url-fetch) + (uri (string-append "http://repo.steampowered.com/steam/archive/precise/steam_" + version ".tar.gz")) + (sha256 + (base32 + "19rn29slsxv7b5fisr1jzn79bskzifbj5hmxqn2436ivwfjna9g5")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; There are no tests. + #:validate-runpath? #f ; Looks for bin/steam which doesn't exist. + #:make-flags + (list "PREFIX=" (string-append "DESTDIR=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (delete 'configure) + ;; Patch Makefile so it creates links to the store rather than /lib. + (add-after 'unpack 'patch-makefile + (lambda _ + (substitute* "Makefile" + (("-fns ") + "-fns $(DESTDIR)")))) + (delete 'patch-dot-desktop-files) + (add-after 'unpack 'patch-startscript + (lambda _ + (substitute* "bin_steam.sh" + (("/usr") (assoc-ref %outputs "out"))))) + (add-after 'patch-dot-desktop-files 'patch-desktop-file + (lambda _ + (let ((path (string-append (assoc-ref %outputs "out") + "/share/applications/"))) + (substitute* (string-append path "steam.desktop") + (("Exec=.*/steam") "Exec=steam")) + (copy-file (string-append path "steam.desktop") + (string-append path "steam-asound32.desktop")) + (substitute* (string-append path "steam-asound32.desktop") + (("Exec=steam %U") "Exec=steam %U -- --asound32") + (("Name=Steam") "Name=Steam (32-bit ALSA)"))))) + ;; Steamdeps installs missing packages, which doesn't work with Guix. + (add-after 'install-binaries 'post-install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref %outputs "out"))) + (delete-file (string-append out "/lib/steam/bin_steamdeps.py")) + (delete-file (string-append out "/bin/steamdeps")))))))) + (home-page "https://store.steampowered.com") + (synopsis "Digital distribution platform for managing and playing games") + (description "Steam is a digital software distribution platform created by Valve.") + (license (license:nonfree "file:///share/doc/steam/steam_subscriber_agreement.txt")))) + +;; After guix commit to add a replacement for libx11 (security fixes), +;; 5ff0c8997a2ddf71af477883584a5f9ccd9b757f, a profile collision happens with +;; the propagated libx11 (now grafted) from mesa and its propagated-input +;; libxdamage. See previous upstream report (when this occurred for expat and +;; fontconfig) at . So we define explicit +;; replacement packages to workaround this issue. +;; TODO: remove once upstream bug is fixed or libx11 is ungrafted. +(define libxdamage-fixed + (package + (inherit libxdamage) + (propagated-inputs + (modify-inputs (package-propagated-inputs libxdamage) + (replace "libx11" libx11-fixed))))) + +(define mesa-fixed + (package + (inherit mesa) + (propagated-inputs + (modify-inputs (package-propagated-inputs mesa) + (replace "libx11" libx11-fixed) + (replace "libxdamage" libxdamage-fixed))))) + +(define steam-client-libs + `(("bash" ,bash) ; Required for steam startup. + ("coreutils" ,coreutils) + ("diffutils" ,diffutils) + ("dbus-glib" ,dbus-glib) ; Required for steam browser. + ("elfutils" ,elfutils) ; Required for capturing library dependencies in pv. + ("eudev" ,eudev) ; Required for steamwebhelper/heavy runtime. + ("fontconfig" ,fontconfig) ; Required for steam client. + ("file" ,file) ; Used for steam installation. + ("find" ,findutils) ; Required at least for some logging. + ("freetype" ,freetype) ; Required for steam login. + ("gawk" ,gawk) + ("gdk-pixbuf" ,gdk-pixbuf) ; Required for steam tray icon. + ("gcc:lib" ,gcc "lib") ; Required for steam startup. + ("grep" ,grep) + ("libbsd" ,libbsd) + ("libcap" ,libcap) ; Required for SteamVR, but needs pkexec too. + ("libusb" ,libusb) ; Required for SteamVR. + ("libva" ,libva) ; Required for hardware video encoding/decoding. + ("libvdpau" ,libvdpau) ; Required for hardware video encoding/decoding. + ("libvdpau-va-gl" ,libvdpau-va-gl) ; Additional VDPAU support. + ("llvm" ,llvm-for-mesa) ; Required for mesa. + ("lsof" ,lsof) ; Required for some friend's list actions. + ;; TODO: Set back to mesa once libx11 is ungrafted upstream or once + ;; is fixed. + ("mesa" ,mesa-fixed) ; Required for steam startup. + ("nss-certs" ,nss-certs) ; Required for steam login. + ("pciutils" ,pciutils) ; Tries to run lspci at steam startup. + ("procps" ,procps) + ("sed" ,sed) + ("tar" ,tar) + ("usbutils" ,usbutils) ; Required for SteamVR. + ("util-linux" ,util-linux) ; Required for steam login. + ("wayland" ,wayland) ; Required for mesa vulkan (e.g. libvulkan_radeon). + ("xdg-user-dirs" ,xdg-user-dirs) ; Suppress warning of missing xdg-user-dir. + ("flatpak-xdg-utils" ,flatpak-xdg-utils) + ("xz" ,xz) + ("zenity" ,zenity))) ; Required for progress dialogs. + +(define steam-gameruntime-libs + `(("alsa-lib" ,alsa-lib) ; Required for audio in most games. + ("alsa-plugins:pulseaudio" ,alsa-plugins "pulseaudio") ; Required for audio in most games. + ("font-dejavu" ,font-dejavu) + ("font-liberation" ,font-liberation) + ("imgui" ,imgui-1.86) ; Required for MangoHud. + ("mangohud" ,mangohud) + ("openal" ,openal) ; Prevents corrupt audio in Crypt of the Necrodancer. + ("pulseaudio" ,pulseaudio) ; Prevents corrupt audio in Sven Coop. + ("python" ,python) ; Required for KillingFloor2 and Wreckfest. + ("spdlog" ,spdlog))) ; Required for MangoHud. + +(define heroic-extra-client-libs + `(("curl" ,curl) ; Required for Heroic to download e.g. Wine. + ("gtk+" ,gtk+))) ; Required for Heroic interface (gtk filechooser schema). + +(define steam-ld.so.conf + (packages->ld.so.conf + (list (fhs-union `(,@steam-client-libs + ,@steam-gameruntime-libs + ,@fhs-min-libs) + #:name "fhs-union-64") + (fhs-union `(,@steam-client-libs + ,@steam-gameruntime-libs + ,@fhs-min-libs) + #:name "fhs-union-32" + #:system "i686-linux")))) + +(define steam-ld.so.cache + (ld.so.conf->ld.so.cache steam-ld.so.conf)) + +(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."))) + +(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 heroic-container + (nonguix-container + (name "heroic") + (wrap-package heroic-client) + (run "/bin/heroic") + (ld.so.conf steam-ld.so.conf) + (ld.so.cache steam-ld.so.cache) + (union64 + (fhs-union `(,@heroic-extra-client-libs + ,@steam-client-libs + ,@steam-gameruntime-libs + ,@fhs-min-libs) + #:name "fhs-union-64")) + ;; Don't include heroic-client-libs as they are not needed in 32-bit and + ;; cause profile collisions with gtk+ and the libx11 graft (which is deep + ;; and wide spread in the dependency tree). + (union32 + (fhs-union `(,@steam-client-libs + ,@steam-gameruntime-libs + ,@fhs-min-libs) + #:name "fhs-union-32" + #:system "i686-linux")) + (link-files '("share/applications/heroic.desktop")) + (description "Heroic is an Open Source Game Launcher. Right now it supports launching +games from the Epic Games Store using Legendary, GOG Games using our custom +implementation with gogdl and Amazon Games using Nile. This package provides +a script for launching Heroic in a Guix container which will use the directory +@file{$HOME/.local/share/guix-sandbox-home} where all games will be +installed."))) + +(define-public heroic-nvidia-container + (nonguix-container + (inherit heroic-container) + (name "heroic-nvidia") + (union64 (replace-mesa (ngc-union64 heroic-container))) + (union32 (replace-mesa (ngc-union32 heroic-steam-container))))) + +(define-public heroic (nonguix-container->package heroic-container)) +(define-public heroic-nvidia (nonguix-container->package heroic-nvidia-container)) + +(define-public protonup-ng + (package + (name "protonup-ng") + (version "0.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cloudishBenne/protonup-ng") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0yd2mhhqxzarqxk85zf42s931jzc94f1cssn1hblsqghr79laa45")))) + (build-system python-build-system) + (arguments + (list #:tests? #f)) ; there are no tests + (inputs + (list python-configparser python-requests)) + (home-page "https://github.com/cloudishBenne/protonup-ng") + (synopsis "Manage Proton-GE Installations") + (description "ProtonUp-ng is a CLI program and API to automate the installation +and update of GloriousEggroll's Proton-GE.") + (license license:gpl3))) diff --git a/nongnu/packages/steam-client.scm b/nongnu/packages/steam-client.scm deleted file mode 100644 index e7592cf..0000000 --- a/nongnu/packages/steam-client.scm +++ /dev/null @@ -1,254 +0,0 @@ -;;; SPDX-License-Identifier: GPL-3.0-or-later -;;; Copyright © 2020 pkill-9 -;;; Copyright © 2020, 2021 ison -;;; Copyright © 2021 pineapples -;;; Copyright © 2021 Jean-Baptiste Volatier -;;; 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:) - #:use-module ((nonguix licenses) #:prefix license:) - #:use-module (guix git-download) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system gnu) - #:use-module (guix build-system python) - #:use-module (gnu packages audio) - #:use-module (gnu packages base) - #:use-module (gnu packages bash) - #:use-module (gnu packages certs) - #:use-module (gnu packages compression) - #:use-module (gnu packages elf) - #:use-module (gnu packages file) - #:use-module (gnu packages fonts) - #:use-module (gnu packages fontutils) - #:use-module (gnu packages freedesktop) - #:use-module (gnu packages gawk) - #:use-module (gnu packages gcc) - #:use-module (gnu packages gl) - #:use-module (gnu packages glib) - #:use-module (gnu packages gnome) - #:use-module (gnu packages graphics) - #:use-module (gnu packages gtk) - #:use-module (gnu packages libbsd) - #:use-module (gnu packages libusb) - #:use-module (gnu packages linux) - #:use-module (gnu packages llvm) - #:use-module (gnu packages logging) - #:use-module (gnu packages lsof) - #:use-module (nongnu packages nvidia) - #:use-module (gnu packages pciutils) - #:use-module (gnu packages pulseaudio) - #:use-module (gnu packages python) - #:use-module (gnu packages python-web) - #:use-module (gnu packages python-xyz) - #:use-module (gnu packages toolkits) - #:use-module (gnu packages video) - #:use-module (gnu packages xorg) - #:use-module (nonguix multiarch-container) - #:use-module (nonguix utils)) - -(define steam-client - (package - (name "steam-client") - (version "1.0.0.75") - (source - (origin - (method url-fetch) - (uri (string-append "http://repo.steampowered.com/steam/archive/precise/steam_" - version ".tar.gz")) - (sha256 - (base32 - "19rn29slsxv7b5fisr1jzn79bskzifbj5hmxqn2436ivwfjna9g5")) - (file-name (string-append name "-" version ".tar.gz")))) - (build-system gnu-build-system) - (arguments - `(#:tests? #f ; There are no tests. - #:validate-runpath? #f ; Looks for bin/steam which doesn't exist. - #:make-flags - (list "PREFIX=" (string-append "DESTDIR=" (assoc-ref %outputs "out"))) - #:phases - (modify-phases %standard-phases - (delete 'configure) - ;; Patch Makefile so it creates links to the store rather than /lib. - (add-after 'unpack 'patch-makefile - (lambda _ - (substitute* "Makefile" - (("-fns ") - "-fns $(DESTDIR)")))) - (delete 'patch-dot-desktop-files) - (add-after 'unpack 'patch-startscript - (lambda _ - (substitute* "bin_steam.sh" - (("/usr") (assoc-ref %outputs "out"))))) - (add-after 'patch-dot-desktop-files 'patch-desktop-file - (lambda _ - (let ((path (string-append (assoc-ref %outputs "out") - "/share/applications/"))) - (substitute* (string-append path "steam.desktop") - (("Exec=.*/steam") "Exec=steam")) - (copy-file (string-append path "steam.desktop") - (string-append path "steam-asound32.desktop")) - (substitute* (string-append path "steam-asound32.desktop") - (("Exec=steam %U") "Exec=steam %U -- --asound32") - (("Name=Steam") "Name=Steam (32-bit ALSA)"))))) - ;; Steamdeps installs missing packages, which doesn't work with Guix. - (add-after 'install-binaries 'post-install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref %outputs "out"))) - (delete-file (string-append out "/lib/steam/bin_steamdeps.py")) - (delete-file (string-append out "/bin/steamdeps")))))))) - (home-page "https://store.steampowered.com") - (synopsis "Digital distribution platform for managing and playing games") - (description "Steam is a digital software distribution platform created by Valve.") - (license (license:nonfree "file:///share/doc/steam/steam_subscriber_agreement.txt")))) - -;; After guix commit to add a replacement for libx11 (security fixes), -;; 5ff0c8997a2ddf71af477883584a5f9ccd9b757f, a profile collision happens with -;; the propagated libx11 (now grafted) from mesa and its propagated-input -;; libxdamage. See previous upstream report (when this occurred for expat and -;; fontconfig) at . So we define explicit -;; replacement packages to workaround this issue. -;; TODO: remove once upstream bug is fixed or libx11 is ungrafted. -(define libxdamage-fixed - (package - (inherit libxdamage) - (propagated-inputs - (modify-inputs (package-propagated-inputs libxdamage) - (replace "libx11" libx11-fixed))))) - -(define mesa-fixed - (package - (inherit mesa) - (propagated-inputs - (modify-inputs (package-propagated-inputs mesa) - (replace "libx11" libx11-fixed) - (replace "libxdamage" libxdamage-fixed))))) - -(define steam-client-libs - `(("bash" ,bash) ; Required for steam startup. - ("coreutils" ,coreutils) - ("diffutils" ,diffutils) - ("dbus-glib" ,dbus-glib) ; Required for steam browser. - ("elfutils" ,elfutils) ; Required for capturing library dependencies in pv. - ("eudev" ,eudev) ; Required for steamwebhelper/heavy runtime. - ("fontconfig" ,fontconfig) ; Required for steam client. - ("file" ,file) ; Used for steam installation. - ("find" ,findutils) ; Required at least for some logging. - ("freetype" ,freetype) ; Required for steam login. - ("gawk" ,gawk) - ("gdk-pixbuf" ,gdk-pixbuf) ; Required for steam tray icon. - ("gcc:lib" ,gcc "lib") ; Required for steam startup. - ("grep" ,grep) - ("libbsd" ,libbsd) - ("libcap" ,libcap) ; Required for SteamVR, but needs pkexec too. - ("libusb" ,libusb) ; Required for SteamVR. - ("libva" ,libva) ; Required for hardware video encoding/decoding. - ("libvdpau" ,libvdpau) ; Required for hardware video encoding/decoding. - ("libvdpau-va-gl" ,libvdpau-va-gl) ; Additional VDPAU support. - ("llvm" ,llvm-for-mesa) ; Required for mesa. - ("lsof" ,lsof) ; Required for some friend's list actions. - ;; TODO: Set back to mesa once libx11 is ungrafted upstream or once - ;; is fixed. - ("mesa" ,mesa-fixed) ; Required for steam startup. - ("nss-certs" ,nss-certs) ; Required for steam login. - ("pciutils" ,pciutils) ; Tries to run lspci at steam startup. - ("procps" ,procps) - ("sed" ,sed) - ("tar" ,tar) - ("usbutils" ,usbutils) ; Required for SteamVR. - ("util-linux" ,util-linux) ; Required for steam login. - ("wayland" ,wayland) ; Required for mesa vulkan (e.g. libvulkan_radeon). - ("xdg-user-dirs" ,xdg-user-dirs) ; Suppress warning of missing xdg-user-dir. - ("flatpak-xdg-utils" ,flatpak-xdg-utils) - ("xz" ,xz) - ("zenity" ,zenity))) ; Required for progress dialogs. - -(define steam-gameruntime-libs - `(("alsa-lib" ,alsa-lib) ; Required for audio in most games. - ("alsa-plugins:pulseaudio" ,alsa-plugins "pulseaudio") ; Required for audio in most games. - ("font-dejavu" ,font-dejavu) - ("font-liberation" ,font-liberation) - ("imgui" ,imgui-1.86) ; Required for MangoHud. - ("mangohud" ,mangohud) - ("openal" ,openal) ; Prevents corrupt audio in Crypt of the Necrodancer. - ("pulseaudio" ,pulseaudio) ; Prevents corrupt audio in Sven Coop. - ("python" ,python) ; Required for KillingFloor2 and Wreckfest. - ("spdlog" ,spdlog))) ; Required for MangoHud. - -(define steam-ld.so.conf - (packages->ld.so.conf - (list (fhs-union `(,@steam-client-libs - ,@steam-gameruntime-libs - ,@fhs-min-libs) - #:name "fhs-union-64") - (fhs-union `(,@steam-client-libs - ,@steam-gameruntime-libs - ,@fhs-min-libs) - #:name "fhs-union-32" - #:system "i686-linux")))) - -(define steam-ld.so.cache - (ld.so.conf->ld.so.cache steam-ld.so.conf)) - -(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."))) - -(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 - (name "protonup-ng") - (version "0.2.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cloudishBenne/protonup-ng") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0yd2mhhqxzarqxk85zf42s931jzc94f1cssn1hblsqghr79laa45")))) - (build-system python-build-system) - (arguments - (list #:tests? #f)) ; there are no tests - (inputs - (list python-configparser python-requests)) - (home-page "https://github.com/cloudishBenne/protonup-ng") - (synopsis "Manage Proton-GE Installations") - (description "ProtonUp-ng is a CLI program and API to automate the installation -and update of GloriousEggroll's Proton-GE.") - (license license:gpl3))) diff --git a/nonguix/multiarch-container.scm b/nonguix/multiarch-container.scm index 1a61346..2732fd7 100644 --- a/nonguix/multiarch-container.scm +++ b/nonguix/multiarch-container.scm @@ -271,6 +271,7 @@ in a sandboxed FHS environment." "^QT_X11_NO_MITSHM$" "^SDL_" "^STEAM_" + "^SSL_" ; SSL certificate environment, needed by curl for Heroic. "^VDPAU_DRIVER_PATH$" ; For VDPAU drivers. "^XAUTHORITY$" ;; Matching all ^XDG_ vars causes issues @@ -480,6 +481,7 @@ application." ((,union64 "lib/locale") . "/run/current-system/locale") ((,union64 "sbin/ldconfig") . "/sbin/ldconfig") ((,union64 "share/mime") . "/usr/share/mime") ; Steam tray icon. + ((,union64 "share/glib-2.0") . "/usr/share/glib-2.0") ; Heroic interface. ((,union64 "share/drirc.d") . "/usr/share/drirc.d") ((,union64 "share/fonts") . "/run/current-system/profile/share/fonts") ((,union64 "etc/fonts") . "/etc/fonts") -- cgit v1.2.3