summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichele Guerini Rocco <rnhmjoj@users.noreply.github.com>2021-06-06 10:59:29 +0200
committerGitHub <noreply@github.com>2021-06-06 10:59:29 +0200
commit313fd7922cf916c1b0704cc123512c31b7da5844 (patch)
tree293ab0ff8f64f39f47bad47a865c525abe30ed4e
parentMerge #125141: firefox-bin: 88.0.1 -> 89.0 (into release-21.05) (diff)
parentnixos/wireless: make wireless.interfaces mandatory (diff)
downloadnixpkgs-313fd7922cf916c1b0704cc123512c31b7da5844.tar.gz
Merge pull request #125917 from NixOS/backport-125288-to-release-21.05
[Backport release-21.05] nixos/wireless: make wireless.interfaces mandatory
-rw-r--r--nixos/doc/manual/release-notes/rl-2105.xml9
-rw-r--r--nixos/modules/services/networking/wpa_supplicant.nix27
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 124ede127268..c6b1ce212def 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 8a0685c3d96b..d9308b37064a 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
'';
};