aboutsummaryrefslogtreecommitdiff
path: root/hosts/underworld
diff options
context:
space:
mode:
Diffstat (limited to 'hosts/underworld')
-rw-r--r--hosts/underworld/default.nix21
-rw-r--r--hosts/underworld/home.nix2
-rw-r--r--hosts/underworld/network.nix135
3 files changed, 152 insertions, 6 deletions
diff --git a/hosts/underworld/default.nix b/hosts/underworld/default.nix
index 98e5d97..a9b3494 100644
--- a/hosts/underworld/default.nix
+++ b/hosts/underworld/default.nix
@@ -1,5 +1,6 @@
{
pkgs,
+ lib,
flakeRoot,
inputs,
config,
@@ -10,6 +11,7 @@
# Include the results of the hardware scan.
./hardware.nix
+ ./network.nix
./home.nix
(flakeRoot + /share/system/client-common.nix)
{
@@ -97,11 +99,20 @@
#media-session.enable = true;
};
- security.pki.certificateFiles = [ ../../share/certs.crt ];
- networking.useNetworkd = false;
- networking.networkmanager = {
- enable = true;
- plugins = [ pkgs.networkmanager-openconnect ];
+ boot.kernelModules = [ "8852au" ];
+ # boot.extraModulePackages = [
+ # config.boot.kernelPackages.rtl8852bu # TP-Link Archer TX20U Nano
+ # ];
+ services.udev.extraRules =
+ # Switch TP-Link Archer TX20U Nano from CDROM mode (default) to WiFi mode
+ ''
+ ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="${lib.getExe pkgs.usb-modeswitch} -K -v 0bda -p 1a2b"
+ '';
+
+ nixpkgs.config = {
+ problems.handlers = {
+ rtl8852bu.broken = "warn"; # or "ignore"
+ };
};
users.users = {
diff --git a/hosts/underworld/home.nix b/hosts/underworld/home.nix
index 8ea7921..bb5f23b 100644
--- a/hosts/underworld/home.nix
+++ b/hosts/underworld/home.nix
@@ -22,7 +22,7 @@
(flakeRoot + /share/home/dev-stuff.nix)
(flakeRoot + /share/home/shell.nix)
(flakeRoot + /share/home/gui-tools.nix)
- (flakeRoot + /share/home/gaming.nix)
+ # (flakeRoot + /share/home/gaming.nix)
(flakeRoot + /share/home/niri.nix)
];
diff --git a/hosts/underworld/network.nix b/hosts/underworld/network.nix
new file mode 100644
index 0000000..5b8380f
--- /dev/null
+++ b/hosts/underworld/network.nix
@@ -0,0 +1,135 @@
+{
+ config,
+ flakeRoot,
+ ...
+}:
+let
+ secrets = config.sops.secrets;
+in
+{
+ imports = [ (flakeRoot + /wireguard.nix) ];
+
+ sops = {
+ age.keyFile = "/var/lib/sops-nix/key.txt";
+ secrets."wireless.env" = {
+ sopsFile = ../../secrets/wireless.env;
+ format = "dotenv";
+ reloadUnits = [ "iwd.service" ];
+ };
+ };
+
+ networking = {
+ hostName = "underworld";
+ useNetworkd = true;
+ firewall.enable = false;
+ nftables = {
+ enable = true;
+ tables.filter = {
+ enable = true;
+ family = "inet";
+ content = ''
+ set temp-ports {
+ type inet_proto . inet_service
+ flags interval
+ comment "Temporarily opened ports"
+ }
+
+ chain rpfilter {
+ type filter hook prerouting priority mangle + 10; policy drop;
+ meta nfproto ipv4 udp sport . udp dport { 68 . 67, 67 . 68 } accept comment "DHCPv4 client/server"
+ fib saddr . mark . iif check exists accept
+ jump rpfilter-allow
+ }
+
+ chain rpfilter-allow {
+ }
+
+ chain prerouting {
+ type filter hook prerouting priority mangle;
+ iifname "wg0" meta mark set 42
+ }
+
+ chain input {
+ type filter hook input priority filter; policy drop;
+ iifname "lo" accept comment "trusted interfaces"
+ icmpv6 type echo-reply accept
+ ct state vmap { invalid : drop, established : accept, related : accept, new : jump input-allow, untracked : jump input-allow }
+ }
+
+ chain input-allow {
+ # tcp dport { 22, 80, 443 } accept
+ udp dport 51820 accept
+ meta l4proto . th dport @temp-ports accept
+ icmp type echo-request accept comment "allow ping"
+ icmpv6 type != { nd-redirect, 139 } accept comment "Accept all ICMPv6 messages except redirects and node information queries (type 139). See RFC 4890, section 4.4."
+ ip6 daddr fe80::/64 udp dport 546 accept comment "DHCPv6 client"
+ }
+ '';
+ };
+ };
+ };
+
+ networking.wireless.iwd-ext = {
+ enable = true;
+ secretsEnvFile = secrets."wireless.env".path;
+ networks = {
+ "KopsiNet-5" = {
+ networkType = "psk";
+ config.Security.Passphrase = "@KOPSINET_PSK@";
+ };
+ "Pixel_3169" = {
+ networkType = "psk";
+ config.Security.Passphrase = "@PHONE_HOTSPOT_PSK@";
+ };
+ "eduroam" = {
+ networkType = "8021x";
+ config.Security = {
+ EAP-Method = "TTLS";
+ EAP-Identity = "anonymous@tvz.hr";
+ EAP-TTLS-CACert = "embed:eduroam_ca_cert";
+ EAP-TTLS-ServerDomainMask = "freeradius.tvz.hr";
+ EAP-TTLS-Phase2-Method = "Tunneled-PAP";
+ EAP-TTLS-Phase2-Identity = "mbastaja@tvz.hr";
+ EAP-TTLS-Phase2-Password = "@EDUROAM_PASS@";
+ };
+ config.Settings.AutoConnect = true;
+ extraConfigLines = ''
+ [@@pem@@eduroam_ca_cert]
+ -----BEGIN CERTIFICATE-----
+ MIIDjzCCAnegAwIBAgIBADANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQGEwJIUjEP
+ MA0GA1UECAwGWmFncmViMQ8wDQYDVQQHDAZaYWdyZWIxDDAKBgNVBAoMA1RWWjEj
+ MCEGA1UEAwwaQ0EgUm9vdCBjZXJ0aWZpY2F0ZSB0dnouaHIwHhcNMTcwNzE0MTE1
+ MzUzWhcNMjcwNzEyMTE1MzUzWjBiMQswCQYDVQQGEwJIUjEPMA0GA1UECAwGWmFn
+ cmViMQ8wDQYDVQQHDAZaYWdyZWIxDDAKBgNVBAoMA1RWWjEjMCEGA1UEAwwaQ0Eg
+ Um9vdCBjZXJ0aWZpY2F0ZSB0dnouaHIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ ggEKAoIBAQC+/60HDgUIMu3F61a0iihkxoAgGJpbaz8bu9WEaKNURFXMW/9FWIPf
+ xBQbYr3RFaPdpgTLKwtP8ZcCNqH4QM8bwBirk7gMjeNQfUc0DcC1xj0yCjWTLx7L
+ CxWzOPI/3QZdjlltV5g1bL0nObBXJTqLpJazfJa+c5rMSjuxeHQtOts4h9cPT+3c
+ Lc21IF3l0Ck4XjNrYMDuBq0B24ukkwqHkTzp5CyJk1gn4Bsr5RskUsgvbAQBacPd
+ EjwjzJPlMSMpcZw87e+U22FWuhkDEMf+nKtOPxbDz0P1rdXwtsLyYww3gx/ZjzZy
+ pnNJJDa+K008GJsOtRCgy1O82rOskHVxAgMBAAGjUDBOMB0GA1UdDgQWBBSJ843O
+ 80eWXlzlc5L2e5NSmJt8VTAfBgNVHSMEGDAWgBSJ843O80eWXlzlc5L2e5NSmJt8
+ VTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQBwrBXWaKBkL3vZBtDs
+ Ebez/E2vU8OSWt53l8gDgPoWVd66qh3k76IkwcW9OB3JwZpY63ZYTC/J+by4/hZh
+ f5l2AWjjW5sasXz3HlNUexJomk1llLvDJt/eKuTM/5k3LzgbAhmjhzE7Jh3wZJF5
+ rKOQ9fN7zJ414EebjkeGSgDosq3ip290vFiBc+heqgdfZsDdyxuIKkJCtYYYI8hP
+ UcKRfJ4nr8enAVkbbjElc5qF7s2Gz0+0owI7ZV/KaXd2ZGcnh6nRx5OIcDGXNLK9
+ I87CtgF5KX0AGXEMJeG/Jms9hDdn18SXwxIgG6jX7DlAUsz/PVcwDNxF3RCHvsuy
+ HoU+
+ -----END CERTIFICATE-----
+ '';
+ };
+ "Students-TVZ" = {
+ networkType = "8021x";
+ config.Security = {
+ EAP-Method = "PAP";
+ EAP-Identity = "mbastaja@tvz.hr";
+ EAP-PAEP-ServerDomainMasl = "freeradius.tvz.hr";
+ EAP-PEAP-Phase2-Method = "MSCHAPV2";
+ EAP-PEAP-Phase2-Identity = "mbastaja@tvz.hr";
+ EAP-PEAP-Phase2-Password = "@EDUROAM_PASS@";
+ };
+ };
+ };
+ };
+}