nixos/services.tinc: Add all generated /etc/ files to reloadTriggers

Bug fix for issue #66431. Adds all files created as a result of
hostSettings configuration to the created service's reloadTriggers,
or to restartTriggers if the version of tinc isn't 1.1pre or later.
This commit is contained in:
Tavi 2022-12-19 16:39:52 -05:00
parent 81f1863ca7
commit ca591e7008

View file

@ -349,9 +349,9 @@ in
###### implementation
config = mkIf (cfg.networks != { }) {
environment.etc = foldr (a: b: a // b) { }
config = mkIf (cfg.networks != { }) (
let
etcConfig = foldr (a: b: a // b) { }
(flip mapAttrsToList cfg.networks (network: data:
flip mapAttrs' data.hosts (host: text: nameValuePair
("tinc/${network}/hosts/${host}")
@ -366,19 +366,22 @@ in
};
}
));
in {
environment.etc = etcConfig;
systemd.services = flip mapAttrs' cfg.networks (network: data: nameValuePair
("tinc.${network}")
({
(let version = getVersion data.package; in {
description = "Tinc Daemon - ${network}";
wantedBy = [ "multi-user.target" ];
path = [ data.package ];
restartTriggers = [ config.environment.etc."tinc/${network}/tinc.conf".source ];
reloadTriggers = mkIf (versionAtLeast version "1.1pre") [ (builtins.toJSON etcConfig) ];
restartTriggers = mkIf (versionOlder version "1.1pre") [ (builtins.toJSON etcConfig) ];
serviceConfig = {
Type = "simple";
Restart = "always";
RestartSec = "3";
ExecReload = mkIf (versionAtLeast (getVersion data.package) "1.1pre") "${data.package}/bin/tinc -n ${network} reload";
ExecReload = mkIf (versionAtLeast version "1.1pre") "${data.package}/bin/tinc -n ${network} reload";
ExecStart = "${data.package}/bin/tincd -D -U tinc.${network} -n ${network} ${optionalString (data.chroot) "-R"} --pidfile /run/tinc.${network}.pid -d ${toString data.debugLevel}";
};
preStart = ''
@ -433,7 +436,7 @@ in
users.groups = flip mapAttrs' cfg.networks (network: _:
nameValuePair "tinc.${network}" {}
);
};
});
meta.maintainers = with maintainers; [ minijackson mic92 ];
}