2022-12-19 16:17:39 +00:00
|
|
|
;;; SPDX-License-Identifier: GPL-3.0-or-later
|
2021-01-08 01:05:19 +00:00
|
|
|
;;; Copyright © 2020 pkill-9
|
|
|
|
;;; Copyright © 2020, 2021 ison <ison@airmail.cc>
|
2021-03-05 18:40:43 +00:00
|
|
|
;;; Copyright © 2021 pineapples
|
2021-02-06 17:09:37 +00:00
|
|
|
;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
|
2021-11-19 01:21:38 +00:00
|
|
|
;;; Copyright © 2021 Kozo <kozodev@runbox.com>
|
2024-01-04 01:08:28 +00:00
|
|
|
;;; Copyright © 2021, 2022, 2023, 2024 John Kehayias <john.kehayias@protonmail.com>
|
2023-05-15 10:55:54 +00:00
|
|
|
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
|
2023-05-30 04:39:12 +00:00
|
|
|
;;; Copyright © 2023 Elijah Malaby
|
2023-12-15 20:04:24 +00:00
|
|
|
;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
|
2024-04-12 16:26:23 +00:00
|
|
|
;;; Copyright © 2024 Amélia Coutard <contact@ameliathe1st.gay>
|
2020-09-14 21:59:05 +00:00
|
|
|
|
2024-01-04 00:59:33 +00:00
|
|
|
(define-module (nongnu packages game-client)
|
2022-08-12 19:01:50 +00:00
|
|
|
#:use-module ((guix licenses) #:prefix license:)
|
2020-05-06 18:53:49 +00:00
|
|
|
#:use-module ((nonguix licenses) #:prefix license:)
|
2022-08-12 19:01:50 +00:00
|
|
|
#:use-module (guix git-download)
|
2020-05-06 18:53:49 +00:00
|
|
|
#:use-module (guix packages)
|
|
|
|
#:use-module (guix download)
|
2024-01-04 01:08:28 +00:00
|
|
|
#:use-module (guix gexp)
|
2024-04-12 16:26:23 +00:00
|
|
|
#:use-module (guix build-system copy)
|
2020-05-06 18:53:49 +00:00
|
|
|
#:use-module (guix build-system gnu)
|
2022-08-12 19:01:50 +00:00
|
|
|
#:use-module (guix build-system python)
|
2024-04-12 16:26:23 +00:00
|
|
|
#:use-module (gnu packages admin)
|
2020-05-06 18:53:49 +00:00
|
|
|
#:use-module (gnu packages audio)
|
|
|
|
#:use-module (gnu packages base)
|
2020-09-13 02:44:54 +00:00
|
|
|
#:use-module (gnu packages bash)
|
2024-04-12 16:26:23 +00:00
|
|
|
#:use-module (gnu packages bittorrent)
|
2020-09-16 19:21:42 +00:00
|
|
|
#:use-module (gnu packages certs)
|
|
|
|
#:use-module (gnu packages compression)
|
2024-01-04 01:08:28 +00:00
|
|
|
#:use-module (gnu packages curl)
|
2024-04-12 16:26:23 +00:00
|
|
|
#:use-module (gnu packages databases)
|
2021-12-20 08:26:50 +00:00
|
|
|
#:use-module (gnu packages elf)
|
2020-09-16 19:21:42 +00:00
|
|
|
#:use-module (gnu packages file)
|
2020-05-06 18:53:49 +00:00
|
|
|
#:use-module (gnu packages fonts)
|
|
|
|
#:use-module (gnu packages fontutils)
|
2021-12-20 08:26:50 +00:00
|
|
|
#:use-module (gnu packages freedesktop)
|
2020-09-16 19:21:42 +00:00
|
|
|
#:use-module (gnu packages gawk)
|
2020-05-06 18:53:49 +00:00
|
|
|
#:use-module (gnu packages gcc)
|
|
|
|
#:use-module (gnu packages gl)
|
|
|
|
#:use-module (gnu packages glib)
|
2021-12-20 08:26:50 +00:00
|
|
|
#:use-module (gnu packages gnome)
|
2022-02-27 19:52:55 +00:00
|
|
|
#:use-module (gnu packages graphics)
|
2024-04-12 16:26:23 +00:00
|
|
|
#:use-module (gnu packages gstreamer)
|
2023-09-04 02:40:05 +00:00
|
|
|
#:use-module (gnu packages gtk)
|
2024-04-12 16:26:23 +00:00
|
|
|
#:use-module (gnu packages image)
|
|
|
|
#:use-module (gnu packages kerberos)
|
2021-12-20 08:26:50 +00:00
|
|
|
#:use-module (gnu packages libbsd)
|
|
|
|
#:use-module (gnu packages libusb)
|
2020-09-16 19:21:42 +00:00
|
|
|
#:use-module (gnu packages linux)
|
2021-12-20 08:26:50 +00:00
|
|
|
#:use-module (gnu packages llvm)
|
2022-02-27 19:52:55 +00:00
|
|
|
#:use-module (gnu packages logging)
|
2023-06-29 18:20:10 +00:00
|
|
|
#:use-module (gnu packages lsof)
|
2021-04-12 13:38:52 +00:00
|
|
|
#:use-module (nongnu packages nvidia)
|
2024-04-12 16:26:23 +00:00
|
|
|
#:use-module (gnu packages openldap)
|
2021-12-20 08:26:50 +00:00
|
|
|
#:use-module (gnu packages pciutils)
|
2024-04-12 16:26:23 +00:00
|
|
|
#:use-module (gnu packages photo)
|
|
|
|
#:use-module (gnu packages protobuf)
|
2020-09-19 07:57:43 +00:00
|
|
|
#:use-module (gnu packages pulseaudio)
|
|
|
|
#:use-module (gnu packages python)
|
2022-08-12 19:01:50 +00:00
|
|
|
#:use-module (gnu packages python-web)
|
|
|
|
#:use-module (gnu packages python-xyz)
|
2024-04-12 16:26:23 +00:00
|
|
|
#:use-module (gnu packages samba)
|
|
|
|
#:use-module (gnu packages scanner)
|
|
|
|
#:use-module (gnu packages sdl)
|
|
|
|
#:use-module (gnu packages tls)
|
2022-02-27 19:52:55 +00:00
|
|
|
#:use-module (gnu packages toolkits)
|
2022-09-23 20:03:08 +00:00
|
|
|
#:use-module (gnu packages video)
|
2024-04-12 16:26:23 +00:00
|
|
|
#:use-module (gnu packages vulkan)
|
|
|
|
#:use-module (gnu packages web)
|
|
|
|
#:use-module (gnu packages webkit)
|
|
|
|
#:use-module (gnu packages wine)
|
|
|
|
#:use-module (gnu packages xml)
|
2023-09-04 02:34:47 +00:00
|
|
|
#:use-module (gnu packages xorg)
|
2024-01-04 01:08:28 +00:00
|
|
|
#:use-module (nonguix build-system chromium-binary)
|
2023-05-15 10:55:54 +00:00
|
|
|
#:use-module (nonguix multiarch-container)
|
2020-09-19 07:57:43 +00:00
|
|
|
#:use-module (nonguix utils))
|
2020-05-06 18:53:49 +00:00
|
|
|
|
2024-01-04 01:08:28 +00:00
|
|
|
(define heroic-client
|
|
|
|
(package
|
|
|
|
(name "heroic-client")
|
2025-02-05 02:54:27 +00:00
|
|
|
(version "2.15.2")
|
2024-01-04 01:08:28 +00:00
|
|
|
(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
|
2025-02-05 02:54:27 +00:00
|
|
|
"1bzdb9nqmr9w092c22n57ldykm00n98d78rhqzypf430lrl0kzcj"))))
|
2024-01-04 01:08:28 +00:00
|
|
|
(build-system chromium-binary-build-system)
|
|
|
|
(arguments
|
|
|
|
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
|
|
|
|
#:wrapper-plan
|
2025-02-09 19:07:41 +00:00
|
|
|
#~'(("lib/Heroic/heroic" (("out" "/lib/Heroic"))))
|
2024-01-04 01:08:28 +00:00
|
|
|
#:phases
|
|
|
|
#~(modify-phases %standard-phases
|
|
|
|
(add-after 'binary-unpack 'setup-cwd
|
|
|
|
(lambda _
|
|
|
|
(copy-recursively "usr/" ".")
|
|
|
|
;; Use the more standard lib directory for everything.
|
|
|
|
(rename-file "opt/" "lib")
|
|
|
|
;; Remove unneeded files.
|
|
|
|
(delete-file-recursively "usr")
|
|
|
|
;; Fix the .desktop file binary location.
|
|
|
|
(substitute* '("share/applications/heroic.desktop")
|
|
|
|
(("/opt/Heroic/")
|
|
|
|
(string-append #$output "/bin/")))))
|
|
|
|
(add-after 'install 'symlink-binary-file
|
|
|
|
(lambda _
|
|
|
|
(mkdir-p (string-append #$output "/bin"))
|
|
|
|
(symlink (string-append #$output "/lib/Heroic/heroic")
|
2025-02-05 02:46:49 +00:00
|
|
|
(string-append #$output "/bin/heroic")))))))
|
2024-01-04 01:08:28 +00:00
|
|
|
(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)))
|
|
|
|
|
2020-09-13 02:44:54 +00:00
|
|
|
(define steam-client
|
|
|
|
(package
|
|
|
|
(name "steam-client")
|
2024-01-24 08:39:49 +00:00
|
|
|
(version "1.0.0.78")
|
2020-09-13 02:44:54 +00:00
|
|
|
(source
|
|
|
|
(origin
|
|
|
|
(method url-fetch)
|
|
|
|
(uri (string-append "http://repo.steampowered.com/steam/archive/precise/steam_"
|
|
|
|
version ".tar.gz"))
|
|
|
|
(sha256
|
|
|
|
(base32
|
2024-01-24 08:39:49 +00:00
|
|
|
"0390qy8vy7sx35hxl51yrbk6mvdz1vvpy96v07qva4bjbmsmjhhh"))
|
2020-09-13 02:44:54 +00:00
|
|
|
(file-name (string-append name "-" version ".tar.gz"))))
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
(arguments
|
2021-12-20 08:26:50 +00:00
|
|
|
`(#:tests? #f ; There are no tests.
|
|
|
|
#:validate-runpath? #f ; Looks for bin/steam which doesn't exist.
|
2020-09-13 02:44:54 +00:00
|
|
|
#:make-flags
|
|
|
|
(list "PREFIX=" (string-append "DESTDIR=" (assoc-ref %outputs "out")))
|
|
|
|
#:phases
|
|
|
|
(modify-phases %standard-phases
|
2021-12-20 08:26:50 +00:00
|
|
|
(delete 'configure)
|
|
|
|
;; Patch Makefile so it creates links to the store rather than /lib.
|
|
|
|
(add-after 'unpack 'patch-makefile
|
2021-03-04 19:59:09 +00:00
|
|
|
(lambda _
|
2021-12-20 08:26:50 +00:00
|
|
|
(substitute* "Makefile"
|
|
|
|
(("-fns ")
|
|
|
|
"-fns $(DESTDIR)"))))
|
2020-09-13 02:44:54 +00:00
|
|
|
(add-after 'unpack 'patch-startscript
|
|
|
|
(lambda _
|
2021-12-20 08:26:50 +00:00
|
|
|
(substitute* "bin_steam.sh"
|
2021-01-08 01:05:19 +00:00
|
|
|
(("/usr") (assoc-ref %outputs "out")))))
|
2020-11-24 16:52:37 +00:00
|
|
|
(add-after 'patch-dot-desktop-files 'patch-desktop-file
|
2020-09-13 02:44:54 +00:00
|
|
|
(lambda _
|
2021-05-26 11:16:41 +00:00
|
|
|
(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)")))))
|
2024-08-31 21:54:34 +00:00
|
|
|
(delete 'patch-dot-desktop-files)
|
2020-09-13 02:44:54 +00:00
|
|
|
;; Steamdeps installs missing packages, which doesn't work with Guix.
|
2024-08-31 21:54:34 +00:00
|
|
|
(add-after 'install 'post-install
|
2021-01-08 01:05:19 +00:00
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
(let ((out (assoc-ref %outputs "out")))
|
2021-12-20 08:26:50 +00:00
|
|
|
(delete-file (string-append out "/lib/steam/bin_steamdeps.py"))
|
|
|
|
(delete-file (string-append out "/bin/steamdeps"))))))))
|
2020-09-13 02:44:54 +00:00
|
|
|
(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"))))
|
|
|
|
|
2020-05-06 18:53:49 +00:00
|
|
|
(define steam-client-libs
|
2023-12-06 05:10:19 +00:00
|
|
|
`(("at-spi2-core" ,at-spi2-core) ; Required (often) for SteamVR interface.
|
|
|
|
("bash" ,bash) ; Required for steam startup.
|
2020-09-16 19:21:42 +00:00
|
|
|
("coreutils" ,coreutils)
|
|
|
|
("diffutils" ,diffutils)
|
2020-09-16 00:37:12 +00:00
|
|
|
("dbus-glib" ,dbus-glib) ; Required for steam browser.
|
2021-12-20 08:26:50 +00:00
|
|
|
("elfutils" ,elfutils) ; Required for capturing library dependencies in pv.
|
|
|
|
("eudev" ,eudev) ; Required for steamwebhelper/heavy runtime.
|
2023-04-11 01:22:22 +00:00
|
|
|
("fontconfig" ,fontconfig) ; Required for steam client.
|
2020-09-16 19:21:42 +00:00
|
|
|
("file" ,file) ; Used for steam installation.
|
2021-12-20 08:26:50 +00:00
|
|
|
("find" ,findutils) ; Required at least for some logging.
|
2020-09-16 00:37:12 +00:00
|
|
|
("freetype" ,freetype) ; Required for steam login.
|
2020-09-16 19:21:42 +00:00
|
|
|
("gawk" ,gawk)
|
2023-09-04 02:40:05 +00:00
|
|
|
("gdk-pixbuf" ,gdk-pixbuf) ; Required for steam tray icon.
|
2024-12-07 04:11:26 +00:00
|
|
|
;; Required for steam startup; use newer version for better compatibility
|
|
|
|
;; with some games like Dwarf Fortress.
|
|
|
|
("gcc:lib" ,gcc-14 "lib")
|
2020-09-16 19:21:42 +00:00
|
|
|
("grep" ,grep)
|
2021-12-20 08:26:50 +00:00
|
|
|
("libbsd" ,libbsd)
|
|
|
|
("libcap" ,libcap) ; Required for SteamVR, but needs pkexec too.
|
|
|
|
("libusb" ,libusb) ; Required for SteamVR.
|
2022-09-23 20:03:08 +00:00
|
|
|
("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.
|
2023-06-29 18:05:22 +00:00
|
|
|
("llvm" ,llvm-for-mesa) ; Required for mesa.
|
2023-06-29 18:20:10 +00:00
|
|
|
("lsof" ,lsof) ; Required for some friend's list actions.
|
2023-11-28 05:55:56 +00:00
|
|
|
("mesa" ,mesa) ; Required for steam startup.
|
2020-09-16 19:21:42 +00:00
|
|
|
("nss-certs" ,nss-certs) ; Required for steam login.
|
2021-12-20 08:26:50 +00:00
|
|
|
("pciutils" ,pciutils) ; Tries to run lspci at steam startup.
|
|
|
|
("procps" ,procps)
|
2020-09-16 19:21:42 +00:00
|
|
|
("sed" ,sed)
|
|
|
|
("tar" ,tar)
|
2021-12-20 08:26:50 +00:00
|
|
|
("usbutils" ,usbutils) ; Required for SteamVR.
|
2020-09-16 19:21:42 +00:00
|
|
|
("util-linux" ,util-linux) ; Required for steam login.
|
2021-12-20 08:26:50 +00:00
|
|
|
("wayland" ,wayland) ; Required for mesa vulkan (e.g. libvulkan_radeon).
|
2023-06-29 18:24:47 +00:00
|
|
|
("xdg-user-dirs" ,xdg-user-dirs) ; Suppress warning of missing xdg-user-dir.
|
2023-01-03 19:33:50 +00:00
|
|
|
("flatpak-xdg-utils" ,flatpak-xdg-utils)
|
2021-12-20 08:26:50 +00:00
|
|
|
("xz" ,xz)
|
|
|
|
("zenity" ,zenity))) ; Required for progress dialogs.
|
2020-05-06 18:53:49 +00:00
|
|
|
|
|
|
|
(define steam-gameruntime-libs
|
2020-09-16 00:37:12 +00:00
|
|
|
`(("alsa-lib" ,alsa-lib) ; Required for audio in most games.
|
|
|
|
("alsa-plugins:pulseaudio" ,alsa-plugins "pulseaudio") ; Required for audio in most games.
|
2020-09-13 02:44:54 +00:00
|
|
|
("font-dejavu" ,font-dejavu)
|
|
|
|
("font-liberation" ,font-liberation)
|
2022-02-27 19:52:55 +00:00
|
|
|
("imgui" ,imgui-1.86) ; Required for MangoHud.
|
|
|
|
("mangohud" ,mangohud)
|
2020-09-19 07:57:43 +00:00
|
|
|
("openal" ,openal) ; Prevents corrupt audio in Crypt of the Necrodancer.
|
|
|
|
("pulseaudio" ,pulseaudio) ; Prevents corrupt audio in Sven Coop.
|
2022-02-27 19:52:55 +00:00
|
|
|
("python" ,python) ; Required for KillingFloor2 and Wreckfest.
|
|
|
|
("spdlog" ,spdlog))) ; Required for MangoHud.
|
2020-05-06 18:53:49 +00:00
|
|
|
|
2024-02-24 14:30:27 +00:00
|
|
|
(define steam-container-libs
|
|
|
|
(append steam-client-libs
|
|
|
|
steam-gameruntime-libs
|
|
|
|
fhs-min-libs))
|
|
|
|
|
2024-01-31 12:31:34 +00:00
|
|
|
(define steam-nvidia-container-libs
|
|
|
|
(modify-inputs steam-container-libs
|
|
|
|
(replace "mesa" nvda)))
|
|
|
|
|
2024-01-04 01:08:28 +00:00
|
|
|
(define heroic-extra-client-libs
|
|
|
|
`(("curl" ,curl) ; Required for Heroic to download e.g. Wine.
|
|
|
|
("which" ,which) ; Heroic complains about trying to use which (though works).
|
|
|
|
("gtk+" ,gtk+))) ; Required for Heroic interface (gtk filechooser schema).
|
|
|
|
|
2021-12-20 08:26:50 +00:00
|
|
|
(define steam-ld.so.conf
|
|
|
|
(packages->ld.so.conf
|
2024-02-24 14:30:27 +00:00
|
|
|
(list (fhs-union steam-container-libs
|
2021-12-20 08:26:50 +00:00
|
|
|
#:name "fhs-union-64")
|
2024-02-24 14:30:27 +00:00
|
|
|
(fhs-union steam-container-libs
|
2021-12-20 08:26:50 +00:00
|
|
|
#:name "fhs-union-32"
|
|
|
|
#:system "i686-linux"))))
|
|
|
|
|
|
|
|
(define steam-ld.so.cache
|
|
|
|
(ld.so.conf->ld.so.cache steam-ld.so.conf))
|
|
|
|
|
2024-01-31 14:02:14 +00:00
|
|
|
(define steam-nvidia-ld.so.conf
|
|
|
|
(packages->ld.so.conf
|
|
|
|
(list (fhs-union steam-nvidia-container-libs
|
|
|
|
#:name "fhs-union-64")
|
|
|
|
(fhs-union steam-nvidia-container-libs
|
|
|
|
#:name "fhs-union-32"
|
|
|
|
#:system "i686-linux"))))
|
|
|
|
|
|
|
|
(define steam-nvidia-ld.so.cache
|
|
|
|
(ld.so.conf->ld.so.cache steam-nvidia-ld.so.conf))
|
|
|
|
|
2023-05-30 04:39:12 +00:00
|
|
|
(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
|
2024-02-24 14:30:27 +00:00
|
|
|
(fhs-union steam-container-libs
|
2023-05-30 04:39:12 +00:00
|
|
|
#:name "fhs-union-64"))
|
|
|
|
(union32
|
2024-02-24 14:30:27 +00:00
|
|
|
(fhs-union steam-container-libs
|
2023-05-30 04:39:12 +00:00
|
|
|
#:name "fhs-union-32"
|
|
|
|
#:system "i686-linux"))
|
2024-02-24 04:12:58 +00:00
|
|
|
(link-files '("share"))
|
2023-05-30 04:39:12 +00:00
|
|
|
(description "Steam is a digital software distribution platform created by
|
2020-09-13 02:44:54 +00:00
|
|
|
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
|
2023-05-30 04:39:12 +00:00
|
|
|
all games will be installed.")))
|
2021-04-12 13:38:52 +00:00
|
|
|
|
2023-05-30 04:39:12 +00:00
|
|
|
(define-public steam-nvidia-container
|
|
|
|
(nonguix-container
|
|
|
|
(inherit steam-container)
|
|
|
|
(name "steam-nvidia")
|
2023-12-15 20:04:24 +00:00
|
|
|
;; Steam's .desktop files expect a "steam" executable, so provide that.
|
|
|
|
(binary-name "steam")
|
2024-01-31 14:02:14 +00:00
|
|
|
(ld.so.conf steam-nvidia-ld.so.conf)
|
|
|
|
(ld.so.cache steam-nvidia-ld.so.cache)
|
2024-01-31 12:31:34 +00:00
|
|
|
(union64
|
|
|
|
(fhs-union steam-nvidia-container-libs
|
|
|
|
#:name "fhs-union-64"))
|
|
|
|
(union32
|
|
|
|
(fhs-union steam-nvidia-container-libs
|
|
|
|
#:name "fhs-union-32"
|
2024-01-31 12:24:33 +00:00
|
|
|
#:system "i686-linux"))
|
|
|
|
(preserved-env %nvidia-environment-variable-regexps)))
|
2023-05-30 04:39:12 +00:00
|
|
|
|
|
|
|
(define-public steam (nonguix-container->package steam-container))
|
|
|
|
(define-public steam-nvidia (nonguix-container->package steam-nvidia-container))
|
2022-08-12 19:01:50 +00:00
|
|
|
|
2024-01-04 01:08:28 +00:00
|
|
|
(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)
|
|
|
|
;; TODO: Probably can remove some of the packages from these lists, at
|
|
|
|
;; least changing the client libraries as Heroic is rather different from
|
|
|
|
;; Steam. However, a good number will be needed to run games anyway. A
|
|
|
|
;; better separation and testing in Steam as well would be helpful to
|
|
|
|
;; differentiate what packages are needed for what in general. For now,
|
|
|
|
;; this is easier and works.
|
|
|
|
(union64
|
|
|
|
(fhs-union `(,@heroic-extra-client-libs
|
2024-02-24 14:30:27 +00:00
|
|
|
,@steam-container-libs)
|
2024-01-04 01:08:28 +00:00
|
|
|
#:name "fhs-union-64"))
|
|
|
|
;; Don't include heroic-client-libs as they are not needed in 32-bit.
|
|
|
|
(union32
|
2024-02-24 14:30:27 +00:00
|
|
|
(fhs-union steam-container-libs
|
2024-01-04 01:08:28 +00:00
|
|
|
#:name "fhs-union-32"
|
|
|
|
#:system "i686-linux"))
|
2024-02-24 04:21:05 +00:00
|
|
|
(link-files '("share"))
|
2024-01-04 01:08:28 +00:00
|
|
|
(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")
|
2024-01-31 14:02:14 +00:00
|
|
|
(ld.so.conf steam-nvidia-ld.so.conf)
|
|
|
|
(ld.so.cache steam-nvidia-ld.so.cache)
|
2024-01-31 12:31:34 +00:00
|
|
|
(union64
|
|
|
|
(fhs-union `(,@heroic-extra-client-libs
|
|
|
|
,@steam-nvidia-container-libs)
|
|
|
|
#:name "fhs-union-64"))
|
|
|
|
(union32
|
|
|
|
(fhs-union steam-nvidia-container-libs
|
|
|
|
#:name "fhs-union-32"
|
2024-01-31 12:24:33 +00:00
|
|
|
#:system "i686-linux"))
|
|
|
|
(preserved-env %nvidia-environment-variable-regexps)))
|
2024-01-04 01:08:28 +00:00
|
|
|
|
|
|
|
(define-public heroic (nonguix-container->package heroic-container))
|
|
|
|
(define-public heroic-nvidia (nonguix-container->package heroic-nvidia-container))
|
|
|
|
|
2022-08-12 19:01:50 +00:00
|
|
|
(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)))
|
2024-04-12 16:26:23 +00:00
|
|
|
|
|
|
|
(define hicolor-icon-theme-lutris
|
|
|
|
(package
|
|
|
|
(name "hicolor-icon-theme-lutris")
|
|
|
|
(version "0.17-ee8fe23c")
|
|
|
|
(source
|
|
|
|
(origin
|
|
|
|
(method git-fetch)
|
|
|
|
(uri (git-reference
|
|
|
|
(url "https://github.com/lutris/lutris-runtime")
|
|
|
|
(commit "ee8fe23c5bf2ac979efb9c00ca3abbd57af180a8")))
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
(sha256
|
|
|
|
(base32 "0wjjj46wmnqc8p1hy0q74bpfqf0cm06hd518j170mrm9pnpiil2b"))))
|
|
|
|
(build-system copy-build-system)
|
|
|
|
(arguments
|
|
|
|
(list
|
|
|
|
#:install-plan ''(("icons" "share/icons"))))
|
|
|
|
(home-page "https://github.com/lutris/lutris-runtime")
|
|
|
|
(synopsis "Freedesktop icon theme - Lutris edition")
|
|
|
|
(description "Freedesktop icon theme - Lutris edition.")
|
|
|
|
(license license:gpl2)))
|
|
|
|
|
|
|
|
(define-public lutris
|
|
|
|
(package
|
|
|
|
(name "lutris")
|
|
|
|
(version "0.5.18")
|
|
|
|
(source
|
|
|
|
(origin
|
|
|
|
(method url-fetch)
|
|
|
|
(uri (string-append
|
|
|
|
"https://github.com/lutris/lutris/archive/refs/tags/v" version
|
|
|
|
".tar.gz"))
|
|
|
|
(sha256
|
|
|
|
(base32 "1lfqqd06xx5s3957yjsqq5jhqz4nhg2wfp0djh80jx8w5l2svm5r"))))
|
|
|
|
(build-system copy-build-system)
|
|
|
|
(propagated-inputs (list ;Otherwise, TLS doesn't work and it's impossible to connect to itch.io, gog, etc.
|
|
|
|
cairo gsettings-desktop-schemas nss-certs webkitgtk-for-gtk3))
|
|
|
|
(inputs (list
|
|
|
|
;; Non-python dependencies:
|
|
|
|
file
|
|
|
|
gdk-pixbuf
|
|
|
|
gnutls
|
|
|
|
hicolor-icon-theme-lutris
|
|
|
|
hicolor-icon-theme
|
|
|
|
libpng
|
|
|
|
librsvg
|
|
|
|
mesa
|
|
|
|
shared-mime-info
|
|
|
|
vulkan-loader
|
|
|
|
;; Will be in the path:
|
|
|
|
fluidsynth
|
|
|
|
glibc
|
|
|
|
`(,gtk+ "bin")
|
|
|
|
mesa-utils
|
|
|
|
p7zip
|
|
|
|
pciutils
|
|
|
|
procps
|
|
|
|
psmisc
|
|
|
|
vulkan-tools
|
|
|
|
xrandr
|
|
|
|
;; Python dependencies:
|
|
|
|
python
|
|
|
|
python-dbus
|
|
|
|
python-distro
|
|
|
|
python-evdev
|
|
|
|
python-lxml
|
|
|
|
python-pillow
|
|
|
|
python-protobuf
|
|
|
|
python-pycairo
|
|
|
|
python-pygobject
|
|
|
|
python-pyyaml
|
|
|
|
python-requests
|
|
|
|
python-setproctitle))
|
|
|
|
(arguments
|
|
|
|
(list
|
|
|
|
#:phases #~(modify-phases %standard-phases
|
|
|
|
(add-before 'install 'gdk-pixbuf-cache-gen
|
|
|
|
(lambda* (#:key #:allow-other-keys)
|
|
|
|
(setenv "GDK_PIXBUF_MODULE_FILE"
|
|
|
|
(string-append #$output
|
|
|
|
"/lib/gdk-pixbuf/loaders.cache"))
|
|
|
|
(mkdir-p (string-append #$output "/lib/gdk-pixbuf"))
|
|
|
|
(invoke "gdk-pixbuf-query-loaders" "--update-cache"
|
|
|
|
#$(file-append librsvg
|
|
|
|
"/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg"))))
|
|
|
|
(add-before 'install 'ldconfig-p
|
|
|
|
(lambda* (#:key #:allow-other-keys)
|
|
|
|
(mkdir-p (string-append #$output "/etc"))
|
|
|
|
(invoke "ldconfig"
|
|
|
|
"-C"
|
|
|
|
(string-append #$output "/etc/ld.so.cache")
|
|
|
|
#$(file-append gnutls "/lib")
|
|
|
|
#$(file-append mesa "/lib")
|
|
|
|
#$(file-append vulkan-loader "/lib"))
|
|
|
|
(substitute* "lutris/util/linux.py"
|
|
|
|
(("\"-p\"")
|
|
|
|
(string-append "\"-C\", \""
|
|
|
|
#$output "/etc/ld.so.cache\", \"-p\"")))))
|
|
|
|
(add-before 'install 'patch-hardcoded-paths-and-wine
|
|
|
|
(lambda* (#:key #:allow-other-keys)
|
|
|
|
(substitute* "lutris/util/linux.py"
|
|
|
|
(("\"wine\",")
|
|
|
|
""))
|
|
|
|
(substitute* "lutris/util/graphics/vkquery.py"
|
|
|
|
(("libvulkan.so.1")
|
|
|
|
#$(file-append vulkan-loader "/lib/libvulkan.so.1")))
|
|
|
|
(substitute* "lutris/util/magic.py"
|
|
|
|
(("libmagic.so.1")
|
|
|
|
#$(file-append file "/lib/libmagic.so.1")))
|
|
|
|
(substitute* "lutris/util/wine/wine.py"
|
|
|
|
(("os\\.listdir\\('/usr/lib/'\\)")
|
|
|
|
"[]"))))
|
|
|
|
(add-after 'install 'wrap
|
|
|
|
(lambda* (#:key #:allow-other-keys)
|
|
|
|
(wrap-program (string-append #$output "/bin/lutris")
|
|
|
|
`("GDK_PIXBUF_MODULE_FILE" =
|
|
|
|
(,(getenv "GDK_PIXBUF_MODULE_FILE")))
|
|
|
|
`("GI_TYPELIB_PATH" =
|
|
|
|
(,(getenv "GI_TYPELIB_PATH")))
|
|
|
|
`("PATH" =
|
|
|
|
,(list #$(file-append fluidsynth "/bin")
|
|
|
|
#$(file-append glibc "/sbin")
|
|
|
|
(string-append #$gtk+:bin "/bin")
|
|
|
|
#$(file-append mesa-utils "/bin")
|
|
|
|
#$(file-append p7zip "/bin")
|
|
|
|
#$(file-append pciutils "/bin")
|
|
|
|
#$(file-append procps "/bin")
|
|
|
|
#$(file-append psmisc "/bin")
|
|
|
|
#$(file-append vulkan-tools "/bin")
|
|
|
|
#$(file-append xrandr "/bin")
|
|
|
|
#$(file-append xterm "/bin")
|
|
|
|
"$PATH"))
|
|
|
|
`("PYTHONPATH" =
|
|
|
|
(,(getenv "GUIX_PYTHONPATH")))
|
|
|
|
`("XDG_DATA_DIRS" =
|
|
|
|
,(list #$(file-append hicolor-icon-theme-lutris
|
|
|
|
"/share")
|
|
|
|
#$(file-append hicolor-icon-theme "/share")
|
|
|
|
#$(file-append shared-mime-info "/share")
|
|
|
|
"$XDG_DATA_DIRS"))))))
|
|
|
|
#:install-plan ''(("bin" "bin")
|
|
|
|
("lutris" "lutris")
|
|
|
|
("share" "share"))))
|
|
|
|
(home-page "https://github.com/lutris/lutris")
|
|
|
|
(synopsis "Game library manager")
|
|
|
|
(description
|
|
|
|
"Lutris is a game manager that can be used as a frontend for many sources of games")
|
|
|
|
(license license:gpl3)))
|
|
|
|
|
|
|
|
(define lutris-client-libs-64 ; For TLS support, to login into itch.io, gog, etc.
|
|
|
|
`(("nss-certs" ,nss-certs)
|
|
|
|
("cairo" ,cairo)
|
|
|
|
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
|
|
|
|
("webkitgtk-for-gtk3" ,webkitgtk-for-gtk3)))
|
|
|
|
(define lutris-gameruntime-libs
|
|
|
|
`( ;WINE:
|
|
|
|
("alsa-lib" ,alsa-lib)
|
|
|
|
("bash-minimal" ,bash-minimal)
|
|
|
|
;; ("cups" ,cups) ; FIXME
|
|
|
|
("dbus" ,dbus)
|
|
|
|
("eudev" ,eudev)
|
|
|
|
("fontconfig" ,fontconfig)
|
|
|
|
("freetype" ,freetype)
|
|
|
|
("gnutls" ,gnutls)
|
|
|
|
("gst-plugins-base" ,gst-plugins-base)
|
|
|
|
("libgphoto2" ,libgphoto2)
|
|
|
|
("openldap" ,openldap)
|
|
|
|
("samba" ,samba)
|
|
|
|
("sane-backends" ,sane-backends)
|
|
|
|
("libpcap" ,libpcap)
|
|
|
|
("libusb" ,libusb)
|
|
|
|
("libice" ,libice)
|
|
|
|
("libx11" ,libx11)
|
|
|
|
("libxi" ,libxi)
|
|
|
|
("libxext" ,libxext)
|
|
|
|
("libxcursor" ,libxcursor)
|
|
|
|
("libxrender" ,libxrender)
|
|
|
|
("libxrandr" ,libxrandr)
|
|
|
|
("libxinerama" ,libxinerama)
|
|
|
|
("libxxf86vm" ,libxxf86vm)
|
|
|
|
("libxcomposite" ,libxcomposite)
|
|
|
|
("mit-krb5" ,mit-krb5)
|
|
|
|
("openal" ,openal)
|
|
|
|
("pulseaudio" ,pulseaudio)
|
|
|
|
("sdl2" ,sdl2)
|
|
|
|
("unixodbc" ,unixodbc)
|
|
|
|
("v4l-utils" ,v4l-utils)
|
|
|
|
("vkd3d" ,vkd3d)
|
|
|
|
("vulkan-loader" ,vulkan-loader)
|
|
|
|
("coreutils" ,coreutils)
|
|
|
|
;; Deps required for some games:
|
|
|
|
("alsa-plugins:pulseaudio" ,alsa-plugins "pulseaudio")
|
|
|
|
("aria2" ,aria2) ; For the Rockstar launcher
|
|
|
|
("cabextract" ,cabextract) ; For the Rockstar launcher
|
|
|
|
("findutils" ,findutils) ; For the Rockstar launcher
|
|
|
|
("font-dejavu" ,font-dejavu)
|
|
|
|
("font-liberation" ,font-liberation)
|
|
|
|
("gawk" ,gawk) ; For the Rockstar launcher
|
|
|
|
("gcc:lib" ,gcc "lib")
|
|
|
|
("grep" ,grep) ; For the Rockstar launcher
|
|
|
|
("imgui" ,imgui-1.86)
|
|
|
|
("jansson" ,jansson) ; For League of Legends
|
|
|
|
("mangohud" ,mangohud)
|
|
|
|
("mesa" ,mesa)
|
|
|
|
("python" ,python)
|
|
|
|
("sed" ,sed) ; For the Rockstar launcher
|
|
|
|
("xdg-utils" ,xdg-utils) ; For Slay the Princess (and maybe renpy in general).
|
|
|
|
))
|
|
|
|
|
|
|
|
(define lutris-fhs-union-64
|
|
|
|
(fhs-union `(,@lutris-client-libs-64
|
|
|
|
,@lutris-gameruntime-libs
|
|
|
|
,@fhs-min-libs)
|
|
|
|
#:name "fhs-union-64"))
|
|
|
|
(define lutris-fhs-union-32
|
|
|
|
(fhs-union `(,@lutris-gameruntime-libs
|
|
|
|
,@fhs-min-libs)
|
|
|
|
#:name "fhs-union-32"
|
|
|
|
#:system "i686-linux"))
|
|
|
|
(define lutris-ld.so.conf
|
|
|
|
(packages->ld.so.conf (list lutris-fhs-union-64 lutris-fhs-union-32)))
|
|
|
|
(define lutris-ld.so.cache
|
|
|
|
(ld.so.conf->ld.so.cache lutris-ld.so.conf))
|
|
|
|
|
|
|
|
(define lutris-container
|
|
|
|
(nonguix-container (name "lutris-wrapped")
|
|
|
|
(wrap-package lutris)
|
|
|
|
(run "/bin/lutris")
|
|
|
|
(modules '(gtk))
|
|
|
|
(packages '(cairo))
|
|
|
|
(ld.so.conf lutris-ld.so.conf)
|
|
|
|
(ld.so.cache lutris-ld.so.cache)
|
|
|
|
(union64 lutris-fhs-union-64)
|
|
|
|
(union32 lutris-fhs-union-32)
|
|
|
|
(description
|
|
|
|
"Lutris is a game manager that can be used as a frontend for many sources of games")))
|
|
|
|
|
|
|
|
(define-public lutris-wrapped
|
|
|
|
(nonguix-container->package lutris-container))
|