{ config, pkgs, ... }: with pkgs.lib; let configFile = "/etc/wpa_supplicant.conf"; in { ###### interface options = { networking.enableWLAN = mkOption { default = false; description = '' Whether to start wpa_supplicant to scan for and associate with wireless networks. Note: NixOS currently does not generate wpa_supplicant's configuration file, ${configFile}. You should edit this file yourself to define wireless networks, WPA keys and so on (see wpa_supplicant.conf 5). ''; }; }; ###### implementation config = mkIf config.networking.enableWLAN { environment.systemPackages = [pkgs.wpa_supplicant]; jobs.wpa_supplicant = { startOn = "network-interfaces/started"; stopOn = "network-interfaces/stop"; preStart = '' touch -a ${configFile} chmod 600 ${configFile} ''; exec = "${pkgs.wpa_supplicant}/sbin/wpa_supplicant " + "-C /var/run/wpa_supplicant -c ${configFile} -iwlan0"; }; }; }