diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 81c24b524f3..67cecfa756c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16519,17 +16519,26 @@ in linuxManualConfig = makeOverridable (callPackage ../os-specific/linux/kernel/manual-config.nix {}); # Derive one of the default .config files - linuxConfig = { src, makeTarget ? "defconfig", name ? "kernel.config" }: - stdenv.mkDerivation { - inherit name src; - buildPhase = '' - set -x - make ${makeTarget} - ''; - installPhase = '' - cp .config $out - ''; - }; + linuxConfig = { + src, + version ? (builtins.parseDrvName src.name).version, + makeTarget ? "defconfig", + name ? "kernel.config", + }: stdenvNoCC.mkDerivation { + inherit name src; + depsBuildBuild = [ buildPackages.stdenv.cc ] + ++ lib.optionals (lib.versionAtLeast version "4.16") [ buildPackages.bison buildPackages.flex ]; + buildPhase = '' + set -x + make \ + ARCH=${stdenv.hostPlatform.kernelArch} \ + HOSTCC=${buildPackages.stdenv.cc.targetPrefix}gcc \ + ${makeTarget} + ''; + installPhase = '' + cp .config $out + ''; + }; buildLinux = attrs: callPackage ../os-specific/linux/kernel/generic.nix attrs;