aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hosts/nyaan/network.nix127
1 files changed, 34 insertions, 93 deletions
diff --git a/hosts/nyaan/network.nix b/hosts/nyaan/network.nix
index 98b5be7..3f3f1a5 100644
--- a/hosts/nyaan/network.nix
+++ b/hosts/nyaan/network.nix
@@ -1,81 +1,10 @@
{
config,
- pkgs,
flakeRoot,
...
}:
let
- lib = pkgs.lib;
secrets = config.sops.secrets;
-
- networks = {
- "KopsiNet-5" = {
- type = "psk";
- Security.Passphrase = "@KOPSINET_PSK@";
- };
- "Pixel_3139" = {
- type = "psk";
- Security.Passphrase = "@PHONE_HOTSPOT_PSK@";
- };
- "eduroam" = {
- type = "8021x";
- Security = {
- EAP-Method = [
- "TTLS"
- "PEAP"
- "TLS"
- ];
- EAP-Identity = "mbastaja@tvz.hr";
- EAP-AnonymousIdentity = "anonymous@tvz.hr";
- DomainSuffixMatch = "freeradius.tvz.hr";
- EAP-TTLS-Phase2-Method = "Tunneled-PAP";
- };
- };
- "Students-TVZ" = {
- type = "8021x";
- Secuirty = {
- EAP-Method = "PAP";
- EAP-Identity = "mbastaja@tvz.hr";
- EAP-PEAP-Phase2-Method = "MSCHAPV2";
- EAP-Password = "@EDUROAM_PASS@";
- };
- };
- };
-
- generators = lib.generators;
- networkINIGenerator = generators.toINI {
- mkKeyValue = generators.mkKeyValueDefault {
- mkValueString =
- v:
- if v == true then
- "true"
- else if v == false then
- "false"
- else if builtins.isList v then
- pkgs.lib.strings.concatStringsSep "," v
- else if builtins.isString v then
- "${v}"
- else
- generators.mkValueStringDefault { } v;
- } "=";
- };
-
- networkTemplates = lib.attrsets.mapAttrs' (
- k: v:
- let
- textContents = networkINIGenerator (builtins.removeAttrs v [ "type" ]);
- name = "${k}.${v.type}";
- in
- {
- inherit name;
- value = pkgs.writeTextDir "share/${name}" textContents;
- }
- ) networks;
-
- networkTemplateDir = pkgs.symlinkJoin {
- name = "iwd-network-templates";
- paths = builtins.attrValues networkTemplates;
- };
in
{
imports = [ (flakeRoot + /wireguard.nix) ];
@@ -140,29 +69,41 @@ in
};
};
- networking.wireless.iwd.enable = true;
- systemd.services."prepopulate-iwd-netowks" = {
+ networking.wireless.iwd-ext = {
enable = true;
- enableStrictShellChecks = true;
- description = "Pre-populates network configs for iwd";
- before = [ "iwd.service" ];
- wantedBy = [ "iwd.service" ];
- after = [ "sops-install-secrets.service" ];
-
- serviceConfig = {
- EnvironmentFile = "${secrets."wireless.env".path}";
+ secretsEnvFile = secrets."wireless.env".path;
+ networks = {
+ "KopsiNet-5" = {
+ networkType = "psk";
+ config.Security.Passphrase = "@KOPSINET_PSK@";
+ };
+ "Pixel_3139" = {
+ networkType = "psk";
+ config.Security.Passphrase = "@PHONE_HOTSPOT_PSK@";
+ };
+ "eduroam" = {
+ networkType = "8021x";
+ config.Security = {
+ EAP-Method = [
+ "TTLS"
+ "PEAP"
+ "TLS"
+ ];
+ EAP-Identity = "mbastaja@tvz.hr";
+ EAP-AnonymousIdentity = "anonymous@tvz.hr";
+ DomainSuffixMatch = "freeradius.tvz.hr";
+ EAP-TTLS-Phase2-Method = "Tunneled-PAP";
+ };
+ };
+ "Students-TVZ" = {
+ networkType = "8021x";
+ config.Secuirty = {
+ EAP-Method = "PAP";
+ EAP-Identity = "mbastaja@tvz.hr";
+ EAP-PEAP-Phase2-Method = "MSCHAPV2";
+ EAP-Password = "@EDUROAM_PASS@";
+ };
+ };
};
-
- path = [ pkgs.envsubst ];
- script = ''
- rm -r /var/lib/iwd
- mkdir -p /var/lib/iwd
-
- for f in ${networkTemplateDir}/share/*; do
- cat "$f" |
- sed -E 's/@([A-Za-z_][A-Za-z0-9_]*)@/$\{\1}/g' |
- envsubst > "/var/lib/iwd/$(basename "$f")"
- done
- '';
};
}