nixpkgs: Check overlays types

This seems to be a common mistake and is worth checking so we can
provide a better error message.
This commit is contained in:
Robert Hensing 2021-12-22 12:52:06 +01:00
parent d4c6319803
commit cf73196411

View File

@ -49,6 +49,15 @@ let # Rename the function arguments
in let
lib = import ../../lib;
throwIfNot = b: msg: if b then x: x else throw msg;
checked =
throwIfNot (lib.isList overlays) "The overlays argument to nixpkgs must be a list."
lib.foldr (x: throwIfNot (lib.isFunction x) "All overlays passed to nixpkgs must be functions.") (r: r) overlays
throwIfNot (lib.isList crossOverlays) "The crossOverlays argument to nixpkgs must be a list."
lib.foldr (x: throwIfNot (lib.isFunction x) "All crossOverlays passed to nixpkgs must be functions.") (r: r) crossOverlays
;
localSystem = lib.systems.elaborate args.localSystem;
# Condition preserves sharing which in turn affects equality.
@ -121,4 +130,4 @@ in let
pkgs = boot stages;
in pkgs
in checked pkgs