nixpkgs/pkgs/os-specific/linux/kernel
2024-10-22 17:48:56 +03:00
..
hardened linux/hardened/patches/6.6: v6.6.51-hardened1 -> v6.6.53-hardened1 2024-10-04 18:28:37 +03:00
perf linuxPackages.perf: fix path to dmesg 2024-09-22 15:28:51 +05:30
bridge-stp-helper.patch
common-config.nix linux: enable FF support for hid-nvidia-shield 2024-10-17 18:51:05 +03:00
export-rt-sched-migrate.patch
generate-config.pl
generic.nix linux: implement rustAvailable condition 2024-10-12 17:08:18 +02:00
gpio-utils.nix linux: remove 'with lib;' 2024-08-16 16:09:03 +02:00
htmldocs.nix linux-doc: Remove docutils patch 2024-05-30 17:31:50 +02:00
kernels-org.json linux_5_10: 5.10.227 -> 5.10.228 2024-10-22 17:48:56 +03:00
linux-libre.nix linux_latest-libre: 19631 -> 19643 2024-10-10 14:05:42 +03:00
linux-rpi.nix treewide: replace stdenv.is with stdenv.hostPlatform.is 2024-09-25 00:04:37 +03:00
linux-rt-5.4.nix linux-rt_5_4: 5.4.271-rt89 -> 5.4.278-rt91 2024-07-05 17:29:44 +03:00
linux-rt-5.10.nix linux-rt_5_10: 5.10.224-rt116 -> 5.10.225-rt117 2024-09-30 18:04:29 +03:00
linux-rt-5.15.nix linux-rt_5_15: 5.15.163-rt78 -> 5.15.167-rt79 2024-10-04 18:27:18 +03:00
linux-rt-6.1.nix linux-rt_6_1: 6.1.108-rt40 -> 6.1.111-rt42 2024-09-30 18:05:53 +03:00
linux-rt-6.6.nix linux-rt_6_6: 6.6.49-rt41 -> 6.6.52-rt43 2024-09-30 18:06:31 +03:00
mainline.nix Let-float various fromJSON calls to avoid repeated JSON reading/parsing 2024-06-03 18:52:42 +02:00
manual-config.nix linux: mark <6.12 with Rust as broken, assert on <6.7 with Rust 2024-10-05 13:31:09 +02:00
mptcp-config.nix
patches.nix linux_4_19: drop since it will reach EOL within NixOS 24.11 2024-09-21 19:11:50 -06:00
randstruct-provide-seed-5.19.patch
randstruct-provide-seed.patch
README.md doc: fix broken link to linux-kernels.nix 2024-08-09 23:39:23 +02:00
request-key-helper-updated.patch
request-key-helper.patch
rtl8761b-support.patch
update-libre.sh
update-mainline.py linux/update-mainline: fix -rc version spelling, clean up a bit 2024-07-30 11:22:18 +03:00
update-rt.sh
update-zen.py linux-packages: fix argsOverride 2024-08-18 10:38:23 +03:00
update.sh
xanmod-kernels.nix linux_xanmod_latest: 6.11.3 -> 6.11.4 2024-10-18 18:53:15 +02:00
zen-kernels.nix linuxKernel.kernels.linux_lqx: 6.10.9-lqx1 -> 6.11.2-lqx1 2024-10-10 20:00:46 +01:00

How to add a new (major) version of the Linux kernel to Nixpkgs:

  1. Copy the old Nix expression (e.g., linux-2.6.21.nix) to the new one (e.g., linux-2.6.22.nix) and update it.

  2. Add the new kernel to the kernels attribute set in linux-kernels.nix (e.g., create an attribute kernel_2_6_22).

  3. Update the kernel configuration:

    1. While in the Nixpkgs repository, enter the development shell for that kernel:

      $ nix-shell -A linuxKernel.kernels.linux_2_6_22
      
    2. Unpack the kernel:

      [nix-shell]$ pushd $(mktemp -d)
      [nix-shell]$ unpackPhase
      
    3. For each supported platform (i686, x86_64, uml) do the following:

      1. Make a copy from the old config (e.g., config-2.6.21-i686-smp) to the new one (e.g., config-2.6.22-i686-smp).

      2. Copy the config file for this platform (e.g., config-2.6.22-i686-smp) to .config in the unpacked kernel source tree.

      3. Run make oldconfig ARCH={i386,x86_64,um} and answer all questions. (For the uml configuration, also add SHELL=bash.) Make sure to keep the configuration consistent between platforms (i.e., dont enable some feature on i686 and disable it on x86_64).

      4. If needed, you can also run make menuconfig:

        $ nix-shell -p ncurses pkg-config
        $ make menuconfig ARCH=arch
        
      5. Copy .config over the new config file (e.g., config-2.6.22-i686-smp).

  4. Test building the kernel:

nix-build -A linuxKernel.kernels.kernel_2_6_22

If it compiles, ship it! For extra credit, try booting NixOS with it.

  1. It may be that the new kernel requires updating the external kernel modules and kernel-dependent packages listed in the linuxPackagesFor function in linux-kernels.nix (such as the NVIDIA drivers, AUFS, etc.). If the updated packages arent backwards compatible with older kernels, you may need to keep the older versions around.