diff options
Diffstat (limited to 'hosts/nyaan/network.nix')
| -rw-r--r-- | hosts/nyaan/network.nix | 127 |
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 - ''; }; } |
