Self-host your own digital island
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 ./matrix/synapse.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 = lib.mkIf (!config.eilean.acme-eon) 37 "${config.eilean.username}@${config.networking.domain}"; 38 security.acme-eon.defaults.email = lib.mkIf config.eilean.acme-eon 39 "${config.eilean.username}@${config.networking.domain}"; 40 networking.firewall.allowedTCPPorts = mkIf config.services.nginx.enable [ 41 80 # HTTP 42 443 # HTTPS 43 ]; 44 }; 45}