diff --git a/nixos/modules/services/networking/tinc.nix b/nixos/modules/services/networking/tinc.nix index 09b23a60a4af..471e4d34cd6c 100644 --- a/nixos/modules/services/networking/tinc.nix +++ b/nixos/modules/services/networking/tinc.nix @@ -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 ]; }