diff options
author | Robert Helgesson <robert@rycee.net> | 2017-02-21 21:39:53 +0100 |
---|---|---|
committer | Robert Helgesson <robert@rycee.net> | 2017-02-21 21:39:53 +0100 |
commit | beba60870505f8043d9fbe67f9c9dd0d0d031fba (patch) | |
tree | 92b83a9eb72faaa481fb6e339f36e71e95180231 /modules/default.nix | |
parent | ed9464258ae1d6675cd0a5ed9c0fdedadd668804 (diff) |
Add support for assertions and warnings
Diffstat (limited to '')
-rw-r--r-- | modules/default.nix | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/modules/default.nix b/modules/default.nix index 93ce01ad852e..ebec6c96fb5d 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -3,6 +3,8 @@ , lib ? pkgs.stdenv.lib }: +with lib; + let modules = [ @@ -33,17 +35,38 @@ let ./systemd.nix ./xresources.nix ./xsession.nix + <nixpkgs/nixos/modules/misc/assertions.nix> <nixpkgs/nixos/modules/misc/meta.nix> ]; + collectFailed = cfg: + map (x: x.message) (filter (x: !x.assertion) cfg.assertions); + + showWarnings = res: + let + f = w: x: builtins.trace "[1;31mwarning: ${w}[0m" x; + in + fold f res res.config.warnings; + pkgsModule = { config._module.args.pkgs = lib.mkForce pkgs; config._module.args.baseModules = modules; }; - module = lib.evalModules { - modules = [ configuration ] ++ modules ++ [ pkgsModule ]; - }; + module = showWarnings ( + let + mod = lib.evalModules { + modules = [ configuration ] ++ modules ++ [ pkgsModule ]; + }; + + failed = collectFailed mod.config; + + failedStr = concatStringsSep "\n" (map (x: "- ${x}") failed); + in + if failed == [] + then mod + else throw "\nFailed assertions:\n${failedStr}" + ); in |