aboutsummaryrefslogtreecommitdiff
path: root/modules/default.nix
diff options
context:
space:
mode:
authorRobert Helgesson <robert@rycee.net>2017-02-21 21:39:53 +0100
committerRobert Helgesson <robert@rycee.net>2017-02-21 21:39:53 +0100
commitbeba60870505f8043d9fbe67f9c9dd0d0d031fba (patch)
tree92b83a9eb72faaa481fb6e339f36e71e95180231 /modules/default.nix
parented9464258ae1d6675cd0a5ed9c0fdedadd668804 (diff)
Add support for assertions and warnings
Diffstat (limited to '')
-rw-r--r--modules/default.nix29
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 "warning: ${w}" 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