diff --git a/modules/hosts/nixos/hetznix01/default.nix b/modules/hosts/nixos/hetznix01/default.nix index a673a66..9ee5c90 100644 --- a/modules/hosts/nixos/hetznix01/default.nix +++ b/modules/hosts/nixos/hetznix01/default.nix @@ -1,11 +1,7 @@ -{ inputs, config, disko, hostname, pkgs, sops-nix, username, ... }: let - http_port = 80; - https_port = 443; -in { +{ config, username, ... }: { imports = [ ./hardware-configuration.nix ./disk-config.nix - ../../../system/common/linux/lets-encrypt.nix ]; system.stateVersion = "23.11"; @@ -38,59 +34,6 @@ in { services = { fail2ban.enable = true; - nginx = { - enable = true; - recommendedGzipSettings = true; - recommendedOptimisation = true; - recommendedProxySettings = true; - recommendedTlsSettings = true; - appendHttpConfig = '' - # Add HSTS header with preloading to HTTPS requests. - # Adding this header to HTTP requests is discouraged - map $scheme $hsts_header { - https "max-age=31536000 always;"; - } - add_header Strict-Transport-Security $hsts_header; - ''; - virtualHosts = { - "hetznix01.technicalissues.us" = { - default = true; - listen = [ - { port = http_port; addr = "0.0.0.0"; } - { port = https_port; addr = "0.0.0.0"; ssl = true; } - ]; - enableACME = true; - acmeRoot = null; - addSSL = true; - forceSSL = false; - locations."/" = { - return = "200 '

Hello world ;)

'"; - extraConfig = '' - add_header Content-Type text/html; - ''; - }; - }; - "utk-eu.technicalissues.us" = { - listen = [{ port = https_port; addr = "0.0.0.0"; ssl = true; }]; - enableACME = true; - acmeRoot = null; - forceSSL = true; - locations."/".proxyWebsockets = true; - locations."/".proxyPass = "http://127.0.0.1:3001"; - }; - }; # end virtualHosts - }; # end nginx - tailscale = { - enable = true; - authKeyFile = config.sops.secrets.tailscale_key.path; - extraUpFlags = [ - "--advertise-exit-node" - "--operator" - "${username}" - "--ssh" - ]; - useRoutingFeatures = "both"; - }; uptime-kuma = { enable = true; settings = { @@ -100,31 +43,13 @@ in { }; }; - sops = { - age.keyFile = /home/${username}/.config/sops/age/keys.txt; - defaultSopsFile = ./secrets.yaml; - secrets = { - local_git_config = { - owner = "${username}"; - path = "/home/${username}/.gitconfig-local"; - }; - local_private_env = { - owner = "${username}"; - path = "/home/${username}/.private-env"; - }; - tailscale_key = { - restartUnits = [ "tailscaled-autoconnect.service" ]; - }; - }; - }; - systemd.network = { enable = true; networks."10-wan" = { matchConfig.Name = "enp1s0"; address = [ - "167.235.18.32/32" - "2a01:4f8:c2c:2e49::1/64" + "5.161.244.95/32" + "2a01:4ff:f0:977c::1/64" ]; dns = [ "185.12.64.1" @@ -148,7 +73,6 @@ in { extraGroups = [ "networkmanager" "wheel" ]; openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBjigwV0KnnaTnFmKjjvnULa5X+hvsy2FAlu+lUUY59f gene@rainbow-planet" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIp42X5DZ713+bgbOO+GXROufUFdxWo7NjJbGQ285x3N bluerock" ]; }; } diff --git a/modules/hosts/nixos/hetznix01/nginx.nix b/modules/hosts/nixos/hetznix01/nginx.nix new file mode 100644 index 0000000..ceece66 --- /dev/null +++ b/modules/hosts/nixos/hetznix01/nginx.nix @@ -0,0 +1,50 @@ +{ ... }: let + http_port = 80; + https_port = 443; +in { + imports = [ + ../../../system/common/linux/lets-encrypt.nix + ]; + services.nginx = { + enable = true; + recommendedGzipSettings = true; + recommendedOptimisation = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + appendHttpConfig = '' + # Add HSTS header with preloading to HTTPS requests. + # Adding this header to HTTP requests is discouraged + map $scheme $hsts_header { + https "max-age=31536000 always;"; + } + add_header Strict-Transport-Security $hsts_header; + ''; + virtualHosts = { + "hetznix01.technicalissues.us" = { + default = true; + listen = [ + { port = http_port; addr = "0.0.0.0"; } + { port = https_port; addr = "0.0.0.0"; ssl = true; } + ]; + enableACME = true; + acmeRoot = null; + addSSL = true; + forceSSL = false; + locations."/" = { + return = "200 '

Hello world ;)

'"; + extraConfig = '' + add_header Content-Type text/html; + ''; + }; + }; + "utk-eu.technicalissues.us" = { + listen = [{ port = https_port; addr = "0.0.0.0"; ssl = true; }]; + enableACME = true; + acmeRoot = null; + forceSSL = true; + locations."/".proxyWebsockets = true; + locations."/".proxyPass = "http://127.0.0.1:3001"; + }; + }; # end virtualHosts + }; # end nginx +} diff --git a/modules/hosts/nixos/hetznix01/sops.nix b/modules/hosts/nixos/hetznix01/sops.nix new file mode 100644 index 0000000..abd4db0 --- /dev/null +++ b/modules/hosts/nixos/hetznix01/sops.nix @@ -0,0 +1,20 @@ +{ username, ... }: { + sops = { + age.keyFile = /home/${username}/.config/sops/age/keys.txt; + defaultSopsFile = ./secrets.yaml; + secrets = { + local_git_config = { + owner = "${username}"; + path = "/home/${username}/.gitconfig-local"; + }; + local_private_env = { + owner = "${username}"; + path = "/home/${username}/.private-env"; + }; + tailscale_key = { + restartUnits = [ "tailscaled-autoconnect.service" ]; + }; + }; + }; +} + diff --git a/modules/hosts/nixos/hetznix01/tailscale.nix b/modules/hosts/nixos/hetznix01/tailscale.nix new file mode 100644 index 0000000..0b95751 --- /dev/null +++ b/modules/hosts/nixos/hetznix01/tailscale.nix @@ -0,0 +1,14 @@ +{ config, username, ... }: { + tailscale = { + enable = true; + authKeyFile = config.sops.secrets.tailscale_key.path; + extraUpFlags = [ + "--advertise-exit-node" + "--operator" + "${username}" + "--ssh" + ]; + useRoutingFeatures = "both"; + }; +} +