Merge branch nonguix:master into qby-master-patch-35957

This commit is contained in:
qby 2024-03-24 16:08:49 +00:00
commit 7aa49ee0be
11 changed files with 282 additions and 102 deletions

View File

@ -87,7 +87,7 @@ lets you focus on your code.")
(define-public clj-kondo
(package
(name "clj-kondo")
(version "2023.10.20")
(version "2024.03.13")
(source (origin
(method url-fetch/zipbomb)
(uri (string-append
@ -95,11 +95,11 @@ lets you focus on your code.")
version "/clj-kondo-" version "-linux-amd64.zip"))
(sha256
(base32
"1zb4bkmhv5mh18z8h82qa1a0m95pd5dwdxg31pqgs6lnlca3vsph"))))
"0qdimdf854wsy19i39j18f01b3dhj4zccslymbkn8j9rm90k91m3"))))
(build-system binary-build-system)
(arguments
(list #:patchelf-plan `'(("clj-kondo" ("gcc" "zlib")))
#:install-plan `'(("clj-kondo" "/bin/"))
#:install-plan `'(("./clj-kondo" "/bin/"))
#:phases #~(modify-phases %standard-phases
(add-after 'unpack 'chmod
(lambda _
@ -115,3 +115,67 @@ lets you focus on your code.")
(description "Clj-kondo performs static analysis on Clojure, ClojureScript
and EDN, without the need of a running REPL.")
(license license:epl1.0)))
(define-public clojure-lsp
(package
(name "clojure-lsp")
(version "2024.03.13-13.11.00")
(source (origin
(method url-fetch/zipbomb)
(uri (string-append "https://github.com/clojure-lsp/clojure-lsp"
"/releases/download/" version
"/clojure-lsp-native-static-linux-amd64.zip"))
(sha256
(base32
"1l6w55aragyf8rzy087iqw97xnpih5syjwhf0jwbgrqps2k44ms5"))))
(build-system binary-build-system)
(arguments
`(#:install-plan
'(("./clojure-lsp" "/bin/"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'chmod
(lambda _
(chmod "./clojure-lsp" #o755))))))
(inputs (list `(,gcc "lib") zlib))
(supported-systems '("x86_64-linux"))
(home-page "https://github.com/clojure-lsp/clojure-lsp")
(synopsis "Clojure & ClojureScript Language Server (LSP) implementation")
(description "This package provides a Language Server for Clojure and ClojureScript
languages. The goal of this project is to bring great editing tools for
Clojure/Clojurescript to all editors and programatically via its CLI and API.
It aims to work alongside you to help you navigate, identify and fix errors,
perform refactors and more.")
(license license:expat)))
(define-public babashka
(package
(name "babashka")
(version "1.3.189")
(source (origin
(method url-fetch/tarbomb)
(uri (string-append "https://github.com/babashka/babashka"
"/releases/download/v" version "/babashka-"
version "-linux-amd64.tar.gz"))
(sha256
(base32
"1gzra3y5iljjqi4rj1qxr3yniqla3qnhv881gkzrp788fwsvlmwv"))))
(build-system binary-build-system)
(arguments
`(#:patchelf-plan
'(("bb" ("gcc" "zlib")))
#:install-plan
'(("./bb" "/bin/"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'chmod
(lambda _
(chmod "bb" #o755))))))
(inputs (list `(,gcc "lib") zlib))
(supported-systems '("x86_64-linux"))
(home-page "https://github.com/babashka/babashka")
(synopsis "Native, fast starting Clojure interpreter for scripting")
(description "Babashka is a native Clojure interpreter for scripting with
fast startup. Its main goal is to leverage Clojure in places where you would
be using bash otherwise.")
(license license:epl1.0)))

View File

@ -1,6 +1,8 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2023 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2024 Andre A. Gomes <andremegafone@gmail.com>
;;; Copyright © 2024 Jonathan Brielmaier <jonathan.brielmaier@web.de>
(define-module (nongnu packages electron)
#:use-module (nonguix build-system chromium-binary)
@ -13,23 +15,27 @@
#:use-module (gnu packages gtk)
#:use-module (gnu packages video))
(define-public electron
(define (electron-source version hash)
(origin
(method url-fetch/zipbomb)
(uri
(string-append
"https://github.com/electron/electron/releases/download/v"
version "/electron-v" version "-"
(match (or (%current-system) (%current-target-system))
("x86_64-linux" "linux-x64")
("i686-linux" "linux-ia32")
("aarch64-linux" "linux-arm64")
("armhf-linux" "linux-armv7l"))
".zip"))
(sha256 (base32 hash))))
(define-public electron-27
(package
(name "electron")
(version "27.1.0")
(source (origin
(method url-fetch/zipbomb)
(uri
(string-append
"https://github.com/electron/electron/releases/download/v"
version "/electron-v" version "-"
(match (or (%current-system) (%current-target-system))
("x86_64-linux" "linux-x64")
("i686-linux" "linux-ia32")
("aarch64-linux" "linux-arm64")
("armhf-linux" "linux-armv7l"))
".zip"))
(sha256 (base32 "08illknzcikzzsb6i7z1p2xgb20jjc5cx9hynll25f44q9pg48b6"))))
(version "27.3.6")
(source (electron-source version
"12hjn1bfk8c25f54kk561mkjl7hsk8b16rj7a7gczswjdpx6fpi0"))
(build-system chromium-binary-build-system)
(arguments
`(#:wrapper-plan
@ -81,3 +87,18 @@ Chromium and is used by the Atom editor and many other apps.")
(license (license:nonfree
(string-append "https://github.com/electron/electron/blob/v"
version "/LICENSE")))))
(define-public electron electron-27)
(define-public electron-28
(package
(inherit electron-27)
(version "28.2.7")
(source (electron-source version
"0sw8nn1jr9x0p4s2g5yp5lrpy8mzq0sjd099x7axbg6cm1c80iff"))))
(define-public electron-29
(package
(inherit electron-27)
(version "29.1.4")
(source (electron-source version
"1d96nhx9j9mzc3q3ald1imqdxdgq9by1qm4q703sjy3knq1p38w3"))))

View File

@ -2,6 +2,7 @@
;;; Copyright © 2022-2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2023 Krzysztof Baranowski <pharcosyle@gmail.com>
;;; Copyright © 2024 Efraim Flashner <efraim@flashner.co.il>
(define-module (nongnu packages firmware)
#:use-module (gnu packages compression)
@ -134,16 +135,18 @@ HDMI to USB Type-C Bridge in the PinePhone.")
(build-system copy-build-system)
(arguments
`(#:substitutable? #f
#:install-plan '( ;Bluetooth firmware
("BCM4345C5.hcd" "usr/lib/firmware/brcm/")
#:install-plan '(;;Bluetooth firmware
("BCM4345C5.hcd" "/lib/firmware/brcm/")
;; WiFi firmware
("fw_bcm43456c5_ag.bin" "usr/lib/firmware/brcm/")
("fw_bcm43456c5_ag.bin" "/lib/firmware/brcm/")
("fw_bcm43456c5_ag.bin"
"/lib/firmware/brcm/brcmfmac43456-sdio.bin")
("brcmfmac43456-sdio.clm_blob"
"usr/lib/firmware/brcm/")
"/lib/firmware/brcm/")
("brcmfmac43456-sdio.AP6256.txt"
"usr/lib/firmware/brcm/")
"/lib/firmware/brcm/")
("brcmfmac43456-sdio.AP6256.txt"
"usr/lib/firmware/brcm/brcmfmac43456-sdio.pine64,pinebook-pro.txt"))))
"/lib/firmware/brcm/brcmfmac43456-sdio.pine64,pinebook-pro.txt"))))
(synopsis "Firmware for the wifi/bt module AP6256")
(description
"This package provides Firmware for the wifi/bt module AP6256,

View File

@ -218,6 +218,15 @@ implementation with gogdl and Amazon Games using Nile.")
("python" ,python) ; Required for KillingFloor2 and Wreckfest.
("spdlog" ,spdlog))) ; Required for MangoHud.
(define steam-container-libs
(append steam-client-libs
steam-gameruntime-libs
fhs-min-libs))
(define steam-nvidia-container-libs
(modify-inputs steam-container-libs
(replace "mesa" nvda)))
(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).
@ -225,19 +234,26 @@ implementation with gogdl and Amazon Games using Nile.")
(define steam-ld.so.conf
(packages->ld.so.conf
(list (fhs-union `(,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
(list (fhs-union steam-container-libs
#:name "fhs-union-64")
(fhs-union `(,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
(fhs-union steam-container-libs
#:name "fhs-union-32"
#:system "i686-linux"))))
(define steam-ld.so.cache
(ld.so.conf->ld.so.cache steam-ld.so.conf))
(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))
(define-public steam-container
(nonguix-container
(name "steam")
@ -246,14 +262,10 @@ implementation with gogdl and Amazon Games using Nile.")
(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)
(fhs-union steam-container-libs
#:name "fhs-union-64"))
(union32
(fhs-union `(,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
(fhs-union steam-container-libs
#:name "fhs-union-32"
#:system "i686-linux"))
(link-files '("share"))
@ -268,8 +280,16 @@ all games will be installed.")))
(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)))))
(ld.so.conf steam-nvidia-ld.so.conf)
(ld.so.cache steam-nvidia-ld.so.cache)
(union64
(fhs-union steam-nvidia-container-libs
#:name "fhs-union-64"))
(union32
(fhs-union steam-nvidia-container-libs
#:name "fhs-union-32"
#:system "i686-linux"))
(preserved-env %nvidia-environment-variable-regexps)))
(define-public steam (nonguix-container->package steam-container))
(define-public steam-nvidia (nonguix-container->package steam-nvidia-container))
@ -289,15 +309,11 @@ all games will be installed.")))
;; this is easier and works.
(union64
(fhs-union `(,@heroic-extra-client-libs
,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
,@steam-container-libs)
#:name "fhs-union-64"))
;; Don't include heroic-client-libs as they are not needed in 32-bit.
(union32
(fhs-union `(,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
(fhs-union steam-container-libs
#:name "fhs-union-32"
#:system "i686-linux"))
(link-files '("share"))
@ -312,8 +328,17 @@ installed.")))
(nonguix-container
(inherit heroic-container)
(name "heroic-nvidia")
(union64 (replace-mesa (ngc-union64 heroic-container)))
(union32 (replace-mesa (ngc-union32 heroic-container)))))
(ld.so.conf steam-nvidia-ld.so.conf)
(ld.so.cache steam-nvidia-ld.so.cache)
(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"
#:system "i686-linux"))
(preserved-env %nvidia-environment-variable-regexps)))
(define-public heroic (nonguix-container->package heroic-container))
(define-public heroic-nvidia (nonguix-container->package heroic-nvidia-container))

View File

@ -132,6 +132,9 @@ some freedo package or an output of package-version procedure."
"The unmodified Linux kernel, including nonfree blobs, for running Guix System
on hardware which requires nonfree software to function."))))
(define-public linux-6.8
(corrupt-linux linux-libre-6.8))
(define-public linux-6.7
(corrupt-linux linux-libre-6.7))
@ -809,8 +812,8 @@ network adapters.")
(license gpl2))))
(define-public rtl8821ce-linux-module
(let ((commit "a478095a45d8aa957b45be4f9173c414efcacc6f")
(revision "10"))
(let ((commit "66983b69120a13699acf40a12979317f29012111")
(revision "11"))
(package
(name "rtl8821ce-linux-module")
(version (git-version "0.0.0" revision commit))
@ -823,7 +826,7 @@ network adapters.")
(file-name (git-file-name name version))
(sha256
(base32
"00cn87jjrcxjqr3n8jv4w3n64zksmzz05fdr1gdvnbx1ab5739f6"))))
"0kj12jll0df1h4z6kzv3vylh22xlniki5kg414fv9sqgx1qgs5k7"))))
(build-system linux-module-build-system)
(arguments
(list #:make-flags
@ -906,8 +909,8 @@ to disable the conflicting rtw88 driver:
"https://github.com/morrownr/8821cu-20210916/blob/main/LICENSE")))))
(define-public rtl8812au-aircrack-ng-linux-module
(let ((commit "35308f4dd73e77fa572c48867cce737449dd8548")
(revision "11"))
(let ((commit "a3e0c0b6d54546418f046db0dbf1d20e454c9ec2")
(revision "12"))
(package
(inherit rtl8821ce-linux-module)
(name "rtl8812au-aircrack-ng-linux-module")
@ -920,7 +923,7 @@ to disable the conflicting rtw88 driver:
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "1clqrgmq5fhzybbiapmdbhg5qfx9k21r0hqa9pqmyinaqhvfnhfj"))
(base32 "1hwzsy62h7ik5s54paikcj5ips7mrnfacprciiq412mz5ag28cdn"))
(modules '((guix build utils)))
(snippet
#~(begin
@ -1188,7 +1191,7 @@ driver:
(define-public intel-microcode
(package
(name "intel-microcode")
(version "20231114")
(version "20240312")
(source
(origin
(method git-fetch)
@ -1199,7 +1202,7 @@ driver:
(commit (string-append "microcode-" version))))
(file-name (git-file-name name version))
(sha256
(base32 "07c7hkwpvb9056s73s55sg04cxr1d9n1sd9r1g7sm3gh70yc17ki"))))
(base32 "1j1krkmp9kxmpq8bbbld8bm3y9rqhmlj5qfm43czikawnpw81571"))))
(build-system copy-build-system)
(arguments
(list #:install-plan

View File

@ -1,16 +1,14 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2022 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2023 André A. Gomes <andremegafone@gmail.com>
;;; Copyright © 2023, 2024 André A. Gomes <andremegafone@gmail.com>
(define-module (nongnu packages lisp)
#:use-module (ice-9 match)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression)
#:use-module (gnu packages tls)
#:use-module (gnu packages node)
#:use-module (gnu packages lisp)
#:use-module (gnu packages lisp-xyz)
;; #:use-module (gnu packages lisp-check)
#:use-module (nongnu packages electron)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
@ -125,8 +123,8 @@ then open a browser at http://localhost:PORT, where PORT is the indicated port."
"https://franz.com/ftp/pub/legal/ACL-Express-20170301.pdf"))))
(define-public sbcl-cl-electron
(let ((commit "458a60d8c9baae71906294ffae891c3d0686c672")
(revision "2"))
(let ((commit "f2245dc1450a6ad416984cf932be50e00957390a")
(revision "3"))
(package
(name "sbcl-cl-electron")
(version (git-version "0.0.0" revision commit))
@ -138,13 +136,22 @@ then open a browser at http://localhost:PORT, where PORT is the indicated port."
(commit commit)))
(file-name (git-file-name "cl-electron" version))
(sha256
(base32 "1ya6y55kv0g3h19ifnmwbc752p00s9mj1b1n4ljw4n7ycxmdpb24"))))
(base32 "0c18xbwwnjaiwzd01dprdrwzp27nwihaf7pmkql1f5yk43x3ajs0"))))
(build-system asdf-build-system/sbcl)
(native-inputs (list ;; sbcl-lisp-unit2
sbcl))
(inputs (list electron node
(inputs (list electron
sbcl-cl-json sbcl-iolib sbcl-cl-str sbcl-nclasses
sbcl-parenscript sbcl-bordeaux-threads))
sbcl-cl-ppcre sbcl-bordeaux-threads sbcl-lparallel
sbcl-parenscript sbcl-spinneret))
(arguments
'(#:tests? #f
#:asd-systems '("cl-electron" "cl-electron/demos")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "source/core.lisp"
(("\"electron\"")
(string-append "\"" (assoc-ref inputs "electron") "/bin/electron\""))))))))
(synopsis "Common Lisp interface to Electron")
(home-page "https://github.com/atlas-engineer/cl-electron")
(description "@command{cl-electron} is a binding to Electron for

View File

@ -90,7 +90,7 @@ its core.")
(define-public signal-desktop
(package
(name "signal-desktop")
(version "6.46.0")
(version "7.3.0")
(source
(origin
(method url-fetch)
@ -99,7 +99,7 @@ its core.")
"https://updates.signal.org/desktop/apt/pool/s/" name "/" name "_" version
"_amd64.deb"))
(sha256
(base32 "1pjv8v1hhycwbvqvih83axv41jkyksq6d9152fqic9d61lbb1kpa"))))
(base32 "1gkcfh94l5nj8p3jk7g80jqq11fb8igi4wm84g67a9qi8n56wcrc"))))
(supported-systems '("x86_64-linux"))
(build-system chromium-binary-build-system)
(arguments

View File

@ -97,19 +97,19 @@
;; Update this id with every firefox update to its release date.
;; It's used for cache validation and therefore can lead to strange bugs.
(define %firefox-esr-build-id "20240219101823")
(define %firefox-esr-build-id "20240322120907")
(define-public firefox-esr
(package
(name "firefox-esr")
(version "115.8.0esr")
(version "115.9.1esr")
(source
(origin
(method url-fetch)
(uri (string-append "https://archive.mozilla.org/pub/firefox/releases/"
version "/source/firefox-" version ".source.tar.xz"))
(sha256
(base32 "1slmp2v1q3my81z8kiym9rpxw5d9n4sn07v7hv99517w7vr8d05g"))))
(base32 "0agr8s42lpbq5gixsgj5kpcvimbnyx6msr4il4rvmf7gpw47hr93"))))
(build-system gnu-build-system)
(arguments
(list
@ -532,27 +532,34 @@ MOZ_ENABLE_WAYLAND=1 exec ~a $@\n"
;; Update this id with every firefox update to its release date.
;; It's used for cache validation and therefore can lead to strange bugs.
(define %firefox-build-id "20240219104035")
(define %firefox-build-id "20240322073900")
(define-public firefox
(package
(inherit firefox-esr)
(name "firefox")
(version "123.0")
(version "124.0.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://archive.mozilla.org/pub/firefox/releases/"
version "/source/firefox-" version ".source.tar.xz"))
(sha256
(base32 "1dscgn1ymqi4zr29fpj43y8gaspc5wl7a59w657ws56vmnymm24y"))))
(base32 "0hxqd8sfj9zzi1ifni8z5r2hzhjw2pvl7hg3dgzmgq2mm2p1db6x"))))
(arguments
(substitute-keyword-arguments (package-arguments firefox-esr)
((#:phases phases)
#~(modify-phases #$phases
(replace 'set-build-id
(lambda _
(setenv "MOZ_BUILD_DATE" #$%firefox-build-id)))))))
(setenv "MOZ_BUILD_DATE" #$%firefox-build-id)))
(replace 'remove-cargo-frozen-flag
(lambda _
;; Remove --frozen flag from cargo invokation, otherwise it'll
;; complain that it's not able to change Cargo.lock.
;; https://bugzilla.mozilla.org/show_bug.cgi?id=1726373
(substitute* "build/RunCbindgen.py"
(("args.append\\(\"--frozen\"\\)") "pass"))))))))
(native-inputs
(modify-inputs (package-native-inputs firefox-esr)
(replace "rust" rust-firefox)
@ -562,7 +569,7 @@ MOZ_ENABLE_WAYLAND=1 exec ~a $@\n"
"Full-featured browser client built from Firefox source tree, without
the official icon and the name \"firefox\".")))
;; As of Firefox 121.0, Firefox uses Wayland by default. This means we no longer need a seperate package
;; for Firefox on Wayland.
;; As of Firefox 121.0, Firefox uses Wayland by default. This means we no
;; longer need a seperate package for Firefox on Wayland.
(define-public firefox-wayland
(deprecated-package "firefox-wayland" firefox))

View File

@ -58,6 +58,21 @@
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
(define-public %nvidia-environment-variable-regexps
'("^__GL_" ; NVIDIA OpenGL settings.
"^__GLX_VENDOR_LIBRARY_NAME$" ; For GLVND.
;; NVIDIA PRIME Render Offload.
"^__NV_PRIME_RENDER_OFFLOAD(_PROVIDER)?$"
"^__VK_LAYER_NV_optimus$"
;; NVIDIA NGX.
"^__NGX_CONF_FILE$"
"^__NV_SIGNED_LOAD_CHECK$"
"^PROTON_ENABLE_NGX_UPDATER$"
;; NVIDIA VDPAU settings.
"^VDPAU_NVIDIA_"
;; GSYNC control for Vulkan direct-to-display applications.
"^VKDirectGSYNC(Compatible)?Allowed$"))
(define nvidia-version "515.76")
(define computed-origin-method

View File

@ -24,17 +24,17 @@
(define-public anytype
(package
(name "anytype")
(version "0.38")
(version "0.39.0")
(source
(origin
(method url-fetch)
(uri
(string-append "https://download.anytype.io?action=download"
"&key=desktop&id=148487107"))
(string-append "https://anytype-release.fra1.cdn.digitaloceanspaces.com/"
name "_" version "_amd64.deb"))
(file-name (string-append "anytype-" version ".deb"))
(sha256
(base32
"1xc57ppk3l16mq2a53scf79m8hx43x21kac96ws66awlkz14swc7"))))
"10y037qwm6k28min2sgpshrlpirc1p0zn3b4syxrrz494x5g2ivi"))))
(build-system chromium-binary-build-system)
(arguments
(list
@ -52,6 +52,7 @@
"libGLESv2.so"
"libvk_swiftshader.so"
"libvulkan.so.1"
"resources/app.asar.unpacked/dist/nativeMessagingHost"
"resources/app.asar.unpacked/node_modules/keytar/build/Release/keytar.node"))
#:install-plan
#~'(("opt/" "/share")

View File

@ -260,8 +260,9 @@ in a sandboxed FHS environment."
(home (getenv "HOME"))
(sandbox-home (or (getenv "GUIX_SANDBOX_HOME")
(string-append home "/" #$(ngc-sandbox-home container))))
(wayland-display (or (getenv "WAYLAND_DISPLAY")
"wayland-0"))
(preserved-env '("^DBUS_"
"^DISPLAY$"
"^DRI_PRIME$"
"^GDK_SCALE$" ; For UI scaling.
"^GUIX_LOCPATH$" ; For pressure-vessel locales.
@ -276,6 +277,7 @@ in a sandboxed FHS environment."
;; need to be shared with the container as
;; well; this is not needed currently.
"^LD_LIBRARY_PATH$"
"^LIBVA_DRIVERS_PATH$" ; For VA-API drivers.
"^MANGOHUD" ; For MangoHud configuration.
"^PRESSURE_VESSEL_" ; For pressure vessel options.
"_PROXY$"
@ -289,12 +291,15 @@ in a sandboxed FHS environment."
"^SDL_"
"^STEAM_"
"^SSL_" ; SSL certificate environment, needed by curl for Heroic.
"^VDPAU_DRIVER_PATH$" ; For VDPAU drivers.
"^TZ" ; For setting time zone.
"^XAUTHORITY$"
;; Matching all ^XDG_ vars causes issues
;; discussed in 80decf05.
"^XDG_CURRENT_DESKTOP$"
"^XDG_DATA_HOME$"
"^XDG_RUNTIME_DIR$"
"^XDG_SESSION_(CLASS|TYPE)$"
"^(WAYLAND_)?DISPLAY$"
#$@(ngc-preserved-env container) ; Environment from container.
;; The following are useful for debugging.
"^CAPSULE_DEBUG$"
@ -310,6 +315,7 @@ in a sandboxed FHS environment."
,@(exists-> "/dev/nvidia-modeset")
,@(exists-> "/etc/machine-id")
"/etc/localtime" ; Needed for correct time zone.
"/etc/os-release" ; Needed for distro info.
"/sys/class/drm" ; Needed for hw monitoring like MangoHud.
"/sys/class/hwmon" ; Needed for hw monitoring like MangoHud.
"/sys/class/hidraw" ; Needed for devices like the Valve Index.
@ -333,6 +339,7 @@ in a sandboxed FHS environment."
,@(exists-> (string-append home "/.config/pulse"))
,@(exists-> (string-append xdg-runtime "/pulse"))
,@(exists-> (string-append xdg-runtime "/bus"))
,@(exists-> (string-append xdg-runtime "/" wayland-display))
,@(exists-> (getenv "XAUTHORITY"))
#$@(ngc-shared container)))
(DEBUG (equal? (getenv "DEBUG") "1"))
@ -347,10 +354,10 @@ in a sandboxed FHS environment."
;; the "usual" path, probably so they are included in the
;; pressure-vessel container.
(setenv "GUIX_LOCPATH" "/usr/lib/locale")
;; By default VDPAU drivers are searched for in libvdpau's store
;; path, so set this path to where the drivers will actually be
;; located in the container.
(setenv "VDPAU_DRIVER_PATH" "/lib64/vdpau")
;; By default VA-API drivers are searched for in mesa's store path,
;; so set this path to where the drivers will actually be located in
;; the container.
(setenv "LIBVA_DRIVERS_PATH" "/lib64/dri:/lib/dri")
(format #t "\n* Launching ~a in sandbox: ~a.\n\n"
#$(package-name (ngc-wrap-package container)) sandbox-home)
(when DEBUG
@ -455,7 +462,9 @@ application."
`((guix build utils))
#~(begin
(use-modules (guix build utils)
(ice-9 getopt-long))
(ice-9 getopt-long)
(srfi srfi-1)
(srfi srfi-26))
(define (path->str path)
(if (list? path)
(string-join path "/")
@ -465,9 +474,13 @@ application."
(dest (path->str (cdr pair))))
(unless (file-exists? dest)
(symlink target dest))))
(define (icd-symlink file)
(define (file-symlink file dir)
(mkdir-p dir)
(new-symlink
`(,file . ("/usr/share/vulkan/icd.d" ,(basename file)))))
`(,file . (,dir ,(basename file)))))
;; Use stat to follow links from packages like MangoHud.
(define (get-files dir)
(find-files (path->str dir) #:stat stat))
(define fhs-option-spec
'((asound32 (value #f))))
(let* ((guix-env (getenv "GUIX_ENVIRONMENT"))
@ -488,14 +501,11 @@ application."
"/run/current-system/profile/share"
"/sbin"
"/usr/lib"
"/usr/share/vulkan/icd.d"))
"/usr/share"))
(for-each
new-symlink
`((,ld.so.cache . "/etc/ld.so.cache")
(,ld.so.conf . "/etc/ld.so.conf") ;; needed?
;; For MangoHud implicit layers.
((,guix-env "share/vulkan/implicit_layer.d") .
"/usr/share/vulkan/implicit_layer.d")
((,guix-env "etc/ssl") . "/etc/ssl")
((,guix-env "etc/ssl") . "/run/current-system/profile/etc/ssl")
((,union32 "lib") . "/lib")
@ -512,17 +522,41 @@ application."
((,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") . "/usr/share/fonts")
((,union64 "share/fonts") . "/run/current-system/profile/share/fonts")
((,union64 "etc/fonts") . "/etc/fonts")
((,union64 "share/vulkan/explicit_layer.d") .
"/usr/share/vulkan/explicit_layer.d")))
((,union64 "etc/fonts") . "/etc/fonts")))
(for-each
icd-symlink
;; Use stat to follow links from packages like MangoHud.
`(,@(find-files (string-append union32 "/share/vulkan/icd.d")
#:directories? #t #:stat stat)
,@(find-files (string-append union64 "/share/vulkan/icd.d")
#:directories? #t #:stat stat)))
(cut file-symlink <> "/usr/share/egl/egl_external_platform.d")
(append-map
get-files
`((,union32 "share/egl/egl_external_platform.d")
(,union64 "share/egl/egl_external_platform.d"))))
(for-each
(cut file-symlink <> "/usr/share/glvnd/egl_vendor.d")
(append-map
get-files
`((,union32 "share/glvnd/egl_vendor.d")
(,union64 "share/glvnd/egl_vendor.d"))))
(for-each
(cut file-symlink <> "/usr/share/vulkan/icd.d")
(append-map
get-files
`((,union32 "share/vulkan/icd.d")
(,union64 "share/vulkan/icd.d"))))
(for-each
(cut file-symlink <> "/usr/share/vulkan/explicit_layer.d")
(append-map
get-files
`((,union64 "share/vulkan/explicit_layer.d")
(,union32 "share/vulkan/explicit_layer.d"))))
(for-each
(cut file-symlink <> "/usr/share/vulkan/implicit_layer.d")
(append-map
get-files
`((,union32 "share/vulkan/implicit_layer.d")
(,union64 "share/vulkan/implicit_layer.d")
;; For MangoHud implicit layers.
(,guix-env "share/vulkan/implicit_layer.d"))))
;; TODO: This is not the right place for this.
;; Newer versions of Steam won't startup if they can't copy to here
;; (previous would output this error but continue).
@ -537,7 +571,7 @@ application."
;; games). Wait to set this inside the container to not cause
;; issues on foreign distros, see
;; <https://gitlab.com/nonguix/nonguix/-/issues/303>
(setenv "LD_LIBRARY_PATH" "/lib64:/lib")
(setenv "LD_LIBRARY_PATH" "/lib64:/lib:/lib64/vdpau:/lib/vdpau")
;; Process FHS-specific command line options.
(let* ((options (getopt-long (or fhs-args '("")) fhs-option-spec))