Wireless Networks
 
  For a desktop installation using NetworkManager (e.g., GNOME), you just have
  to make sure the user is in the networkmanager group and you can
  skip the rest of this section on wireless networks.
 
 
  NixOS will start wpa_supplicant for you if you enable this setting:
 = true;
  NixOS lets you specify networks for wpa_supplicant declaratively:
 = {
  echelon = {                # SSID with no spaces or special characters
    psk = "abcdefgh";
  };
  "echelon's AP" = {         # SSID with spaces and/or special characters
    psk = "ijklmnop";
  };
  echelon = {                # Hidden SSID
    hidden = true;
    psk = "qrstuvwx";
  };
  free.wifi = {};            # Public wireless network
};
  Be aware that keys will be written to the nix store in plaintext! When no
  networks are set, it will default to using a configuration file at
  /etc/wpa_supplicant.conf. You should edit this file
  yourself to define wireless networks, WPA keys and so on (see 
  wpa_supplicant.conf
  5 ).
 
 
  If you are using WPA2 you can generate pskRaw key using
  wpa_passphrase:
$ wpa_passphrase ESSID PSK
network={
        ssid="echelon"
        #psk="abcdefgh"
        psk=dca6d6ed41f4ab5a984c9f55f6f66d4efdc720ebf66959810f4329bb391c5435
}
 = {
  echelon = {
    pskRaw = "dca6d6ed41f4ab5a984c9f55f6f66d4efdc720ebf66959810f4329bb391c5435";
  };
}
  or you can use it to directly generate the
  wpa_supplicant.conf:
# wpa_passphrase ESSID PSK > /etc/wpa_supplicant.conf
  After you have edited the wpa_supplicant.conf, you need to
  restart the wpa_supplicant service.
# systemctl restart wpa_supplicant.service