about summary refs log tree commit diff stats
path: root/hosts/by-name/server2/configuration.nix
blob: cbc1ff3e27d9b638c51833967534919192e2c306 (plain) (blame)
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
{config, ...}: {
  imports = [
    ./networking.nix # network configuration that just works
    ./hardware.nix
  ];

  sils = {
    gallery = {
      enable = true;
      domain = "gallery.s-schoeffel.de";
    };
  };

  vhack = {
    back = {
      enable = true;
      domain = "issues.foss-syndicate.org";
      settings = {
        scan_path = "${config.services.gitolite.dataDir}/repositories";
        project_list = "${config.services.gitolite.dataDir}/projects.list";
      };
    };
    backup = {
      enable = true;
      privateSshKey = ./secrets/backup/backupssh.age;
      privatePassword = ./secrets/backup/backuppass.age;
      user = "u384702-sub3";
    };
    dns = {
      enable = true;
      openFirewall = true;
      interfaces = [
        "185.16.61.132"
        "2a03:4000:a:106::1"
      ];
      zones = import ../../../zones {};
    };
    etesync = {
      enable = true;
      secretFile = ./secrets/etesync/secret_file.age;
    };
    fail2ban.enable = true;
    git-server = {
      enable = true;
      domain = "git.foss-syndicate.org";
      gitolite.adminPubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIME4ZVa+IoZf6T3U08JG93i6QIAJ4amm7mkBzO14JSkz cardno:000F_18F83532";
    };
    invidious-router = {
      enable = true;
      domain = "invidious-router.vhack.eu";
      extraDomains = [
        "video.fosswelt.org"
        "invidious-router.sils.li"
      ];
    };
    mail = {
      enable = true;
      fqdn = "mail.foss-syndicate.org";
    };
    stalwart-mail = {
      enable = true;
      fqdn = "mail.vhack.eu";
      admin = "admin@vhack.eu";
      security = {
        dkimKeys = let
          loadKey = name: {
            dkimPublicKey = builtins.readFile (./secrets/dkim + "/${name}/public");
            dkimPrivateKeyPath = ./secrets/dkim + "/${name}/private.age";
            keyAlgorithm = "ed25519-sha256";
          };
        in {
          "mail.vhack.eu" = loadKey "vhack.eu";
        };
        verificationMode = "strict";
      };
      openFirewall = true;
      principals = [
        {
          class = "individual";
          name = "soispha";
          secret = "$2b$05$XX36sJuHNbTFvi8DFldscOeQBHahluSkiUqD9QGzQaET7NJusSuQW";
          email = [
            "soispha@vhack.eu"
            "abuse@vhack.eu"
            "postmaster@vhack.eu"
            "admin@vhack.eu"
          ];
        }
      ];
    };
    nginx = {
      enable = true;
      redirects = {
        "source.foss-syndicate.org" = "https://git.foss-syndicate.org/vhack.eu/nixos-server";
        "source.vhack.eu" = "https://source.foss-syndicate.org";
      };
    };
    nixconfig.enable = true;
    openssh.enable = true;
    persist = {
      enable = true;
      directories = [
        "/var/log"
      ];
    };
    redlib.enable = true;
    rust-motd.enable = true;
    users.enable = true;
  };

  boot.tmp.cleanOnBoot = true;
  zramSwap.enable = true;
  networking.hostName = "server2";
  networking.domain = "vhack.eu";

  system.stateVersion = "24.11";
}