wpa_supplicant
General
wpa_supplicant can be enabled on NixOS with networking.wireless.enable = true
.
Extra configuration can be specified inside networking.wireless.extraConfig
.
wpa_supplicant_gui
To be able to use wpa_gui
or wpa_cli
as user put the following in your configuration.nix
file:
networking.wireless.userControlled.enable = true;
Also your user must be part of the wheel
group (replace USER with your username):
users.extraUsers.USER.extraGroups = [ "wheel" ];
Using wpa_supplicant from within the configuration file
You can configure your networks with the option networks
. You have to fill the name(s) of your wifi(s) after the option and the preshared-key(s) (usually called psk
). If you do not want to have your secret key in plaintext, you can use pskRaw, generated with wpa_passphrase SSID password
. An example of using networks :
networking.wireless.networks.Wifi_name.pskRaw = "pskRaw generated";
If you have multiple networks, and you want to set the priority, you can use networking.wireless.networks.Wifi_name.priority = <value>;
Switching Network
From the shell terminal, use the wpa_cli
command line tool and specify the network interface device with -g
wpa_cli -g /run/wpa_supplicant/wlp3s0
list_network
select_network 2
As a means to debug if things are working, open another terminal and examine the logs by:
journalctl -u wpa_supplicant -f
Mac spoofing
Since there is no option to randomize your mac address for wpa supplicant, you can instead create your own service using GNU's macchanger:
systemd.services.macchanger = {
enable = true;
description = "macchanger on %I";
wants = [ "network-pre.target" ];
before = [ "network-pre.target" ];
bindsTo = [ "sys-subsystem-net-devices-%i.device" ];
after = [ "sys-subsystem-net-devices-%i.device" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.macchanger}/bin/macchanger -r %I";
};
};
This obviously requires you to have the macchanger
package installed.
External links
(german) article eduroam meets NixOS (with configuration) (instance University of Applied Sciences Dresden: The eduroam installer for GNU/Linux works for example for Ubuntu but not NixOS)