Home Explore Blog Models CI



nixpkgs

1st chunk of `nixos/doc/manual/configuration/linux-kernel.chapter.md`
b13f6faceac70b4faf649c4c2b10b44618830b514d5ff78500000001000008c3
# Linux Kernel {#sec-kernel-config}

You can override the Linux kernel and associated packages using the
option `boot.kernelPackages`. For instance, this selects the Linux 3.10
kernel:

```nix
{ boot.kernelPackages = pkgs.linuxKernel.packages.linux_3_10; }
```

Note that this not only replaces the kernel, but also packages that are
specific to the kernel version, such as the NVIDIA video drivers. This
ensures that driver packages are consistent with the kernel.

While `pkgs.linuxKernel.packages` contains all available kernel packages,
you may want to use one of the unversioned `pkgs.linuxPackages_*` aliases
such as `pkgs.linuxPackages_latest`, that are kept up to date with new
versions.

Please note that the current convention in NixOS is to only keep actively
maintained kernel versions on both unstable and the currently supported stable
release(s) of NixOS. This means that a non-longterm kernel will be removed after it's
abandoned by the kernel developers, even on stable NixOS versions. If you
pin your kernel onto a non-longterm version, expect your evaluation to fail as
soon as the version is out of maintenance.

A kernel will be removed from nixpkgs when the first batch of stable kernels
_after_ the final release is published. E.g. when 6.15.11 is the final release
of the 6.15 series and is released together with 6.16.3 and 6.12.43, it will be
removed on the release of 6.16.4 and 6.12.44. Custom kernel variants such
as linux-hardened are also affected by this.

Longterm versions of kernels will be removed before the next stable NixOS that will
exceed the maintenance period of the kernel version.

The default Linux kernel configuration should be fine for most users.
You can see the configuration of your current kernel with the following
command:

```ShellSession
zcat /proc/config.gz
```

If you want to change the kernel configuration, you can use the
`packageOverrides` feature (see [](#sec-customising-packages)). For
instance, to enable support for the kernel debugger KGDB:

```nix
{
  nixpkgs.config.packageOverrides =
    pkgs:
    pkgs.lib.recursiveUpdate pkgs {
      linuxKernel.kernels.linux_5_10 = pkgs.linuxKernel.kernels.linux_5_10.override {
        extraConfig = ''
          KGDB y
        '';

Title: Linux Kernel Overrides and Configuration in NixOS
Summary
This document explains how to override the Linux kernel and its associated packages in NixOS using the `boot.kernelPackages` option, ensuring consistency with kernel-specific drivers like NVIDIA. It introduces versioned and unversioned kernel aliases and details the NixOS policy for kernel removal, particularly for non-longterm and long-term kernels once their maintenance period ends. Finally, it demonstrates how to view the current kernel configuration and how to customize it, for example, by enabling features like KGDB, using the `packageOverrides` feature.