diff options
| author | Jakub Stachurski <j.stachurski@student.utwente.nl> | 2026-01-25 14:11:14 +0100 |
|---|---|---|
| committer | Jakub Stachurski <j.stachurski@student.utwente.nl> | 2026-01-25 14:11:14 +0100 |
| commit | 645e86a443d3f74cc8f9c95cb433cbefed5263cb (patch) | |
| tree | 65ab53d20b29792af60a6c7b1894c4cb192832a5 /hosts/omega-relay | |
| parent | 24ae3d26155fc70cf381422f9dedbbbb33b425d8 (diff) | |
Inital commit for working omega-relay host.
This commit includes:
- Mysql module from umbriel
- Disko configuration for the Ferox VM
- Freshrss module
- Stalwart module
- Vaultwarden module
- Wakapi module
- Uptime Kuma module
- Support for using mysql socket
- Server user that does not depend on full home-manager preset.
- ACME for wilkuu.xyz domains, including all the services.
Diffstat (limited to 'hosts/omega-relay')
| -rw-r--r-- | hosts/omega-relay/default.nix | 74 | ||||
| -rw-r--r-- | hosts/omega-relay/disko.nix | 52 | ||||
| -rw-r--r-- | hosts/omega-relay/firewall.nix | 2 | ||||
| -rw-r--r-- | hosts/omega-relay/vm.nix | 18 |
4 files changed, 135 insertions, 11 deletions
diff --git a/hosts/omega-relay/default.nix b/hosts/omega-relay/default.nix index 25a8f30..4154e2c 100644 --- a/hosts/omega-relay/default.nix +++ b/hosts/omega-relay/default.nix @@ -1,18 +1,87 @@ { pkgs, lib, config, ...}: { imports = [ ./firewall.nix + ./disko.nix ./vm.nix + ../../services/mysql.nix + ../../services/email.nix + ../../services/vaultwarden.nix + ../../services/uptimekuma.nix + ../../services/freshrss.nix + ../../services/wakapi.nix ]; + addons = { desktop.hyprland.enable = lib.mkForce false; + # desktop.cosmic.enable = lib.mkForce false; desktop.xfce.enable = lib.mkForce false; gpg.enable = true; }; - boot.loader.grub = { - useOSProber = true; + enable = true; + efiSupport = false; + }; + + environment.systemPackages = with pkgs; [ + lynx + chawan + ]; + + wilkuu.services = let + isVM = config.addons.virtualisation.isTestVM; + in { + stalwart = { + enable = true; + domain = if isVM then "mail.omega-relay.local" else "mail.wilkuu.xyz"; + doACME = !isVM; + }; + + vaultwarden = { + enable = true; + signupWhitelist = ["wilkuu.xyz" "omega-relay.local"]; + backupDir = "/srv/data/vaultwarden"; + domain = if isVM then "vaultwarden.omega-relay.local" else "vaultwarden.wilkuu.xyz"; + doACME = !isVM; + }; + uptimekuma = { + enable = true; + domain = if isVM then "uptime.omega-relay.local" else "uptime.wilkuu.xyz"; + dataDir = "/srv/data/uptimekuma"; + doACME = !isVM; + }; + freshrss = { + enable = true; + domain = if isVM then "rss.omega-relay.local" else "rss.wilkuu.xyz"; + doACME = !isVM; + }; + wakapi = { + enable = true; + domain = if isVM then "wakapi.omega-relay.local" else "wakapi.wilkuu.xyz"; + doACME = !isVM; + }; + }; + + # TODO: Make a nginx module + security.acme = lib.mkIf (!config.addons.virtualisation.isTestVM) { + acceptTerms = true; + defaults.email = "jakub@wilkuu.xyz"; + }; + services.nginx = let + isVM = config.addons.virtualisation.isTestVM; + domain = if isVM then "omega-relay.local" else "wilkuu.xyz"; + in { + enable = true; + virtualHosts."${domain}" = { + enableACME = !isVM; + addSSL = !isVM; + locations."/" = { + root = "/srv/www/wilkuu.xyz/"; + index = "index.html"; + tryFiles = "$uri $uri/ =404"; + }; + }; }; networking.hostName = "omega-relay"; @@ -35,7 +104,6 @@ }; }; - diff --git a/hosts/omega-relay/disko.nix b/hosts/omega-relay/disko.nix new file mode 100644 index 0000000..9694e2a --- /dev/null +++ b/hosts/omega-relay/disko.nix @@ -0,0 +1,52 @@ +{pkgs, config, lib, ...}: { + config = lib.mkIf (!config.addons.virtualisation.isTestVM) ({ + services.btrfs.autoScrub = { + enable = true; + interval = "weekly"; + }; + + boot.loader.grub.device = "/dev/sda"; + # Workaround + boot.loader.grub.devices = lib.mkForce ["/dev/sda"]; + boot.loader.efi.canTouchEfiVariables = false; + + # TODO: Mount points + + # Disko for formatting + disko.devices = { + disk = { + main-disk = { + device = "/dev/sda"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + BOOT = { + type = "EF02"; + size = "1M"; + }; + ESP = { + type = "EF00"; + size = "128M"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + root = { + size = "100%"; + content = { + type = "filesystem"; + format = "btrfs"; + mountpoint = "/"; + }; + }; + }; + }; + }; + }; + }; + }); +} diff --git a/hosts/omega-relay/firewall.nix b/hosts/omega-relay/firewall.nix index 7b04813..6311337 100644 --- a/hosts/omega-relay/firewall.nix +++ b/hosts/omega-relay/firewall.nix @@ -1,7 +1,7 @@ { ... }: let baseTCP = [ - 20 22 433 + 20 22 25 80 143 443 993 465 ]; baseUDP = [ 16555 # Wireguard diff --git a/hosts/omega-relay/vm.nix b/hosts/omega-relay/vm.nix index a0da57b..06310f9 100644 --- a/hosts/omega-relay/vm.nix +++ b/hosts/omega-relay/vm.nix @@ -1,17 +1,18 @@ {lib, config,...}: let - tcpFromHost = gport: hport: { + forward = proto: gport: hport: { from = "host"; - proto = "tcp"; + proto = proto; host = { port = hport; - address = "10.0.69.1"; + # address = "10.0.69.1"; }; guest = { port = gport; - address = "10.0.69.2"; + # address = "10.0.69.2"; }; }; in { + # TODO: Make this into a more global module. virtualisation.vmVariant = { addons.virtualisation.isTestVM = true; addons.virtualisation.guest = true; @@ -26,12 +27,15 @@ in { }; virtualisation = { forwardPorts = [ - # (tcpFromHost 80 8080) - # (tcpFromHost 22 8022) + (forward "tcp" 80 9080) + (forward "tcp" 443 9443) + (forward "tcp" 143 9143) + (forward "tcp" 25 9025) + (forward "tcp" 22 9022) ]; memorySize = 2048; # Use 2048MiB memory. cores = 3; graphics = false; }; - }; + }; } |
