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 ./radicale.nix 20 ]; 21 22 options.eilean = with types; { 23 username = mkOption { type = str; }; 24 serverIpv4 = mkOption { type = str; }; 25 serverIpv6 = mkOption { type = str; }; 26 publicInterface = mkOption { type = str; }; 27 domainName = mkOption { 28 type = types.str; 29 default = "vps"; 30 }; 31 }; 32 33 config = { 34 # TODO install manpage 35 environment.systemPackages = [ ]; 36 security.acme.defaults.email = 37 "${config.eilean.username}@${config.networking.domain}"; 38 networking.firewall.allowedTCPPorts = mkIf config.services.nginx.enable [ 39 80 # HTTP 40 443 # HTTPS 41 ]; 42 }; 43}