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