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