diff --git a/hosts/mail/default.nix b/hosts/mail/default.nix index 3fae22c..56f0e6c 100644 --- a/hosts/mail/default.nix +++ b/hosts/mail/default.nix @@ -9,6 +9,7 @@ self.inputs.disko.nixosModules.disko ./hardware-configuration.nix ./disko-config.nix + ./mail.nix ../server.nix ]; @@ -47,7 +48,6 @@ ]; repoPath = "ssh://kg2mpt28@kg2mpt28.repo.borgbase.com/./repo"; }; - mail.enable = true; }; }; diff --git a/hosts/mail/mail.nix b/hosts/mail/mail.nix new file mode 100644 index 0000000..1a8181f --- /dev/null +++ b/hosts/mail/mail.nix @@ -0,0 +1,72 @@ +{ + config, + self, + ... +}: + +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 = [ + self.inputs.nixos-mailserver.nixosModule + ]; + + 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.users.users.jordan.hashedPasswordFile; + 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"; + }; + }; +} diff --git a/modules/nixos/services/mail.nix b/modules/nixos/services/mail.nix deleted file mode 100644 index 718aea0..0000000 --- a/modules/nixos/services/mail.nix +++ /dev/null @@ -1,83 +0,0 @@ -{ - config, - lib, - self, - ... -}: - -let - cfg = config.modules.services.mail; - domains = [ - "h0lt.com" - "jdholt.com" - "jordanholt.xyz" - "vimium.co" - "vimium.com" - "vimium.co.uk" - "vimium.info" - "vimium.net" - "vimium.org" - "vimium.xyz" - ]; -in -{ - options.modules.services.mail = { - enable = lib.mkOption { - default = false; - example = true; - }; - }; - - imports = [ - self.inputs.nixos-mailserver.nixosModule - ]; - - config = lib.mkIf cfg.enable { - 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.users.users.jordan.hashedPasswordFile; - 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"; - }; - }; - }; -}