summary refs log tree commit diff
path: root/nixos/modules/services/networking/dhcpcd.nix
diff options
context:
space:
mode:
authorworldofpeace <worldofpeace@protonmail.ch>2020-01-29 18:08:20 -0500
committerGitHub <noreply@github.com>2020-01-29 18:08:20 -0500
commitc693bd142c1ad6ecfb2e432c93d2e7d3f22c4154 (patch)
treeed18b6eb6aa86545755afeec725b7962994ef973 /nixos/modules/services/networking/dhcpcd.nix
parentaf9bb2af8f01a1638bbd2f57b60df494ac0720e9 (diff)
parent0767de3dc840352ba6d334d6320ce89ef832410e (diff)
downloadnixpkgs-c693bd142c1ad6ecfb2e432c93d2e7d3f22c4154.tar
nixpkgs-c693bd142c1ad6ecfb2e432c93d2e7d3f22c4154.tar.gz
nixpkgs-c693bd142c1ad6ecfb2e432c93d2e7d3f22c4154.tar.bz2
nixpkgs-c693bd142c1ad6ecfb2e432c93d2e7d3f22c4154.tar.lz
nixpkgs-c693bd142c1ad6ecfb2e432c93d2e7d3f22c4154.tar.xz
nixpkgs-c693bd142c1ad6ecfb2e432c93d2e7d3f22c4154.tar.zst
nixpkgs-c693bd142c1ad6ecfb2e432c93d2e7d3f22c4154.zip
Merge pull request #78745 from bene1618/dhcpcd
nixos/dhcpcd: Add option for dhcpcd waiting behaviour
Diffstat (limited to 'nixos/modules/services/networking/dhcpcd.nix')
-rw-r--r--nixos/modules/services/networking/dhcpcd.nix27
1 files changed, 26 insertions, 1 deletions
diff --git a/nixos/modules/services/networking/dhcpcd.nix b/nixos/modules/services/networking/dhcpcd.nix
index 6fbc014db71..6972c833cc5 100644
--- a/nixos/modules/services/networking/dhcpcd.nix
+++ b/nixos/modules/services/networking/dhcpcd.nix
@@ -59,6 +59,16 @@ let
       # Use the list of allowed interfaces if specified
       ${optionalString (allowInterfaces != null) "allowinterfaces ${toString allowInterfaces}"}
 
+      # Immediately fork to background if specified, otherwise wait for IP address to be assigned
+      ${{
+        background = "background";
+        any = "waitip";
+        ipv4 = "waitip 4";
+        ipv6 = "waitip 6";
+        both = "waitip 4\nwaitip 6";
+        if-carrier-up = "";
+      }.${cfg.wait}}
+
       ${cfg.extraConfig}
     '';
 
@@ -146,6 +156,21 @@ in
       '';
     };
 
+    networking.dhcpcd.wait = mkOption {
+      type = types.enum [ "background" "any" "ipv4" "ipv6" "both" "if-carrier-up" ];
+      default = "any";
+      description = ''
+        This option specifies when the dhcpcd service will fork to background.
+        If set to "background", dhcpcd will fork to background immediately.
+        If set to "ipv4" or "ipv6", dhcpcd will wait for the corresponding IP
+        address to be assigned. If set to "any", dhcpcd will wait for any type
+        (IPv4 or IPv6) to be assigned. If set to "both", dhcpcd will wait for
+        both an IPv4 and an IPv6 address before forking.
+        The option "if-carrier-up" is equivalent to "any" if either ethernet
+        is plugged nor WiFi is powered, and to "background" otherwise.
+      '';
+    };
+
   };
 
 
@@ -177,7 +202,7 @@ in
         serviceConfig =
           { Type = "forking";
             PIDFile = "/run/dhcpcd.pid";
-            ExecStart = "@${dhcpcd}/sbin/dhcpcd dhcpcd -w --quiet ${optionalString cfg.persistent "--persistent"} --config ${dhcpcdConf}";
+            ExecStart = "@${dhcpcd}/sbin/dhcpcd dhcpcd --quiet ${optionalString cfg.persistent "--persistent"} --config ${dhcpcdConf}";
             ExecReload = "${dhcpcd}/sbin/dhcpcd --rebind";
             Restart = "always";
           };