diff options
author | Elias Probst <mail@eliasprobst.eu> | 2019-10-02 21:45:44 -0400 |
---|---|---|
committer | worldofpeace <worldofpeace@protonmail.ch> | 2019-10-02 21:52:58 -0400 |
commit | 86dea5559fca96d9d4d96a485027b7f4cd253e77 (patch) | |
tree | 24c7cca49b8f0eef1b52500f64c1b3ef004ee165 | |
parent | 5edb20533d1bfcf002582193459df2150d19769a (diff) | |
download | nixlib-86dea5559fca96d9d4d96a485027b7f4cd253e77.tar nixlib-86dea5559fca96d9d4d96a485027b7f4cd253e77.tar.gz nixlib-86dea5559fca96d9d4d96a485027b7f4cd253e77.tar.bz2 nixlib-86dea5559fca96d9d4d96a485027b7f4cd253e77.tar.lz nixlib-86dea5559fca96d9d4d96a485027b7f4cd253e77.tar.xz nixlib-86dea5559fca96d9d4d96a485027b7f4cd253e77.tar.zst nixlib-86dea5559fca96d9d4d96a485027b7f4cd253e77.zip |
nixos/networkmanager: allow iwd as Wi-Fi backend
This introduces an option wifi.backend to the networkmanager module. Co-authored-by: Cole Mickens <cole.mickens@gmail.com> Co-authored-by: worldofpeace <worldofpeace@protonmail.ch>
-rw-r--r-- | nixos/modules/services/networking/networkmanager.nix | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/nixos/modules/services/networking/networkmanager.nix b/nixos/modules/services/networking/networkmanager.nix index 09f36aaf8b32..176d26e07b04 100644 --- a/nixos/modules/services/networking/networkmanager.nix +++ b/nixos/modules/services/networking/networkmanager.nix @@ -15,13 +15,15 @@ let networkmanager-openconnect networkmanager-openvpn networkmanager-vpnc - ] ++ optional (!delegateWireless) wpa_supplicant; + ] ++ optional (!delegateWireless && !enableIwd) wpa_supplicant; dynamicHostsEnabled = cfg.dynamicHosts.enable && cfg.dynamicHosts.hostsDirs != {}; delegateWireless = config.networking.wireless.enable == true && cfg.unmanaged != []; + enableIwd = cfg.wifi.backend == "iwd"; + # /var/lib/misc is for dnsmasq.leases. stateDirs = "/var/lib/NetworkManager /var/lib/dhclient /var/lib/misc"; @@ -50,6 +52,7 @@ let [device] wifi.scan-rand-mac-address=${if cfg.wifi.scanRandMacAddress then "yes" else "no"} + wifi.backend=${cfg.wifi.backend} ${cfg.extraConfig} ''; @@ -236,6 +239,15 @@ in { wifi = { macAddress = macAddressOpt; + backend = mkOption { + type = types.enum [ "wpa_supplicant" "iwd" ]; + default = "wpa_supplicant"; + description = '' + Specify the Wi-Fi backend used for the device. + Currently supported are <option>wpa_supplicant</option> or <option>iwd</option> (experimental). + ''; + }; + powersave = mkOption { type = types.nullOr types.bool; default = null; @@ -390,7 +402,7 @@ in { { assertion = !dynamicHostsEnabled || (dynamicHostsEnabled && cfg.dns == "dnsmasq"); message = '' To use networking.networkmanager.dynamicHosts you also need to set - networking.networkmanager.dns = "dnsmasq" + `networking.networkmanager.dns = "dnsmasq"` ''; } ]; @@ -510,6 +522,8 @@ in { wireless.enable = mkDefault false; }) // (mkIf cfg.enableStrongSwan { networkmanager.packages = [ pkgs.networkmanager_strongswan ]; + }) // (mkIf enableIwd { + wireless.iwd.enable = true; }); security.polkit.extraConfig = polkitConf; |