summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorRobin Gloster <mail@glob.in>2016-02-09 17:23:24 +0100
committerRobin Gloster <mail@glob.in>2016-02-09 17:23:24 +0100
commit5bfcce9ed919164f5e46fccc71aa79082e7ae970 (patch)
treeb91ee71ec5f22dda88e2f4076ddbb1aeef6f44e4 /nixos
parent4d760edb94e94c316fa38399277c0e71f1c6e890 (diff)
parent9e986c161b8127d16063ff5c0da7aad4639422c8 (diff)
downloadnixlib-5bfcce9ed919164f5e46fccc71aa79082e7ae970.tar
nixlib-5bfcce9ed919164f5e46fccc71aa79082e7ae970.tar.gz
nixlib-5bfcce9ed919164f5e46fccc71aa79082e7ae970.tar.bz2
nixlib-5bfcce9ed919164f5e46fccc71aa79082e7ae970.tar.lz
nixlib-5bfcce9ed919164f5e46fccc71aa79082e7ae970.tar.xz
nixlib-5bfcce9ed919164f5e46fccc71aa79082e7ae970.tar.zst
nixlib-5bfcce9ed919164f5e46fccc71aa79082e7ae970.zip
Merge pull request #12894 from nathan7/raw-psk
wpa_supplicant module: add an option for accepting raw PSKs
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/networking/wpa_supplicant.nix28
1 files changed, 25 insertions, 3 deletions
diff --git a/nixos/modules/services/networking/wpa_supplicant.nix b/nixos/modules/services/networking/wpa_supplicant.nix
index 1b655af6c82d..1558c5832892 100644
--- a/nixos/modules/services/networking/wpa_supplicant.nix
+++ b/nixos/modules/services/networking/wpa_supplicant.nix
@@ -8,11 +8,15 @@ let
     ${optionalString cfg.userControlled.enable ''
       ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=${cfg.userControlled.group}
       update_config=1''}
-    ${concatStringsSep "\n" (mapAttrsToList (ssid: networkConfig: ''
+    ${concatStringsSep "\n" (mapAttrsToList (ssid: networkConfig: let
+      psk = if networkConfig.psk != null
+        then ''"${networkConfig.psk}"''
+        else networkConfig.pskRaw;
+    in ''
       network={
         ssid="${ssid}"
-        ${optionalString (networkConfig.psk != null) ''psk="${networkConfig.psk}"''}
-        ${optionalString (networkConfig.psk == null) ''key_mgmt=NONE''}
+        ${optionalString (psk != null) ''psk=${psk}''}
+        ${optionalString (psk == null) ''key_mgmt=NONE''}
       }
     '') cfg.networks)}
   '' else "/etc/wpa_supplicant.conf";
@@ -49,6 +53,19 @@ in {
 
                 Be aware that these will be written to the nix store
                 in plaintext!
+
+                Mutually exclusive with <varname>pskRaw</varname>.
+              '';
+            };
+
+            pskRaw = mkOption {
+              type = types.nullOr types.str;
+              default = null;
+              description = ''
+                The network's pre-shared key in hex defaulting
+                to being a network without any authentication.
+
+                Mutually exclusive with <varname>psk</varname>.
               '';
             };
           };
@@ -95,6 +112,11 @@ in {
 
   config = mkMerge [
     (mkIf cfg.enable {
+      assertions = flip mapAttrsToList cfg.networks (name: cfg: {
+        assertion = cfg.psk == null || cfg.pskRaw == null;
+        message = ''networking.wireless."${name}".psk and networking.wireless."${name}".pskRaw are mutually exclusive'';
+      });
+
       environment.systemPackages =  [ pkgs.wpa_supplicant ];
 
       services.dbus.packages = [ pkgs.wpa_supplicant ];