{pkgs, ...}: { services.secrets = { enable = true; vaultLogin = { enable = true; loginUsername = "hetzner-arm-container-mail"; }; autoSecrets = { enable = true; }; requiredVaultPaths = [ "api-keys/data/storage/restic/Mail" "api-keys/data/chaos_mail/system" "api-keys/data/chaos_mail/gotosocial" "passwords/data/mail" "private-public-keys/data/restic/Mail" "infra/data/private-mail-aliases" ]; packages = with pkgs; [ apacheHttpd ]; secrets = { vault_password = { manual = true; }; restic_password = { fetchScript = '' simple_get "/private-public-keys/restic/Mail" .password > "$secretFile" ''; }; restic_env = { fetchScript = '' RESTIC_USERNAME=$(simple_get "/api-keys/storage/restic/Mail" .username) RESTIC_PASSWORD=$(simple_get "/api-keys/storage/restic/Mail" .password) echo "RESTIC_REPOSITORY=rest:https://$RESTIC_USERNAME:$RESTIC_PASSWORD@storage-restic.owo.monster/Mail" > "$secretFile" ''; }; private_mail_aliases = { fetchScript = '' kv_get "/infra/private-mail-aliases" | jq .data.data | jq -r 'to_entries|map("\(.key) \(.value.to)")[]' > "$secretFile" ''; }; chaos_mail_passwd = { user = "dovecot2"; group = "dovecot2"; fetchScript = '' password=$(simple_get "/passwords/mail" .password) htpasswd -nbB "" "$password" 2>/dev/null | cut -d: -f2 > "$secretFile" ''; }; system_mail_passwd = { user = "dovecot2"; group = "dovecot2"; fetchScript = '' password=$(simple_get "/api-keys/chaos_mail/system" .password) htpasswd -nbB "" "$password" 2>/dev/null | cut -d: -f2 > "$secretFile" ''; }; gotosocial_mail_passwd = { user = "dovecot2"; group = "dovecot2"; fetchScript = '' password=$(simple_get "/api-keys/chaos_mail/gotosocial" .password) htpasswd -nbB "" "$password" 2>/dev/null | cut -d: -f2 > "$secretFile" ''; }; }; }; }