summaryrefslogtreecommitdiffstats
path: root/nixos/lib/systemd-lib.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/lib/systemd-lib.nix')
-rw-r--r--nixos/lib/systemd-lib.nix24
1 files changed, 24 insertions, 0 deletions
diff --git a/nixos/lib/systemd-lib.nix b/nixos/lib/systemd-lib.nix
index 0641da8e7751..dac5cc7b700c 100644
--- a/nixos/lib/systemd-lib.nix
+++ b/nixos/lib/systemd-lib.nix
@@ -182,6 +182,30 @@ in rec {
in if errors == [] then true
else trace (concatStringsSep "\n" errors) false;
+ checkUnitConfigWithLegacyKey = legacyKey: group: checks: attrs:
+ let
+ dump = lib.generators.toPretty { }
+ (lib.generators.withRecursion { depthLimit = 2; throwOnDepthLimit = false; } attrs);
+ attrs' =
+ if legacyKey == null
+ then attrs
+ else if ! attrs?${legacyKey}
+ then attrs
+ else if removeAttrs attrs [ legacyKey ] == {}
+ then attrs.${legacyKey}
+ else throw ''
+ The declaration
+
+ ${dump}
+
+ must not mix unit options with the legacy key '${legacyKey}'.
+
+ This can be fixed by moving all settings from within ${legacyKey}
+ one level up.
+ '';
+ in
+ checkUnitConfig group checks attrs';
+
toOption = x:
if x == true then "true"
else if x == false then "false"