summaryrefslogtreecommitdiff
path: root/nongnu
diff options
context:
space:
mode:
authorHilton Chain <hako@ultrarare.space>2024-02-01 18:39:27 +0800
committerJohn Kehayias <john.kehayias@protonmail.com>2024-04-24 20:06:11 -0400
commit47941b0a84e4148bc778e4854fd6bfb38fa9928c (patch)
tree49e2c21a7ef6304206d98692f275c98c5d51d5a1 /nongnu
parentc1c9bb05717c57c101bf01f4f7a2db01ef9993bd (diff)
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>
Diffstat (limited to 'nongnu')
-rw-r--r--nongnu/packages/nvidia.scm520
1 files changed, 276 insertions, 244 deletions
diff --git a/nongnu/packages/nvidia.scm b/nongnu/packages/nvidia.scm
index f75d0d4..d1aaffd 100644
--- a/nongnu/packages/nvidia.scm
+++ b/nongnu/packages/nvidia.scm
@@ -38,25 +38,16 @@
#:use-module (gnu packages linux)
#:use-module (gnu packages m4)
#:use-module (gnu packages lsof)
- #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
- #:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
- #:use-module (gnu packages python-web)
#:use-module (gnu packages qt)
- #:use-module (gnu packages terminals)
#:use-module (gnu packages video)
#:use-module (gnu packages web)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module (nongnu packages linux)
- #: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))
+ #:use-module (ice-9 match))
(define-public %nvidia-environment-variable-regexps
'("^__GL_" ; NVIDIA OpenGL settings.
@@ -73,11 +64,17 @@
;; GSYNC control for Vulkan direct-to-display applications.
"^VKDirectGSYNC(Compatible)?Allowed$"))
-(define nvidia-version "515.76")
+(define-public nvidia-version "515.76")
(define computed-origin-method
(@@ (guix packages) computed-origin-method))
+
+;;;
+;;; NVIDIA driver checkouts
+;;;
+
+
;; Extract the driver installer and make it a new origin instance for reusing.
(define (make-nvidia-source version installer)
(origin
@@ -107,7 +104,7 @@
(not (member file '("." ".."))))))
#$output)))))))
-(define nvidia-source
+(define-public nvidia-source
(let ((version nvidia-version))
(make-nvidia-source
version
@@ -119,110 +116,11 @@
(sha256
(base32 "0i5zyvlsjnfkpfqhw6pklp0ws8nndyiwxrg4pj04jpwnxf6a38n6"))))))
-(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 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)))
+
+;;;
+;;; NVIDIA drivers
+;;;
-(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
(package
@@ -327,12 +225,12 @@ KERNEL==\"nvidia_uvm\", RUN+=\"@sh@ -c '@mknod@ -m 666 /dev/nvidia-uvm-tools c $
(add-after 'patch-elf 'create-short-name-symlinks
(lambda _
(define (get-soname file)
- (when elf-file? file
- (let* ((cmd (string-append "patchelf --print-soname " file))
- (port (open-input-pipe cmd))
- (soname (read-line port)))
- (close-pipe port)
- soname)))
+ (when (elf-file? file)
+ (let* ((cmd (string-append "patchelf --print-soname " file))
+ (port (open-input-pipe cmd))
+ (soname (read-line port)))
+ (close-pipe port)
+ soname)))
(for-each
(lambda (lib)
@@ -392,6 +290,15 @@ configured by adding: @code{(modules (cons* nvidia-driver
(license:nonfree
(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
(let ((base nvidia-driver))
(package
@@ -405,92 +312,13 @@ configured by adding: @code{(modules (cons* nvidia-driver
#~(modify-phases %standard-phases
(delete 'strip))))
(inputs '())
- (native-inputs '())
- (properties `((hidden? . #t))))))
-
-(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+)))
+ (native-inputs '()))))
-(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"))))
+
+;;;
+;;; NVIDIA kernel modules
+;;;
-(define-public nvidia-libs
- (deprecated-package "nvidia-libs" nvidia-driver))
(define-public nvidia-module
(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.")
(license license-gnu:gpl2))))
+
+;;;
+;;; ‘nvidia-settings’ packages
+;;;
+
+
(define-public nvidia-settings
(package
(name "nvidia-settings")
@@ -578,8 +412,8 @@ userspace tools from the corresponding driver release.")
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/bin/nvidia-settings")
- `("LD_LIBRARY_PATH" ":" prefix
- (,(string-append out "/lib/"))))))))))
+ `("LD_LIBRARY_PATH" ":" prefix
+ (,(string-append out "/lib/"))))))))))
(native-inputs (list m4
pkg-config))
(inputs (list bash-minimal
@@ -600,6 +434,191 @@ configuration, creating application profiles, gpu monitoring and more.")
(home-page "https://github.com/NVIDIA/nvidia-settings")
(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
(package
(name "nvidia-system-monitor")
@@ -621,7 +640,7 @@ configuration, creating application profiles, gpu monitoring and more.")
(lambda _
(let ((nvidia-smi (string-append #$(this-package-input
"nvidia-driver")
- "/bin/nvidia-smi")))
+ "/bin/nvidia-smi")))
(substitute* "src/core/InfoProvider.cpp"
(("nvidia-smi")
nvidia-smi))
@@ -642,43 +661,56 @@ configuration, creating application profiles, gpu monitoring and more.")
"This package provides a task manager for Nvidia graphics cards.")
(license license-gnu:expat)))
-;; nvda is used as a name because it has the same length as mesa which is
-;; required for grafting
-(define-public nvda
+(define-public python-nvidia-ml-py
(package
- (inherit nvidia-driver)
- (name "nvda")
- (source #f)
- (build-system trivial-build-system)
+ (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 #: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"))))
+ (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 mesa/fake
+(define-public python-py3nvml
(package
- (inherit mesa)
- (replacement nvda)))
-
-(define-public replace-mesa
- (package-input-rewriting `((,mesa . ,mesa/fake))))
+ (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)))