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 { type = str; }; 23 serverIpv4 = mkOption { type = str; }; 24 serverIpv6 = mkOption { type = str; }; 25 publicInterface = mkOption { type = str; }; 26 }; 27 28 config = { 29 # TODO install manpage 30 environment.systemPackages = [ ]; 31 security.acme.defaults.email = 32 "${config.eilean.username}@${config.networking.domain}"; 33 networking.firewall.allowedTCPPorts = mkIf config.services.nginx.enable [ 34 80 # HTTP 35 443 # HTTPS 36 ]; 37 }; 38}