More mail configuration
This commit is contained in:
parent
1e0ff42b1b
commit
487917c7cc
1 changed files with 140 additions and 148 deletions
|
@ -1,20 +1,57 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
passwordScript = pkgs.writeScript "get_mail_password" ''
|
passwordScript = pkgs.writeScript "get_mail_password" ''
|
||||||
#!${pkgs.bash}/bin/bash
|
#!${pkgs.bash}/bin/bash
|
||||||
|
|
||||||
${pkgs.pass}/bin/pass show "$@" | head -n1 | tr -d "\n"
|
${pkgs.pass}/bin/pass show "$@" | head -n1 | tr -d "\n"
|
||||||
'';
|
'';
|
||||||
baseAccount = {
|
makeAccount = { name, address, host ? "", imapHost ? host, smtpHost ? host, useStartTls ? false, passFile, extraConfig ? { } }: (lib.recursiveUpdate
|
||||||
gpg = {
|
{
|
||||||
key = "charlotte@vanpetegem.me";
|
inherit address;
|
||||||
signByDefault = true;
|
gpg = {
|
||||||
};
|
key = "charlotte@vanpetegem.me";
|
||||||
msmtp.enable = true;
|
signByDefault = true;
|
||||||
offlineimap.enable = true;
|
};
|
||||||
realName = "Charlotte Van Petegem";
|
imap = {
|
||||||
signature = {
|
host = imapHost;
|
||||||
showSignature = "none";
|
port = 993;
|
||||||
|
tls.enable = true;
|
||||||
|
};
|
||||||
|
imapnotify = {
|
||||||
|
enable = true;
|
||||||
|
boxes = [ "INBOX" ];
|
||||||
|
onNotify = "${pkgs.offlineimap}/bin/offlineimap -a ${name} -f INBOX";
|
||||||
|
onNotifyPost = { mail = "${pkgs.libnotify}/bin/notify-send 'New ${name} mail arrived'"; };
|
||||||
|
};
|
||||||
|
msmtp.enable = true;
|
||||||
|
neomutt = {
|
||||||
|
enable = true;
|
||||||
|
sendMailCommand = "msmtpq --read-envelope-from --read-recipients --account ${name}";
|
||||||
|
};
|
||||||
|
offlineimap.enable = true;
|
||||||
|
passwordCommand = "${passwordScript} ${passFile}";
|
||||||
|
realName = "Charlotte Van Petegem";
|
||||||
|
signature = {
|
||||||
|
showSignature = "none";
|
||||||
|
};
|
||||||
|
smtp = {
|
||||||
|
host = smtpHost;
|
||||||
|
port = if useStartTls then 587 else 465;
|
||||||
|
tls = {
|
||||||
|
enable = true;
|
||||||
|
inherit useStartTls;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
userName = address;
|
||||||
|
}
|
||||||
|
extraConfig);
|
||||||
|
genNotifyImapPatch = account: {
|
||||||
|
name = "imapnotify-${account}";
|
||||||
|
value = {
|
||||||
|
Unit = {
|
||||||
|
After = "network-online.target";
|
||||||
|
Wants = "network-online.target";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
@ -24,147 +61,80 @@ in
|
||||||
{ path = ".local/share/offlineimap"; type = "data"; }
|
{ path = ".local/share/offlineimap"; type = "data"; }
|
||||||
];
|
];
|
||||||
home-manager.users.charlotte = { ... }: {
|
home-manager.users.charlotte = { ... }: {
|
||||||
|
accounts.email = {
|
||||||
|
maildirBasePath = "mail";
|
||||||
|
accounts = {
|
||||||
|
personal = makeAccount {
|
||||||
|
name = "personal";
|
||||||
|
address = "charlotte@vanpetegem.me";
|
||||||
|
host = "mail.vanpetegem.me";
|
||||||
|
passFile = "mail/Personal";
|
||||||
|
extraConfig = {
|
||||||
|
folders = { drafts = "Drafts"; inbox = "INBOX"; sent = "Sent"; trash = "Trash"; };
|
||||||
|
primary = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
work = makeAccount {
|
||||||
|
name = "work";
|
||||||
|
address = "charlotte.vanpetegem@ugent.be";
|
||||||
|
imapHost = "outlook.office365.com";
|
||||||
|
smtpHost = "smtp.office365.com";
|
||||||
|
passFile = "work/UGentNet";
|
||||||
|
useStartTls = true;
|
||||||
|
extraConfig = {
|
||||||
|
folders = { drafts = "Drafts"; inbox = "INBOX"; sent = "Sent Items"; trash = "Deleted Items"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
posteo = makeAccount {
|
||||||
|
name = "posteo";
|
||||||
|
address = "chvp@posteo.net";
|
||||||
|
host = "posteo.de";
|
||||||
|
passFile = "mail/Posteo";
|
||||||
|
extraConfig = {
|
||||||
|
folders = { drafts = "Drafts"; inbox = "INBOX"; sent = "Sent"; trash = "Trash"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
jonggroen = makeAccount {
|
||||||
|
name = "jonggroen";
|
||||||
|
address = "charlotte@jonggroen.be";
|
||||||
|
imapHost = "imap.gmail.com";
|
||||||
|
smtpHost = "smtp.gmail.com";
|
||||||
|
passFile = "jonggroen/GoogleAppMail";
|
||||||
|
useStartTls = true;
|
||||||
|
extraConfig = {
|
||||||
|
flavor = "gmail.com";
|
||||||
|
folders = {
|
||||||
|
drafts = "[Gmail].Drafts";
|
||||||
|
inbox = "INBOX";
|
||||||
|
sent = "[Gmail].Sent Mail";
|
||||||
|
trash = "[Gmail].Bin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
postbot = makeAccount {
|
||||||
|
name = "postbot";
|
||||||
|
address = "postbot@vanpetegem.me";
|
||||||
|
host = "mail.vanpetegem.me";
|
||||||
|
passFile = "mail/Postbot";
|
||||||
|
extraConfig = {
|
||||||
|
folders = { drafts = "Drafts"; inbox = "INBOX"; sent = "Sent"; trash = "Trash"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
webmaster = makeAccount {
|
||||||
|
name = "webmaster";
|
||||||
|
address = "webmaster@vanpetegem.me";
|
||||||
|
host = "mail.vanpetegem.me";
|
||||||
|
passFile = "mail/Webmaster";
|
||||||
|
extraConfig = {
|
||||||
|
folders = { drafts = "Drafts"; inbox = "INBOX"; sent = "Sent"; trash = "Trash"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
home.file.".mailcap".text = ''
|
home.file.".mailcap".text = ''
|
||||||
text/html; ${pkgs.firefox}/bin/firefox %s ; nametemplate=%s.html; needsterminal
|
text/html; ${pkgs.firefox}/bin/firefox %s ; nametemplate=%s.html; needsterminal
|
||||||
text/html; ${pkgs.w3m}/bin/w3m -I %{charset} -T text/html ; copiousoutput; nametemplate=%s.html
|
text/html; ${pkgs.w3m}/bin/w3m -I %{charset} -T text/html ; copiousoutput; nametemplate=%s.html
|
||||||
'';
|
'';
|
||||||
accounts.email = {
|
|
||||||
maildirBasePath = "mail";
|
|
||||||
accounts = {
|
|
||||||
personal = baseAccount // {
|
|
||||||
address = "charlotte@vanpetegem.me";
|
|
||||||
folders = {
|
|
||||||
drafts = "Drafts";
|
|
||||||
inbox = "INBOX";
|
|
||||||
sent = "Sent";
|
|
||||||
trash = "Trash";
|
|
||||||
};
|
|
||||||
imap = {
|
|
||||||
host = "mail.vanpetegem.me";
|
|
||||||
port = 993;
|
|
||||||
tls.enable = true;
|
|
||||||
};
|
|
||||||
imapnotify = {
|
|
||||||
enable = true;
|
|
||||||
boxes = [ "INBOX" ];
|
|
||||||
onNotify = "${pkgs.offlineimap}/bin/offlineimap -a personal -f INBOX";
|
|
||||||
onNotifyPost = { mail = "${pkgs.libnotify}/bin/notify-send 'New mail arrived'"; };
|
|
||||||
};
|
|
||||||
neomutt = {
|
|
||||||
enable = true;
|
|
||||||
sendMailCommand = "msmtpq --read-envelope-from --read-recipients --account personal";
|
|
||||||
};
|
|
||||||
passwordCommand = "${passwordScript} mail/Personal";
|
|
||||||
primary = true;
|
|
||||||
smtp = {
|
|
||||||
host = "mail.vanpetegem.me";
|
|
||||||
port = 465;
|
|
||||||
tls.enable = true;
|
|
||||||
};
|
|
||||||
userName = "charlotte@vanpetegem.me";
|
|
||||||
};
|
|
||||||
work = baseAccount // {
|
|
||||||
address = "charlotte.vanpetegem@ugent.be";
|
|
||||||
folders = {
|
|
||||||
drafts = "Drafts";
|
|
||||||
inbox = "INBOX";
|
|
||||||
sent = "Sent Items";
|
|
||||||
trash = "Deleted Items";
|
|
||||||
};
|
|
||||||
imap = {
|
|
||||||
host = "outlook.office365.com";
|
|
||||||
port = 993;
|
|
||||||
tls.enable = true;
|
|
||||||
};
|
|
||||||
imapnotify = {
|
|
||||||
enable = true;
|
|
||||||
boxes = [ "INBOX" ];
|
|
||||||
onNotify = "${pkgs.offlineimap}/bin/offlineimap -a work -f INBOX";
|
|
||||||
onNotifyPost = { mail = "${pkgs.libnotify}/bin/notify-send 'New mail arrived'"; };
|
|
||||||
};
|
|
||||||
neomutt = {
|
|
||||||
enable = true;
|
|
||||||
sendMailCommand = "msmtpq --read-envelope-from --read-recipients --account work";
|
|
||||||
};
|
|
||||||
passwordCommand = "${passwordScript} work/UGentNet";
|
|
||||||
smtp = {
|
|
||||||
host = "smtp.office365.com";
|
|
||||||
port = 587;
|
|
||||||
tls = {
|
|
||||||
enable = true;
|
|
||||||
useStartTls = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
userName = "charlotte.vanpetegem@ugent.be";
|
|
||||||
};
|
|
||||||
posteo = baseAccount // {
|
|
||||||
address = "chvp@posteo.net";
|
|
||||||
folders = {
|
|
||||||
drafts = "Drafts";
|
|
||||||
inbox = "INBOX";
|
|
||||||
sent = "Sent";
|
|
||||||
trash = "Trash";
|
|
||||||
};
|
|
||||||
imap = {
|
|
||||||
host = "posteo.de";
|
|
||||||
port = 993;
|
|
||||||
tls.enable = true;
|
|
||||||
};
|
|
||||||
imapnotify = {
|
|
||||||
enable = true;
|
|
||||||
boxes = [ "INBOX" ];
|
|
||||||
onNotify = "${pkgs.offlineimap}/bin/offlineimap -a work -f INBOX";
|
|
||||||
onNotifyPost = { mail = "${pkgs.libnotify}/bin/notify-send 'New mail arrived'"; };
|
|
||||||
};
|
|
||||||
neomutt = {
|
|
||||||
enable = true;
|
|
||||||
sendMailCommand = "msmtpq --read-envelope-from --read-recipients --account posteo";
|
|
||||||
};
|
|
||||||
passwordCommand = "${passwordScript} mail/Posteo";
|
|
||||||
smtp = {
|
|
||||||
host = "posteo.de";
|
|
||||||
port = 465;
|
|
||||||
tls.enable = true;
|
|
||||||
};
|
|
||||||
userName = "chvp@posteo.net";
|
|
||||||
};
|
|
||||||
jonggroen = baseAccount // {
|
|
||||||
address = "charlotte@jonggroen.be";
|
|
||||||
flavor = "gmail.com";
|
|
||||||
folders = {
|
|
||||||
drafts = "[Gmail].Drafts";
|
|
||||||
inbox = "INBOX";
|
|
||||||
sent = "[Gmail].Sent Mail";
|
|
||||||
trash = "[Gmail].Bin";
|
|
||||||
};
|
|
||||||
imap = {
|
|
||||||
host = "imap.gmail.com";
|
|
||||||
port = 993;
|
|
||||||
tls.enable = true;
|
|
||||||
};
|
|
||||||
imapnotify = {
|
|
||||||
enable = true;
|
|
||||||
boxes = [ "INBOX" ];
|
|
||||||
onNotify = "${pkgs.offlineimap}/bin/offlineimap -a jonggroen -f INBOX";
|
|
||||||
onNotifyPost = { mail = "${pkgs.libnotify}/bin/notify-send 'New mail arrived'"; };
|
|
||||||
};
|
|
||||||
neomutt = {
|
|
||||||
enable = true;
|
|
||||||
sendMailCommand = "msmtpq --read-envelope-from --read-recipients --account jonggroen";
|
|
||||||
};
|
|
||||||
passwordCommand = "${passwordScript} jonggroen/GoogleAppMail";
|
|
||||||
smtp = {
|
|
||||||
host = "smtp.gmail.com";
|
|
||||||
port = 587;
|
|
||||||
tls = {
|
|
||||||
enable = true;
|
|
||||||
useStartTls = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
userName = "charlotte@jonggroen.be";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs = {
|
programs = {
|
||||||
msmtp.enable = true;
|
msmtp.enable = true;
|
||||||
neomutt = {
|
neomutt = {
|
||||||
|
@ -182,5 +152,27 @@ in
|
||||||
services = {
|
services = {
|
||||||
imapnotify.enable = true;
|
imapnotify.enable = true;
|
||||||
};
|
};
|
||||||
|
systemd.user = {
|
||||||
|
services = {
|
||||||
|
offlineimap = {
|
||||||
|
Unit = {
|
||||||
|
Description = "OfflineIMAP email fetcher";
|
||||||
|
After = "network-online.target";
|
||||||
|
Wants = "network-online.target";
|
||||||
|
};
|
||||||
|
Service = { ExecStart = "${pkgs.offlineimap}/bin/offlineimap"; };
|
||||||
|
};
|
||||||
|
} // lib.listToAttrs (map genNotifyImapPatch [ "jonggroen" "personal" "postbot" "posteo" "webmaster" "work" ]);
|
||||||
|
timers = {
|
||||||
|
offlineimap = {
|
||||||
|
Unit = { Description = "OfflineIMAP email fetcher"; };
|
||||||
|
Timer = {
|
||||||
|
OnCalendar = "*:0/5";
|
||||||
|
Unit = "offlineimap.service";
|
||||||
|
};
|
||||||
|
Install = { WantedBy = [ "timers.target" ]; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue