How To Config Linux Kernel in Nix
Basic configuration tricks referring to nixos.wiki: Linux Kernel.
The Override System in Kernel
What do the pkgs.linux.override, pkgs.linux.overrideAttrs override?
To answer these questions, we need first to explore how kernel derivation is generated.
When we type pkgs.linux, how this derivation is generated by nix?
* pkgs.linux
* pkgs/top-level/all-packages:
  * linuxPackages.kernel;
  * (linuxPackages = linuxKernel.packageAliases.linux_default).kernel;
  * (linuxPackages = (linuxKernel = recurseIntoAttrs (callPackage ./linux-kernels.nix { });).packageAliases.linux_default).kernel;
  * (recurseIntoAttrs (callPackage ./linux-kernels.nix { });).packageAliases.linux_default.kernel;
* pkgs/top-level/linux-kernels.nix:
  * packages.linux_6_6.kernel;
  * (recurseIntoAttrs (vanillaPackages // rtPackages // rpiPackages // { ... })).linux_6_6.kernel
  * (recurseIntoAttrs ({...; linux_6_6 = recurseIntoAttrs (packagesFor kernels.linux_6_6);...} // rtPackages // rpiPackages // { ... })).linux_6_6.kernel
  * (packagesFor kernels.linux_6_6).kernel
  * ((kernel_: {kernel = kernel_;}) kernels.linux_6_6).kernel
  * kernels.linux_6_6
  * ❶callPackage ../os-specific/linux/kernel/mainline.nix {
      branch = "6.6";
      kernelPatches = [
        kernelPatches.bridge_stp_helper
        kernelPatches.request_key_helper
      ];
    };
* pkgs/os-specific/linux/kernel/mainline.nix
  * buildLinux args'
  * ❷buildLinux ((builtins.removeAttrs args [ "branch" ])
    // {
      inherit src version;
      modDirVersion = lib.versions.pad 3 version;
      extraMeta.branch = branch;
    }
    // (args.argsOverride or { }))
  * (callPackage pkgs/os-specific/linux/kernel/generic.nix {}) args'
  * overridableKernel args'
  * (lib.makeOverridable ({...}: kernel.overrideAttrs (...))) args'
  * kernel.overrideAttrs (...)
  * ❸((callPackage ./manual-config.nix { inherit lib stdenv buildPackages; }) (basicArgs // { ... })).overrideAttrs (...)
因此
- ❶ 
overrideis applied topkgs/os-specific/linux/kernel/mainline.nix - ❷ 
argsOverrideinoverride (old: {argsOverride = {...} })is applied topkgs/os-specific/linux/kernel/generic.nix - ❸ 
overrideAttrsis applied topkgs/os-specific/linux/kernel/manual-config.nix