diff options
author | rnhmjoj <rnhmjoj@inventati.org> | 2021-06-01 23:19:40 +0200 |
---|---|---|
committer | rnhmjoj <rnhmjoj@inventati.org> | 2021-06-01 23:19:40 +0200 |
commit | 030a521adc9510207dd9f06b8d8b552ff7d999f9 (patch) | |
tree | e4aec46677f65db3f9e6de49c5eb7f8dea69782b | |
parent | 36d3d4575d05b74cad66c53807be42e5b6f99dc2 (diff) |
nixos/wireless: make wireless.interfaces mandatory
This is the only way to solve issue #101963, for now.
-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 07b28147d6964..d04a690caf36f 100644 --- a/nixos/doc/manual/release-notes/rl-2105.xml +++ b/nixos/doc/manual/release-notes/rl-2105.xml @@ -194,6 +194,15 @@ <itemizedlist> <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 ''; }; |