Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at flake-libs 895 lines 32 kB view raw
1{ 2 pkgs, 3 linuxKernel, 4 config, 5 buildPackages, 6 callPackage, 7 makeOverridable, 8 recurseIntoAttrs, 9 dontRecurseIntoAttrs, 10 stdenv, 11 stdenvNoCC, 12 newScope, 13 lib, 14 fetchurl, 15 gcc10Stdenv, 16}: 17 18# When adding a kernel: 19# - Update packageAliases.linux_latest to the latest version 20# - Update the rev in ../os-specific/linux/kernel/linux-libre.nix to the latest one. 21# - Update linux_latest_hardened when the patches become available 22 23with linuxKernel; 24 25let 26 deblobKernel = 27 kernel: 28 callPackage ../os-specific/linux/kernel/linux-libre.nix { 29 linux = kernel; 30 }; 31 32 markBroken = 33 drv: 34 drv.overrideAttrs ( 35 { 36 meta ? { }, 37 ... 38 }: 39 { 40 meta = meta // { 41 broken = true; 42 }; 43 } 44 ); 45 46 # Hardened Linux 47 hardenedKernelFor = 48 kernel': overrides: 49 let 50 kernel = kernel'.override overrides; 51 version = kernelPatches.hardened.${kernel.meta.branch}.version; 52 major = lib.versions.major version; 53 sha256 = kernelPatches.hardened.${kernel.meta.branch}.sha256; 54 modDirVersion' = builtins.replaceStrings [ kernel.version ] [ version ] kernel.modDirVersion; 55 in 56 kernel.override { 57 structuredExtraConfig = import ../os-specific/linux/kernel/hardened/config.nix { 58 inherit stdenv lib version; 59 }; 60 argsOverride = { 61 inherit version; 62 pname = "linux-hardened"; 63 modDirVersion = modDirVersion' + kernelPatches.hardened.${kernel.meta.branch}.extra; 64 src = fetchurl { 65 url = "mirror://kernel/linux/kernel/v${major}.x/linux-${version}.tar.xz"; 66 inherit sha256; 67 }; 68 extraMeta = { 69 broken = kernel.meta.broken; 70 }; 71 }; 72 kernelPatches = kernel.kernelPatches ++ [ 73 kernelPatches.hardened.${kernel.meta.branch} 74 ]; 75 isHardened = true; 76 }; 77in 78{ 79 kernelPatches = callPackage ../os-specific/linux/kernel/patches.nix { }; 80 81 kernels = recurseIntoAttrs ( 82 lib.makeExtensible ( 83 self: 84 with self; 85 let 86 callPackage = newScope self; 87 in 88 { 89 90 # NOTE: PLEASE DO NOT ADD NEW DOWNSTREAM KERNELS TO NIXPKGS. 91 # New vendor kernels should go to nixos-hardware instead. 92 # e.g. https://github.com/NixOS/nixos-hardware/tree/master/microsoft/surface/kernel 93 94 linux_rpi1 = callPackage ../os-specific/linux/kernel/linux-rpi.nix { 95 kernelPatches = with kernelPatches; [ 96 bridge_stp_helper 97 request_key_helper 98 ]; 99 rpiVersion = 1; 100 }; 101 102 linux_rpi2 = callPackage ../os-specific/linux/kernel/linux-rpi.nix { 103 kernelPatches = with kernelPatches; [ 104 bridge_stp_helper 105 request_key_helper 106 ]; 107 rpiVersion = 2; 108 }; 109 110 linux_rpi3 = callPackage ../os-specific/linux/kernel/linux-rpi.nix { 111 kernelPatches = with kernelPatches; [ 112 bridge_stp_helper 113 request_key_helper 114 ]; 115 rpiVersion = 3; 116 }; 117 118 linux_rpi4 = callPackage ../os-specific/linux/kernel/linux-rpi.nix { 119 kernelPatches = with kernelPatches; [ 120 bridge_stp_helper 121 request_key_helper 122 ]; 123 rpiVersion = 4; 124 }; 125 126 linux_5_4 = callPackage ../os-specific/linux/kernel/mainline.nix { 127 branch = "5.4"; 128 kernelPatches = [ 129 kernelPatches.bridge_stp_helper 130 kernelPatches.request_key_helper 131 kernelPatches.rtl8761b_support 132 ]; 133 }; 134 135 linux_rt_5_4 = callPackage ../os-specific/linux/kernel/linux-rt-5.4.nix { 136 kernelPatches = [ 137 kernelPatches.bridge_stp_helper 138 kernelPatches.request_key_helper 139 ]; 140 }; 141 142 linux_5_10 = callPackage ../os-specific/linux/kernel/mainline.nix { 143 branch = "5.10"; 144 kernelPatches = [ 145 kernelPatches.bridge_stp_helper 146 kernelPatches.request_key_helper 147 ]; 148 }; 149 150 linux_rt_5_10 = callPackage ../os-specific/linux/kernel/linux-rt-5.10.nix { 151 kernelPatches = [ 152 kernelPatches.bridge_stp_helper 153 kernelPatches.request_key_helper 154 kernelPatches.export-rt-sched-migrate 155 ]; 156 }; 157 158 linux_5_15 = callPackage ../os-specific/linux/kernel/mainline.nix { 159 branch = "5.15"; 160 kernelPatches = [ 161 kernelPatches.bridge_stp_helper 162 kernelPatches.request_key_helper 163 ]; 164 }; 165 166 linux_rt_5_15 = callPackage ../os-specific/linux/kernel/linux-rt-5.15.nix { 167 kernelPatches = [ 168 kernelPatches.bridge_stp_helper 169 kernelPatches.request_key_helper 170 kernelPatches.export-rt-sched-migrate 171 ]; 172 }; 173 174 linux_6_1 = callPackage ../os-specific/linux/kernel/mainline.nix { 175 branch = "6.1"; 176 kernelPatches = [ 177 kernelPatches.bridge_stp_helper 178 kernelPatches.request_key_helper 179 ]; 180 }; 181 182 linux_ham = callPackage ../os-specific/linux/kernel/mainline.nix { 183 branch = "6.13"; 184 kernelPatches = [ 185 kernelPatches.bridge_stp_helper 186 kernelPatches.request_key_helper 187 { 188 name = "ax25-ham"; 189 patch = null; 190 extraStructuredConfig = { 191 HAMRADIO = lib.kernel.yes; 192 AX25 = lib.kernel.module; 193 }; 194 } 195 ]; 196 }; 197 198 linux_rt_6_1 = callPackage ../os-specific/linux/kernel/linux-rt-6.1.nix { 199 kernelPatches = [ 200 kernelPatches.bridge_stp_helper 201 kernelPatches.request_key_helper 202 kernelPatches.export-rt-sched-migrate 203 ]; 204 }; 205 206 linux_6_6 = callPackage ../os-specific/linux/kernel/mainline.nix { 207 branch = "6.6"; 208 kernelPatches = [ 209 kernelPatches.bridge_stp_helper 210 kernelPatches.request_key_helper 211 ]; 212 }; 213 214 linux_rt_6_6 = callPackage ../os-specific/linux/kernel/linux-rt-6.6.nix { 215 kernelPatches = [ 216 kernelPatches.bridge_stp_helper 217 kernelPatches.request_key_helper 218 kernelPatches.export-rt-sched-migrate 219 ]; 220 }; 221 222 linux_6_12 = callPackage ../os-specific/linux/kernel/mainline.nix { 223 branch = "6.12"; 224 kernelPatches = [ 225 kernelPatches.bridge_stp_helper 226 kernelPatches.request_key_helper 227 ]; 228 }; 229 230 linux_6_13 = callPackage ../os-specific/linux/kernel/mainline.nix { 231 branch = "6.13"; 232 kernelPatches = [ 233 kernelPatches.bridge_stp_helper 234 kernelPatches.request_key_helper 235 ]; 236 }; 237 238 linux_6_14 = callPackage ../os-specific/linux/kernel/mainline.nix { 239 branch = "6.14"; 240 kernelPatches = [ 241 kernelPatches.bridge_stp_helper 242 kernelPatches.request_key_helper 243 ]; 244 }; 245 246 linux_6_15 = callPackage ../os-specific/linux/kernel/mainline.nix { 247 branch = "6.15"; 248 kernelPatches = [ 249 kernelPatches.bridge_stp_helper 250 kernelPatches.request_key_helper 251 ]; 252 }; 253 254 linux_testing = 255 let 256 testing = callPackage ../os-specific/linux/kernel/mainline.nix { 257 # A special branch that tracks the kernel under the release process 258 # i.e. which has at least a public rc1 and is not released yet. 259 branch = "testing"; 260 kernelPatches = [ 261 kernelPatches.bridge_stp_helper 262 kernelPatches.request_key_helper 263 ]; 264 }; 265 latest = packageAliases.linux_latest.kernel; 266 in 267 if latest.kernelAtLeast testing.baseVersion then latest else testing; 268 269 linux_default = packageAliases.linux_default.kernel; 270 271 linux_latest = packageAliases.linux_latest.kernel; 272 273 # Using zenKernels like this due lqx&zen came from one source, but may have different base kernel version 274 # https://github.com/NixOS/nixpkgs/pull/161773#discussion_r820134708 275 zenKernels = callPackage ../os-specific/linux/kernel/zen-kernels.nix; 276 277 linux_zen = zenKernels { 278 variant = "zen"; 279 kernelPatches = [ 280 kernelPatches.bridge_stp_helper 281 kernelPatches.request_key_helper 282 ]; 283 }; 284 285 linux_lqx = zenKernels { 286 variant = "lqx"; 287 kernelPatches = [ 288 kernelPatches.bridge_stp_helper 289 kernelPatches.request_key_helper 290 ]; 291 }; 292 293 # This contains the variants of the XanMod kernel 294 xanmodKernels = callPackage ../os-specific/linux/kernel/xanmod-kernels.nix; 295 296 linux_xanmod = xanmodKernels { 297 variant = "lts"; 298 kernelPatches = [ 299 kernelPatches.bridge_stp_helper 300 kernelPatches.request_key_helper 301 ]; 302 }; 303 linux_xanmod_stable = xanmodKernels { 304 variant = "main"; 305 kernelPatches = [ 306 kernelPatches.bridge_stp_helper 307 kernelPatches.request_key_helper 308 ]; 309 }; 310 linux_xanmod_latest = xanmodKernels { 311 variant = "main"; 312 kernelPatches = [ 313 kernelPatches.bridge_stp_helper 314 kernelPatches.request_key_helper 315 ]; 316 }; 317 318 linux_libre = deblobKernel packageAliases.linux_default.kernel; 319 320 linux_latest_libre = deblobKernel packageAliases.linux_latest.kernel; 321 322 linux_hardened = hardenedKernelFor packageAliases.linux_default.kernel { }; 323 324 linux_5_4_hardened = markBroken ( 325 hardenedKernelFor kernels.linux_5_4 { 326 stdenv = gcc10Stdenv; 327 buildPackages = buildPackages // { 328 stdenv = buildPackages.gcc10Stdenv; 329 }; 330 } 331 ); 332 linux_5_10_hardened = hardenedKernelFor kernels.linux_5_10 { }; 333 linux_5_15_hardened = hardenedKernelFor kernels.linux_5_15 { }; 334 linux_6_1_hardened = hardenedKernelFor kernels.linux_6_1 { }; 335 linux_6_6_hardened = hardenedKernelFor kernels.linux_6_6 { }; 336 linux_6_12_hardened = hardenedKernelFor kernels.linux_6_12 { }; 337 linux_6_13_hardened = hardenedKernelFor kernels.linux_6_13 { }; 338 linux_6_14_hardened = hardenedKernelFor kernels.linux_6_14 { }; 339 340 } 341 // lib.optionalAttrs config.allowAliases { 342 linux_4_19 = throw "linux 4.19 was removed because it will reach its end of life within 24.11"; 343 linux_6_9 = throw "linux 6.9 was removed because it has reached its end of life upstream"; 344 linux_6_10 = throw "linux 6.10 was removed because it has reached its end of life upstream"; 345 linux_6_11 = throw "linux 6.11 was removed because it has reached its end of life upstream"; 346 347 linux_4_19_hardened = throw "linux 4.19 was removed because it will reach its end of life within 24.11"; 348 linux_6_9_hardened = throw "linux 6.9 was removed because it has reached its end of life upstream"; 349 linux_6_10_hardened = throw "linux 6.10 was removed because it has reached its end of life upstream"; 350 linux_6_11_hardened = throw "linux 6.11 was removed because it has reached its end of life upstream"; 351 } 352 ) 353 ); 354 /* 355 Linux kernel modules are inherently tied to a specific kernel. So 356 rather than provide specific instances of those packages for a 357 specific kernel, we have a function that builds those packages 358 for a specific kernel. This function can then be called for 359 whatever kernel you're using. 360 */ 361 362 packagesFor = 363 kernel_: 364 lib.makeExtensible ( 365 self: 366 with self; 367 let 368 callPackage = newScope self; 369 in 370 { 371 inherit callPackage; 372 kernel = kernel_; 373 inherit (kernel) stdenv; # in particular, use the same compiler by default 374 375 # to help determine module compatibility 376 inherit (kernel) isZen isHardened isLibre; 377 inherit (kernel) kernelOlder kernelAtLeast; 378 kernelModuleMakeFlags = self.kernel.commonMakeFlags ++ [ 379 "KBUILD_OUTPUT=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" 380 ]; 381 # Obsolete aliases (these packages do not depend on the kernel). 382 inherit (pkgs) odp-dpdk pktgen; # added 2018-05 383 inherit (pkgs) bcc bpftrace; # added 2021-12 384 inherit (pkgs) oci-seccomp-bpf-hook; # added 2022-11 385 inherit (pkgs) dpdk; # added 2024-03 386 387 acpi_call = callPackage ../os-specific/linux/acpi-call { }; 388 389 ajantv2 = callPackage ../os-specific/linux/ajantv2 { }; 390 391 akvcam = callPackage ../os-specific/linux/akvcam { }; 392 393 amdgpu-i2c = callPackage ../os-specific/linux/amdgpu-i2c { }; 394 395 amneziawg = callPackage ../os-specific/linux/amneziawg { }; 396 397 apfs = callPackage ../os-specific/linux/apfs { }; 398 399 ax99100 = callPackage ../os-specific/linux/ax99100 { }; 400 401 batman_adv = callPackage ../os-specific/linux/batman-adv { }; 402 403 bbswitch = callPackage ../os-specific/linux/bbswitch { }; 404 405 ch9344 = callPackage ../os-specific/linux/ch9344 { }; 406 407 chipsec = callPackage ../tools/security/chipsec { 408 inherit kernel; 409 withDriver = true; 410 }; 411 412 cryptodev = callPackage ../os-specific/linux/cryptodev { }; 413 414 cpupower = callPackage ../os-specific/linux/cpupower { }; 415 416 deepin-anything-module = callPackage ../os-specific/linux/deepin-anything-module { }; 417 418 ddcci-driver = callPackage ../os-specific/linux/ddcci { }; 419 420 dddvb = callPackage ../os-specific/linux/dddvb { }; 421 422 decklink = callPackage ../os-specific/linux/decklink { }; 423 424 digimend = callPackage ../os-specific/linux/digimend { }; 425 426 dpdk-kmods = callPackage ../os-specific/linux/dpdk-kmods { }; 427 428 exfat-nofuse = 429 if lib.versionOlder kernel.version "5.8" then callPackage ../os-specific/linux/exfat { } else null; 430 431 evdi = callPackage ../os-specific/linux/evdi { }; 432 433 fanout = callPackage ../os-specific/linux/fanout { }; 434 435 framework-laptop-kmod = callPackage ../os-specific/linux/framework-laptop-kmod { }; 436 437 fwts-efi-runtime = callPackage ../os-specific/linux/fwts/module.nix { }; 438 439 gasket = callPackage ../os-specific/linux/gasket { }; 440 441 gcadapter-oc-kmod = callPackage ../os-specific/linux/gcadapter-oc-kmod { }; 442 443 hyperv-daemons = callPackage ../os-specific/linux/hyperv-daemons { }; 444 445 e1000e = 446 if lib.versionOlder kernel.version "4.10" then 447 callPackage ../os-specific/linux/e1000e { } 448 else 449 null; 450 451 iio-utils = 452 if lib.versionAtLeast kernel.version "4.1" then 453 callPackage ../os-specific/linux/iio-utils { } 454 else 455 null; 456 457 intel-speed-select = 458 if lib.versionAtLeast kernel.version "5.3" then 459 callPackage ../os-specific/linux/intel-speed-select { } 460 else 461 null; 462 463 ipu6-drivers = callPackage ../os-specific/linux/ipu6-drivers { }; 464 465 ivsc-driver = callPackage ../os-specific/linux/ivsc-driver { }; 466 467 ixgbevf = callPackage ../os-specific/linux/ixgbevf { }; 468 469 it87 = callPackage ../os-specific/linux/it87 { }; 470 471 asus-ec-sensors = callPackage ../os-specific/linux/asus-ec-sensors { }; 472 473 ena = callPackage ../os-specific/linux/ena { }; 474 475 lenovo-legion-module = callPackage ../os-specific/linux/lenovo-legion { }; 476 477 linux-gpib = callPackage ../applications/science/electronics/linux-gpib/kernel.nix { }; 478 479 liquidtux = callPackage ../os-specific/linux/liquidtux { }; 480 481 lkrg = callPackage ../os-specific/linux/lkrg { }; 482 483 v4l2loopback = callPackage ../os-specific/linux/v4l2loopback { }; 484 485 lttng-modules = callPackage ../os-specific/linux/lttng-modules { }; 486 487 mstflint_access = callPackage ../os-specific/linux/mstflint_access { }; 488 489 broadcom_sta = callPackage ../os-specific/linux/broadcom-sta { }; 490 491 tbs = callPackage ../os-specific/linux/tbs { }; 492 493 mbp2018-bridge-drv = callPackage ../os-specific/linux/mbp-modules/mbp2018-bridge-drv { }; 494 495 nct6687d = callPackage ../os-specific/linux/nct6687d { }; 496 497 new-lg4ff = callPackage ../os-specific/linux/new-lg4ff { }; 498 499 zenergy = callPackage ../os-specific/linux/zenergy { }; 500 501 nvidiabl = callPackage ../os-specific/linux/nvidiabl { }; 502 503 nvidiaPackages = dontRecurseIntoAttrs ( 504 lib.makeExtensible (_: callPackage ../os-specific/linux/nvidia-x11 { }) 505 ); 506 507 nvidia_x11 = nvidiaPackages.stable; 508 nvidia_x11_beta = nvidiaPackages.beta; 509 nvidia_x11_latest = nvidiaPackages.latest; 510 nvidia_x11_legacy340 = nvidiaPackages.legacy_340; 511 nvidia_x11_legacy390 = nvidiaPackages.legacy_390; 512 nvidia_x11_legacy470 = nvidiaPackages.legacy_470; 513 nvidia_x11_legacy535 = nvidiaPackages.legacy_535; 514 nvidia_x11_production = nvidiaPackages.production; 515 nvidia_x11_vulkan_beta = nvidiaPackages.vulkan_beta; 516 nvidia_dc = nvidiaPackages.dc; 517 nvidia_dc_535 = nvidiaPackages.dc_535; 518 nvidia_dc_565 = nvidiaPackages.dc_565; 519 520 # this is not a replacement for nvidia_x11* 521 # only the opensource kernel driver exposed for hydra to build 522 nvidia_x11_beta_open = nvidiaPackages.beta.open; 523 nvidia_x11_latest_open = nvidiaPackages.latest.open; 524 nvidia_x11_production_open = nvidiaPackages.production.open; 525 nvidia_x11_stable_open = nvidiaPackages.stable.open; 526 nvidia_x11_vulkan_beta_open = nvidiaPackages.vulkan_beta.open; 527 528 nxp-pn5xx = callPackage ../os-specific/linux/nxp-pn5xx { }; 529 530 openrazer = callPackage ../os-specific/linux/openrazer/driver.nix { }; 531 532 ply = callPackage ../os-specific/linux/ply { }; 533 534 r8125 = callPackage ../os-specific/linux/r8125 { }; 535 536 r8168 = callPackage ../os-specific/linux/r8168 { }; 537 538 rtl8188eus-aircrack = callPackage ../os-specific/linux/rtl8188eus-aircrack { }; 539 540 rtl8192eu = callPackage ../os-specific/linux/rtl8192eu { }; 541 542 rtl8189es = callPackage ../os-specific/linux/rtl8189es { }; 543 544 rtl8189fs = callPackage ../os-specific/linux/rtl8189fs { }; 545 546 rtl8723ds = callPackage ../os-specific/linux/rtl8723ds { }; 547 548 rtl8812au = callPackage ../os-specific/linux/rtl8812au { }; 549 550 rtl8814au = callPackage ../os-specific/linux/rtl8814au { }; 551 552 rtl8852au = callPackage ../os-specific/linux/rtl8852au { }; 553 554 rtl8852bu = callPackage ../os-specific/linux/rtl8852bu { }; 555 556 rtl88xxau-aircrack = callPackage ../os-specific/linux/rtl88xxau-aircrack { }; 557 558 rtl8821au = callPackage ../os-specific/linux/rtl8821au { }; 559 560 rtl8821ce = callPackage ../os-specific/linux/rtl8821ce { }; 561 562 rtl88x2bu = callPackage ../os-specific/linux/rtl88x2bu { }; 563 564 rtl8821cu = callPackage ../os-specific/linux/rtl8821cu { }; 565 566 rtw88 = callPackage ../os-specific/linux/rtw88 { }; 567 568 rtw89 = 569 if lib.versionOlder kernel.version "5.16" then callPackage ../os-specific/linux/rtw89 { } else null; 570 571 openafs_1_8 = callPackage ../servers/openafs/1.8/module.nix { }; 572 # Current stable release; don't backport release updates! 573 openafs = openafs_1_8; 574 575 opensnitch-ebpf = 576 if lib.versionAtLeast kernel.version "5.10" then 577 callPackage ../os-specific/linux/opensnitch-ebpf { } 578 else 579 null; 580 581 facetimehd = callPackage ../os-specific/linux/facetimehd { }; 582 583 rust-out-of-tree-module = 584 if lib.versionAtLeast kernel.version "6.7" then 585 callPackage ../os-specific/linux/rust-out-of-tree-module { } 586 else 587 null; 588 589 tuxedo-drivers = 590 if lib.versionAtLeast kernel.version "4.14" then 591 callPackage ../os-specific/linux/tuxedo-drivers { } 592 else 593 null; 594 595 jool = callPackage ../os-specific/linux/jool { }; 596 597 kvmfr = callPackage ../os-specific/linux/kvmfr { }; 598 599 mba6x_bl = callPackage ../os-specific/linux/mba6x_bl { }; 600 601 mwprocapture = callPackage ../os-specific/linux/mwprocapture { }; 602 603 mxu11x0 = callPackage ../os-specific/linux/mxu11x0 { }; 604 605 # compiles but has to be integrated into the kernel somehow 606 # Let's have it uncommented and finish it.. 607 ndiswrapper = callPackage ../os-specific/linux/ndiswrapper { }; 608 609 netatop = callPackage ../os-specific/linux/netatop { }; 610 611 perf = callPackage ../os-specific/linux/kernel/perf { }; 612 613 phc-intel = 614 if lib.versionAtLeast kernel.version "4.10" then 615 callPackage ../os-specific/linux/phc-intel { } 616 else 617 null; 618 619 prl-tools = callPackage ../os-specific/linux/prl-tools { }; 620 621 isgx = callPackage ../os-specific/linux/isgx { }; 622 623 rr-zen_workaround = callPackage ../development/tools/analysis/rr/zen_workaround.nix { }; 624 625 shufflecake = callPackage ../os-specific/linux/shufflecake { }; 626 627 sysdig = callPackage ../os-specific/linux/sysdig { }; 628 629 systemtap = callPackage ../development/tools/profiling/systemtap { }; 630 631 system76 = callPackage ../os-specific/linux/system76 { }; 632 633 system76-acpi = callPackage ../os-specific/linux/system76-acpi { }; 634 635 system76-io = callPackage ../os-specific/linux/system76-io { }; 636 637 tmon = callPackage ../os-specific/linux/tmon { }; 638 639 tp_smapi = callPackage ../os-specific/linux/tp_smapi { }; 640 641 turbostat = callPackage ../os-specific/linux/turbostat { }; 642 643 corefreq = callPackage ../os-specific/linux/corefreq { }; 644 645 trelay = callPackage ../os-specific/linux/trelay { }; 646 647 universal-pidff = callPackage ../os-specific/linux/universal-pidff { }; 648 649 usbip = callPackage ../os-specific/linux/usbip { }; 650 651 v86d = callPackage ../os-specific/linux/v86d { }; 652 653 veikk-linux-driver = callPackage ../os-specific/linux/veikk-linux-driver { }; 654 vendor-reset = callPackage ../os-specific/linux/vendor-reset { }; 655 656 vhba = callPackage ../applications/emulators/cdemu/vhba.nix { }; 657 658 virtio_vmmci = callPackage ../os-specific/linux/virtio_vmmci { }; 659 660 virtualbox = callPackage ../os-specific/linux/virtualbox { 661 virtualbox = pkgs.virtualboxHardened; 662 }; 663 664 virtualboxGuestAdditions = 665 callPackage ../applications/virtualization/virtualbox/guest-additions 666 { }; 667 668 mm-tools = callPackage ../os-specific/linux/mm-tools { }; 669 670 vmm_clock = callPackage ../os-specific/linux/vmm_clock { }; 671 672 vmware = callPackage ../os-specific/linux/vmware { }; 673 674 wireguard = 675 if lib.versionOlder kernel.version "5.6" then 676 callPackage ../os-specific/linux/wireguard { } 677 else 678 null; 679 680 x86_energy_perf_policy = callPackage ../os-specific/linux/x86_energy_perf_policy { }; 681 682 xone = 683 if lib.versionAtLeast kernel.version "5.4" then callPackage ../os-specific/linux/xone { } else null; 684 685 xpadneo = callPackage ../os-specific/linux/xpadneo { }; 686 687 yt6801 = callPackage ../os-specific/linux/yt6801 { }; 688 689 ithc = callPackage ../os-specific/linux/ithc { }; 690 691 ryzen-smu = callPackage ../os-specific/linux/ryzen-smu { }; 692 693 zenpower = callPackage ../os-specific/linux/zenpower { }; 694 695 zfs_2_2 = callPackage ../os-specific/linux/zfs/2_2.nix { 696 configFile = "kernel"; 697 inherit pkgs kernel; 698 }; 699 zfs_2_3 = callPackage ../os-specific/linux/zfs/2_3.nix { 700 configFile = "kernel"; 701 inherit pkgs kernel; 702 }; 703 zfs_unstable = callPackage ../os-specific/linux/zfs/unstable.nix { 704 configFile = "kernel"; 705 inherit pkgs kernel; 706 }; 707 708 can-isotp = callPackage ../os-specific/linux/can-isotp { }; 709 710 qc71_laptop = callPackage ../os-specific/linux/qc71_laptop { }; 711 712 hid-ite8291r3 = callPackage ../os-specific/linux/hid-ite8291r3 { }; 713 714 hid-t150 = callPackage ../os-specific/linux/hid-t150 { }; 715 716 hid-tmff2 = callPackage ../os-specific/linux/hid-tmff2 { }; 717 718 hpuefi-mod = callPackage ../os-specific/linux/hpuefi-mod { }; 719 720 drbd = callPackage ../os-specific/linux/drbd/driver.nix { }; 721 722 nullfs = callPackage ../os-specific/linux/nullfs { }; 723 724 msi-ec = callPackage ../os-specific/linux/msi-ec { }; 725 726 tsme-test = callPackage ../os-specific/linux/tsme-test { }; 727 728 xpad-noone = callPackage ../os-specific/linux/xpad-noone { }; 729 730 } 731 // lib.optionalAttrs config.allowAliases { 732 zfs = throw "linuxPackages.zfs has been removed, use zfs_* instead, or linuxPackages.\${pkgs.zfs.kernelModuleAttribute}"; # added 2025-01-23 733 zfs_2_1 = throw "zfs_2_1 has been removed"; # added 2024-12-25; 734 ati_drivers_x11 = throw "ati drivers are no longer supported by any kernel >=4.1"; # added 2021-05-18; 735 hid-nintendo = throw "hid-nintendo was added in mainline kernel version 5.16"; # Added 2023-07-30 736 sch_cake = throw "sch_cake was added in mainline kernel version 4.19"; # Added 2023-06-14 737 rtl8723bs = throw "rtl8723bs was added in mainline kernel version 4.12"; # Added 2023-06-14 738 vm-tools = self.mm-tools; 739 xmm7360-pci = throw "Support for the XMM7360 WWAN card was added to the iosm kmod in mainline kernel version 5.18"; 740 amdgpu-pro = throw "amdgpu-pro was removed due to lack of maintenance"; # Added 2024-06-16 741 kvdo = throw "kvdo was removed, because it was added to mainline in kernel version 6.9"; # Added 2024-07-08 742 system76-power = lib.warnOnInstantiate "kernelPackages.system76-power is now pkgs.system76-power" pkgs.system76-power; # Added 2024-10-16 743 system76-scheduler = lib.warnOnInstantiate "kernelPackages.system76-scheduler is now pkgs.system76-scheduler" pkgs.system76-scheduler; # Added 2024-10-16 744 tuxedo-keyboard = self.tuxedo-drivers; # Added 2024-09-28 745 } 746 ); 747 748 hardenedPackagesFor = kernel: overrides: packagesFor (hardenedKernelFor kernel overrides); 749 750 vanillaPackages = 751 { 752 # recurse to build modules for the kernels 753 linux_5_4 = recurseIntoAttrs (packagesFor kernels.linux_5_4); 754 linux_5_10 = recurseIntoAttrs (packagesFor kernels.linux_5_10); 755 linux_5_15 = recurseIntoAttrs (packagesFor kernels.linux_5_15); 756 linux_6_1 = recurseIntoAttrs (packagesFor kernels.linux_6_1); 757 linux_6_6 = recurseIntoAttrs (packagesFor kernels.linux_6_6); 758 linux_6_12 = recurseIntoAttrs (packagesFor kernels.linux_6_12); 759 linux_6_13 = recurseIntoAttrs (packagesFor kernels.linux_6_13); 760 linux_6_14 = recurseIntoAttrs (packagesFor kernels.linux_6_14); 761 linux_6_15 = recurseIntoAttrs (packagesFor kernels.linux_6_15); 762 } 763 // lib.optionalAttrs config.allowAliases { 764 linux_4_19 = throw "linux 4.19 was removed because it will reach its end of life within 24.11"; # Added 2024-09-21 765 linux_6_9 = throw "linux 6.9 was removed because it reached its end of life upstream"; # Added 2024-08-02 766 linux_6_10 = throw "linux 6.10 was removed because it reached its end of life upstream"; # Added 2024-10-23 767 linux_6_11 = throw "linux 6.11 was removed because it reached its end of life upstream"; # Added 2025-03-23 768 }; 769 770 rtPackages = { 771 # realtime kernel packages 772 linux_rt_5_4 = packagesFor kernels.linux_rt_5_4; 773 linux_rt_5_10 = packagesFor kernels.linux_rt_5_10; 774 linux_rt_5_15 = packagesFor kernels.linux_rt_5_15; 775 linux_rt_6_1 = packagesFor kernels.linux_rt_6_1; 776 linux_rt_6_6 = packagesFor kernels.linux_rt_6_6; 777 }; 778 779 rpiPackages = { 780 linux_rpi1 = packagesFor kernels.linux_rpi1; 781 linux_rpi2 = packagesFor kernels.linux_rpi2; 782 linux_rpi3 = packagesFor kernels.linux_rpi3; 783 linux_rpi4 = packagesFor kernels.linux_rpi4; 784 }; 785 786 packages = recurseIntoAttrs ( 787 vanillaPackages 788 // rtPackages 789 // rpiPackages 790 // { 791 792 # Intentionally lacks recurseIntoAttrs, as -rc kernels will quite likely break out-of-tree modules and cause failed Hydra builds. 793 linux_testing = packagesFor kernels.linux_testing; 794 795 linux_hardened = recurseIntoAttrs (packagesFor kernels.linux_hardened); 796 797 linux_5_4_hardened = recurseIntoAttrs (packagesFor kernels.linux_5_4_hardened); 798 linux_5_10_hardened = recurseIntoAttrs (packagesFor kernels.linux_5_10_hardened); 799 linux_5_15_hardened = recurseIntoAttrs (packagesFor kernels.linux_5_15_hardened); 800 linux_6_1_hardened = recurseIntoAttrs (packagesFor kernels.linux_6_1_hardened); 801 linux_6_6_hardened = recurseIntoAttrs (packagesFor kernels.linux_6_6_hardened); 802 linux_6_12_hardened = recurseIntoAttrs (packagesFor kernels.linux_6_12_hardened); 803 linux_6_13_hardened = recurseIntoAttrs (packagesFor kernels.linux_6_13_hardened); 804 linux_6_14_hardened = recurseIntoAttrs (packagesFor kernels.linux_6_14_hardened); 805 806 linux_zen = recurseIntoAttrs (packagesFor kernels.linux_zen); 807 linux_lqx = recurseIntoAttrs (packagesFor kernels.linux_lqx); 808 linux_xanmod = recurseIntoAttrs (packagesFor kernels.linux_xanmod); 809 linux_xanmod_stable = recurseIntoAttrs (packagesFor kernels.linux_xanmod_stable); 810 linux_xanmod_latest = recurseIntoAttrs (packagesFor kernels.linux_xanmod_latest); 811 812 linux_libre = recurseIntoAttrs (packagesFor kernels.linux_libre); 813 814 linux_ham = recurseIntoAttrs (packagesFor kernels.linux_ham); 815 816 linux_latest_libre = recurseIntoAttrs (packagesFor kernels.linux_latest_libre); 817 __recurseIntoDerivationForReleaseJobs = true; 818 } 819 // lib.optionalAttrs config.allowAliases { 820 linux_4_19_hardened = throw "linux 4.19 was removed because it will reach its end of life within 24.11"; 821 linux_6_9_hardened = throw "linux 6.9 was removed because it has reached its end of life upstream"; 822 linux_6_10_hardened = throw "linux 6.10 was removed because it has reached its end of life upstream"; 823 linux_6_11_hardened = throw "linux 6.11 was removed because it has reached its end of life upstream"; 824 } 825 ); 826 827 packageAliases = 828 { 829 linux_default = packages.linux_6_12; 830 # Update this when adding the newest kernel major version! 831 linux_latest = packages.linux_6_15; 832 linux_rt_default = packages.linux_rt_5_15; 833 linux_rt_latest = packages.linux_rt_6_6; 834 } 835 // lib.optionalAttrs config.allowAliases { 836 linux_mptcp = throw "'linux_mptcp' has been moved to https://github.com/teto/mptcp-flake"; 837 }; 838 839 manualConfig = callPackage ../os-specific/linux/kernel/manual-config.nix { }; 840 841 customPackage = 842 { 843 version, 844 src, 845 modDirVersion ? lib.versions.pad 3 version, 846 configfile, 847 allowImportFromDerivation ? true, 848 }: 849 recurseIntoAttrs ( 850 packagesFor (manualConfig { 851 inherit 852 version 853 src 854 modDirVersion 855 configfile 856 allowImportFromDerivation 857 ; 858 }) 859 ); 860 861 # Derive one of the default .config files 862 linuxConfig = 863 { 864 src, 865 kernelPatches ? [ ], 866 version ? (builtins.parseDrvName src.name).version, 867 makeTarget ? "defconfig", 868 name ? "kernel.config", 869 }: 870 stdenvNoCC.mkDerivation { 871 inherit name src; 872 depsBuildBuild = 873 [ buildPackages.stdenv.cc ] 874 ++ lib.optionals (lib.versionAtLeast version "4.16") [ 875 buildPackages.bison 876 buildPackages.flex 877 ]; 878 patches = map (p: p.patch) kernelPatches; # Patches may include new configs. 879 postPatch = '' 880 patchShebangs scripts/ 881 ''; 882 buildPhase = '' 883 set -x 884 make \ 885 ARCH=${stdenv.hostPlatform.linuxArch} \ 886 HOSTCC=${buildPackages.stdenv.cc.targetPrefix}gcc \ 887 ${makeTarget} 888 ''; 889 installPhase = '' 890 cp .config $out 891 ''; 892 }; 893 894 buildLinux = callPackage ../os-specific/linux/kernel/generic.nix { }; 895}