nongnu: nvidia: Re-order variables.

* nongnu/packages/nvidia.scm: Remove unused modules.
Add comments to group NVIDIA driver packages.
Sort other packages alphabetically.

Signed-off-by: John Kehayias <john.kehayias@protonmail.com>
This commit is contained in:
Hilton Chain 2024-02-01 18:39:27 +08:00 committed by John Kehayias
parent c1c9bb0571
commit 47941b0a84
No known key found for this signature in database
GPG key ID: 499097AE5EA815D9

View file

@ -38,25 +38,16 @@
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages m4) #:use-module (gnu packages m4)
#:use-module (gnu packages lsof) #:use-module (gnu packages lsof)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz) #:use-module (gnu packages python-xyz)
#:use-module (gnu packages python-web)
#:use-module (gnu packages qt) #:use-module (gnu packages qt)
#:use-module (gnu packages terminals)
#:use-module (gnu packages video) #:use-module (gnu packages video)
#:use-module (gnu packages web) #:use-module (gnu packages web)
#:use-module (gnu packages xdisorg) #:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (nongnu packages linux) #:use-module (nongnu packages linux)
#:use-module (ice-9 match) #:use-module (ice-9 match))
#:use-module (ice-9 regex)
#:use-module (ice-9 format)
#:use-module (ice-9 textual-ports)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
(define-public %nvidia-environment-variable-regexps (define-public %nvidia-environment-variable-regexps
'("^__GL_" ; NVIDIA OpenGL settings. '("^__GL_" ; NVIDIA OpenGL settings.
@ -73,11 +64,17 @@
;; GSYNC control for Vulkan direct-to-display applications. ;; GSYNC control for Vulkan direct-to-display applications.
"^VKDirectGSYNC(Compatible)?Allowed$")) "^VKDirectGSYNC(Compatible)?Allowed$"))
(define nvidia-version "515.76") (define-public nvidia-version "515.76")
(define computed-origin-method (define computed-origin-method
(@@ (guix packages) computed-origin-method)) (@@ (guix packages) computed-origin-method))
;;;
;;; NVIDIA driver checkouts
;;;
;; Extract the driver installer and make it a new origin instance for reusing. ;; Extract the driver installer and make it a new origin instance for reusing.
(define (make-nvidia-source version installer) (define (make-nvidia-source version installer)
(origin (origin
@ -107,7 +104,7 @@
(not (member file '("." "..")))))) (not (member file '("." ".."))))))
#$output))))))) #$output)))))))
(define nvidia-source (define-public nvidia-source
(let ((version nvidia-version)) (let ((version nvidia-version))
(make-nvidia-source (make-nvidia-source
version version
@ -119,110 +116,11 @@
(sha256 (sha256
(base32 "0i5zyvlsjnfkpfqhw6pklp0ws8nndyiwxrg4pj04jpwnxf6a38n6")))))) (base32 "0i5zyvlsjnfkpfqhw6pklp0ws8nndyiwxrg4pj04jpwnxf6a38n6"))))))
(define-public gpustat
(package ;;;
(name "gpustat") ;;; NVIDIA drivers
(version "1.0.0") ;;;
(source (origin
(method url-fetch)
(uri (pypi-uri "gpustat" version))
(sha256
(base32
"1wg3yikkqdrcxp5xscyb9rxifgfwv7qh73xv4airab63b3w8y7jq"))))
(build-system python-build-system)
(arguments
'(#:tests? #f))
(propagated-inputs (list python-blessed python-nvidia-ml-py python-psutil
python-six))
(native-inputs (list python-mock python-pytest python-pytest-runner))
(home-page "https://github.com/wookayin/gpustat")
(synopsis "Utility to monitor NVIDIA GPU status and usage")
(description
"This package provides an utility to monitor NVIDIA GPU status
and usage.")
(license license-gnu:expat)))
(define-public python-nvidia-ml-py
(package
(name "python-nvidia-ml-py")
(version "11.495.46")
(source (origin
(method url-fetch)
(uri (pypi-uri "nvidia-ml-py" version))
(sha256
(base32
"09cnb7xasd7brby52j70y7fqsfm9n6gvgqf769v0cmj74ypy2s4g"))))
(build-system python-build-system)
(arguments
(list #:phases #~(modify-phases %standard-phases
(add-after 'unpack 'fix-libnvidia
(lambda _
(substitute* "pynvml.py"
(("libnvidia-ml.so.1")
(string-append #$(this-package-input
"nvidia-driver")
"/lib/libnvidia-ml.so.1"))))))))
(inputs (list nvidia-driver))
(home-page "https://forums.developer.nvidia.com")
(synopsis "Python Bindings for the NVIDIA Management Library")
(description "This package provides official Python Bindings for the NVIDIA
Management Library")
(license license-gnu:bsd-3)))
(define-public nvidia-htop
(package
(name "nvidia-htop")
(version "1.0.5")
(source (origin
(method url-fetch)
(uri (pypi-uri "nvidia-htop" version))
(sha256
(base32
"0lv9cpccpkbg0d577irm1lp9rx6pacyk2pk9v41k9s9hyl4b7hvx"))))
(build-system python-build-system)
(arguments
(list #:phases #~(modify-phases %standard-phases
(add-after 'unpack 'fix-libnvidia
(lambda _
(substitute* "nvidia-htop.py"
(("nvidia-smi")
(string-append #$(this-package-input
"nvidia-driver")
"/bin/nvidia-smi"))))))))
(inputs (list nvidia-driver))
(propagated-inputs (list python-termcolor))
(home-page "https://github.com/peci1/nvidia-htop")
(synopsis "Tool to enrich the output of nvidia-smi")
(description "This package provides tool for enriching the output of
nvidia-smi.")
(license license-gnu:bsd-3)))
(define-public python-py3nvml
(package
(name "python-py3nvml")
(version "0.2.7")
(source (origin
(method url-fetch)
(uri (pypi-uri "py3nvml" version))
(sha256
(base32
"0wxxky9amy38q7qjsdmmznk1kqdzwd680ps64i76cvlab421vvh9"))))
(build-system python-build-system)
(arguments
(list #:phases #~(modify-phases %standard-phases
(add-after 'unpack 'fix-libnvidia
(lambda _
(substitute* "py3nvml/py3nvml.py"
(("libnvidia-ml.so.1")
(string-append #$(this-package-input
"nvidia-driver")
"/lib/libnvidia-ml.so.1"))))))))
(propagated-inputs (list nvidia-driver python-xmltodict))
(home-page "https://github.com/fbcotter/py3nvml")
(synopsis "Unoffcial Python 3 Bindings for the NVIDIA Management Library")
(description "This package provides unofficial Python 3 Bindings for the
NVIDIA Management Library")
(license license-gnu:bsd-3)))
(define-public nvidia-driver (define-public nvidia-driver
(package (package
@ -327,7 +225,7 @@ KERNEL==\"nvidia_uvm\", RUN+=\"@sh@ -c '@mknod@ -m 666 /dev/nvidia-uvm-tools c $
(add-after 'patch-elf 'create-short-name-symlinks (add-after 'patch-elf 'create-short-name-symlinks
(lambda _ (lambda _
(define (get-soname file) (define (get-soname file)
(when elf-file? file (when (elf-file? file)
(let* ((cmd (string-append "patchelf --print-soname " file)) (let* ((cmd (string-append "patchelf --print-soname " file))
(port (open-input-pipe cmd)) (port (open-input-pipe cmd))
(soname (read-line port))) (soname (read-line port)))
@ -392,6 +290,15 @@ configured by adding: @code{(modules (cons* nvidia-driver
(license:nonfree (license:nonfree
(format #f "file:///share/doc/nvidia-driver-~a/LICENSE" version))))) (format #f "file:///share/doc/nvidia-driver-~a/LICENSE" version)))))
(define-public nvidia-libs
(deprecated-package "nvidia-libs" nvidia-driver))
;;;
;;; NVIDIA frimwares
;;;
(define-public nvidia-firmware (define-public nvidia-firmware
(let ((base nvidia-driver)) (let ((base nvidia-driver))
(package (package
@ -405,92 +312,13 @@ configured by adding: @code{(modules (cons* nvidia-driver
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(delete 'strip)))) (delete 'strip))))
(inputs '()) (inputs '())
(native-inputs '()) (native-inputs '()))))
(properties `((hidden? . #t))))))
(define-public nvidia-exec
(package ;;;
(name "nvidia-exec") ;;; NVIDIA kernel modules
(version "0.1.0") ;;;
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/pedro00dk/nvidia-exec")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"079alqgz3drv5mvx059fzhj3f20rnljl7r4yihfd5qq7djgmvv0v"))))
(build-system copy-build-system)
(arguments
(list #:install-plan #~`(("nvx" "bin/"))
#:modules #~((guix build copy-build-system)
(guix build utils)
(srfi srfi-1))
#:phases #~(modify-phases %standard-phases
(add-after 'install 'wrap-nvx
(lambda* (#:key inputs outputs #:allow-other-keys)
(wrap-program (string-append #$output "/bin/nvx")
`("PATH" ":" prefix
,(fold (lambda (input paths)
(let* ((in (assoc-ref
inputs input))
(bin (string-append
in "/bin")))
(append (filter
file-exists?
(list bin))
paths)))
'()
'("jq" "lshw" "lsof")))))))))
(inputs (list bash-minimal jq lshw lsof))
(home-page "https://github.com/pedro00dk/nvidia-exec")
(synopsis "GPU switching without login out for Nvidia Optimus laptops")
(description
"This package provides GPU switching without login out for Nvidia Optimus
laptops.")
(license license-gnu:gpl3+)))
(define-public nvidia-nvml
(package
(name "nvidia-nvml")
(version "352.79")
(source
(origin
(method url-fetch)
(uri (string-append "https://developer.download.nvidia.com/compute/cuda/7.5/Prod/gdk/"
(format #f "gdk_linux_amd64_~a_release.run"
(string-replace-substring version "." "_"))))
(sha256
(base32
"1r2cwm0j9svaasky3qw46cpg2q6rrazwzrc880nxh6bismyd3a9z"))
(file-name (string-append "nvidia-nvml-" version "-checkout"))))
(build-system copy-build-system)
(arguments
(list #:phases
#~(modify-phases %standard-phases
(replace 'unpack
(lambda _
(invoke "sh" #$source "--tar" "xvf"))))
#:install-plan
''(("payload/nvml/lib" "lib")
("payload/nvml/include" "include/nvidia/gdk")
("payload/nvml/example" "src/gdk/nvml/examples")
("payload/nvml/doc/man" "share/man")
("payload/nvml/README.txt" "README.txt")
("payload/nvml/COPYRIGHT.txt" "COPYRIGHT.txt"))))
(home-page "https://www.nvidia.com")
(synopsis "The NVIDIA Management Library (NVML)")
(description "C-based programmatic interface for monitoring and managing various
states within NVIDIA Tesla GPUs. It is intended to be a platform for
building 3rd party applications, and is also the underlying library for the
NVIDIA-supported nvidia-smi tool. NVML is thread-safe so it is safe to make
simultaneous NVML calls from multiple threads.")
;; Doesn't have any specific LICENSE file, but see COPYRIGHT.txt for details.
(license (license:nonfree "file://COPYRIGHT.txt"))))
(define-public nvidia-libs
(deprecated-package "nvidia-libs" nvidia-driver))
(define-public nvidia-module (define-public nvidia-module
(package (package
@ -552,6 +380,12 @@ require firmware file @code{gsp.bin} to be loaded as well as closed source
userspace tools from the corresponding driver release.") userspace tools from the corresponding driver release.")
(license license-gnu:gpl2)))) (license license-gnu:gpl2))))
;;;
;;; nvidia-settings packages
;;;
(define-public nvidia-settings (define-public nvidia-settings
(package (package
(name "nvidia-settings") (name "nvidia-settings")
@ -600,6 +434,191 @@ configuration, creating application profiles, gpu monitoring and more.")
(home-page "https://github.com/NVIDIA/nvidia-settings") (home-page "https://github.com/NVIDIA/nvidia-settings")
(license license-gnu:gpl2))) (license license-gnu:gpl2)))
;;;
;;; nvda packages
;;;
;; nvda is used as a name because it has the same length as mesa which is
;; required for grafting
(define-public nvda
(package
(inherit nvidia-driver)
(name "nvda")
(source #f)
(build-system trivial-build-system)
(arguments
(list #:modules '((guix build union))
#:builder
#~(begin
(use-modules (guix build union)
(srfi srfi-1)
(ice-9 regex))
(union-build #$output
(list #$(this-package-input "mesa")
#$(this-package-input "nvidia-driver"))
#:resolve-collision
(lambda (files)
(let ((file (if (string-match "nvidia-driver"
(first files))
(first files)
(last files))))
(format #t "chosen ~a ~%" file)
file))))))
(description
"These are the libraries of the evil NVIDIA driver, packaged in such a
way that you can use the transformation option @code{--with-graft=mesa=nvda}
to use the NVIDIA driver with a package that requires mesa.")
(inputs (list mesa nvidia-driver))
(outputs '("out"))))
(define mesa/fake
(package
(inherit mesa)
(replacement nvda)))
(define-public replace-mesa
(package-input-rewriting `((,mesa . ,mesa/fake))))
;;;
;;; Other packages
;;;
(define-public gpustat
(package
(name "gpustat")
(version "1.0.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "gpustat" version))
(sha256
(base32
"1wg3yikkqdrcxp5xscyb9rxifgfwv7qh73xv4airab63b3w8y7jq"))))
(build-system python-build-system)
(arguments
'(#:tests? #f))
(propagated-inputs (list python-blessed python-nvidia-ml-py python-psutil
python-six))
(native-inputs (list python-mock python-pytest python-pytest-runner))
(home-page "https://github.com/wookayin/gpustat")
(synopsis "Utility to monitor NVIDIA GPU status and usage")
(description
"This package provides an utility to monitor NVIDIA GPU status
and usage.")
(license license-gnu:expat)))
(define-public nvidia-exec
(package
(name "nvidia-exec")
(version "0.1.0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/pedro00dk/nvidia-exec")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"079alqgz3drv5mvx059fzhj3f20rnljl7r4yihfd5qq7djgmvv0v"))))
(build-system copy-build-system)
(arguments
(list #:install-plan #~`(("nvx" "bin/"))
#:modules #~((guix build copy-build-system)
(guix build utils)
(srfi srfi-1))
#:phases #~(modify-phases %standard-phases
(add-after 'install 'wrap-nvx
(lambda* (#:key inputs outputs #:allow-other-keys)
(wrap-program (string-append #$output "/bin/nvx")
`("PATH" ":" prefix
,(fold (lambda (input paths)
(let* ((in (assoc-ref
inputs input))
(bin (string-append
in "/bin")))
(append (filter
file-exists?
(list bin))
paths)))
'()
'("jq" "lshw" "lsof")))))))))
(inputs (list bash-minimal jq lshw lsof))
(home-page "https://github.com/pedro00dk/nvidia-exec")
(synopsis "GPU switching without login out for Nvidia Optimus laptops")
(description
"This package provides GPU switching without login out for Nvidia Optimus
laptops.")
(license license-gnu:gpl3+)))
(define-public nvidia-htop
(package
(name "nvidia-htop")
(version "1.0.5")
(source (origin
(method url-fetch)
(uri (pypi-uri "nvidia-htop" version))
(sha256
(base32
"0lv9cpccpkbg0d577irm1lp9rx6pacyk2pk9v41k9s9hyl4b7hvx"))))
(build-system python-build-system)
(arguments
(list #:phases #~(modify-phases %standard-phases
(add-after 'unpack 'fix-libnvidia
(lambda _
(substitute* "nvidia-htop.py"
(("nvidia-smi")
(string-append #$(this-package-input
"nvidia-driver")
"/bin/nvidia-smi"))))))))
(inputs (list nvidia-driver))
(propagated-inputs (list python-termcolor))
(home-page "https://github.com/peci1/nvidia-htop")
(synopsis "Tool to enrich the output of nvidia-smi")
(description "This package provides tool for enriching the output of
nvidia-smi.")
(license license-gnu:bsd-3)))
(define-public nvidia-nvml
(package
(name "nvidia-nvml")
(version "352.79")
(source
(origin
(method url-fetch)
(uri (string-append "https://developer.download.nvidia.com/compute/cuda/7.5/Prod/gdk/"
(format #f "gdk_linux_amd64_~a_release.run"
(string-replace-substring version "." "_"))))
(sha256
(base32
"1r2cwm0j9svaasky3qw46cpg2q6rrazwzrc880nxh6bismyd3a9z"))
(file-name (string-append "nvidia-nvml-" version "-checkout"))))
(build-system copy-build-system)
(arguments
(list #:phases
#~(modify-phases %standard-phases
(replace 'unpack
(lambda _
(invoke "sh" #$source "--tar" "xvf"))))
#:install-plan
''(("payload/nvml/lib" "lib")
("payload/nvml/include" "include/nvidia/gdk")
("payload/nvml/example" "src/gdk/nvml/examples")
("payload/nvml/doc/man" "share/man")
("payload/nvml/README.txt" "README.txt")
("payload/nvml/COPYRIGHT.txt" "COPYRIGHT.txt"))))
(home-page "https://www.nvidia.com")
(synopsis "The NVIDIA Management Library (NVML)")
(description "C-based programmatic interface for monitoring and managing various
states within NVIDIA Tesla GPUs. It is intended to be a platform for
building 3rd party applications, and is also the underlying library for the
NVIDIA-supported nvidia-smi tool. NVML is thread-safe so it is safe to make
simultaneous NVML calls from multiple threads.")
;; Doesn't have any specific LICENSE file, but see COPYRIGHT.txt for details.
(license (license:nonfree "file://COPYRIGHT.txt"))))
(define-public nvidia-system-monitor (define-public nvidia-system-monitor
(package (package
(name "nvidia-system-monitor") (name "nvidia-system-monitor")
@ -642,43 +661,56 @@ configuration, creating application profiles, gpu monitoring and more.")
"This package provides a task manager for Nvidia graphics cards.") "This package provides a task manager for Nvidia graphics cards.")
(license license-gnu:expat))) (license license-gnu:expat)))
;; nvda is used as a name because it has the same length as mesa which is (define-public python-nvidia-ml-py
;; required for grafting
(define-public nvda
(package (package
(inherit nvidia-driver) (name "python-nvidia-ml-py")
(name "nvda") (version "11.495.46")
(source #f) (source (origin
(build-system trivial-build-system) (method url-fetch)
(uri (pypi-uri "nvidia-ml-py" version))
(sha256
(base32
"09cnb7xasd7brby52j70y7fqsfm9n6gvgqf769v0cmj74ypy2s4g"))))
(build-system python-build-system)
(arguments (arguments
(list #:modules '((guix build union)) (list #:phases #~(modify-phases %standard-phases
#:builder (add-after 'unpack 'fix-libnvidia
#~(begin (lambda _
(use-modules (guix build union) (substitute* "pynvml.py"
(srfi srfi-1) (("libnvidia-ml.so.1")
(ice-9 regex)) (string-append #$(this-package-input
(union-build #$output "nvidia-driver")
(list #$(this-package-input "mesa") "/lib/libnvidia-ml.so.1"))))))))
#$(this-package-input "nvidia-driver")) (inputs (list nvidia-driver))
#:resolve-collision (home-page "https://forums.developer.nvidia.com")
(lambda (files) (synopsis "Python Bindings for the NVIDIA Management Library")
(let ((file (if (string-match "nvidia-driver" (description "This package provides official Python Bindings for the NVIDIA
(first files)) Management Library")
(first files) (license license-gnu:bsd-3)))
(last files))))
(format #t "chosen ~a ~%" file)
file))))))
(description
"These are the libraries of the evil NVIDIA driver, packaged in such a
way that you can use the transformation option @code{--with-graft=mesa=nvda}
to use the NVIDIA driver with a package that requires mesa.")
(inputs (list mesa nvidia-driver))
(outputs '("out"))))
(define mesa/fake (define-public python-py3nvml
(package (package
(inherit mesa) (name "python-py3nvml")
(replacement nvda))) (version "0.2.7")
(source (origin
(define-public replace-mesa (method url-fetch)
(package-input-rewriting `((,mesa . ,mesa/fake)))) (uri (pypi-uri "py3nvml" version))
(sha256
(base32
"0wxxky9amy38q7qjsdmmznk1kqdzwd680ps64i76cvlab421vvh9"))))
(build-system python-build-system)
(arguments
(list #:phases #~(modify-phases %standard-phases
(add-after 'unpack 'fix-libnvidia
(lambda _
(substitute* "py3nvml/py3nvml.py"
(("libnvidia-ml.so.1")
(string-append #$(this-package-input
"nvidia-driver")
"/lib/libnvidia-ml.so.1"))))))))
(propagated-inputs (list nvidia-driver python-xmltodict))
(home-page "https://github.com/fbcotter/py3nvml")
(synopsis "Unoffcial Python 3 Bindings for the NVIDIA Management Library")
(description "This package provides unofficial Python 3 Bindings for the
NVIDIA Management Library")
(license license-gnu:bsd-3)))