Merge pull request #259619 from Majiir/fix-networkd-dhcp

nixos/network-interfaces-systemd: fix DHCP setting
This commit is contained in:
Maximilian Bosch 2023-10-14 20:47:36 +02:00 committed by GitHub
commit 632cfff257
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 10 deletions

View file

@ -89,7 +89,7 @@ let
networks."40-${i.name}" = mkMerge [ (genericNetwork id) {
name = mkDefault i.name;
DHCP = mkForce (dhcpStr
(if i.useDHCP != null then i.useDHCP else false));
(if i.useDHCP != null then i.useDHCP else (config.networking.useDHCP && i.ipv4.addresses == [ ])));
address = forEach (interfaceIps i)
(ip: "${ip.address}/${toString ip.prefixLength}");
routes = forEach (interfaceRoutes i)

View file

@ -190,9 +190,11 @@ let
type = types.nullOr types.bool;
default = null;
description = lib.mdDoc ''
Whether this interface should be configured with dhcp.
Null implies the old behavior which depends on whether ip addresses
are specified or not.
Whether this interface should be configured with DHCP. Overrides the
default set by {option}`networking.useDHCP`. If `null` (the default),
DHCP is enabled if the interface has no IPv4 addresses configured
with {option}`networking.interfaces.<name>.ipv4.addresses`, and
disabled otherwise.
'';
};
@ -640,9 +642,7 @@ in
} ];
};
description = lib.mdDoc ''
The configuration for each network interface. If
{option}`networking.useDHCP` is true, then every
interface not listed here will be configured using DHCP.
The configuration for each network interface.
Please note that {option}`systemd.network.netdevs` has more features
and is better maintained. When building new things, it is advised to
@ -1304,8 +1304,8 @@ in
default = true;
description = lib.mdDoc ''
Whether to use DHCP to obtain an IP address and other
configuration for all network interfaces that are not manually
configured.
configuration for all network interfaces that do not have any manually
configured IPv4 addresses.
'';
};

View file

@ -185,7 +185,11 @@ let
nodes.router = router;
nodes.client = { lib, ... }: {
# Disable test driver default config
networking.interfaces = lib.mkForce {};
networking.interfaces = lib.mkForce {
# Make sure DHCP defaults correctly even when some unrelated config
# is set on the interface (nothing, in this case).
enp1s0 = {};
};
networking.useNetworkd = networkd;
virtualisation.interfaces.enp1s0.vlan = 1;
};