revert toaster

This commit is contained in:
Grisha Shipunov 2024-12-31 13:52:57 +00:00
parent 677abb7344
commit 50066a4d20
30 changed files with 1468 additions and 0 deletions

133
modules/mail/default.nix Normal file
View file

@ -0,0 +1,133 @@
{ config, pkgs, ... }:
let
mbsyncConf = ./mbsyncrc;
in
{
environment.systemPackages = with pkgs; [
isync
msmtp
neomutt
notmuch
alot
w3m
links2
];
environment.shellAliases = {
mutt = "neomutt";
};
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;
};
"mail/tlm.solutions" = {
owner = config.users.users.grue.name;
};
};
programs.msmtp = {
enable = true;
setSendmail = true;
extraConfig = ''
account mail@oxapentane.com
host smtp.migadu.com
port 587
from *@oxapentane.com
user mail@oxapentane.com
passwordeval cat ${config.sops.secrets."mail/oxapentane.com".path}
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
account grigory@shipunov.xyz
host smtp.migadu.com
port 587
from *@shipunov.xyz
user grigory@shipunov.xyz
passwordeval cat ${config.sops.secrets."mail/shipunov.xyz".path}
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
account dump@dvb.solutions
host smtp.migadu.com
port 587
from dump@dvb.solutions
user dump@dvb.solutions
passwordeval cat ${config.sops.secrets."mail/dvb.solutions".path}
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
account grigory@tlm.solutions
host smtp.migadu.com
port 587
from grigory@tlm.solutions
user grigory@tlm.solutions
passwordeval cat ${config.sops.secrets."mail/tlm.solutions".path}
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
'';
};
systemd.user = {
# Service and timer to sync imap to local maildir
services.mbsync = {
enable = true;
after = [ "graphical.target" "network-online.target" ];
script = ''
${pkgs.isync}/bin/mbsync -q -a --config=${mbsyncConf}
'';
serviceConfig = {
Type = "oneshot";
};
};
timers.mbsync = {
enable = true;
wantedBy = [ "timers.target" ];
timerConfig = {
Unit = "mbsync.service";
OnBootSec = "5m";
OnUnitInactiveSec = "11m";
};
};
# service and timer to flush the msmtp queue
services.flush-msmtpq = {
enable = true;
after = [ "graphical.target" "network-online.target" ];
script = ''
${pkgs.msmtp}/bin/msmtp-queue -r
'';
serviceConfig = {
Type = "oneshot";
};
};
timers.flush-msmtpq = {
enable = true;
wantedBy = [ "timers.target" ];
timerConfig = {
Unit = "flush-msmtpq.service";
OnBootSec = "11m";
OnUnitInactiveSec = "13m";
};
};
};
}

97
modules/mail/mbsyncrc Normal file
View file

@ -0,0 +1,97 @@
IMAPStore mail@oxapentane.com-remote
Host imap.migadu.com
Port 993
User mail@oxapentane.com
PassCmd "cat /run/secrets/mail/oxapentane.com"
AuthMechs LOGIN
SSLType IMAPS
MaildirStore mail@oxapentane.com-local
Subfolders Verbatim
Path /home/grue/mail/mail@oxapentane.com/
Inbox /home/grue/mail/mail@oxapentane.com/INBOX
Channel mail@oxapentane.com
Expunge Both
Master :mail@oxapentane.com-remote:
Slave :mail@oxapentane.com-local:
Create Both
SyncState *
Patterns *
MaxMessages 0
ExpireUnread no
# End profile
IMAPStore grigory@shipunov.xyz-remote
Host imap.migadu.com
Port 993
User grigory@shipunov.xyz
PassCmd "cat /run/secrets/mail/shipunov.xyz"
AuthMechs LOGIN
SSLType IMAPS
MaildirStore grigory@shipunov.xyz-local
Subfolders Verbatim
Path /home/grue/mail/grigory@shipunov.xyz/
Inbox /home/grue/mail/grigory@shipunov.xyz/INBOX
Channel grigory@shipunov.xyz
Expunge Both
Master :grigory@shipunov.xyz-remote:
Slave :grigory@shipunov.xyz-local:
Create Both
SyncState *
Patterns *
MaxMessages 0
ExpireUnread no
# End profile
IMAPStore dump@dvb.solutions-remote
Host imap.migadu.com
Port 993
User dump@dvb.solutions
PassCmd "cat /run/secrets/mail/dvb.solutions"
AuthMechs LOGIN
SSLType IMAPS
MaildirStore dump@dvb.solutions-local
Subfolders Verbatim
Path /home/grue/mail/dump@dvb.solutions/
Inbox /home/grue/mail/dump@dvb.solutions/INBOX
Channel dump@dvb.solutions
Expunge Both
Master :dump@dvb.solutions-remote:
Slave :dump@dvb.solutions-local:
Create Both
SyncState *
Patterns *
MaxMessages 0
ExpireUnread no
# End profile
IMAPStore grigory@tlm.solutions-remote
Host imap.migadu.com
Port 993
User grigory@tlm.solutions
PassCmd "cat /run/secrets/mail/tlm.solutions"
AuthMechs LOGIN
SSLType IMAPS
MaildirStore grigory@tlm.solutions-local
Subfolders Verbatim
Path /home/grue/mail/grigory@tlm.solutions/
Inbox /home/grue/mail/grigory@tlm.solutions/INBOX
Channel grigory@tlm.solutions
Expunge Both
Master :grigory@tlm.solutions-remote:
Slave :grigory@tlm.solutions-local:
Create Both
SyncState *
Patterns *
MaxMessages 0
ExpireUnread no
# End profile