linuxKernel.kernels.linux_zen: 6.6.4-zen1 -> 6.6.6-zen1, linuxKernel.kernels.linux_lqx: 6.6.4-lqx1 -> 6.6.6-lqx1
How to add a new (major) version of the Linux kernel to Nixpkgs:
-
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. -
Add the new kernel to the
kernelsattribute set inlinux-kernels.nix(e.g., create an attributekernel_2_6_22). -
Update the kernel configuration. First unpack the kernel. Then for each supported platform (
i686,x86_64,uml) do the following:-
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). -
Copy the config file for this platform (e.g.,
config-2.6.22-i686-smp) to.configin the kernel source tree. -
Run
make oldconfig ARCH={i386,x86_64,um}and answer all questions. (For the uml configuration, also addSHELL=bash.) Make sure to keep the configuration consistent between platforms (i.e., don’t enable some feature oni686and disable it onx86_64). -
If needed, you can also run
make menuconfig:$ nix-env -f "<nixpkgs>" -iA ncurses $ export NIX_CFLAGS_LINK=-lncurses $ make menuconfig ARCH=arch -
Copy
.configover the new config file (e.g.,config-2.6.22-i686-smp).
-
-
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.
- It may be that the new kernel requires updating the external kernel modules and kernel-dependent packages listed in the
linuxPackagesForfunction inlinux-kernels.nix(such as the NVIDIA drivers, AUFS, etc.). If the updated packages aren’t backwards compatible with older kernels, you may need to keep the older versions around.