summaryrefslogtreecommitdiff
path: root/modules/root/wifi.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/root/wifi.nix')
-rw-r--r--modules/root/wifi.nix24
1 files changed, 21 insertions, 3 deletions
diff --git a/modules/root/wifi.nix b/modules/root/wifi.nix
index 54f9089..6de8598 100644
--- a/modules/root/wifi.nix
+++ b/modules/root/wifi.nix
@@ -1,10 +1,28 @@
-{ pkgs, lib, config, ... }: {
+{ pkgs, lib, config, ... }:
+let
+ mkNetworksFromEnvironmentFile = n: builtins.listToAttrs (
+ map (i: {
+ name = "@SSID_${toString i}@";
+ value = {
+ psk = "@PSK_${toString i}@";
+ priority = n - i;
+ };
+ }) (lib.lists.range 1 n)
+ );
+ environmentFile = config.sops.secrets.wireless-env.path;
+ #networks = mkNetworksFromEnvironmentFile ((builtins.length (lib.strings.splitString "\n" (builtins.readFile environmentFile))) / 2);
+ networks = mkNetworksFromEnvironmentFile 10; # Number of networks listed in wireless-env
+in {
options = {
wifi.enable = lib.mkEnableOption "enables wifi";
};
config = lib.mkIf config.wifi.enable {
- # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
- networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
+ networking.wireless = {
+ enable = true; # Enables wireless support via wpa_supplicant.
+ userControlled.enable = true;
+ inherit networks;
+ inherit environmentFile;
+ };
};
}