From fefa9ef756298e6863ece2e93bd057124b78452f Mon Sep 17 00:00:00 2001 From: Tyson Whitehead Date: Sat, 27 Jan 2018 10:11:26 -0500 Subject: [PATCH] top-level: Duplicate overlaying unless stdenvOverrides comes last The stdenvOverrides overlay is used to bring packages forward during bootstrapping via stdenv.overrides. These packages have already had the overlays applied to them in the previous boostrapping stage. If stdenvOverrides is not last in the overlays stack, all remaining overlays will windup being applied again to these packages. closes #34086 --- pkgs/top-level/stage.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/stage.nix b/pkgs/top-level/stage.nix index 7cddc664570b..de676c5a4210 100644 --- a/pkgs/top-level/stage.nix +++ b/pkgs/top-level/stage.nix @@ -116,7 +116,9 @@ let lib.optionalAttrs allowCustomOverrides ((config.packageOverrides or (super: {})) super); - # The complete chain of package set builders, applied from top to bottom + # The complete chain of package set builders, applied from top to bottom. + # stdenvOverlays must be last as it brings package forward from the + # previous bootstrapping phases which have already been overlayed. toFix = lib.foldl' (lib.flip lib.extends) (self: {}) ([ stdenvBootstappingAndPlatforms platformCompat @@ -125,9 +127,9 @@ let splice allPackages aliases - stdenvOverrides configOverrides - ] ++ overlays); + ] ++ overlays ++ [ + stdenvOverrides ]); in # Return the complete set of packages.