Kieran's opinionated (and probably slightly dumb) nix config

wifi#

Declarative Wi-Fi profile manager using NetworkManager. Supports three ways to supply passwords and has built-in eduroam (WPA-EAP) support.

Options#

All options under atelier.network.wifi:

Option Type Default Description
enable bool false Enable Wi-Fi management
hostName string Sets networking.hostName
nameservers list of strings [] Custom DNS servers
envFile path Environment file providing PSK variables for all profiles

Profiles#

Defined under atelier.network.wifi.profiles.<ssid>:

Option Type Default Description
psk string or null null Literal WPA-PSK passphrase
pskVar string or null null Environment variable name containing the PSK (from envFile)
pskFile path or null null Path to file containing the PSK
eduroam bool false Use WPA-EAP with MSCHAPV2 (for eduroam networks)
identity string or null null EAP identity (required when eduroam = true)

Only one of psk, pskVar, or pskFile should be set per profile.

Example#

atelier.network.wifi = {
  enable = true;
  hostName = "moonlark";
  nameservers = [ "1.1.1.1" "8.8.8.8" ];
  envFile = config.age.secrets.wifi.path;

  profiles = {
    "Home Network" = {
      pskVar = "HOME_PSK";  # read from envFile
    };
    "eduroam" = {
      eduroam = true;
      identity = "user@university.edu";
      pskVar = "EDUROAM_PSK";
    };
    "Phone Hotspot" = {
      pskFile = config.age.secrets.hotspot.path;
    };
  };
};