summary refs log tree commit diff
path: root/nixos/modules/services/networking/dhcpd.nix
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2014-08-14 21:01:27 +0200
committerVladimír Čunát <vcunat@gmail.com>2014-08-14 21:01:27 +0200
commit7fdd16cb54c70063ba0291684d7c7344073cd647 (patch)
tree2bf0387a52e3da1e4951f4652adb3f188cc3cb9a /nixos/modules/services/networking/dhcpd.nix
parentdc80331638568b63f32dd5c1b32723166de3f33f (diff)
parent5337b164359f8b3578788ba5f3aaadd39d917e37 (diff)
downloadnixlib-7fdd16cb54c70063ba0291684d7c7344073cd647.tar
nixlib-7fdd16cb54c70063ba0291684d7c7344073cd647.tar.gz
nixlib-7fdd16cb54c70063ba0291684d7c7344073cd647.tar.bz2
nixlib-7fdd16cb54c70063ba0291684d7c7344073cd647.tar.lz
nixlib-7fdd16cb54c70063ba0291684d7c7344073cd647.tar.xz
nixlib-7fdd16cb54c70063ba0291684d7c7344073cd647.tar.zst
nixlib-7fdd16cb54c70063ba0291684d7c7344073cd647.zip
merge #3074: dhcp: update to the latest version
Diffstat (limited to 'nixos/modules/services/networking/dhcpd.nix')
-rw-r--r--nixos/modules/services/networking/dhcpd.nix35
1 files changed, 27 insertions, 8 deletions
diff --git a/nixos/modules/services/networking/dhcpd.nix b/nixos/modules/services/networking/dhcpd.nix
index e5e1c103c686..900df67b53aa 100644
--- a/nixos/modules/services/networking/dhcpd.nix
+++ b/nixos/modules/services/networking/dhcpd.nix
@@ -13,7 +13,7 @@ let
       default-lease-time 600;
       max-lease-time 7200;
       authoritative;
-      ddns-update-style ad-hoc;
+      ddns-update-style interim;
       log-facility local1; # see dhcpd.nix
 
       ${cfg.extraConfig}
@@ -108,22 +108,41 @@ in
 
   config = mkIf config.services.dhcpd.enable {
 
-    jobs.dhcpd =
+    users = {
+      extraUsers.dhcpd = {
+        uid = config.ids.uids.dhcpd;
+        description = "DHCP daemon user";
+      };
+    };
+
+    systemd.services.dhcpd =
       { description = "DHCP server";
 
-        startOn = "started network-interfaces";
-        stopOn = "stopping network-interfaces";
+        wantedBy = [ "multi-user.target" ];
 
-        script =
+        after = [ "network.target" ];
+
+        path = [ pkgs.dhcp ];
+
+        preStart =
           ''
             mkdir -m 755 -p ${stateDir}
 
             touch ${stateDir}/dhcpd.leases
 
-            exec ${pkgs.dhcp}/sbin/dhcpd -f -cf ${configFile} \
-                -lf ${stateDir}/dhcpd.leases \
-                ${toString cfg.interfaces}
+            mkdir -m 755 -p /run/dhcpd
+            chown dhcpd /run/dhcpd
           '';
+
+        serviceConfig =
+          { ExecStart = "@${pkgs.dhcp}/sbin/dhcpd dhcpd"
+              + " -pf /run/dhcpd/dhcpd.pid -cf ${configFile}"
+              + " -lf ${stateDir}/dhcpd.leases -user dhcpd -group nogroup"
+              + " ${toString cfg.interfaces}";
+            Restart = "always";
+            Type = "forking";
+            PIDFile = "/run/dhcpd/dhcpd.pid";
+          };
       };
 
   };