Self-host your own digital island
1{ lib, config, ... }:
2
3with lib;
4
5{
6 imports = [
7 ./services/dns/default.nix
8 ./mailserver/default.nix
9 ./mastodon.nix
10 ./mailserver.nix
11 ./gitea.nix
12 ./dns.nix
13 ./matrix/synapse.nix
14 ./matrix/mautrix-signal.nix
15 ./matrix/mautrix-instagram.nix
16 ./matrix/mautrix-messenger.nix
17 ./turn.nix
18 ./headscale.nix
19 ./wireguard/server.nix
20 ./wireguard/default.nix
21 ];
22
23 options.eilean = with types; {
24 username = mkOption {
25 type = str;
26 };
27 serverIpv4 = mkOption {
28 type = str;
29 };
30 serverIpv6 = mkOption {
31 type = str;
32 };
33 publicInterface = mkOption {
34 type = str;
35 };
36 };
37
38 config = {
39 security.acme.defaults.email = "${config.eilean.username}@${config.networking.domain}";
40 networking.firewall.allowedTCPPorts = mkIf config.services.nginx.enable [
41 80 # HTTP
42 443 # HTTPS
43 ];
44 };
45}