nixpkgs/pkgs/os-specific/linux/kernel
Silvan Mosberger 4f0dadbf38 treewide: format all inactive Nix files
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.

Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.

A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.

This commit was automatically created and can be verified using

    nix-build a08b3a4d19.tar.gz \
      --argstr baseRev b32a094368
    result/bin/apply-formatting $NIXPKGS_PATH
2024-12-10 20:26:33 +01:00
..
hardened treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
perf treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
bridge-stp-helper.patch
common-config.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
export-rt-sched-migrate.patch
generate-config.pl
generic.nix linux: change tests to attrset 2024-10-20 13:37:07 +02:00
gpio-utils.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
htmldocs.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
kernels-org.json linux_6_6: 6.6.63 -> 6.6.64 2024-12-10 09:45:15 +03:00
linux-libre.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
linux-rpi.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
linux-rt-5.4.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
linux-rt-5.10.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
linux-rt-5.15.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
linux-rt-6.1.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
linux-rt-6.6.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
mainline.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
manual-config.nix linuxManualConfig: don't leak rust-lib-src paths into the final binary 2024-11-18 14:58:42 +03:00
mptcp-config.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
patches.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01: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 oldest version check 2024-11-08 22:01:52 +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.10 -> 6.11.11 2024-12-06 20:13:07 +01:00
zen-kernels.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +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.