diff options
author | worldofpeace <worldofpeace@protonmail.ch> | 2020-01-29 18:08:20 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-29 18:08:20 -0500 |
commit | c693bd142c1ad6ecfb2e432c93d2e7d3f22c4154 (patch) | |
tree | ed18b6eb6aa86545755afeec725b7962994ef973 /nixos/modules/services/networking/dhcpcd.nix | |
parent | af9bb2af8f01a1638bbd2f57b60df494ac0720e9 (diff) | |
parent | 0767de3dc840352ba6d334d6320ce89ef832410e (diff) | |
download | nixpkgs-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.nix | 27 |
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"; }; |