summaryrefslogtreecommitdiff
path: root/hosts/omega-relay/default.nix
blob: dcb74665907223578224fe7a01c53fe200755806 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
{
  pkgs,
  lib,
  config,
  ...
}:
{
  imports = [
    ./firewall.nix
    ./disko.nix
    ./vm.nix
    ./hardware-configuration.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 = {
    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";
  services.resolved = {
    enable = true;
    dnsovertls = "opportunistic";
  };

  services.openssh = {
    enable = true;
    ports = [ 22 ];
    openFirewall = true;
    allowSFTP = true;
    settings = {
      PasswordAuthentication = false;
      AllowUsers = [ "wilkuu" ];
      X11Forwarding = false;
      PermitRootLogin = "no";
      PrintMotd = true;
    };
  };

}