nongnu: steam-nvidia: Fix launching .desktop files.

Steam installs .desktop files that refer to an executable called `steam'.
Installing steam-nvidia as the `steam-nvidia' executable breaks this, which
means Steam cannot be launched from its desktop icon.  This also applies to
.desktop files for individual games generated by Steam, when they are copied
from `<ngc-sandbox-home>/.local/share/applications/'.

Fix this by always installing Steam's wrapper executable as `steam'.  We add a
new field using "binary" to keep things shorter.

This has the downside that the `steam' and `steam-nvidia' packages cannot be
installed in the same profile, but likely people wouldn't want to do this
anyway.

Fixes #294.

* nongnu/packages/steam-client.scm (steam-nvidia-container)[binary-name]:
Specify for compatibility with .desktop files.
* nonguix/multiarch-container.scm (<nonguix-container>)[binary-name,
ngc-binary-name]: New field and accessor.
(nonguix-container->package): Use it to set correct executable name.
(make-internal-script): Use it in message.

Co-authored-by: John Kehayias <john.kehayias@protonmail.com>
Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
This commit is contained in:
Timo Wilken 2023-12-15 21:04:24 +01:00 committed by John Kehayias
parent 8956906f6b
commit 07b884a7b1
No known key found for this signature in database
GPG key ID: 499097AE5EA815D9
2 changed files with 8 additions and 2 deletions

View file

@ -7,6 +7,7 @@
;;; Copyright © 2021, 2022 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2023 Elijah Malaby
;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
(define-module (nongnu packages steam-client)
#:use-module ((guix licenses) #:prefix license:)
@ -200,6 +201,8 @@ all games will be installed.")))
(nonguix-container
(inherit steam-container)
(name "steam-nvidia")
;; Steam's .desktop files expect a "steam" executable, so provide that.
(binary-name "steam")
(union64 (replace-mesa (ngc-union64 steam-container)))
(union32 (replace-mesa (ngc-union32 steam-container)))))

View file

@ -8,6 +8,7 @@
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2023 Attila Lendvai <attila@lendvai.name>
;;; Copyright © 2023 Elijah Malaby
;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
;;; The script provided by this package may optionally be started as
;;; a shell instead of automatically launching the wrapped entrypoint by setting
@ -50,6 +51,7 @@
#:export (nonguix-container
nonguix-container?
ngc-name
ngc-binary-name
ngc-version
ngc-wrap-package
ngc-run
@ -82,6 +84,7 @@
nonguix-container make-nonguix-container
nonguix-container? this-nonguix-container
(name ngc-name)
(binary-name ngc-binary-name (default (ngc-name this-nonguix-container)) (thunked))
(version ngc-version (default #f))
(wrap-package ngc-wrap-package)
(run ngc-run)
@ -207,7 +210,7 @@ in a sandboxed FHS environment."
(manifest-target (assoc-ref %build-inputs "fhs-manifest"))
(manifest-dest (string-append out "/etc/" ,(ngc-manifest-name container)))
(wrapper-target (assoc-ref %build-inputs "fhs-wrapper"))
(wrapper-dest (string-append out "/bin/" ,(ngc-name container)))
(wrapper-dest (string-append out "/bin/" ,(ngc-binary-name container)))
(link-files ',(ngc-link-files container)))
(mkdir-p (string-append out "/sbin"))
(mkdir-p (string-append out "/etc"))
@ -528,7 +531,7 @@ application."
(if asound32-opt
(display "\n\n/etc/asound.conf configured for 32-bit.\n\n\n")
(display (string-append "\n\n/etc/asound.conf configured for 64-bit.\nLaunch "
#$(ngc-name container)
#$(ngc-binary-name container)
" with \""
(basename #$(ngc-run container))
" -- --asound32\" to use 32-bit instead.\n\n\n")))