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 diff --git a/pkgs/os-specific/linux/kernel/linux-4.12.nix b/pkgs/os-specific/linux/kernel/linux-4.12.nix index 876bbff119f..640534aa2a6 100644 --- a/pkgs/os-specific/linux/kernel/linux-4.12.nix +++ b/pkgs/os-specific/linux/kernel/linux-4.12.nix @@ -8,11 +8,4 @@ import ./generic.nix (args // rec { url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; sha256 = "18sxw7mw4fya7381mkah70s3di6b8xxfigjhrhb7zcczrffb4vl9"; }; - - kernelPatches = args.kernelPatches; - - features.iwlwifi = true; - features.efiBootStub = true; - features.needsCifsUtils = true; - features.netfilterRPFilter = true; } // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-4.13.nix b/pkgs/os-specific/linux/kernel/linux-4.13.nix index fb53a278bd1..1d51b033dc1 100644 --- a/pkgs/os-specific/linux/kernel/linux-4.13.nix +++ b/pkgs/os-specific/linux/kernel/linux-4.13.nix @@ -8,11 +8,4 @@ import ./generic.nix (args // rec { url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; sha256 = "1lgwgw9yp5ywbylnmahsmqzs98yfq53mvvqqdgp7ljiqg8bxqjh6"; }; - - kernelPatches = args.kernelPatches; - - features.iwlwifi = true; - features.efiBootStub = true; - features.needsCifsUtils = true; - features.netfilterRPFilter = true; } // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-4.9.nix b/pkgs/os-specific/linux/kernel/linux-4.9.nix index 7e959241b9c..5f4686a5ec6 100644 --- a/pkgs/os-specific/linux/kernel/linux-4.9.nix +++ b/pkgs/os-specific/linux/kernel/linux-4.9.nix @@ -8,11 +8,4 @@ import ./generic.nix (args // rec { url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; sha256 = "0dhm5w7qa1hyqp254r41b4nhf10a8w7sv1mhd16f61inpb41829c"; }; - - kernelPatches = args.kernelPatches; - - features.iwlwifi = true; - features.efiBootStub = true; - features.needsCifsUtils = true; - features.netfilterRPFilter = true; } // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-hardened-copperhead.nix b/pkgs/os-specific/linux/kernel/linux-hardened-copperhead.nix index d5d4ebcdae5..3b9357ae35e 100644 --- a/pkgs/os-specific/linux/kernel/linux-hardened-copperhead.nix +++ b/pkgs/os-specific/linux/kernel/linux-hardened-copperhead.nix @@ -27,11 +27,4 @@ import ./generic.nix (args // { repo = "linux-hardened"; rev = "${version}.${revision}"; }; - - kernelPatches = args.kernelPatches; - - features.iwlwifi = true; - features.efiBootStub = true; - features.needsCifsUtils = true; - features.netfilterRPFilter = true; } // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-mptcp.nix b/pkgs/os-specific/linux/kernel/linux-mptcp.nix index 7e6110bf4a3..dc4d10a0412 100644 --- a/pkgs/os-specific/linux/kernel/linux-mptcp.nix +++ b/pkgs/os-specific/linux/kernel/linux-mptcp.nix @@ -15,8 +15,6 @@ import ./generic.nix (args // rec { sha256 = "0vqjnkzcbbvyq24w3cryfmw7hhws1xqkkxqcv71szkbqqs6mcr14"; }; - kernelPatches = args.kernelPatches; - extraConfig = '' IPV6 y MPTCP y @@ -41,10 +39,6 @@ import ./generic.nix (args // rec { TCP_CONG_OLIA m TCP_CONG_WVEGAS m TCP_CONG_BALIA m - ''; - features.iwlwifi = true; - features.efiBootStub = true; - features.needsCifsUtils = true; - features.netfilterRPFilter = true; + '' + (args.extraConfig or ""); } // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-rpi.nix b/pkgs/os-specific/linux/kernel/linux-rpi.nix index 4985e40f51d..2d8a3f0afcd 100644 --- a/pkgs/os-specific/linux/kernel/linux-rpi.nix +++ b/pkgs/os-specific/linux/kernel/linux-rpi.nix @@ -15,9 +15,9 @@ stdenv.lib.overrideDerivation (import ./generic.nix (args // rec { sha256 = "1ly0x7a43zvig0fv7lc6rpq49pcdb7i9sdb78p4gi5485zap40kb"; }; - features.iwlwifi = true; - features.needsCifsUtils = true; - features.netfilterRPFilter = true; + features = { + efiBootStub = false; + } // (args.features or {}); extraMeta.hydraPlatforms = []; })) (oldAttrs: { diff --git a/pkgs/os-specific/linux/kernel/linux-samus-4.12.nix b/pkgs/os-specific/linux/kernel/linux-samus-4.12.nix index 5599e1325d9..f262dfe34b7 100644 --- a/pkgs/os-specific/linux/kernel/linux-samus-4.12.nix +++ b/pkgs/os-specific/linux/kernel/linux-samus-4.12.nix @@ -14,10 +14,5 @@ import ./generic.nix (args // rec { sha256 = "1dr74i79p8r13522w2ppi8gnjd9bhngc9d2hsn91ji6f5a8fbxx9"; }; in "${upstream}/build/linux"; - features.iwlwifi = true; - features.efiBootStub = true; - features.needsCifsUtils = true; - features.netfilterRPFilter = true; - extraMeta.hydraPlatforms = []; } // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-testing-bcachefs.nix b/pkgs/os-specific/linux/kernel/linux-testing-bcachefs.nix index 77a2b62dbb4..a104cc5393c 100644 --- a/pkgs/os-specific/linux/kernel/linux-testing-bcachefs.nix +++ b/pkgs/os-specific/linux/kernel/linux-testing-bcachefs.nix @@ -16,11 +16,6 @@ import ./generic.nix (args // rec { BCACHEFS_FS m ''; - features.iwlwifi = true; - features.efiBootStub = true; - features.needsCifsUtils = true; - features.netfilterRPFilter = true; - # Should the testing kernels ever be built on Hydra? extraMeta.hydraPlatforms = []; diff --git a/pkgs/os-specific/linux/kernel/linux-testing.nix b/pkgs/os-specific/linux/kernel/linux-testing.nix index 57e2eda0e90..e97d5c47da2 100644 --- a/pkgs/os-specific/linux/kernel/linux-testing.nix +++ b/pkgs/os-specific/linux/kernel/linux-testing.nix @@ -10,11 +10,6 @@ import ./generic.nix (args // rec { sha256 = "0dhcsjgcy28pyyzwf2s0862p92bwb324kapli2y9n90bw0kl53gi"; }; - features.iwlwifi = true; - features.efiBootStub = true; - features.needsCifsUtils = true; - features.netfilterRPFilter = true; - # Should the testing kernels ever be built on Hydra? extraMeta.hydraPlatforms = [];