diff options
author | Jan Malakhovski <oxij@oxij.org> | 2017-09-15 21:07:14 +0000 |
---|---|---|
committer | Joachim Fasting <joachifm@fastmail.fm> | 2017-09-17 16:33:47 +0200 |
commit | 8525b78d054ac7ef2c43057d54403846b2d07ccc (patch) | |
tree | 07f597dd16a3cf0d47869b3f957271c11a8a0de9 /pkgs/os-specific/linux/kernel/generic.nix | |
parent | 64bf283104fae7a73c4891956a009851bfa38979 (diff) | |
download | nixpkgs-8525b78d054ac7ef2c43057d54403846b2d07ccc.tar nixpkgs-8525b78d054ac7ef2c43057d54403846b2d07ccc.tar.gz nixpkgs-8525b78d054ac7ef2c43057d54403846b2d07ccc.tar.bz2 nixpkgs-8525b78d054ac7ef2c43057d54403846b2d07ccc.tar.lz nixpkgs-8525b78d054ac7ef2c43057d54403846b2d07ccc.tar.xz nixpkgs-8525b78d054ac7ef2c43057d54403846b2d07ccc.tar.zst nixpkgs-8525b78d054ac7ef2c43057d54403846b2d07ccc.zip |
linuxPackages: properly propagate `features` and `extraConfig`
`kernel.override { features = ... }` didn't work before, now it works as expected.
Diffstat (limited to 'pkgs/os-specific/linux/kernel/generic.nix')
-rw-r--r-- | pkgs/os-specific/linux/kernel/generic.nix | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 379d3cad970..3912d9d10f5 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -36,6 +36,22 @@ let lib = stdenv.lib; + # Combine the `features' attribute sets of all the kernel patches. + kernelFeatures = lib.fold (x: y: (x.features or {}) // y) ({ + iwlwifi = true; + efiBootStub = true; + needsCifsUtils = true; + netfilterRPFilter = true; + } // features) kernelPatches; + + configWithPlatform = kernelPlatform: import ./common-config.nix { + inherit stdenv version kernelPlatform extraConfig; + features = kernelFeatures; # Ensure we know of all extra patches, etc. + }; + + config = configWithPlatform stdenv.platform; + configCross = configWithPlatform hostPlatform.platform; + kernelConfigFun = baseConfig: let configFromPatches = @@ -115,23 +131,17 @@ let }; passthru = { - # Combine the `features' attribute sets of all the kernel patches. - features = lib.fold (x: y: (x.features or {}) // y) features kernelPatches; + features = kernelFeatures; meta = kernel.meta // extraMeta; passthru = kernel.passthru // (removeAttrs passthru [ "passthru" "meta" ]); }; - configWithPlatform = kernelPlatform: import ./common-config.nix - { inherit stdenv version kernelPlatform extraConfig; - features = passthru.features; # Ensure we know of all extra patches, etc. - }; - - config = configWithPlatform stdenv.platform; - configCross = configWithPlatform hostPlatform.platform; - nativeDrv = lib.addPassthru kernel.nativeDrv passthru; crossDrv = lib.addPassthru kernel.crossDrv passthru; -in if kernel ? crossDrv then nativeDrv // { inherit nativeDrv crossDrv; } else lib.addPassthru kernel passthru + +in if kernel ? crossDrv + then nativeDrv // { inherit nativeDrv crossDrv; } + else lib.addPassthru kernel passthru |