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.

Tavi ca591e70 81f1863c

Changed files
+10 -7
nixos
modules
services
networking
+10 -7
nixos/modules/services/networking/tinc.nix
···
###### 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}")
···
};
}
));
+
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 = ''
···
users.groups = flip mapAttrs' cfg.networks (network: _:
nameValuePair "tinc.${network}" {}
);
-
};
+
});
meta.maintainers = with maintainers; [ minijackson mic92 ];
}