Merge pull request #78745 from bene1618/dhcpcd

nixos/dhcpcd: Add option for dhcpcd waiting behaviour

Changed files
+26 -1
nixos
modules
services
networking
+26 -1
nixos/modules/services/networking/dhcpcd.nix
···
# 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}
'';
···
'';
};
+
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.
+
'';
+
};
+
};
···
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";
};