Home Explore Blog CI



nixpkgs

1st chunk of `nixos/doc/manual/configuration/linux-kernel.chapter.md`
08c5fcd24bb5504e3e1f9a64ae4ce8c1ed3ee9fb8bbfad21000000010000082c
# 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.

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
      '';
    };
  };
}
```

`extraConfig` takes a list of Linux kernel configuration options, one
per line. The name of the option should not include the prefix
`CONFIG_`. The option value is typically `y`, `n` or `m` (to build

Title: Configuring the Linux Kernel in NixOS
Summary
In NixOS, the `boot.kernelPackages` option allows overriding the default Linux kernel and associated packages, ensuring driver consistency. While `pkgs.linuxKernel.packages` offers all kernel packages, `pkgs.linuxPackages_*` aliases provide updated versions. NixOS maintains only actively supported kernel versions, removing non-LTS kernels after upstream abandonment, even on stable releases. Kernel configuration can be customized using `packageOverrides` and the `extraConfig` option to modify specific kernel options.