diff options
author | Robert Hensing <robert@roberthensing.nl> | 2021-08-31 09:15:44 +0200 |
---|---|---|
committer | Robert Hensing <robert@roberthensing.nl> | 2021-08-31 09:18:08 +0200 |
commit | eb8e943493164009f34ba4c0a824533ce755f1dd (patch) | |
tree | d6330b0c83ad7799994bf835fdb7c1f0c16bedc4 | |
parent | b5f2c5f132e05537330f1ba668e57e809a2e1ad6 (diff) | |
download | nixpkgs-eb8e943493164009f34ba4c0a824533ce755f1dd.tar nixpkgs-eb8e943493164009f34ba4c0a824533ce755f1dd.tar.gz nixpkgs-eb8e943493164009f34ba4c0a824533ce755f1dd.tar.bz2 nixpkgs-eb8e943493164009f34ba4c0a824533ce755f1dd.tar.lz nixpkgs-eb8e943493164009f34ba4c0a824533ce755f1dd.tar.xz nixpkgs-eb8e943493164009f34ba4c0a824533ce755f1dd.tar.zst nixpkgs-eb8e943493164009f34ba4c0a824533ce755f1dd.zip |
Fix interaction between appendOverlays and otherPackageSets
The comment a dirty hack that should be removed has led me to believe that nixpkgsFun isn't the right solution, but bypassing it is worse, because it creates a second, inner overriding mechanism that doesn't pass its changes to the old, outer overriding mechanism. Before this change: nix-repl> ((import <nixpkgs> {}).appendOverlays([(f: s: { foobarbaz = "ok"; })])).foobarbaz "ok" nix-repl> ((import <nixpkgs> {}).appendOverlays([(f: s: { foobarbaz = "ok"; })])).pkgsCross.aarch64-multiplatform.foobarbaz error: attribute 'foobarbaz' missing at «string»:1:1: 1| ((import <nixpkgs> {}).appendOverlays([(f: s: { foobarbaz = "ok"; })])).pkgsCross.aarch64-multiplatform.foobarbaz | ^ 2| After this change: nix-repl> ((import ./. {}).appendOverlays([(f: s: { foobarbaz = "ok"; })])).pkgsCross.aarch64-multiplatform.foobarbaz "ok" Thanks to samueldr for discovering this problem.
-rw-r--r-- | pkgs/top-level/stage.nix | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/pkgs/top-level/stage.nix b/pkgs/top-level/stage.nix index b01ef584d20..84c4d8fc405 100644 --- a/pkgs/top-level/stage.nix +++ b/pkgs/top-level/stage.nix @@ -15,7 +15,7 @@ # Utility functions, could just import but passing in for efficiency lib -, # Use to reevaluate Nixpkgs; a dirty hack that should be removed +, # Use to reevaluate Nixpkgs nixpkgsFun ## Other parameters @@ -218,7 +218,7 @@ let appendOverlays = extraOverlays: if extraOverlays == [] then self - else import ./stage.nix (args // { overlays = args.overlays ++ extraOverlays; }); + else nixpkgsFun { overlays = args.overlays ++ extraOverlays; }; # NOTE: each call to extend causes a full nixpkgs rebuild, adding ~130MB # of allocations. DO NOT USE THIS IN NIXPKGS. |