# # This loads the list of networks as a NixOS wpa_supplicant compatible attrset # let sources = import ../../npins; lib = import (sources.nixpkgs + "/lib"); # wpa_supplicant uses `strchr` to seek to the first `=`, so the only forbidden character is `=`. escapePwdKey = lib.replaceStrings ["="] ["_"]; go = networkArgs @ { ssid, # Custom fields wrapping nixpkgs module options hasPassword ? false, scanOnLowSignal ? false, randomizeMac ? false, ... }: { ${ssid} = lib.mkMerge [ (builtins.removeAttrs networkArgs ["ssid" "hasPassword" "scanOnLowSignal" "randomizeMac"]) (lib.optionalAttrs hasPassword { pskRaw = "ext:${escapePwdKey ssid}"; }) (lib.optionalAttrs scanOnLowSignal { extraConfig = '' bgscan="simple:30:-70:3600" ''; }) (lib.optionalAttrs randomizeMac { extraConfig = '' mac_addr=1 ''; }) ]; }; in ns: lib.mkMerge (map go ns)