diff options
author | Michele Guerini Rocco <rnhmjoj@users.noreply.github.com> | 2021-06-06 10:35:15 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-06 10:35:15 +0200 |
commit | 78d9a75d9e4877f712b26239900c97150ad97870 (patch) | |
tree | 0b0b18b7426c942ced58931bc2cbdd661d19cf4b | |
parent | fb4023f046648ce248948ef229e0c23e48718458 (diff) | |
parent | 030a521adc9510207dd9f06b8d8b552ff7d999f9 (diff) |
Merge pull request #125288 from rnhmjoj/wpa-race-fix
nixos/wireless: make wireless.interfaces mandatory
-rw-r--r-- | nixos/doc/manual/release-notes/rl-2105.xml | 9 | ||||
-rw-r--r-- | nixos/modules/services/networking/wpa_supplicant.nix | 27 |
2 files changed, 19 insertions, 17 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2105.xml b/nixos/doc/manual/release-notes/rl-2105.xml index 54abbb6e38e4a..bdc2386f24c85 100644 --- a/nixos/doc/manual/release-notes/rl-2105.xml +++ b/nixos/doc/manual/release-notes/rl-2105.xml @@ -183,6 +183,15 @@ <listitem> <para> + Enabling wireless networking now requires specifying at least one network + interface using <xref linkend="opt-networking.wireless.interfaces"/>. + This is to avoid a race condition with the card initialisation (see + <link xlink:href="https://github.com/NixOS/nixpkgs/issues/101963">issue + #101963</link> for more information). + </para> + </listitem> + <listitem> + <para> If you are using <option>services.udev.extraRules</option> to assign custom names to network interfaces, this may stop working due to a change in the initialisation of dhcpcd and systemd networkd. To avoid this, either diff --git a/nixos/modules/services/networking/wpa_supplicant.nix b/nixos/modules/services/networking/wpa_supplicant.nix index 8a0685c3d96b2..d9308b37064a6 100644 --- a/nixos/modules/services/networking/wpa_supplicant.nix +++ b/nixos/modules/services/networking/wpa_supplicant.nix @@ -40,8 +40,7 @@ in { default = []; example = [ "wlan0" "wlan1" ]; description = '' - The interfaces <command>wpa_supplicant</command> will use. If empty, it will - automatically use all wireless interfaces. + The interfaces <command>wpa_supplicant</command> will use. ''; }; @@ -220,7 +219,14 @@ in { }; config = mkIf cfg.enable { - assertions = flip mapAttrsToList cfg.networks (name: cfg: { + assertions = [ + { assertion = cfg.interfaces != []; + message = '' + No network interfaces for wpa_supplicant have been configured. + Please, specify at least one using networking.wireless.interfaces. + ''; + } + ] ++ flip mapAttrsToList cfg.networks (name: cfg: { assertion = with cfg; count (x: x != null) [ psk pskRaw auth ] <= 1; message = ''options networking.wireless."${name}".{psk,pskRaw,auth} are mutually exclusive''; }); @@ -255,20 +261,7 @@ in { then echo >&2 "<3>/etc/wpa_supplicant.conf present but ignored. Generated ${configFile} is used instead." fi iface_args="-s -u -D${cfg.driver} ${configStr}" - ${if ifaces == [] then '' - for i in $(cd /sys/class/net && echo *); do - DEVTYPE= - UEVENT_PATH=/sys/class/net/$i/uevent - if [ -e "$UEVENT_PATH" ]; then - source "$UEVENT_PATH" - if [ "$DEVTYPE" = "wlan" -o -e /sys/class/net/$i/wireless ]; then - args+="''${args:+ -N} -i$i $iface_args" - fi - fi - done - '' else '' - args="${concatMapStringsSep " -N " (i: "-i${i} $iface_args") ifaces}" - ''} + args="${concatMapStringsSep " -N " (i: "-i${i} $iface_args") ifaces}" exec wpa_supplicant $args ''; }; |