diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0a80c5b48d2..1f8b04a8350 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -90,15 +90,18 @@ let # (un-overriden) set of packages, allowing packageOverrides # attributes to refer to the original attributes (e.g. "foo = # ... pkgs.foo ..."). - pkgs = applyGlobalOverrides (config.packageOverrides or (pkgs: {})); + pkgs = applyGlobalOverrides pkgsInit (config.packageOverrides or (pkgs: {})); mkOverrides = pkgsOrig: overrides: overrides // (lib.optionalAttrs (pkgsOrig.stdenv ? overrides && crossSystem == null) (pkgsOrig.stdenv.overrides pkgsOrig)); + # The un-overriden packages, passed to `overrider'. + pkgsInit = pkgsFun pkgs {}; + # Return the complete set of packages, after applying the overrides # returned by the `overrider' function (see above). Warning: this # function is very expensive! - applyGlobalOverrides = overrider: + applyGlobalOverrides = pkgsOrig: overrider: let # Call the overrider function. We don't want stdenv overrides # in the case of cross-building, or otherwise the basic @@ -106,9 +109,6 @@ let # adapter. overrides = mkOverrides pkgsOrig (overrider pkgsOrig); - # The un-overriden packages, passed to `overrider'. - pkgsOrig = pkgsFun pkgs {}; - # The overriden, final packages. pkgs = pkgsFun pkgs overrides; in pkgs;