<section xmlns="http://docbook.org/ns/docbook"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xmlns:xi="http://www.w3.org/2001/XInclude"
         version="5.0"
         xml:id="sec-wireless">
 <title>Wireless Networks</title>

 <para>
  For a desktop installation using NetworkManager (e.g., GNOME), you just have
  to make sure the user is in the <code>networkmanager</code> group and you can
  skip the rest of this section on wireless networks.
 </para>

 <para>
  NixOS will start wpa_supplicant for you if you enable this setting:
<programlisting>
<xref linkend="opt-networking.wireless.enable"/> = true;
</programlisting>
  NixOS lets you specify networks for wpa_supplicant declaratively:
<programlisting>
<xref linkend="opt-networking.wireless.networks"/> = {
  echelon = {
    psk = "abcdefgh";
  };
  "free.wifi" = {};
}
</programlisting>
  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
  <literal>/etc/wpa_supplicant.conf</literal>. You should edit this file
  yourself to define wireless networks, WPA keys and so on (see
  wpa_supplicant.conf(5)).
 </para>

 <para>
  If you are using WPA2 the <command>wpa_passphrase</command> tool might be
  useful to generate the <literal>wpa_supplicant.conf</literal>.
<screen>
# wpa_passphrase ESSID PSK > /etc/wpa_supplicant.conf</screen>
  After you have edited the <literal>wpa_supplicant.conf</literal>, you need to
  restart the wpa_supplicant service.
<screen>
# systemctl restart wpa_supplicant.service</screen>
 </para>
</section>
