summary refs log tree commit diff
path: root/pkgs/os-specific/linux/kernel/generic.nix
diff options
context:
space:
mode:
authorJan Malakhovski <oxij@oxij.org>2017-09-15 21:07:14 +0000
committerJoachim Fasting <joachifm@fastmail.fm>2017-09-17 16:33:47 +0200
commit8525b78d054ac7ef2c43057d54403846b2d07ccc (patch)
tree07f597dd16a3cf0d47869b3f957271c11a8a0de9 /pkgs/os-specific/linux/kernel/generic.nix
parent64bf283104fae7a73c4891956a009851bfa38979 (diff)
downloadnixpkgs-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.nix32
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