Merge #361424: refactor lib.packagesFromDirectoryRecursive (v2)
[NixPkgs.git] / nixos / modules / services / networking / ddns-updater.nix
blob85daa59fe66deefb71c8f7cae53e442956ff13c9
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
8 let
9   cfg = config.services.ddns-updater;
12   options.services.ddns-updater = {
13     enable = lib.mkEnableOption "Container to update DNS records periodically with WebUI for many DNS providers";
15     package = lib.mkPackageOption pkgs "ddns-updater" { };
17     environment = lib.mkOption {
18       type = lib.types.attrsOf lib.types.str;
19       description = "Environment variables to be set for the ddns-updater service. DATADIR is ignored to enable using systemd DynamicUser. For full list see https://github.com/qdm12/ddns-updater";
20       default = { };
21     };
22   };
24   config = lib.mkIf cfg.enable {
26     systemd.services.ddns-updater = {
27       wantedBy = [ "multi-user.target" ];
28       wants = [ "network-online.target" ];
29       after = [ "network-online.target" ];
30       environment = cfg.environment // {
31         DATADIR = "%S/ddns-updater";
32       };
33       unitConfig = {
34         Description = "DDNS-updater service";
35       };
36       serviceConfig = {
37         TimeoutSec = "5min";
38         ExecStart = lib.getExe cfg.package;
39         RestartSec = 30;
40         DynamicUser = true;
41         StateDirectory = "ddns-updater";
42         Restart = "on-failure";
43       };
44     };
45   };