snowfield/home-manager-modules/mails/default.nix

163 lines
3.9 KiB
Nix

{
pkgs,
config,
lib,
...
}:
let
cfg = config.luj.emails;
in
with lib;
{
options.luj.emails = {
enable = mkEnableOption "enable mail management";
};
config = mkIf cfg.enable {
age.secrets.work-mail-pw = {
file = ../../secrets/work-mail-pw.age;
};
age.secrets.dgnum-mail-pw = {
file = ../../secrets/dgnum-mail-pw.age;
};
age.secrets.telecom-mail-pw = {
file = ../../secrets/telecom-mail-pw.age;
};
age.secrets.ens-mail-pw = {
file = ../../secrets/ens-mail-pw.age;
};
programs.mbsync = {
enable = lib.mkDefault true;
package = pkgs.unstable.isync;
};
programs.msmtp.enable = true;
accounts.email = {
accounts.ens = {
notmuch.enable = true;
folders.inbox = "INBOX";
address = "julien.malka@ens.fr";
imap.host = "clipper.ens.fr";
mbsync = {
enable = true;
create = "maildir";
extraConfig.channel = {
"CopyArrivalDate" = "yes";
};
};
msmtp.enable = true;
primary = true;
realName = "Julien Malka";
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.ens-mail-pw.path}";
smtp = {
host = "clipper.ens.fr";
};
userName = "jmalka";
};
accounts.work = {
notmuch.enable = true;
folders.inbox = "INBOX";
address = "julien@malka.sh";
imap.host = "mail.luj.fr";
mbsync = {
enable = true;
create = "maildir";
extraConfig.channel = {
"CopyArrivalDate" = "yes";
};
};
msmtp.enable = true;
primary = false;
realName = "Julien Malka";
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.work-mail-pw.path}";
smtp = {
host = "mail.luj.fr";
};
userName = "malka";
};
accounts.telecom = {
notmuch.enable = true;
folders.inbox = "INBOX";
address = "julien.malka@telecom-paris.fr";
imap.host = "z.imt.fr";
mbsync = {
enable = true;
create = "maildir";
extraConfig.channel = {
"CopyArrivalDate" = "yes";
};
};
msmtp.enable = true;
primary = false;
realName = "Julien Malka";
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.telecom-mail-pw.path}";
smtp = {
host = "z.imt.fr";
};
userName = "julien.malka@telecom-paris.fr";
};
accounts.dgnum = {
notmuch.enable = true;
folders.inbox = "INBOX";
address = "luj@dgnum.eu";
imap.host = "kurisu.lahfa.xyz";
mbsync = {
enable = true;
create = "maildir";
extraConfig.channel = {
"CopyArrivalDate" = "yes";
};
};
msmtp.enable = true;
primary = false;
realName = "Julien Malka";
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.dgnum-mail-pw.path}";
smtp = {
host = "kurisu.lahfa.xyz";
};
userName = "luj@dgnum.eu";
};
};
services.mbsync = {
enable = lib.mkDefault true;
frequency = "minutely";
package = pkgs.unstable.isync;
};
services.mbsync.postExec = lib.mkDefault "${pkgs.notmuch}/bin/notmuch new";
programs.notmuch = {
enable = lib.mkDefault true;
new.tags = [ "new" ];
hooks.postNew = lib.mkDefault ''
${pkgs.afew}/bin/afew --tag --new
'';
};
programs.afew = {
enable = true;
extraConfig = ''
[FolderNameFilter]
maildir_separator = /
folder_lowercases = true
folder_blacklist = Sent
[ArchiveSentMailsFilter]
sent_tag = sent
[Filter.1]
query = tag:archive
tags = -new
[InboxFilter]
'';
};
};
}