All checks were successful
Check flake / build-amd64-linux (push) Successful in 2m53s
84 lines
1.6 KiB
Nix
84 lines
1.6 KiB
Nix
{
|
|
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";
|
|
};
|
|
};
|
|
};
|
|
}
|