diff --git a/modules/services/networking/dhclient.nix b/modules/services/networking/dhclient.nix index c87e788b6d5c..f1b523adf888 100644 --- a/modules/services/networking/dhclient.nix +++ b/modules/services/networking/dhclient.nix @@ -60,20 +60,20 @@ in config = mkIf config.networking.useDHCP { - jobs = pkgs.lib.singleton { - name = "dhclient"; + jobs = pkgs.lib.singleton + { name = "dhclient"; - job = '' - description "DHCP client" + startOn = "network-interfaces/started"; + stopOn = "network-interfaces/stop"; - start on network-interfaces/started - stop on network-interfaces/stop - - env PATH_DHCLIENT_SCRIPT=${dhcp}/sbin/dhclient-script - - script - export PATH=${nettools}/sbin:$PATH + preStart = + '' + # dhclient barfs if /proc/net/if_inet6 doesn't exist. + ${config.system.sbin.modprobe}/sbin/modprobe ipv6 || true + ''; + script = + '' # Determine the interface on which to start dhclient. interfaces= @@ -91,10 +91,9 @@ in mkdir -m 755 -p ${stateDir} - exec ${dhcp}/sbin/dhclient -d $interfaces -e "PATH=$PATH" -lf ${stateDir}/dhclient.leases - end script - ''; - }; + exec ${dhcp}/sbin/dhclient -d $interfaces -e "PATH=$PATH" -lf ${stateDir}/dhclient.leases -sf ${dhcp}/sbin/dhclient-script + ''; + }; environment.systemPackages = [dhcp];