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}