summaryrefslogtreecommitdiff
path: root/nongnu/packages
diff options
context:
space:
mode:
authorHilton Chain <hako@ultrarare.space>2026-03-22 03:30:02 +0800
committerHilton Chain <hako@ultrarare.space>2026-04-03 16:57:38 +0800
commitb98c55d48a6e79ab50b5411615cafbf539efb2ca (patch)
treeea2bd5ea9d0ccf2f15fcf2a648e10fe8efffa332 /nongnu/packages
parent785666ddc78f21456c540b9353cafc0d0e22bbec (diff)
nongnu: Add make-nvda.
* nongnu/packages/nvidia.scm (make-nvda): New procedure. (nvdb): Define using it. (define-nvda-package): New macro. (nvda-390, nvda-user-alias-390) (nvda-470, nvda-user-alias-470) (nvda-580, nvda-user-alias-580) (nvda-590, nvda-user-alias-590): New variables. (nvda): Alias to nvda-580.
Diffstat (limited to 'nongnu/packages')
-rw-r--r--nongnu/packages/nvidia.scm171
1 files changed, 79 insertions, 92 deletions
diff --git a/nongnu/packages/nvidia.scm b/nongnu/packages/nvidia.scm
index 5fcc62e..e304070 100644
--- a/nongnu/packages/nvidia.scm
+++ b/nongnu/packages/nvidia.scm
@@ -1172,7 +1172,6 @@ configuration, application profiles, GPU monitoring and more.")
;;; ‘nvda’ packages
;;;
-
(define-public libglvnd-for-nvda
(hidden-package
(package
@@ -1214,103 +1213,91 @@ configuration, application profiles, GPU monitoring and more.")
;; nvda is used as a name because it has the same length as mesa which is
;; required for grafting
-(define-public nvda
- (package
- (name "nvda")
- (version (string-pad-right
- (package-version nvidia-driver)
- (string-length (package-version mesa-for-nvda))
- #\0))
- (source #f)
- (build-system trivial-build-system)
- (arguments
- (list #:modules '((guix build union))
- #:builder
- #~(begin
- (use-modules (guix build union))
- (union-build
- #$output
- '#$(list (this-package-input "libglvnd")
- (this-package-input "mesa")
- (this-package-input "nvidia-driver")
- (this-package-input "nvidia-vaapi-driver"))))))
- (native-search-paths
- (list
- ;; https://github.com/NVIDIA/egl-wayland/issues/39
- (search-path-specification
- (variable "__EGL_EXTERNAL_PLATFORM_CONFIG_DIRS")
- (files '("share/egl/egl_external_platform.d")))
- ;; https://gitlab.freedesktop.org/glvnd/libglvnd/-/blob/master/src/EGL/icd_enumeration.md
- (search-path-specification
- (variable "__EGL_VENDOR_LIBRARY_DIRS")
- (files '("share/glvnd/egl_vendor.d")))
- ;; See also: ‘src/gbm/main/backend.c’ in mesa source.
- (search-path-specification
- (variable "GBM_BACKENDS_PATH")
- (files '("lib/gbm")))
- ;; XXX Because of <https://issues.guix.gnu.org/issue/22138>, we need to add
- ;; this to all VA-API back ends instead of once to libva.
- (search-path-specification
- (variable "LIBVA_DRIVERS_PATH")
- (files '("lib/dri")))
- (search-path-specification
- (variable "VDPAU_DRIVER_PATH")
- (files '("lib/vdpau"))
- (separator #f))
- ;; https://github.com/KhronosGroup/Vulkan-Loader/blob/main/docs/LoaderLayerInterface.md
- (search-path-specification
- (variable "XDG_DATA_DIRS")
- (files '("share")))))
- (synopsis "Nonguix's user-facing NVIDIA driver package")
- (description
- "This package provides a @code{mesa} variant with NVIDIA proprietary driver
-support. For dependency of other packages, use @code{nvidia-driver} instead.")
- (native-inputs '())
- (propagated-inputs
- (append
- (package-propagated-inputs mesa-for-nvda)
- (package-propagated-inputs nvidia-driver)))
- (inputs (list mesa-for-nvda nvidia-driver nvidia-vaapi-driver))
- (outputs '("out"))
- (license (package-license nvidia-driver))
- (home-page (package-home-page nvidia-driver))))
-
-(define-public nvda-390
- ((package-input-rewriting `((,nvidia-driver . ,nvidia-driver-390)))
+(define* (make-nvda driver #:optional (name "nvda"))
+ ((package-input-rewriting `((,nvidia-driver . ,driver)))
(package
- (inherit nvda)
+ (name name)
(version (string-pad-right
- (package-version nvidia-driver-390)
+ (package-version driver)
(string-length (package-version mesa-for-nvda))
- #\0)))))
+ #\0))
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ (list #:modules '((guix build union))
+ #:builder
+ #~(begin
+ (use-modules (guix build union))
+ (union-build
+ #$output
+ '#$(list (this-package-input "libglvnd")
+ (this-package-input "mesa")
+ (this-package-input "nvidia-driver")
+ (this-package-input "nvidia-vaapi-driver"))))))
+ (native-search-paths
+ (list
+ ;; https://github.com/NVIDIA/egl-wayland/issues/39
+ (search-path-specification
+ (variable "__EGL_EXTERNAL_PLATFORM_CONFIG_DIRS")
+ (files '("share/egl/egl_external_platform.d")))
+ ;; https://gitlab.freedesktop.org/glvnd/libglvnd/-/blob/master/src/EGL/icd_enumeration.md
+ (search-path-specification
+ (variable "__EGL_VENDOR_LIBRARY_DIRS")
+ (files '("share/glvnd/egl_vendor.d")))
+ ;; See also: ‘src/gbm/main/backend.c’ in mesa source.
+ (search-path-specification
+ (variable "GBM_BACKENDS_PATH")
+ (files '("lib/gbm")))
+ ;; XXX Because of <https://issues.guix.gnu.org/issue/22138>, we need to add
+ ;; this to all VA-API back ends instead of once to libva.
+ (search-path-specification
+ (variable "LIBVA_DRIVERS_PATH")
+ (files '("lib/dri")))
+ (search-path-specification
+ (variable "VDPAU_DRIVER_PATH")
+ (files '("lib/vdpau"))
+ (separator #f))
+ ;; https://github.com/KhronosGroup/Vulkan-Loader/blob/main/docs/LoaderLayerInterface.md
+ (search-path-specification
+ (variable "XDG_DATA_DIRS")
+ (files '("share")))))
+ (synopsis "Nonguix's user-facing NVIDIA driver package")
+ (description
+ "This package provides a @code{mesa} variant with NVIDIA proprietary driver
+support. For dependency of other packages, use @code{nvidia-driver} instead.")
+ (native-inputs '())
+ (propagated-inputs
+ (append
+ (package-propagated-inputs mesa-for-nvda)
+ (package-propagated-inputs driver)))
+ (inputs (list mesa-for-nvda nvidia-driver nvidia-vaapi-driver))
+ (outputs '("out"))
+ (license (package-license driver))
+ (home-page (package-home-page driver)))))
-(define-public nvda-470
- ((package-input-rewriting `((,nvidia-driver . ,nvidia-driver-470)))
- (package
- (inherit nvda)
- (version (string-pad-right
- (package-version nvidia-driver-470)
- (string-length (package-version mesa-for-nvda))
- #\0)))))
+(define-syntax define-nvda-package
+ (syntax-rules ()
+ ((_ name driver)
+ (define-public name
+ (hidden-package (make-nvda driver))))
+ ((_ name driver alias)
+ (define-public name
+ (let ((nvda (make-nvda driver)))
+ (package
+ (inherit (package-with-alias alias nvda))
+ (version (package-version driver))))))))
-(define-public nvda-590
- ((package-input-rewriting `((,nvidia-driver . ,nvidia-driver-590)))
- (package
- (inherit nvda)
- (version (string-pad-right
- (package-version nvidia-driver-590)
- (string-length (package-version mesa-for-nvda))
- #\0)))))
+(define-nvda-package nvda-390 nvidia-driver-390)
+(define-nvda-package nvda-470 nvidia-driver-470)
+(define-nvda-package nvda-580 nvidia-driver-580)
+(define-nvda-package nvda-590 nvidia-driver-590)
+(define-nvda-package nvda-user-alias-390 nvidia-driver-390 "nvda")
+(define-nvda-package nvda-user-alias-470 nvidia-driver-470 "nvda")
+(define-nvda-package nvda-user-alias-580 nvidia-driver-580 "nvda")
+(define-nvda-package nvda-user-alias-590 nvidia-driver-590 "nvda")
-(define-public nvdb
- ((package-input-rewriting `((,nvidia-driver . ,nvidia-driver-beta)))
- (package
- (inherit nvda)
- (name "nvdb")
- (version (string-pad-right
- (package-version nvidia-driver-beta)
- (string-length (package-version mesa-for-nvda))
- #\0)))))
+(define-public nvdb (make-nvda nvidia-driver-beta "nvdb"))
+(define-public nvda nvda-580)
(define* (replace-mesa obj #:key (driver nvda))
(with-transformation