From a10568d5acd621ab479bf359e38800d10dc2e710 Mon Sep 17 00:00:00 2001 From: Ivan Kirilov Dimitrov Date: Mon, 5 Aug 2024 18:12:02 +0200 Subject: [PATCH] mailserver module --- hosts/vps/mailserver/default.nix | 38 -------------------------- nixos/configs/default.nix | 2 +- nixos/modules/default.nix | 46 +++++++++++++++++++++++++++++++- 3 files changed, 46 insertions(+), 40 deletions(-) diff --git a/hosts/vps/mailserver/default.nix b/hosts/vps/mailserver/default.nix index c0a765f..be39db4 100644 --- a/hosts/vps/mailserver/default.nix +++ b/hosts/vps/mailserver/default.nix @@ -6,13 +6,6 @@ options = [ "nofail" ]; }; - security = { - acme = { - acceptTerms = true; - defaults.email = "security@idimitrov.dev"; - }; - }; - networking = { nameservers = [ "127.0.0.1" "::1" ]; dhcpcd.extraConfig = "nohook resolv.conf"; @@ -102,26 +95,12 @@ }; services = { - dovecot2.sieve.extensions = [ "fileinto" ]; openssh = { enable = true; settings = { PermitRootLogin = "prohibit-password"; }; }; - roundcube = { - enable = true; - package = pkgs.roundcube.withPlugins (plugins: [ plugins.persistent_login ]); - plugins = [ - "persistent_login" - ]; - hostName = "${config.mailserver.fqdn}"; - extraConfig = '' - $config['smtp_host'] = "tls://${config.mailserver.fqdn}"; - $config['smtp_user'] = "%u"; - $config['smtp_pass'] = "%p"; - ''; - }; postgresql = { enable = true; ensureUsers = [ @@ -267,21 +246,4 @@ }; }; }; - mailserver = { - enable = true; - localDnsResolver = false; - fqdn = "mail.idimitrov.dev"; - domains = [ "idimitrov.dev" "mail.idimitrov.dev" ]; - loginAccounts = { - "ivan@idimitrov.dev" = { - hashedPassword = "$2b$05$rTVIQD98ogXeCBKdk/YufulWHqpMCAlb7SHDPlh5y8Xbukoa/uQLm"; - aliases = [ "admin@idimitrov.dev" ]; - }; - "security@idimitrov.dev" = { - hashedPassword = "$2b$05$rTVIQD98ogXeCBKdk/YufulWHqpMCAlb7SHDPlh5y8Xbukoa/uQLm"; - }; - }; - certificateScheme = "acme-nginx"; - hierarchySeparator = "/"; - }; } diff --git a/nixos/configs/default.nix b/nixos/configs/default.nix index 4dc20b5..4cc76ad 100644 --- a/nixos/configs/default.nix +++ b/nixos/configs/default.nix @@ -22,7 +22,7 @@ in nova-nonya = novaConfig (with mods; [ ivand anon cryptocurrency ]); nova-ai = novaConfig (with mods; [ ivand ai ]); install-iso = configWithModules { modules = (with mods; [ grub base shell wireless ]); }; - vps = configWithModules { modules = (with mods; [ base shell security vps ]); }; + vps = configWithModules { modules = (with mods; [ base shell security vps mailserver ]); }; stara-miner = configWithModules { modules = (essential ++ [ mods.monero-miner ]); }; }; } diff --git a/nixos/modules/default.nix b/nixos/modules/default.nix index c25027b..88804f9 100644 --- a/nixos/modules/default.nix +++ b/nixos/modules/default.nix @@ -252,9 +252,53 @@ top@{ inputs, moduleWithSystem, ... }: { vps = moduleWithSystem (toplevel@{ ... }: perSystem@{ ... }: { imports = [ inputs.vpsadminos.nixosConfigurations.container - inputs.simple-nixos-mailserver.nixosModule ../../hosts/vps/mailserver ]; }); + mailserver = moduleWithSystem (toplevel@{ ... }: perSystem@{ config, pkgs, ... }: { + imports = [ + inputs.simple-nixos-mailserver.nixosModule + ]; + mailserver = { + enable = true; + localDnsResolver = false; + fqdn = "mail.idimitrov.dev"; + domains = [ "idimitrov.dev" "mail.idimitrov.dev" ]; + loginAccounts = { + "ivan@idimitrov.dev" = { + hashedPassword = "$2b$05$rTVIQD98ogXeCBKdk/YufulWHqpMCAlb7SHDPlh5y8Xbukoa/uQLm"; + aliases = [ "admin@idimitrov.dev" ]; + }; + "security@idimitrov.dev" = { + hashedPassword = "$2b$05$rTVIQD98ogXeCBKdk/YufulWHqpMCAlb7SHDPlh5y8Xbukoa/uQLm"; + }; + }; + certificateScheme = "acme-nginx"; + hierarchySeparator = "/"; + }; + services = { + dovecot2.sieve.extensions = [ "fileinto" ]; + roundcube = { + enable = true; + package = pkgs.roundcube.withPlugins (plugins: [ plugins.persistent_login ]); + plugins = [ + "persistent_login" + ]; + hostName = "${config.mailserver.fqdn}"; + extraConfig = '' + $config['smtp_host'] = "tls://${config.mailserver.fqdn}"; + $config['smtp_user'] = "%u"; + $config['smtp_pass'] = "%p"; + ''; + }; + postgresql.enable = true; + }; + security = { + acme = { + acceptTerms = true; + defaults.email = "security@idimitrov.dev"; + }; + }; + }); }; }