nixpkgs/pkgs/os-specific/linux/kernel
2024-02-23 12:32:56 +03:00
..
hardened linux/hardened/patches/6.7: 6.7.4-hardened1 -> 6.7.5-hardened1 2024-02-21 00:12:13 -06:00
perf linuxPackages_latest.perf: add -O1 workaround for gcc-13 2024-02-08 20:52:44 +00:00
bridge-stp-helper.patch
common-config.nix linux: CONFIG_LED_TRIGGER_PHY=y 2024-01-25 20:07:57 -06:00
export-rt-sched-migrate.patch
generate-config.pl
generic.nix buildLinux: use lib.toFunction 2024-02-05 02:57:55 +08:00
gpio-utils.nix
htmldocs.nix treewide: reduce packages I maintainer 2023-07-23 19:30:22 +02:00
kernels-org.json linux_4_19: 4.19.306 -> 4.19.307 2024-02-23 12:32:56 +03:00
linux-libre.nix linux_latest-libre: 19482 -> 19489 2024-02-01 09:54:56 +01:00
linux-rpi.nix linux_rpi3: fix build failure due to wrong Kconfig 2024-01-30 15:30:03 +07:00
linux-rt-5.4.nix linux-rt_5_4: 5.4.257-rt87 -> 5.4.264-rt88 2024-01-05 21:23:34 +03:00
linux-rt-5.10.nix linux-rt_5_10: 5.10.204-rt100 -> 5.10.209-rt101 2024-02-04 15:31:23 +01:00
linux-rt-5.15.nix linux-rt_5_15: 5.15.145-rt73 -> 5.15.148-rt74 2024-02-19 11:57:00 +01:00
linux-rt-6.1.nix linux-rt_6_1: 6.1.75-rt23 -> 6.1.77-rt24 2024-02-12 11:31:06 +01:00
linux-rt-6.6.nix linux-rt_6_6: init at 6.6.15-rt22 2024-02-09 08:43:20 +00:00
mainline.nix linux: more update-script cleanups/fixes 2023-09-22 16:09:59 +03:00
manual-config.nix linux_latest: optionally build Linux 6.7 and onwards with rust support 2024-01-12 20:28:46 +01:00
modinst-arg-list-too-long.patch
mptcp-config.nix
patches.nix linux_6_7: fix Rust support with current rustc 2024-01-28 10:54:17 +01:00
randstruct-provide-seed-5.19.patch
randstruct-provide-seed.patch
README.md doc: update the kernel config documentation to use nix-shell (#265057) 2024-01-08 12:10:41 +01:00
request-key-helper-updated.patch
request-key-helper.patch
rtl8761b-support.patch
rust-1.75.patch linux_6_7: fix Rust support with current rustc 2024-01-28 10:54:17 +01:00
update-libre.sh
update-mainline.py linux: ignore kernel branches older than min supported branch 2024-01-02 18:43:41 +01: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_latest: 6.6.15 -> 6.7.5 2024-02-17 19:56:40 +08:00
zen-kernels.nix linuxKernel.kernels.linux_lqx: 6.7.4-lqx1 -> 6.7.5-lqx1 2024-02-18 08:27:51 +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.