From dcc4078492574089a92fef38db8cda527b375e0f Mon Sep 17 00:00:00 2001 From: worldofpeace Date: Tue, 15 Oct 2019 17:29:32 -0400 Subject: [PATCH] nixos/networkmanager: allow iwd as Wi-Fi backend This introduces an option wifi.backend to the networkmanager module. Version of 86dea5559fca96d9d4d96a485027b7f4cd253e77 for release-19.09. --- .../services/networking/networkmanager.nix | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/nixos/modules/services/networking/networkmanager.nix b/nixos/modules/services/networking/networkmanager.nix index 484de8857702..260aee08bd61 100644 --- a/nixos/modules/services/networking/networkmanager.nix +++ b/nixos/modules/services/networking/networkmanager.nix @@ -15,12 +15,13 @@ let networkmanager-openconnect networkmanager-openvpn networkmanager-vpnc - wpa_supplicant - ]; + ] ++ optional (!enableIwd) wpa_supplicant; dynamicHostsEnabled = cfg.dynamicHosts.enable && cfg.dynamicHosts.hostsDirs != {}; + enableIwd = cfg.wifi.backend == "iwd"; + # /var/lib/misc is for dnsmasq.leases. stateDirs = "/var/lib/NetworkManager /var/lib/dhclient /var/lib/misc"; @@ -48,6 +49,7 @@ let [device] wifi.scan-rand-mac-address=${if cfg.wifi.scanRandMacAddress then "yes" else "no"} + wifi.backend=${cfg.wifi.backend} ${cfg.extraConfig} ''; @@ -234,6 +236,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 or (experimental). + ''; + }; + powersave = mkOption { type = types.nullOr types.bool; default = null; @@ -509,13 +520,14 @@ in { useDHCP = false; # use mkDefault to trigger the assertion about the conflict above wireless.enable = mkDefault false; - }; + } // (mkIf cfg.enableStrongSwan { + networkmanager.packages = [ pkgs.networkmanager_strongswan ]; + }) // (mkIf enableIwd { + wireless.iwd.enable = true; + }); security.polkit.extraConfig = polkitConf; - networking.networkmanager.packages = - mkIf cfg.enableStrongSwan [ pkgs.networkmanager_strongswan ]; - services.dbus.packages = optional cfg.enableStrongSwan pkgs.strongswanNM ++ cfg.packages;