summaryrefslogtreecommitdiff
path: root/hosts/omega-relay
diff options
context:
space:
mode:
authorJakub Stachurski <j.stachurski@student.utwente.nl>2026-01-25 14:11:14 +0100
committerJakub Stachurski <j.stachurski@student.utwente.nl>2026-01-25 14:11:14 +0100
commit645e86a443d3f74cc8f9c95cb433cbefed5263cb (patch)
tree65ab53d20b29792af60a6c7b1894c4cb192832a5 /hosts/omega-relay
parent24ae3d26155fc70cf381422f9dedbbbb33b425d8 (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 '')
-rw-r--r--hosts/omega-relay/default.nix74
-rw-r--r--hosts/omega-relay/disko.nix52
-rw-r--r--hosts/omega-relay/firewall.nix2
-rw-r--r--hosts/omega-relay/vm.nix18
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;
};
- };
+ };
}