{ inputs, config, ... }: let domains = [ "h0lt.com" "jdholt.com" "jordanholt.xyz" "vimium.co" "vimium.com" "vimium.co.uk" "vimium.info" "vimium.net" "vimium.org" "vimium.xyz" ]; in { imports = [ inputs.nixos-mailserver.nixosModule ]; age.secrets."passwords/users/jordan".file = "${inputs.secrets}/passwords/users/jordan.age"; services.roundcube = { enable = true; hostName = config.mailserver.fqdn; extraConfig = '' $config['smtp_server'] = "tls://${config.mailserver.fqdn}"; $config['smtp_user'] = "%u"; $config['smtp_pass'] = "%p"; ''; plugins = [ "contextmenu" ]; }; services.nginx.enable = true; networking.firewall.allowedTCPPorts = [ 80 443 ]; mailserver = { enable = true; fqdn = "mail.vimium.com"; domains = domains; indexDir = "/var/lib/dovecot/indices"; certificateDomains = [ "imap.vimium.com" "smtp.vimium.com" ]; certificateScheme = "acme-nginx"; fullTextSearch.enable = true; loginAccounts = { "jordan@vimium.com" = { hashedPasswordFile = config.age.secrets."passwords/users/jordan".path; catchAll = domains; }; }; extraVirtualAliases = { "hostmaster@vimium.com" = "jordan@vimium.com"; "postmaster@vimium.com" = "jordan@vimium.com"; "webmaster@vimium.com" = "jordan@vimium.com"; "abuse@vimium.com" = "jordan@vimium.com"; }; }; }