diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index b0126b721db..8b76e1f21cb 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -150,7 +150,6 @@
./services/networking/cntlm.nix
./services/networking/chrony.nix
./services/networking/ddclient.nix
- #./services/networking/dhclient.nix
./services/networking/dhcpcd.nix
./services/networking/dhcpd.nix
./services/networking/dnsmasq.nix
diff --git a/nixos/modules/services/networking/dhclient.nix b/nixos/modules/services/networking/dhclient.nix
deleted file mode 100644
index 1e343443899..00000000000
--- a/nixos/modules/services/networking/dhclient.nix
+++ /dev/null
@@ -1,111 +0,0 @@
-{ config, pkgs, ... }:
-
-with pkgs.lib;
-
-let
-
- inherit (pkgs) nettools dhcp lib;
-
- # Don't start dhclient on explicitly configured interfaces or on
- # interfaces that are part of a bridge.
- ignoredInterfaces =
- map (i: i.name) (lib.filter (i: i ? ipAddress && i.ipAddress != "" ) config.networking.interfaces)
- ++ concatLists (attrValues (mapAttrs (n: v: v.interfaces) config.networking.bridges));
-
- stateDir = "/var/lib/dhcp"; # Don't use /var/state/dhcp; not FHS-compliant.
-
- dhclientExitHooks = pkgs.writeText "dhclient-exit-hooks"
- ''
- #echo "$reason" >> /tmp/dhcp-exit
- #echo "$exit_status" >> /tmp/dhcp-exit
-
- if test "$reason" = BOUND -o "$reason" = REBOOT; then
- # Restart ntpd. (The "ip-up" event below will trigger the
- # restart.) We need to restart it to make sure that it will
- # actually do something: if ntpd cannot resolve the server
- # hostnames in its config file, then it will never do
- # anything ever again ("couldn't resolve ..., giving up on
- # it"), so we silently lose time synchronisation.
- ${config.system.build.upstart}/sbin/initctl stop ntpd
-
- ${config.system.build.upstart}/sbin/initctl emit -n ip-up
- fi
-
- if test "$reason" = EXPIRE -o "$reason" = RELEASE; then
- ${config.system.build.upstart}/sbin/initctl emit -n ip-down
- fi
- '';
-
-in
-
-{
-
- ###### implementation
-
- config = mkIf config.networking.useDHCP {
-
- # dhclient barfs if /proc/net/if_inet6 doesn't exist.
- boot.kernelModules = [ "ipv6" ];
-
- jobs.dhclient =
- { startOn = "started network-interfaces";
- stopOn = "stopping network-interfaces";
-
- path = [ dhcp ];
-
- script =
- ''
- # Determine the interface on which to start dhclient.
- interfaces=
-
- for i in $(cd /sys/class/net && ls -d *); do
- # Only run dhclient on interfaces of type ARPHRD_ETHER
- # (1), i.e. Ethernet. Ignore peth* devices; on Xen,
- # they're renamed physical Ethernet cards used for
- # bridging. Likewise for vif* and tap* (Xen) and
- # virbr* and vnet* (libvirt).
- if [ "$(cat /sys/class/net/$i/type)" = 1 ]; then
- if ! for j in ${toString ignoredInterfaces}; do echo $j; done | grep -F -x -q "$i" &&
- ! echo "$i" | grep -x -q "peth.*\|vif.*\|tap.*\|virbr.*\|vnet.*";
- then
- echo "Running dhclient on $i"
- interfaces="$interfaces $i"
- fi
- fi
- done
-
- if test -z "$interfaces"; then
- echo 'No interfaces on which to start dhclient!'
- exit 1
- fi
-
- mkdir -m 755 -p ${stateDir}
-
- exec dhclient -d $interfaces -e "PATH=$PATH" -lf ${stateDir}/dhclient.leases -sf ${dhcp}/sbin/dhclient-script
- '';
- };
-
- environment.systemPackages = [dhcp];
-
- environment.etc =
- [ # Dhclient hooks for emitting ip-up/ip-down events.
- { source = dhclientExitHooks;
- target = "dhclient-exit-hooks";
- }
- ];
-
- powerManagement.resumeCommands =
- ''
- ${config.system.build.upstart}/sbin/restart dhclient
- '';
-
- networking.interfaceMonitor.commands =
- ''
- if [ "$status" = up ]; then
- ${config.system.build.upstart}/sbin/restart dhclient
- fi
- '';
-
- };
-
-}
diff --git a/nixos/modules/services/networking/dhcpcd.nix b/nixos/modules/services/networking/dhcpcd.nix
index 48803511a5e..07b5606eaca 100644
--- a/nixos/modules/services/networking/dhcpcd.nix
+++ b/nixos/modules/services/networking/dhcpcd.nix
@@ -6,7 +6,7 @@ let
inherit (pkgs) dhcpcd;
- # Don't start dhclient on explicitly configured interfaces or on
+ # Don't start dhcpcd on explicitly configured interfaces or on
# interfaces that are part of a bridge.
ignoredInterfaces =
map (i: i.name) (filter (i: i.ipAddress != null) (attrValues config.networking.interfaces))
diff --git a/nixos/modules/services/networking/ifplugd.nix b/nixos/modules/services/networking/ifplugd.nix
index df50e9807a9..4e939d60354 100644
--- a/nixos/modules/services/networking/ifplugd.nix
+++ b/nixos/modules/services/networking/ifplugd.nix
@@ -9,10 +9,7 @@ let
cfg = config.networking.interfaceMonitor;
# The ifplugd action script, which is called whenever the link
- # status changes (i.e., a cable is plugged in or unplugged). We do
- # nothing when a cable is unplugged. When a cable is plugged in, we
- # restart dhclient, which will hopefully give us a new IP address
- # if appropriate.
+ # status changes (i.e., a cable is plugged in or unplugged).
plugScript = pkgs.writeScript "ifplugd.action"
''
#! ${pkgs.stdenv.shell}
@@ -30,17 +27,19 @@ in
options = {
networking.interfaceMonitor.enable = mkOption {
+ type = types.bool;
default = false;
description = ''
If true, monitor Ethernet interfaces for
cables being plugged in or unplugged. When this occurs, the
- dhclient service is restarted to
- automatically obtain a new IP address. This is useful for
- roaming users (laptops).
+ commands specified in
+ are
+ executed.
'';
};
networking.interfaceMonitor.beep = mkOption {
+ type = types.bool;
default = false;
description = ''
If true, beep when an Ethernet cable is
@@ -49,6 +48,7 @@ in
};
networking.interfaceMonitor.commands = mkOption {
+ type = types.lines;
default = "";
description = ''
Shell commands to be executed when the link status of an
diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix
index 16671cb3743..796da3020ed 100644
--- a/nixos/modules/tasks/network-interfaces.nix
+++ b/nixos/modules/tasks/network-interfaces.nix
@@ -427,7 +427,7 @@ in
# Set the host and domain names in the activation script. Don't
# clear it if it's not configured in the NixOS configuration,
- # since it may have been set by dhclient in the meantime.
+ # since it may have been set by dhcpcd in the meantime.
system.activationScripts.hostname =
optionalString (config.networking.hostName != "") ''
hostname "${config.networking.hostName}"