nix-config/modules/mail/default.nix

88 lines
2 KiB
Nix

{ config, pkgs, ... }:
let
mbsyncConf = ./mbsyncrc;
in
{
environment.systemPackages = with pkgs; [
isync
msmtp
neomutt
notmuch
pass
w3m
];
sops.secrets = {
"mail/oxapentane.com" = {
owner = config.users.users.grue.name;
};
"mail/shipunov.xyz" = {
owner = config.users.users.grue.name;
};
"mail/dvb.solutions" = {
owner = config.users.users.grue.name;
};
};
programs.msmtp = {
enable = true;
setSendmail = true;
defaults = {
tls_trust_file = "/etc/ssl/certs/ca-certificates.crt";
logfile = "/tmp/msmtp.log";
};
accounts = {
"mail@oxapentane.com" = {
host = "smtp.migadu.com";
port = 578;
from = "*@oxapentane.com";
user = "mail@oxapentane.com";
passwordeval = "cat ${config.sops.secrets."mail/oxapentane.com".path}";
auth = "on";
tls = "on";
};
"grigory@shipunov.xyz" = {
host = "smtp.migadu.com";
port = 578;
from = "*@shipunov.xyz";
user = "mail@oxapentane.com";
passwordeval = "cat ${config.sops.secrets."mail/shipunov.xyz".path}";
auth = "on";
tls = "on";
};
"dump@dvb.solutions" = {
host = "smtp.migadu.com";
port = 578;
from = "dump@dvb.solutions";
user = "dump@dvb.solutions";
passwordeval = "cat ${config.sops.secrets."mail/dvb.solutions".path}";
auth = "on";
tls = "on";
};
};
};
systemd.user = {
services.mbsync = {
enable = true;
after = [ "graphical.target" "network-online.target" ];
script = ''
${pkgs.isync}/bin/mbsync -a --config=${mbsyncConf}
'';
serviceConfig = {
Type = "oneshot";
};
};
timers.mbsync = {
enable = true;
wantedBy = [ "timers.target" ];
timerConfig = {
Unit = "mbsync.service";
OnUnitInactiveSec = "11m";
Persistent = true;
};
};
};
}