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 Jean-Baptiste Volatier <jbv@pm.me>
|
||||
;;; 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 Elijah Malaby
|
||||
;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
|
||||
|
@ -16,7 +16,9 @@
|
|||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system pyproject)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (gnu packages audio)
|
||||
#:use-module (gnu packages base)
|
||||
|
@ -42,10 +44,12 @@
|
|||
#:use-module (gnu packages llvm)
|
||||
#:use-module (gnu packages logging)
|
||||
#:use-module (gnu packages lsof)
|
||||
#:use-module (gnu packages man)
|
||||
#: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-build)
|
||||
#:use-module (gnu packages python-web)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#: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-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
|
||||
(nonguix-container
|
||||
(name "heroic")
|
||||
|
@ -330,6 +465,47 @@ installed.")))
|
|||
(define-public heroic (nonguix-container->package heroic-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
|
||||
(package
|
||||
(name "protonup-ng")
|
||||
|
|
Loading…
Reference in New Issue
Block a user