diff options
author | Robert Helgesson <robert@rycee.net> | 2016-06-19 21:51:05 +0200 |
---|---|---|
committer | Robert Helgesson <robert@rycee.net> | 2016-07-09 14:51:36 +0200 |
commit | 9f4775dbb509602b3a65f26aac708c1dabf79a4f (patch) | |
tree | 45a6d1d3d6adb72759d3770b5db57c65b667beb8 /nixos/modules/services/networking/ddclient.nix | |
parent | 781cd33f3b9e7681b1846ee39c025a227838abb8 (diff) | |
download | nixpkgs-9f4775dbb509602b3a65f26aac708c1dabf79a4f.tar nixpkgs-9f4775dbb509602b3a65f26aac708c1dabf79a4f.tar.gz nixpkgs-9f4775dbb509602b3a65f26aac708c1dabf79a4f.tar.bz2 nixpkgs-9f4775dbb509602b3a65f26aac708c1dabf79a4f.tar.lz nixpkgs-9f4775dbb509602b3a65f26aac708c1dabf79a4f.tar.xz nixpkgs-9f4775dbb509602b3a65f26aac708c1dabf79a4f.tar.zst nixpkgs-9f4775dbb509602b3a65f26aac708c1dabf79a4f.zip |
ddclient service: use `environment.etc`
The ddclient daemon requires that the configuration file is only accessible by the ddclient user. This since it typically contains login information.
Diffstat (limited to 'nixos/modules/services/networking/ddclient.nix')
-rw-r--r-- | nixos/modules/services/networking/ddclient.nix | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/nixos/modules/services/networking/ddclient.nix b/nixos/modules/services/networking/ddclient.nix index c5dd1e71c18..633ceaebfa4 100644 --- a/nixos/modules/services/networking/ddclient.nix +++ b/nixos/modules/services/networking/ddclient.nix @@ -7,22 +7,8 @@ let stateDir = "/var/spool/ddclient"; ddclientUser = "ddclient"; - ddclientFlags = "-foreground -verbose -noquiet -file ${ddclientCfg}"; + ddclientFlags = "-foreground -verbose -noquiet -file /etc/ddclient.conf"; ddclientPIDFile = "${stateDir}/ddclient.pid"; - ddclientCfg = pkgs.writeText "ddclient.conf" '' - daemon=600 - cache=${stateDir}/ddclient.cache - pid=${ddclientPIDFile} - use=${config.services.ddclient.use} - login=${config.services.ddclient.username} - password=${config.services.ddclient.password} - protocol=${config.services.ddclient.protocol} - server=${config.services.ddclient.server} - ssl=${if config.services.ddclient.ssl then "yes" else "no"} - wildcard=YES - ${config.services.ddclient.domain} - ${config.services.ddclient.extraConfig} - ''; in @@ -122,10 +108,30 @@ in home = stateDir; }; + environment.etc."ddclient.conf" = { + uid = config.ids.uids.ddclient; + mode = "0600"; + text = '' + daemon=600 + cache=${stateDir}/ddclient.cache + pid=${ddclientPIDFile} + use=${config.services.ddclient.use} + login=${config.services.ddclient.username} + password=${config.services.ddclient.password} + protocol=${config.services.ddclient.protocol} + server=${config.services.ddclient.server} + ssl=${if config.services.ddclient.ssl then "yes" else "no"} + wildcard=YES + ${config.services.ddclient.domain} + ${config.services.ddclient.extraConfig} + ''; + }; + systemd.services.ddclient = { description = "Dynamic DNS Client"; wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; + restartTriggers = [ config.environment.etc."ddclient.conf".source ]; serviceConfig = { # Uncomment this if too many problems occur: |