nixpkgs/pkgs/os-specific/linux/kernel
2023-12-21 14:53:17 +08:00
..
hardened hardened kernel: remove obsolete 4.14 section 2023-12-14 19:30:00 +01:00
perf perf: enable perf stat evens supported by libpfm 2023-08-19 13:09:17 +01:00
bridge-stp-helper.patch
common-config.nix linux: drop XEN on 32-bit 2023-12-09 17:53:05 +01:00
export-rt-sched-migrate.patch
generate-config.pl
generic.nix Merge master into staging-next 2023-11-03 06:01:08 +00:00
gpio-utils.nix
htmldocs.nix treewide: reduce packages I maintainer 2023-07-23 19:30:22 +02:00
kernels-org.json linux_6_1: 6.1.68 -> 6.1.69 2023-12-20 17:47:46 +01:00
linux-libre.nix linux_latest-libre: 19438 -> 19441 2023-11-12 09:37:26 +01:00
linux-rpi.nix
linux-rt-5.4.nix linux-rt_5_4: 5.4.254-rt85 -> 5.4.257-rt87 2023-10-02 08:23:52 +00:00
linux-rt-5.10.nix linux-rt_5_10: 5.10.199-rt97 -> 5.10.201-rt98 2023-11-29 11:47:47 +01:00
linux-rt-5.15.nix linux-rt_5_15: 5.15.137-rt71 -> 5.15.141-rt72 2023-12-08 11:32:58 +03:00
linux-rt-6.1.nix linux-rt_6_1: 6.1.65-rt18 -> 6.1.67-rt20 2023-12-19 12:09:32 +01:00
linux-testing-bcachefs.nix linux-testing-bcachefs: drop pedrohlc from maintainers 2023-11-28 11:31:55 -03:00
mainline.nix linux: more update-script cleanups/fixes 2023-09-22 16:09:59 +03:00
manual-config.nix Merge pull request #262677 from Artturin/repick2 2023-10-22 10:57:38 +03:00
modinst-arg-list-too-long.patch
mptcp-config.nix
patches.nix linux/patches: remove cpu-cgroup-v2 2023-10-15 01:19:36 +02:00
randstruct-provide-seed-5.19.patch
randstruct-provide-seed.patch
README.md doc: consolidate info on manual linux kernel configs 2023-11-23 08:50:16 -08:00
request-key-helper-updated.patch
request-key-helper.patch
rtl8761b-support.patch
update-libre.sh
update-mainline.py linux/update-mainline.py: log to stderr 2023-10-02 20:21:45 +00:00
update-rt.sh
update-zen.py
update.sh linux: rewrite updater-script, make data-driven 2023-09-22 10:38:44 +03:00
xanmod-kernels.nix linux_xanmod: 6.1.68 -> 6.1.69 2023-12-21 14:53:17 +08:00
zen-kernels.nix linuxKernel.kernels.linux_lqx: 6.6.6-lqx1 -> 6.6.7-lqx1 2023-12-14 21:17:59 +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. First unpack the kernel. Then 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 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-env -f "<nixpkgs>" -iA ncurses
      $ export NIX_CFLAGS_LINK=-lncurses
      $ 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.