Merge branch 'legendary-umu' into 'master'
Add legendary, run-in-game-client-container, and umu-launcher See merge request nonguix/nonguix!604
This commit is contained in:
commit
1eb10ce19d
|
@ -4,7 +4,7 @@
|
||||||
;;; Copyright © 2021 pineapples
|
;;; Copyright © 2021 pineapples
|
||||||
;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
|
;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
|
||||||
;;; Copyright © 2021 Kozo <kozodev@runbox.com>
|
;;; Copyright © 2021 Kozo <kozodev@runbox.com>
|
||||||
;;; Copyright © 2021, 2022, 2023, 2024 John Kehayias <john.kehayias@protonmail.com>
|
;;; Copyright © 2021-2025 John Kehayias <john.kehayias@protonmail.com>
|
||||||
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
|
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
|
||||||
;;; Copyright © 2023 Elijah Malaby
|
;;; Copyright © 2023 Elijah Malaby
|
||||||
;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
|
;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
|
||||||
|
@ -16,7 +16,9 @@
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (guix download)
|
#:use-module (guix download)
|
||||||
#:use-module (guix gexp)
|
#:use-module (guix gexp)
|
||||||
|
#:use-module (guix utils)
|
||||||
#:use-module (guix build-system gnu)
|
#:use-module (guix build-system gnu)
|
||||||
|
#:use-module (guix build-system pyproject)
|
||||||
#:use-module (guix build-system python)
|
#:use-module (guix build-system python)
|
||||||
#:use-module (gnu packages audio)
|
#:use-module (gnu packages audio)
|
||||||
#:use-module (gnu packages base)
|
#:use-module (gnu packages base)
|
||||||
|
@ -42,10 +44,12 @@
|
||||||
#:use-module (gnu packages llvm)
|
#:use-module (gnu packages llvm)
|
||||||
#:use-module (gnu packages logging)
|
#:use-module (gnu packages logging)
|
||||||
#:use-module (gnu packages lsof)
|
#:use-module (gnu packages lsof)
|
||||||
|
#:use-module (gnu packages man)
|
||||||
#:use-module (nongnu packages nvidia)
|
#:use-module (nongnu packages nvidia)
|
||||||
#:use-module (gnu packages pciutils)
|
#:use-module (gnu packages pciutils)
|
||||||
#:use-module (gnu packages pulseaudio)
|
#:use-module (gnu packages pulseaudio)
|
||||||
#:use-module (gnu packages python)
|
#:use-module (gnu packages python)
|
||||||
|
#:use-module (gnu packages python-build)
|
||||||
#:use-module (gnu packages python-web)
|
#:use-module (gnu packages python-web)
|
||||||
#:use-module (gnu packages python-xyz)
|
#:use-module (gnu packages python-xyz)
|
||||||
#:use-module (gnu packages toolkits)
|
#:use-module (gnu packages toolkits)
|
||||||
|
@ -281,6 +285,137 @@ all games will be installed.")))
|
||||||
(define-public steam (nonguix-container->package steam-container))
|
(define-public steam (nonguix-container->package steam-container))
|
||||||
(define-public steam-nvidia (nonguix-container->package steam-nvidia-container))
|
(define-public steam-nvidia (nonguix-container->package steam-nvidia-container))
|
||||||
|
|
||||||
|
(define-public run-in-gc-container
|
||||||
|
(nonguix-container
|
||||||
|
(name "run-in-game-client-container")
|
||||||
|
(wrap-package bash)
|
||||||
|
(run "/bin/bash")
|
||||||
|
(ld.so.conf steam-ld.so.conf)
|
||||||
|
(ld.so.cache steam-ld.so.cache)
|
||||||
|
(union64
|
||||||
|
(fhs-union steam-container-libs
|
||||||
|
#:name "fhs-union-64"))
|
||||||
|
(union32
|
||||||
|
(fhs-union steam-container-libs
|
||||||
|
#:name "fhs-union-32"
|
||||||
|
#:system "i686-linux"))
|
||||||
|
(home-page "https://gitlab.com/nonguix/nonguix")
|
||||||
|
(synopsis "Run a shell inside the nonguix game client container")
|
||||||
|
(description "Start a bash shell (or run a command with \"-c <command>\" or script) inside
|
||||||
|
of the nonguix container used for game clients. In particular, this includes
|
||||||
|
all the dependencies incincluded in the container for Steam.")))
|
||||||
|
|
||||||
|
(define-public run-in-game-client-container (nonguix-container->package run-in-gc-container))
|
||||||
|
|
||||||
|
(define-public umu-launcher
|
||||||
|
(package
|
||||||
|
(name "umu-launcher")
|
||||||
|
(version "1.1.4")
|
||||||
|
(source
|
||||||
|
(origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://github.com/Open-Wine-Components/umu-launcher")
|
||||||
|
(commit version)))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(sha256
|
||||||
|
(base32 "1vha229dkdr8gbgh8md5k6nsa07hxi13mmdw13xw0mrnm8mibssc"))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(arguments
|
||||||
|
(list #:tests? #f ;no tests
|
||||||
|
#:make-flags
|
||||||
|
#~(list (string-append "PYTHON_INTERPRETER="
|
||||||
|
#$(this-package-input "python")
|
||||||
|
"/bin/python3")
|
||||||
|
(string-append "DESTDIR=" #$output))
|
||||||
|
#:phases
|
||||||
|
#~(modify-phases %standard-phases
|
||||||
|
(add-after 'unpack 'fix-path
|
||||||
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
|
(substitute* "Makefile.in"
|
||||||
|
(("\\$\\(PYTHONDIR\\)/umu/umu_run.py")
|
||||||
|
(string-append #$output "/lib/python"
|
||||||
|
#$(version-major+minor
|
||||||
|
(package-version (this-package-input "python")))
|
||||||
|
"/site-packages/umu/umu_run.py")))))
|
||||||
|
(replace 'configure
|
||||||
|
(lambda _
|
||||||
|
;; Build complains about no zip before 1980 stamps (even if
|
||||||
|
;; importing and using the ensure-no-mtimes-pre-1980
|
||||||
|
;; phase).
|
||||||
|
(setenv "SOURCE_DATE_EPOCH" "1531865062")
|
||||||
|
(invoke "sh" "configure.sh" (string-append "--prefix=" #$output))))
|
||||||
|
;; Like the Nix packaging done upstream, need to unnest the
|
||||||
|
;; "install."
|
||||||
|
(add-after 'install 'fix-install
|
||||||
|
(lambda _
|
||||||
|
(let ((output-output (string-append #$output "/" #$output))
|
||||||
|
(output-python (string-append #$output "/"
|
||||||
|
#$(this-package-input "python"))))
|
||||||
|
(copy-recursively output-output #$output)
|
||||||
|
(delete-file-recursively output-output)
|
||||||
|
(copy-recursively output-python #$output)
|
||||||
|
(delete-file-recursively output-python))))
|
||||||
|
(add-after 'fix-install 'python-wrap
|
||||||
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||||
|
(let ((python-path (string-append
|
||||||
|
"/lib/python"
|
||||||
|
#$(version-major+minor
|
||||||
|
(package-version (this-package-input "python")))
|
||||||
|
"/site-packages")))
|
||||||
|
(for-each (lambda (prog)
|
||||||
|
(wrap-program (string-append #$output prog)
|
||||||
|
`("GUIX_PYTHONPATH" =
|
||||||
|
(,(string-append (getenv "GUIX_PYTHONPATH")
|
||||||
|
":" #$output python-path)))))
|
||||||
|
(list "/bin/umu-run"
|
||||||
|
(string-append "/share/steam/compatibilitytools.d/"
|
||||||
|
"umu-launcher/umu-run")))))))))
|
||||||
|
(inputs (list bash-minimal python python-filelock python-xlib))
|
||||||
|
(native-inputs (list python-pypa-build
|
||||||
|
python-pypa-installer
|
||||||
|
python-hatchling
|
||||||
|
scdoc))
|
||||||
|
(home-page "https://github.com/Open-Wine-Components/umu-launcher")
|
||||||
|
(synopsis "Unified launcher for Windows games")
|
||||||
|
(description "umu-launcher is a unified launcher for Windows games on Linux. It is
|
||||||
|
essentially a copy of the Steam Runtime Tools and Steam Linux Runtime that
|
||||||
|
Valve uses for Proton, with some modifications made so that it can be used
|
||||||
|
outside of Steam.
|
||||||
|
|
||||||
|
You probably want the umu-launcher-run package to use umu-launcher, as that
|
||||||
|
will run in the nonguix container (like for Steam and Heroic).")
|
||||||
|
(license license:gpl3)))
|
||||||
|
|
||||||
|
(define-public umu-launcher-container
|
||||||
|
(nonguix-container
|
||||||
|
(name "umu-launcher-run")
|
||||||
|
(wrap-package umu-launcher)
|
||||||
|
(run "/bin/umu-run")
|
||||||
|
(ld.so.conf steam-ld.so.conf)
|
||||||
|
(ld.so.cache steam-ld.so.cache)
|
||||||
|
(union64
|
||||||
|
(fhs-union `(,@heroic-extra-client-libs
|
||||||
|
,@steam-container-libs)
|
||||||
|
#:name "fhs-union-64"))
|
||||||
|
(union32
|
||||||
|
(fhs-union steam-container-libs
|
||||||
|
#:name "fhs-union-32"
|
||||||
|
#:system "i686-linux"))
|
||||||
|
(link-files '("share"))
|
||||||
|
(preserved-env '("^GAMEID"))
|
||||||
|
(description "Use this package for the command umu-launcher-run, which
|
||||||
|
runs umu-run in the nonguix container environment. For example, to run a game
|
||||||
|
installed by legendary,
|
||||||
|
|
||||||
|
@example
|
||||||
|
GAMEID=umu-<game> GUIX_SANDBOX_EXTRA_SHARES=/home/<user>/Games guix shell \\
|
||||||
|
legendary umu-launcher-run -- \\
|
||||||
|
legendary launch <game> --no-wine --wrapper umu-launcher-run
|
||||||
|
@end example")))
|
||||||
|
|
||||||
|
(define-public umu-launcher-run (nonguix-container->package umu-launcher-container))
|
||||||
|
|
||||||
(define-public heroic-container
|
(define-public heroic-container
|
||||||
(nonguix-container
|
(nonguix-container
|
||||||
(name "heroic")
|
(name "heroic")
|
||||||
|
@ -330,6 +465,47 @@ installed.")))
|
||||||
(define-public heroic (nonguix-container->package heroic-container))
|
(define-public heroic (nonguix-container->package heroic-container))
|
||||||
(define-public heroic-nvidia (nonguix-container->package heroic-nvidia-container))
|
(define-public heroic-nvidia (nonguix-container->package heroic-nvidia-container))
|
||||||
|
|
||||||
|
(define-public legendary
|
||||||
|
(package
|
||||||
|
(name "legendary")
|
||||||
|
(version "0.20.34")
|
||||||
|
(source
|
||||||
|
(origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (pypi-uri "legendary-gl" version))
|
||||||
|
(sha256
|
||||||
|
(base32 "04cn1sv5ks0cy085r9i26gddajxcc6mbqvygxlz1cp6dhbm8slis"))))
|
||||||
|
(build-system pyproject-build-system)
|
||||||
|
(arguments (list #:tests? #f)) ;tries to use Windows only "winreg."
|
||||||
|
(propagated-inputs (list python-filelock python-requests))
|
||||||
|
(native-inputs (list python-setuptools python-wheel))
|
||||||
|
(home-page "https://github.com/derrod/legendary")
|
||||||
|
(synopsis
|
||||||
|
"Free and open-source replacement for Epic Games Launcher")
|
||||||
|
(description
|
||||||
|
"Legendary is an open-source game launcher that can download and install games
|
||||||
|
from the Epic Games platform on Linux, macOS, and Windows. Its name as a
|
||||||
|
tongue-in-cheek play on tiers of item rarity in many MMORPGs.
|
||||||
|
|
||||||
|
Note: Legendary is currently a CLI (command-line interface) application
|
||||||
|
without a graphical user interface, it has to be run from a terminal.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
@itemize
|
||||||
|
@item Authenticating with Epic's service
|
||||||
|
@item Downloading and installing your games and their DLC
|
||||||
|
@item Delta patching/updating of installed games
|
||||||
|
@item Launching games with online authentication (for multiplayer/DRM)
|
||||||
|
@item Syncing cloud saves (compatible with EGL)
|
||||||
|
@item Running games with WINE on Linux/macOS
|
||||||
|
@item Importing/Exporting installed games from/to the Epic Games
|
||||||
|
Launcher (unsupported for macOS version of EGL)
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
Note that this package does not run in the nonguix container. To launch games
|
||||||
|
with Proton, for instance, see the umu-launcher-run package.")
|
||||||
|
(license license:gpl3)))
|
||||||
|
|
||||||
(define-public protonup-ng
|
(define-public protonup-ng
|
||||||
(package
|
(package
|
||||||
(name "protonup-ng")
|
(name "protonup-ng")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user