nixos/systemd: assert After=network-online.target -> Wants=
This will catch broken services at the evaluation stage.
This commit is contained in:
parent
062be41387
commit
367d101073
1 changed files with 31 additions and 14 deletions
|
@ -451,20 +451,37 @@ in
|
|||
cfg.services
|
||||
);
|
||||
|
||||
assertions = concatLists (
|
||||
mapAttrsToList
|
||||
(name: service:
|
||||
map (message: {
|
||||
assertion = false;
|
||||
inherit message;
|
||||
}) (concatLists [
|
||||
(optional ((builtins.elem "network-interfaces.target" service.after) || (builtins.elem "network-interfaces.target" service.wants))
|
||||
"Service '${name}.service' is using the deprecated target network-interfaces.target, which no longer exists. Using network.target is recommended instead."
|
||||
)
|
||||
])
|
||||
)
|
||||
cfg.services
|
||||
);
|
||||
assertions = let
|
||||
mkOneAssert = typeStr: name: def: {
|
||||
assertion = lib.elem "network-online.target" def.after -> lib.elem "network-online.target" (def.wants ++ def.requires ++ def.bindsTo);
|
||||
message = "${name}.${typeStr} is ordered after 'network-online.target' but doesn't depend on it";
|
||||
};
|
||||
mkAsserts = typeStr: lib.mapAttrsToList (mkOneAssert typeStr);
|
||||
mkMountAsserts = typeStr: map (m: mkOneAssert typeStr m.what m);
|
||||
in mkMerge [
|
||||
(concatLists (
|
||||
mapAttrsToList
|
||||
(name: service:
|
||||
map (message: {
|
||||
assertion = false;
|
||||
inherit message;
|
||||
}) (concatLists [
|
||||
(optional ((builtins.elem "network-interfaces.target" service.after) || (builtins.elem "network-interfaces.target" service.wants))
|
||||
"Service '${name}.service' is using the deprecated target network-interfaces.target, which no longer exists. Using network.target is recommended instead."
|
||||
)
|
||||
])
|
||||
)
|
||||
cfg.services
|
||||
))
|
||||
(mkAsserts "target" cfg.targets)
|
||||
(mkAsserts "service" cfg.services)
|
||||
(mkAsserts "socket" cfg.sockets)
|
||||
(mkAsserts "timer" cfg.timers)
|
||||
(mkAsserts "path" cfg.paths)
|
||||
(mkMountAsserts "mount" cfg.mounts)
|
||||
(mkMountAsserts "automount" cfg.automounts)
|
||||
(mkAsserts "slice" cfg.slices)
|
||||
];
|
||||
|
||||
system.build.units = cfg.units;
|
||||
|
||||
|
|
Loading…
Reference in a new issue