1
0
Fork 0
mirror of https://github.com/LnL7/nix-darwin.git synced 2024-12-14 11:57:34 +00:00

add support for assertions and warnings

This commit is contained in:
Daiderd Jordan 2017-01-08 13:11:02 +01:00
parent 4a49c48c5d
commit 4c7f6b61bc
No known key found for this signature in database
GPG key ID: D02435D05B810C96

View file

@ -8,6 +8,12 @@ let
cfg = config.system;
failedAssertions = map (x: x.message) (filter (x: !x.assertion) config.assertions);
throwAssertions = res: if (failedAssertions != []) then throw "\nFailed assertions:\n${concatStringsSep "\n" (map (x: "- ${x}") failedAssertions)}" else res;
showWarnings = res: fold (w: x: builtins.trace "warning: ${w}" x) res config.warnings;
in
{
@ -42,11 +48,34 @@ in
default = pkgs.lib.nixpkgsVersion;
};
assertions = mkOption {
type = types.listOf types.unspecified;
internal = true;
default = [];
example = [ { assertion = false; message = "you can't enable this for that reason"; } ];
description = ''
This option allows modules to express conditions that must
hold for the evaluation of the system configuration to
succeed, along with associated error messages for the user.
'';
};
warnings = mkOption {
internal = true;
default = [];
type = types.listOf types.str;
example = [ "The `foo' service is deprecated and will go away soon!" ];
description = ''
This option allows modules to show warnings to users during
the evaluation of the system configuration.
'';
};
};
config = {
system.build.toplevel = stdenvNoCC.mkDerivation {
system.build.toplevel = throwAssertions (showWarnings (stdenvNoCC.mkDerivation {
name = "darwin-system-${cfg.darwinLabel}";
preferLocalBuild = true;
@ -80,7 +109,7 @@ in
echo -n "$darwinLabel" > $out/darwin-version
echo -n "$system" > $out/system
'';
};
}));
};
}