Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 269 lines 10 kB view raw
1{ 2 lib, 3 callPackage, 4 fetchFromGitHub, 5 fetchgit, 6 fetchpatch, 7 stdenv, 8 pkgsi686Linux, 9}: 10 11let 12 generic = 13 args: 14 let 15 imported = import ./generic.nix args; 16 in 17 callPackage imported { 18 lib32 = 19 (pkgsi686Linux.callPackage imported { 20 libsOnly = true; 21 kernel = null; 22 }).out; 23 }; 24 25 kernel = 26 # a hacky way of extracting parameters from callPackage 27 callPackage ( 28 { 29 kernel, 30 libsOnly ? false, 31 }: 32 if libsOnly then { } else kernel 33 ) { }; 34 35 selectHighestVersion = a: b: if lib.versionOlder a.version b.version then b else a; 36 37 # https://forums.developer.nvidia.com/t/linux-6-7-3-545-29-06-550-40-07-error-modpost-gpl-incompatible-module-nvidia-ko-uses-gpl-only-symbol-rcu-read-lock/280908/19 38 rcu_patch = fetchpatch { 39 url = "https://github.com/gentoo/gentoo/raw/c64caf53/x11-drivers/nvidia-drivers/files/nvidia-drivers-470.223.02-gpl-pfn_valid.patch"; 40 hash = "sha256-eZiQQp2S/asE7MfGvfe6dA/kdCvek9SYa/FFGp24dVg="; 41 }; 42 43 # Fixes drm device not working with linux 6.12 44 # https://github.com/NVIDIA/open-gpu-kernel-modules/issues/712 45 drm_fop_flags_linux_612_patch = fetchpatch { 46 url = "https://github.com/Binary-Eater/open-gpu-kernel-modules/commit/8ac26d3c66ea88b0f80504bdd1e907658b41609d.patch"; 47 hash = "sha256-+SfIu3uYNQCf/KXhv4PWvruTVKQSh4bgU1moePhe57U="; 48 }; 49 50 # Source corresponding to https://aur.archlinux.org/packages/nvidia-390xx-dkms 51 aurPatches = fetchgit { 52 url = "https://aur.archlinux.org/nvidia-390xx-utils.git"; 53 rev = "94dffc01e23a93c354a765ea7ac64484a3ef96c1"; 54 hash = "sha256-c94qXNZyMrSf7Dik7jvz2ECaGELqN7WEYNpnbUkzeeU="; 55 }; 56 57 # https://github.com/NVIDIA/open-gpu-kernel-modules/issues/840 58 gpl_symbols_linux_615_patch = fetchpatch { 59 url = "https://github.com/CachyOS/kernel-patches/raw/914aea4298e3744beddad09f3d2773d71839b182/6.15/misc/nvidia/0003-Workaround-nv_vm_flags_-calling-GPL-only-code.patch"; 60 hash = "sha256-YOTAvONchPPSVDP9eJ9236pAPtxYK5nAePNtm2dlvb4="; 61 stripLen = 1; 62 extraPrefix = "kernel/"; 63 }; 64in 65rec { 66 mkDriver = generic; 67 68 # Official Unix Drivers - https://www.nvidia.com/en-us/drivers/unix/ 69 # Branch/Maturity data - http://people.freedesktop.org/~aplattner/nvidia-versions.txt 70 71 # Policy: use the highest stable version as the default (on our master). 72 stable = if stdenv.hostPlatform.system == "i686-linux" then legacy_390 else production; 73 74 production = generic { 75 version = "570.172.08"; 76 sha256_64bit = "sha256-AlaGfggsr5PXsl+nyOabMWBiqcbHLG4ij617I4xvoX0="; 77 sha256_aarch64 = "sha256-FVRyFvK1FKznckpatMMydmmQSkHK+41NkEjTybYJY9g="; 78 openSha256 = "sha256-aTV5J4zmEgRCOavo6wLwh5efOZUG+YtoeIT/tnrC1Hg="; 79 settingsSha256 = "sha256-N/1Ra8Teq93U3T898ImAT2DceHjDHZL1DuriJeTYEa4="; 80 persistencedSha256 = "sha256-x4K0Gp89LdL5YJhAI0AydMRxl6fyBylEnj+nokoBrK8="; 81 }; 82 83 latest = selectHighestVersion production (generic { 84 version = "575.64.05"; 85 sha256_64bit = "sha256-hfK1D5EiYcGRegss9+H5dDr/0Aj9wPIJ9NVWP3dNUC0="; 86 sha256_aarch64 = "sha256-GRE9VEEosbY7TL4HPFoyo0Ac5jgBHsZg9sBKJ4BLhsA="; 87 openSha256 = "sha256-mcbMVEyRxNyRrohgwWNylu45vIqF+flKHnmt47R//KU="; 88 settingsSha256 = "sha256-o2zUnYFUQjHOcCrB0w/4L6xI1hVUXLAWgG2Y26BowBE="; 89 persistencedSha256 = "sha256-2g5z7Pu8u2EiAh5givP5Q1Y4zk4Cbb06W37rf768NFU="; 90 }); 91 92 beta = selectHighestVersion latest (generic { 93 version = "575.51.02"; 94 sha256_64bit = "sha256-XZ0N8ISmoAC8p28DrGHk/YN1rJsInJ2dZNL8O+Tuaa0="; 95 sha256_aarch64 = "sha256-NNeQU9sPfH1sq3d5RUq1MWT6+7mTo1SpVfzabYSVMVI="; 96 openSha256 = "sha256-NQg+QDm9Gt+5bapbUO96UFsPnz1hG1dtEwT/g/vKHkw="; 97 settingsSha256 = "sha256-6n9mVkEL39wJj5FB1HBml7TTJhNAhS/j5hqpNGFQE4w="; 98 persistencedSha256 = "sha256-dgmco+clEIY8bedxHC4wp+fH5JavTzyI1BI8BxoeJJI="; 99 }); 100 101 # Vulkan developer beta driver 102 # See here for more information: https://developer.nvidia.com/vulkan-driver 103 vulkan_beta = generic rec { 104 version = "570.123.19"; 105 persistencedVersion = "570.169"; 106 settingsVersion = "570.169"; 107 sha256_64bit = "sha256-K1ElpoTBjlLUG7slBrAhKqnEjUFwupiF7TS/8ogCf7c="; 108 openSha256 = "sha256-uGH2lnnADf5AGl5ShcbCOULsCIWtJlbxgHiz7I2efVE="; 109 settingsSha256 = "sha256-0E3UnpMukGMWcX8td6dqmpakaVbj4OhhKXgmqz77XZc="; 110 persistencedSha256 = "sha256-dttFu+TmbFI+mt1MbbmJcUnc1KIJ20eHZDR7YzfWmgE="; 111 url = "https://developer.nvidia.com/downloads/vulkan-beta-${lib.concatStrings (lib.splitVersion version)}-linux"; 112 113 broken = kernel.kernelAtLeast "6.15"; 114 }; 115 116 # data center driver compatible with current default cudaPackages 117 dc = dc_570; 118 119 dc_535 = generic rec { 120 version = "535.154.05"; 121 url = "https://us.download.nvidia.com/tesla/${version}/NVIDIA-Linux-x86_64-${version}.run"; 122 sha256_64bit = "sha256-fpUGXKprgt6SYRDxSCemGXLrEsIA6GOinp+0eGbqqJg="; 123 persistencedSha256 = "sha256-d0Q3Lk80JqkS1B54Mahu2yY/WocOqFFbZVBh+ToGhaE="; 124 fabricmanagerSha256 = "sha256-/HQfV7YA3MYVmre/sz897PF6tc6MaMiS/h7Q10m2p/o="; 125 useSettings = false; 126 usePersistenced = true; 127 useFabricmanager = true; 128 129 patches = [ rcu_patch ]; 130 }; 131 132 # Drop after next nixos release 133 dc_565 = generic rec { 134 version = "565.57.01"; 135 url = "https://us.download.nvidia.com/tesla/${version}/NVIDIA-Linux-x86_64-${version}.run"; 136 sha256_64bit = "sha256-buvpTlheOF6IBPWnQVLfQUiHv4GcwhvZW3Ks0PsYLHo="; 137 persistencedSha256 = "sha256-hdszsACWNqkCh8G4VBNitDT85gk9gJe1BlQ8LdrYIkg="; 138 fabricmanagerSha256 = "sha256-umhyehddbQ9+xhhoiKC7SOSVxscA5pcnqvkQOOLIdsM="; 139 useSettings = false; 140 usePersistenced = true; 141 useFabricmanager = true; 142 }; 143 144 dc_570 = generic rec { 145 version = "570.172.08"; 146 url = "https://us.download.nvidia.com/tesla/${version}/NVIDIA-Linux-x86_64-${version}.run"; 147 sha256_64bit = "sha256-AlaGfggsr5PXsl+nyOabMWBiqcbHLG4ij617I4xvoX0="; 148 persistencedSha256 = "sha256-x4K0Gp89LdL5YJhAI0AydMRxl6fyBylEnj+nokoBrK8="; 149 fabricmanagerSha256 = "sha256-jSTKzeRVTUcYma1Cb0ajSdXKCi6KzUXCp2OByPSWSR4="; 150 useSettings = false; 151 usePersistenced = true; 152 useFabricmanager = true; 153 }; 154 155 # Update note: 156 # If you add a legacy driver here, also update `top-level/linux-kernels.nix`, 157 # adding to the `nvidia_x11_legacy*` entries. 158 159 # Last one without the bug reported here: 160 # https://bbs.archlinux.org/viewtopic.php?pid=2155426#p2155426 161 legacy_535 = generic { 162 version = "535.216.01"; 163 sha256_64bit = "sha256-Xd6hFHgQAS4zlnwxgTQbzWYkvT1lTGP4Rd+DO07Oavc="; 164 sha256_aarch64 = "sha256-SGmuA0W1iSsqUK7VZsgibT4HgT0RkKpGb+ul6eIbM7k="; 165 openSha256 = "sha256-ey96oMbY32ahcHSOj1+MykvJrep6mhHPVl+V8+B2ZDk="; 166 settingsSha256 = "sha256-9PgaYJbP1s7hmKCYmkuLQ58nkTruhFdHAs4W84KQVME="; 167 persistencedSha256 = "sha256-ckF/BgDA6xSFqFk07rn3HqXuR0iGfwA4PRxpP38QZgw="; 168 }; 169 170 # Last one supporting Kepler architecture 171 legacy_470 = generic { 172 version = "470.256.02"; 173 sha256_64bit = "sha256-1kUYYt62lbsER/O3zWJo9z6BFowQ4sEFl/8/oBNJsd4="; 174 sha256_aarch64 = "sha256-e+QvE+S3Fv3JRqC9ZyxTSiCu8gJdZXSz10gF/EN6DY0="; 175 settingsSha256 = "sha256-kftQ4JB0iSlE8r/Ze/+UMnwLzn0nfQtqYXBj+t6Aguk="; 176 persistencedSha256 = "sha256-iYoSib9VEdwjOPBP1+Hx5wCIMhW8q8cCHu9PULWfnyQ="; 177 178 patches = [ 179 "${aurPatches}/gcc-14.patch" 180 # fixes 6.10 follow_pfn 181 ./follow_pfn.patch 182 # https://gist.github.com/joanbm/a6d3f7f873a60dec0aa4a734c0f1d64e 183 (fetchpatch { 184 url = "https://gist.github.com/joanbm/a6d3f7f873a60dec0aa4a734c0f1d64e/raw/6bae5606c033b6c6c08233523091992370e357b7/nvidia-470xx-fix-linux-6.12.patch"; 185 hash = "sha256-6nbzcRTRCxW8GDAhB8Zwx9rVcCzwPtVYlqoUhL9gxlY="; 186 stripLen = 1; 187 extraPrefix = "kernel/"; 188 }) 189 ]; 190 }; 191 192 # Last one supporting x86 193 legacy_390 = generic { 194 version = "390.157"; 195 sha256_32bit = "sha256-VdZeCkU5qct5YgDF8Qgv4mP7CVHeqvlqnP/rioD3B5k="; 196 sha256_64bit = "sha256-W+u8puj+1da52BBw+541HxjtxTSVJVPL3HHo/QubMoo="; 197 settingsSha256 = "sha256-uJZO4ak/w/yeTQ9QdXJSiaURDLkevlI81de0q4PpFpw="; 198 persistencedSha256 = "sha256-NuqUQbVt80gYTXgIcu0crAORfsj9BCRooyH3Gp1y1ns="; 199 200 patches = map (patch: "${aurPatches}/${patch}") [ 201 "kernel-4.16+-memory-encryption.patch" 202 "kernel-6.2.patch" 203 "kernel-6.3.patch" 204 "kernel-6.4.patch" 205 "kernel-6.5.patch" 206 "kernel-6.6.patch" 207 "kernel-6.8.patch" 208 "gcc-14.patch" 209 "kernel-6.10.patch" 210 "kernel-6.12.patch" 211 ]; 212 broken = kernel.kernelAtLeast "6.13"; 213 214 # fixes the bug described in https://bbs.archlinux.org/viewtopic.php?pid=2083439#p2083439 215 # see https://bbs.archlinux.org/viewtopic.php?pid=2083651#p2083651 216 # and https://bbs.archlinux.org/viewtopic.php?pid=2083699#p2083699 217 postInstall = '' 218 mv $out/lib/tls/* $out/lib 219 rmdir $out/lib/tls 220 ''; 221 }; 222 223 legacy_340 = 224 let 225 # Source corresponding to https://aur.archlinux.org/packages/nvidia-340xx-dkms 226 aurPatches = fetchFromGitHub { 227 owner = "archlinux-jerry"; 228 repo = "nvidia-340xx"; 229 rev = "7616dfed253aa93ca7d2e05caf6f7f332c439c90"; 230 hash = "sha256-1qlYc17aEbLD4W8XXn1qKryBk2ltT6cVIv5zAs0jXZo="; 231 }; 232 patchset = [ 233 "0001-kernel-5.7.patch" 234 "0002-kernel-5.8.patch" 235 "0003-kernel-5.9.patch" 236 "0004-kernel-5.10.patch" 237 "0005-kernel-5.11.patch" 238 "0006-kernel-5.14.patch" 239 "0007-kernel-5.15.patch" 240 "0008-kernel-5.16.patch" 241 "0009-kernel-5.17.patch" 242 "0010-kernel-5.18.patch" 243 "0011-kernel-6.0.patch" 244 "0012-kernel-6.2.patch" 245 "0013-kernel-6.3.patch" 246 "0014-kernel-6.5.patch" 247 "0015-kernel-6.6.patch" 248 ]; 249 in 250 generic { 251 version = "340.108"; 252 sha256_32bit = "1jkwa1phf0x4sgw8pvr9d6krmmr3wkgwyygrxhdazwyr2bbalci0"; 253 sha256_64bit = "06xp6c0sa7v1b82gf0pq0i5p0vdhmm3v964v0ypw36y0nzqx8wf6"; 254 settingsSha256 = "0zm29jcf0mp1nykcravnzb5isypm8l8mg2gpsvwxipb7nk1ivy34"; 255 persistencedSha256 = "1ax4xn3nmxg1y6immq933cqzw6cj04x93saiasdc0kjlv0pvvnkn"; 256 useGLVND = false; 257 258 broken = kernel.kernelAtLeast "6.7"; 259 patches = map (patch: "${aurPatches}/${patch}") patchset; 260 261 # fixes the bug described in https://bbs.archlinux.org/viewtopic.php?pid=2083439#p2083439 262 # see https://bbs.archlinux.org/viewtopic.php?pid=2083651#p2083651 263 # and https://bbs.archlinux.org/viewtopic.php?pid=2083699#p2083699 264 postInstall = '' 265 mv $out/lib/tls/* $out/lib 266 rmdir $out/lib/tls 267 ''; 268 }; 269}