summary refs log tree commit diff
path: root/nixos/modules/services/networking/ddclient.nix
diff options
context:
space:
mode:
authorRobert Helgesson <robert@rycee.net>2016-06-19 21:51:05 +0200
committerRobert Helgesson <robert@rycee.net>2016-07-09 14:51:36 +0200
commit9f4775dbb509602b3a65f26aac708c1dabf79a4f (patch)
tree45a6d1d3d6adb72759d3770b5db57c65b667beb8 /nixos/modules/services/networking/ddclient.nix
parent781cd33f3b9e7681b1846ee39c025a227838abb8 (diff)
downloadnixpkgs-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.nix36
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: