From 83ae1ffed43f5dc54bcfd58655974293d215df6e Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Sat, 23 Feb 2019 00:00:00 +0000 Subject: pkgs/top-level/stage.nix: don't override `overlays` and `config` in `nixpkgsFun` `nixpkgsFun` already sets them via `args`. Doing this also introduces unexpected hard to debug errors, see the patch. --- pkgs/top-level/default.nix | 8 ++++++++ pkgs/top-level/stage.nix | 2 -- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/default.nix b/pkgs/top-level/default.nix index 4afea6d7fdf..b6de076a570 100644 --- a/pkgs/top-level/default.nix +++ b/pkgs/top-level/default.nix @@ -98,6 +98,14 @@ in let # compiling toolchains and 32-bit packages on x86_64). In both those cases we # want the provided non-native `localSystem` argument to affect the stdenv # chosen. + # + # NB!!! This thing gets its `config` argument from `args`, i.e. it's actually + # `config0`. It is important to keep it to `config0` format (as opposed to the + # result of `evalModules`, i.e. the `config` variable above) throughout all + # nixpkgs evaluations since the above function `config0 -> config` implemented + # via `evalModules` is not idempotent. In other words, if you add `config` to + # `newArgs`, expect strange very hard to debug errors! (Yes, I'm speaking from + # experience here.) nixpkgsFun = newArgs: import ./. (args // newArgs); # Partially apply some arguments for building bootstraping stage pkgs diff --git a/pkgs/top-level/stage.nix b/pkgs/top-level/stage.nix index 835a2883845..0ee5c25b010 100644 --- a/pkgs/top-level/stage.nix +++ b/pkgs/top-level/stage.nix @@ -135,7 +135,6 @@ let # default GNU libc on Linux systems. Non-Linux systems are not # supported. pkgsMusl = if stdenv.hostPlatform.isLinux then nixpkgsFun { - inherit overlays config; ${if stdenv.hostPlatform == stdenv.buildPlatform then "localSystem" else "crossSystem"} = { parsed = stdenv.hostPlatform.parsed // { @@ -152,7 +151,6 @@ let # All packages built for i686 Linux. # Used by wine, firefox with debugging version of Flash, ... pkgsi686Linux = if stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86 then nixpkgsFun { - inherit overlays config; ${if stdenv.hostPlatform == stdenv.buildPlatform then "localSystem" else "crossSystem"} = { parsed = stdenv.hostPlatform.parsed // { -- cgit 1.4.1