diff options
author | Jan Malakhovski <oxij@oxij.org> | 2019-02-23 00:00:01 +0000 |
---|---|---|
committer | danbst <abcz2.uprola@gmail.com> | 2019-03-08 11:19:38 +0200 |
commit | 4a647dd225571e91d81c1306c69e3473fdd9a8c5 (patch) | |
tree | f4380a4ebd94d043b0435d011fa36a018b6ae84b /pkgs/top-level/default.nix | |
parent | 570aed4b46916551da969c4daeef0322461ac2fe (diff) | |
download | nixlib-4a647dd225571e91d81c1306c69e3473fdd9a8c5.tar nixlib-4a647dd225571e91d81c1306c69e3473fdd9a8c5.tar.gz nixlib-4a647dd225571e91d81c1306c69e3473fdd9a8c5.tar.bz2 nixlib-4a647dd225571e91d81c1306c69e3473fdd9a8c5.tar.lz nixlib-4a647dd225571e91d81c1306c69e3473fdd9a8c5.tar.xz nixlib-4a647dd225571e91d81c1306c69e3473fdd9a8c5.tar.zst nixlib-4a647dd225571e91d81c1306c69e3473fdd9a8c5.zip |
pkgs/top-level: check types of `nixpkgs.config`
This patch simply introduces a plain simple NixOS module and passes `nixpkgs.config` through it via `evalModules` (with some temporary hackery to passthru undefined options).
Diffstat (limited to 'pkgs/top-level/default.nix')
-rw-r--r-- | pkgs/top-level/default.nix | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/pkgs/top-level/default.nix b/pkgs/top-level/default.nix index f2de6d6f81d4..4afea6d7fdff 100644 --- a/pkgs/top-level/default.nix +++ b/pkgs/top-level/default.nix @@ -41,7 +41,7 @@ } @ args: let # Rename the function arguments - configExpr = config; + config0 = config; crossSystem0 = crossSystem; in let @@ -50,22 +50,37 @@ in let # Allow both: # { /* the config */ } and # { pkgs, ... } : { /* the config */ } - config = - if lib.isFunction configExpr - then configExpr { inherit pkgs; } - else configExpr; + config1 = + if lib.isFunction config0 + then config0 { inherit pkgs; } + else config0; # From a minimum of `system` or `config` (actually a target triple, *not* # nixpkgs configuration), infer the other one and platform as needed. localSystem = lib.systems.elaborate ( # Allow setting the platform in the config file. This take precedence over # the inferred platform, but not over an explicitly passed-in one. - builtins.intersectAttrs { platform = null; } config + builtins.intersectAttrs { platform = null; } config1 // args.localSystem); crossSystem = if crossSystem0 == null then localSystem else lib.systems.elaborate crossSystem0; + configEval = lib.evalModules { + modules = [ + ./config.nix + ({ options, ... }: { + _file = "nixpkgs.config"; + # filter-out known options, FIXME: remove this eventually + config = builtins.intersectAttrs options config1; + }) + ]; + }; + + # take all the rest as-is + config = lib.showWarnings configEval.config.warnings + (config1 // builtins.removeAttrs configEval.config [ "_module" ]); + # A few packages make a new package set to draw their dependencies from. # (Currently to get a cross tool chain, or forced-i686 package.) Rather than # give `all-packages.nix` all the arguments to this function, even ones that |