dotfiles/os/wireless/default.nix

55 lines
1.8 KiB
Nix

{ pkgs, lib, config, ... }:
{
environment.systemPackages = [
(pkgs.writeShellApplication {
name = "install-wifi";
text = ''
temp="$(mktemp --directory --suffix="-install-wifi")"
cd "$temp"
${
pkgs.writers.writePython3 "install-wifi-import" {
libraries = [ pkgs.python3Packages.pyaml ];
} (builtins.readFile ./import.py)
}
sudo chown root:root wireless_networks.{env,json}
sudo chmod "u=r" wireless_networks.env
sudo chmod "u=r,g=r,o=r" wireless_networks.json
sudo mkdir -p /etc/keys
sudo mv -f wireless_networks.{env,json} /etc/keys
cd -
rmdir "$temp"
rb
'';
# This relies on multiple off-repo things:
# - pass password store with wifi/${name} entries, containing wpa_supplicant networks
# loosely converted to YAML (see import.py script)
# - In a (private) flake:
# inputs.wirelessNetworks.url = "path:/etc/keys/wireless_networks.json";
# inputs.wirelessNetworks.flake = false;
# - In NixOS config (using flake inputs):
# networking.wireless.environmentFile = "/etc/keys/wireless_networks.env";
# networking.wireless.networks = builtins.fromJSON (builtins.readFile wirelessNetworks);
})
];
# wireless support via wpa_supplicant
networking.wireless = {
enable = true;
extraConfig = ''
country=NL
'';
# Public wireless networks
networks = lib.genAttrs [
"EurostarTrainsWiFi"
"_SNCF gare-gratuit"
"_SNCF_WIFI_INOUI"
"Wifi in de trein"
"WiFi in de trein"
"_WIFI_LYRIA"
"WIFIonICE"
]
(ssid: { });
userControlled.enable = true; # Allow some control with wpa_cli
};
services.chrony.serverOption = "offline";
}