diff options
| author | Hilton Chain <hako@ultrarare.space> | 2026-03-25 15:07:25 +0800 |
|---|---|---|
| committer | Hilton Chain <hako@ultrarare.space> | 2026-04-03 16:57:38 +0800 |
| commit | 785666ddc78f21456c540b9353cafc0d0e22bbec (patch) | |
| tree | be35408d470b022e193c56bb13ee1858f83bcf12 /nongnu/packages/nvidia.scm | |
| parent | 2a687be7ecafa707df94e9c6470d3d9aae111232 (diff) | |
nongnu: make-nvidia-source: Also create installer source.
* nongnu/packages/nvidia.scm (make-nvidia-source): Add architecture option.
Return a package.
(nvidia-source-390-x86_64-linux, nvidia-source-470-x86_64-linux)
(nvidia-source-470-aarch64-linux, nvidia-source-580-x86_64-linux)
(nvidia-source-580-aarch64-linux, nvidia-source-590-x86_64-linux)
(nvidia-source-590-aarch64-linux, nvidia-source-beta-x86_64-linux)
(nvidia-source-beta-aarch64-linux): Define using it.
Diffstat (limited to 'nongnu/packages/nvidia.scm')
| -rw-r--r-- | nongnu/packages/nvidia.scm | 363 |
1 files changed, 143 insertions, 220 deletions
diff --git a/nongnu/packages/nvidia.scm b/nongnu/packages/nvidia.scm index 6531303..5fcc62e 100644 --- a/nongnu/packages/nvidia.scm +++ b/nongnu/packages/nvidia.scm @@ -56,6 +56,7 @@ #:use-module (nongnu packages linux) #:use-module (nongnu packages video) #:use-module (ice-9 match) + #:use-module (srfi srfi-26) #:export (replace-mesa)) (define-public %nvidia-environment-variable-regexps @@ -95,60 +96,74 @@ ;;; NVIDIA driver checkouts ;;; -(define* (make-nvidia-source version installer #:key (patches '()) snippet) - (origin - (method (@@ (guix packages) computed-origin-method)) - (file-name (string-append "nvidia-driver-source-" version "-checkout")) - (sha256 #f) - (patches patches) - (modules '((guix build utils))) - (snippet snippet) - (uri - (delay - (with-imported-modules '((guix build utils)) - #~(begin - (use-modules (ice-9 ftw) - (srfi srfi-1) - (guix build utils)) - (set-path-environment-variable - "PATH" '("bin") - '#+(list bash-minimal - coreutils-minimal - gawk - grep - tar - which - xz - zstd)) - (invoke "sh" #+installer "--extract-only" "--target" "extractdir") - (when (file-exists? "extractdir/kernel-open") - (delete-file-recursively "extractdir/kernel-open")) - (for-each delete-file - (find-files "extractdir" - (string-join - '(;; egl-gbm - "libnvidia-egl-gbm\\.so\\." - ;; egl-wayland - "libnvidia-egl-wayland\\.so\\." - ;; egl-wayland2 - "libnvidia-egl-wayland2\\.so\\." - ;; egl-x11 - "libnvidia-egl-xcb\\.so\\." - "libnvidia-egl-xlib\\.so\\." - ;; libglvnd - "libEGL\\.so\\." - "libGL\\.so\\." - "libGLESv1_CM\\.so\\." - "libGLESv2\\.so\\." - "libGLX\\.so\\." - "libGLdispatch\\.so\\." - "libOpenGL\\.so\\." - ;; nvidia-settings - "libnvidia-gtk[23]\\.so\\." - ;; opencl-icd-loader - "libOpenCL\\.so\\.") - "|"))) - (copy-recursively "extractdir" #$output))))))) +(define* (make-nvidia-source version arch hash #:key (patches '()) snippet) + (define installer + (origin + (method url-fetch) + (uri (list (string-append + "https://international.download.nvidia.com/XFree86/" + arch "/" version "/NVIDIA-Linux-" arch "-" version ".run") + (string-append + "https://download.nvidia.com/XFree86/Linux-" + arch "/" version "/NVIDIA-Linux-" arch "-" version ".run"))) + (sha256 hash))) + (package + (inherit %binary-source) + (version version) + (source + (origin + (method (@@ (guix packages) computed-origin-method)) + (file-name (string-append "nvidia-driver-source-" version "-checkout")) + (sha256 #f) + (patches patches) + (modules '((guix build utils))) + (snippet snippet) + (uri + (delay + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + (set-path-environment-variable + "PATH" '("bin") + '#+(list bash-minimal + coreutils-minimal + gawk + grep + tar + which + xz + zstd)) + (invoke "sh" #+installer + "--extract-only" "--target" "extractdir") + ;; We'll build open source kernel modules from git. + (when (file-exists? "extractdir/kernel-open") + (delete-file-recursively "extractdir/kernel-open")) + (for-each delete-file + (find-files "extractdir" + (string-join + '(;; egl-gbm + "libnvidia-egl-gbm\\.so\\." + ;; egl-wayland + "libnvidia-egl-wayland\\.so\\." + ;; egl-wayland2 + "libnvidia-egl-wayland2\\.so\\." + ;; egl-x11 + "libnvidia-egl-xcb\\.so\\." + "libnvidia-egl-xlib\\.so\\." + ;; libglvnd + "libEGL\\.so\\." + "libGL\\.so\\." + "libGLESv1_CM\\.so\\." + "libGLESv2\\.so\\." + "libGLX\\.so\\." + "libGLdispatch\\.so\\." + "libOpenGL\\.so\\." + ;; nvidia-settings + "libnvidia-gtk[23]\\.so\\." + ;; opencl-icd-loader + "libOpenCL\\.so\\.") + "|"))) + (copy-recursively "extractdir" #$output))))))))) (define %nvidia-patches-390 (let ((commit "caed47174d2c835921d9f23ea08c630ef5cdea06")) @@ -180,189 +195,97 @@ (string-append all "kernel/"))))))) (define nvidia-source-390-x86_64-linux - (package - (inherit %binary-source) - (name "nvidia-driver") - (version "390.157") - (source - (make-nvidia-source - version - (origin - (method url-fetch) - (uri (string-append - "https://download.nvidia.com/XFree86/Linux-x86_64/" - version "/NVIDIA-Linux-x86_64-" version ".run")) - (sha256 - (base32 "12ijkc5zvs3ivk5m69cm6k2ys60z6nggnw0hv2wxdmgyx2kbrssv"))) - #:patches - (map (lambda (name) - (file-append %nvidia-patches-390 "/" name)) - '("kernel-4.16+-memory-encryption.patch" - "kernel-6.2.patch" - "kernel-6.3.patch" - "kernel-6.4.patch" - "kernel-6.5.patch" - "kernel-6.6.patch" - "kernel-6.8.patch" - "gcc-14.patch" - "kernel-6.10.patch" - "kernel-6.12.patch" - "kernel-6.13.patch" - "kernel-6.14.patch" - "gcc-15.patch" - "kernel-6.15.patch" - "kernel-6.17.patch" - "kernel-6.19.patch" - "kernel-6.18-nv_workqueue_flush.patch")) - #:snippet - #~(rename-file "nvidia_icd.json.template" "nvidia_icd.json"))))) + (make-nvidia-source + "390.157" + "x86_64" + (base32 "12ijkc5zvs3ivk5m69cm6k2ys60z6nggnw0hv2wxdmgyx2kbrssv") + #:patches + (map (cut file-append %nvidia-patches-390 "/" <>) + '("kernel-4.16+-memory-encryption.patch" + "kernel-6.2.patch" + "kernel-6.3.patch" + "kernel-6.4.patch" + "kernel-6.5.patch" + "kernel-6.6.patch" + "kernel-6.8.patch" + "gcc-14.patch" + "kernel-6.10.patch" + "kernel-6.12.patch" + "kernel-6.13.patch" + "kernel-6.14.patch" + "gcc-15.patch" + "kernel-6.15.patch" + "kernel-6.17.patch" + "kernel-6.19.patch" + "kernel-6.18-nv_workqueue_flush.patch")) + #:snippet + #~(rename-file "nvidia_icd.json.template" "nvidia_icd.json"))) (define nvidia-source-470-x86_64-linux - (package - (inherit %binary-source) - (name "nvidia-driver") - (version "470.256.02") - (source - (make-nvidia-source - version - (origin - (method url-fetch) - (uri (string-append - "https://download.nvidia.com/XFree86/Linux-x86_64/" - version "/NVIDIA-Linux-x86_64-" version ".run")) - (sha256 - (base32 "1pmi949s0gzzjw2w3qhhihb82gppd1icvdzk8w2bp5dnvri1hifn"))) - #:patches - (map (lambda (name) - (file-append %nvidia-patches-470 "/patches/" name)) - '("0001-Fix-conftest-to-ignore-implicit-function-declaration.patch" - "0002-Fix-conftest-to-use-a-short-wchar_t.patch" - "0003-Fix-conftest-to-use-nv_drm_gem_vmap-which-has-the-se.patch" - "kernel-6.10.patch" - "kernel-6.12.patch" - "nvidia-470xx-fix-gcc-15.patch" - "nvidia-470xx-fix-linux-6.13.patch" - "nvidia-470xx-fix-linux-6.14.patch" - "nvidia-470xx-fix-linux-6.15.patch" - "nvidia-470xx-fix-linux-6.17.patch" - "nvidia-470xx-fix-linux-6.19-part1.patch" - "nvidia-470xx-fix-linux-6.19-part2.patch" - "nvidia-470xx-fix-linux-7.0.patch" - "disable-objtool-override.patch" - "enable-drm-modeset-by-default.patch")))))) + (make-nvidia-source + "470.256.02" + "x86_64" + (base32 "1pmi949s0gzzjw2w3qhhihb82gppd1icvdzk8w2bp5dnvri1hifn") + #:patches + (map (cut file-append %nvidia-patches-470 "/patches/" <>) + '("0001-Fix-conftest-to-ignore-implicit-function-declaration.patch" + "0002-Fix-conftest-to-use-a-short-wchar_t.patch" + "0003-Fix-conftest-to-use-nv_drm_gem_vmap-which-has-the-se.patch" + "kernel-6.10.patch" + "kernel-6.12.patch" + "nvidia-470xx-fix-gcc-15.patch" + "nvidia-470xx-fix-linux-6.13.patch" + "nvidia-470xx-fix-linux-6.14.patch" + "nvidia-470xx-fix-linux-6.15.patch" + "nvidia-470xx-fix-linux-6.17.patch" + "nvidia-470xx-fix-linux-6.19-part1.patch" + "nvidia-470xx-fix-linux-6.19-part2.patch" + "nvidia-470xx-fix-linux-7.0.patch" + "disable-objtool-override.patch" + "enable-drm-modeset-by-default.patch")))) ;; FIXME: The kernel module doesn't build on aarch64-linux currently. (define nvidia-source-470-aarch64-linux - (package - (inherit %binary-source) - (name "nvidia-driver") - (version "470.256.02") - (source - (make-nvidia-source - version - (origin - (method url-fetch) - (uri (string-append - "https://us.download.nvidia.com/XFree86/aarch64/" - version "/NVIDIA-Linux-aarch64-" version ".run")) - (sha256 - (base32 "138dg91zq1a8syrp8rax0braw82aacn6ggd08v4zs5mpwh9jzr3v"))))))) + (make-nvidia-source + "470.256.02" + "aarch64" + (base32 "138dg91zq1a8syrp8rax0braw82aacn6ggd08v4zs5mpwh9jzr3v"))) (define nvidia-source-580-x86_64-linux - (package - (inherit %binary-source) - (name "nvidia-driver") - (version "580.142") - (source - (make-nvidia-source - version - (origin - (method url-fetch) - (uri (string-append - "https://download.nvidia.com/XFree86/Linux-x86_64/" - version "/NVIDIA-Linux-x86_64-" version ".run")) - (sha256 - (base32 "0qvm8hh3d90i3674dqlj1lam6m189ah60fzr1iaw72gy7z7mz490"))))))) + (make-nvidia-source + "580.142" + "x86_64" + (base32 "0qvm8hh3d90i3674dqlj1lam6m189ah60fzr1iaw72gy7z7mz490"))) (define nvidia-source-580-aarch64-linux - (package - (inherit %binary-source) - (name "nvidia-driver") - (version "580.142") - (source - (make-nvidia-source - version - (origin - (method url-fetch) - (uri (string-append - "https://us.download.nvidia.com/XFree86/aarch64/" - version "/NVIDIA-Linux-aarch64-" version ".run")) - (sha256 - (base32 "0cqi2wgvyxid0dwav8c1awmgq7wcs0naxxf3wdx88kd9qkrnnywf"))))))) + (make-nvidia-source + "580.142" + "aarch64" + (base32 "0cqi2wgvyxid0dwav8c1awmgq7wcs0naxxf3wdx88kd9qkrnnywf"))) (define nvidia-source-590-x86_64-linux - (package - (inherit %binary-source) - (name "nvidia-driver") - (version "590.48.01") - (source - (make-nvidia-source - version - (origin - (method url-fetch) - (uri (string-append - "https://download.nvidia.com/XFree86/Linux-x86_64/" - version "/NVIDIA-Linux-x86_64-" version ".run")) - (sha256 - (base32 "12fnddljvgxksil6n3d5a35wwg8kkq82kkglhz63253qjc3giqmr"))))))) + (make-nvidia-source + "590.48.01" + "x86_64" + (base32 "12fnddljvgxksil6n3d5a35wwg8kkq82kkglhz63253qjc3giqmr"))) (define nvidia-source-590-aarch64-linux - (package - (inherit %binary-source) - (name "nvidia-driver") - (version "590.48.01") - (source - (make-nvidia-source - version - (origin - (method url-fetch) - (uri (string-append - "https://us.download.nvidia.com/XFree86/aarch64/" - version "/NVIDIA-Linux-aarch64-" version ".run")) - (sha256 - (base32 "107xpshd3rn6sdcrprd32a7n5crdzarr3y7yv66d3m2nm9zzpv0l"))))))) + (make-nvidia-source + "590.48.01" + "aarch64" + (base32 "107xpshd3rn6sdcrprd32a7n5crdzarr3y7yv66d3m2nm9zzpv0l"))) (define nvidia-source-beta-x86_64-linux - (package - (inherit %binary-source) - (name "nvidia-driver-beta") - (version "595.45.04") - (source - (make-nvidia-source - version - (origin - (method url-fetch) - (uri (string-append - "https://download.nvidia.com/XFree86/Linux-x86_64/" - version "/NVIDIA-Linux-x86_64-" version ".run")) - (sha256 - (base32 "0plg9vsim8252c7k3slxblvrspy4xqa6q719flxjmfkc4i4najfd"))))))) + (make-nvidia-source + "595.45.04" + "x86_64" + (base32 "0plg9vsim8252c7k3slxblvrspy4xqa6q719flxjmfkc4i4najfd"))) (define nvidia-source-beta-aarch64-linux - (package - (inherit %binary-source) - (name "nvidia-driver-beta") - (version "595.45.04") - (source - (make-nvidia-source - version - (origin - (method url-fetch) - (uri (string-append - "https://us.download.nvidia.com/XFree86/aarch64/" - version "/NVIDIA-Linux-aarch64-" version ".run")) - (sha256 - (base32 "1jff1jahw3bj3bdnr793xjpps4hix61qa03bvfdaq5r0dd0saplf"))))))) + (make-nvidia-source + "595.45.04" + "aarch64" + (base32 "1jff1jahw3bj3bdnr793xjpps4hix61qa03bvfdaq5r0dd0saplf"))) ;;; |
