diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2021-08-16 21:16:29 -0400 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2021-08-18 17:22:50 +0000 |
commit | f110a182a66005782c0e58091bcda7243bf2a0ae (patch) | |
tree | 9dc114f30483a606958aea2685110a8382451539 /pkgs/top-level/stage.nix | |
parent | aa045621af26840816c7760f0e0f3d41e91dfaa8 (diff) |
stdenv: Fix overriding + `overrideAttrs`
The old stdenv adapters were subtly wrong in two ways: - `overrideAttrs` leaked the original, unoverridden `mkDerivation`. - `stdenv.override` would throw away any manually-set `mkDerivation` from a stdenv reverting to the original. Now, `mkDerivation` is controlled (nearly directly) via an argument, and always correctly closes over the final ("self") stdenv. This means the adapters can work entirely via `.override` without any manual `stdenv // ...`, and both those issues are fixed. Note hashes are changed, because stdenvs no previously overridden like `stdenvNoCC` and `crossLibcStdenv` now are. I had to add some `dontDisableStatic = true` accordingly. The flip side however is that since the overrides compose, we no longer need to override anything but the default `stdenv` from which all the others are created.
Diffstat (limited to 'pkgs/top-level/stage.nix')
-rw-r--r-- | pkgs/top-level/stage.nix | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/pkgs/top-level/stage.nix b/pkgs/top-level/stage.nix index dc43bbec9d33f..b01ef584d206e 100644 --- a/pkgs/top-level/stage.nix +++ b/pkgs/top-level/stage.nix @@ -65,7 +65,12 @@ let stdenvAdapters = self: super: - let res = import ../stdenv/adapters.nix self; in res // { + let + res = import ../stdenv/adapters.nix { + inherit lib config; + pkgs = self; + }; + in res // { stdenvAdapters = res; }; |