diff options
author | William A. Kennington III <william@wkennington.com> | 2014-11-29 19:59:31 -0800 |
---|---|---|
committer | William A. Kennington III <william@wkennington.com> | 2014-11-29 19:59:31 -0800 |
commit | bcfe7b2200af1eff797dfc9868e424c9d906ea23 (patch) | |
tree | 90f1646cdbb98bb59c16dfcffab69fa5dc4b6058 /nixos/modules/services/networking | |
parent | 20487919b2d349895798af6579b1097528f17ad2 (diff) | |
parent | a403379b8858e0921b6a3e61aaca9147e256c5b9 (diff) | |
download | nixlib-bcfe7b2200af1eff797dfc9868e424c9d906ea23.tar nixlib-bcfe7b2200af1eff797dfc9868e424c9d906ea23.tar.gz nixlib-bcfe7b2200af1eff797dfc9868e424c9d906ea23.tar.bz2 nixlib-bcfe7b2200af1eff797dfc9868e424c9d906ea23.tar.lz nixlib-bcfe7b2200af1eff797dfc9868e424c9d906ea23.tar.xz nixlib-bcfe7b2200af1eff797dfc9868e424c9d906ea23.tar.zst nixlib-bcfe7b2200af1eff797dfc9868e424c9d906ea23.zip |
Merge pull request #5043 from wkennington/master.networkd
nixos/networking: Revamp networking configuration and add an experimental networkd option.
Diffstat (limited to 'nixos/modules/services/networking')
-rw-r--r-- | nixos/modules/services/networking/chrony.nix | 4 | ||||
-rw-r--r-- | nixos/modules/services/networking/dhcpcd.nix | 20 | ||||
-rw-r--r-- | nixos/modules/services/networking/dnsmasq.nix | 2 | ||||
-rw-r--r-- | nixos/modules/services/networking/gogoclient.nix | 3 | ||||
-rw-r--r-- | nixos/modules/services/networking/networkmanager.nix | 1 | ||||
-rw-r--r-- | nixos/modules/services/networking/ntpd.nix | 3 | ||||
-rw-r--r-- | nixos/modules/services/networking/openntpd.nix | 3 |
7 files changed, 24 insertions, 12 deletions
diff --git a/nixos/modules/services/networking/chrony.nix b/nixos/modules/services/networking/chrony.nix index 58b30269ca7a..fe062b30e4b7 100644 --- a/nixos/modules/services/networking/chrony.nix +++ b/nixos/modules/services/networking/chrony.nix @@ -100,8 +100,8 @@ in jobs.chronyd = { description = "chrony daemon"; - wantedBy = [ "ip-up.target" ]; - partOf = [ "ip-up.target" ]; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; path = [ chrony ]; diff --git a/nixos/modules/services/networking/dhcpcd.nix b/nixos/modules/services/networking/dhcpcd.nix index 15dbf80a987e..1ad8cbae15cf 100644 --- a/nixos/modules/services/networking/dhcpcd.nix +++ b/nixos/modules/services/networking/dhcpcd.nix @@ -8,15 +8,29 @@ let cfg = config.networking.dhcpcd; + interfaces = attrValues config.networking.interfaces; + + enableDHCP = config.networking.useDHCP || any (i: i.useDHCP == true) interfaces; + # Don't start dhcpcd on explicitly configured interfaces or on # interfaces that are part of a bridge, bond or sit device. ignoredInterfaces = - map (i: i.name) (filter (i: i.ip4 != [ ] || i.ipAddress != null) (attrValues config.networking.interfaces)) + map (i: i.name) (filter (i: if i.useDHCP != null then !i.useDHCP else i.ip4 != [ ] || i.ipAddress != null) interfaces) ++ mapAttrsToList (i: _: i) config.networking.sits ++ concatLists (attrValues (mapAttrs (n: v: v.interfaces) config.networking.bridges)) ++ concatLists (attrValues (mapAttrs (n: v: v.interfaces) config.networking.bonds)) ++ config.networking.dhcpcd.denyInterfaces; + arrayAppendOrNull = a1: a2: if a1 == null && a2 == null then null + else if a1 == null then a2 else if a2 == null then a1 + else a1 ++ a2; + + # If dhcp is disabled but explicit interfaces are enabled, + # we need to provide dhcp just for those interfaces. + allowInterfaces = arrayAppendOrNull cfg.allowInterfaces + (if !config.networking.useDHCP && enableDHCP then + map (i: i.name) (filter (i: i.useDHCP == true) interfaces) else null); + # Config file adapted from the one that ships with dhcpcd. dhcpcdConf = pkgs.writeText "dhcpcd.conf" '' @@ -41,7 +55,7 @@ let denyinterfaces ${toString ignoredInterfaces} lo peth* vif* tap* tun* virbr* vnet* vboxnet* sit* # Use the list of allowed interfaces if specified - ${optionalString (cfg.allowInterfaces != null) "allowinterfaces ${toString cfg.allowInterfaces}"} + ${optionalString (allowInterfaces != null) "allowinterfaces ${toString allowInterfaces}"} ${cfg.extraConfig} ''; @@ -132,7 +146,7 @@ in ###### implementation - config = mkIf config.networking.useDHCP { + config = mkIf enableDHCP { systemd.services.dhcpcd = { description = "DHCP Client"; diff --git a/nixos/modules/services/networking/dnsmasq.nix b/nixos/modules/services/networking/dnsmasq.nix index 5c68dd89fb12..fbb211911f1c 100644 --- a/nixos/modules/services/networking/dnsmasq.nix +++ b/nixos/modules/services/networking/dnsmasq.nix @@ -82,7 +82,7 @@ in systemd.services.dnsmasq = { description = "dnsmasq daemon"; - after = [ "network.target" ]; + after = [ "network.target" "systemd-resolved.conf" ]; wantedBy = [ "multi-user.target" ]; path = [ dnsmasq ]; preStart = '' diff --git a/nixos/modules/services/networking/gogoclient.nix b/nixos/modules/services/networking/gogoclient.nix index 416007941976..9d16f0efb435 100644 --- a/nixos/modules/services/networking/gogoclient.nix +++ b/nixos/modules/services/networking/gogoclient.nix @@ -76,8 +76,7 @@ in exec ${pkgs.gogoclient}/bin/gogoc -y -f /var/lib/gogoc/gogoc.conf ''; } // optionalAttrs cfg.autorun { - wantedBy = [ "ip-up.target" ]; - partOf = [ "ip-up.target" ]; + wantedBy = [ "multi-user.target" ]; }; }; diff --git a/nixos/modules/services/networking/networkmanager.nix b/nixos/modules/services/networking/networkmanager.nix index 39e83e7b4272..37bc1df2361b 100644 --- a/nixos/modules/services/networking/networkmanager.nix +++ b/nixos/modules/services/networking/networkmanager.nix @@ -52,6 +52,7 @@ let #!/bin/sh if test "$2" = "up"; then ${config.systemd.package}/bin/systemctl start ip-up.target + ${config.systemd.package}/bin/systemctl start network-online.target fi ''; diff --git a/nixos/modules/services/networking/ntpd.nix b/nixos/modules/services/networking/ntpd.nix index 527882aad288..8f4bf26d411d 100644 --- a/nixos/modules/services/networking/ntpd.nix +++ b/nixos/modules/services/networking/ntpd.nix @@ -77,8 +77,7 @@ in jobs.ntpd = { description = "NTP Daemon"; - wantedBy = [ "ip-up.target" ]; - partOf = [ "ip-up.target" ]; + wantedBy = [ "multi-user.target" ]; path = [ ntp ]; diff --git a/nixos/modules/services/networking/openntpd.nix b/nixos/modules/services/networking/openntpd.nix index bd8a7a04a2af..2f9031481d1d 100644 --- a/nixos/modules/services/networking/openntpd.nix +++ b/nixos/modules/services/networking/openntpd.nix @@ -41,8 +41,7 @@ in systemd.services.openntpd = { description = "OpenNTP Server"; - wantedBy = [ "ip-up.target" ]; - partOf = [ "ip-up.target" ]; + wantedBy = [ "multi-user.target" ]; serviceConfig.ExecStart = "${package}/sbin/ntpd -d -f ${cfgFile}"; }; }; |