Move mail configs
This commit is contained in:
parent
2fd7dbb851
commit
819a23b52e
264
home/mail/default.nix
Normal file
264
home/mail/default.nix
Normal file
@ -0,0 +1,264 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
mailBaseConfig = {
|
||||
configName,
|
||||
address,
|
||||
userName ? address,
|
||||
host,
|
||||
displayName,
|
||||
extraMailboxes ? [],
|
||||
enableDefaultMailboxes ? true,
|
||||
neomuttExtraConfig ? "",
|
||||
} : let
|
||||
defaultMailboxes = if enableDefaultMailboxes then
|
||||
/* `tree ~/Maildir/vbrandl/ -l -d -I "Archive|cur|new|tmp|certs|.notmuch" -afin --noreport | awk '{if(NR>1)print}' | tr '\n' ' '` */
|
||||
[ "Drafts" "Junk" "Sent" "Trash" ]
|
||||
else
|
||||
[];
|
||||
mailboxes = defaultMailboxes ++ extraMailboxes;
|
||||
in {
|
||||
address = address;
|
||||
userName = userName;
|
||||
realName = displayName;
|
||||
imap.host = host;
|
||||
smtp.host = host;
|
||||
passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup email ${address}";
|
||||
signature = {
|
||||
text = displayName;
|
||||
showSignature = "append";
|
||||
};
|
||||
aerc = {
|
||||
enable = true;
|
||||
extraAccounts = {
|
||||
pgp-opportunistic-encrypt = true;
|
||||
pgp-autosign = true;
|
||||
};
|
||||
};
|
||||
imapnotify = {
|
||||
enable = true;
|
||||
/* TODO: which boxes? */
|
||||
boxes = [ "Inbox" ];
|
||||
onNotify = "${pkgs.isync}/bin/mbsync ${configName} && ${pkgs.libnotify}/bin/notify-send -a mail '${configName}: new in %s'";
|
||||
/* onNotifyPost = { */
|
||||
/* mail = "${pkgs.libnotify}/bin/notify-send -a mail '${configName}: new in %s'"; */
|
||||
/* /1* update = "${pkgs.libnotify}/bin/notify-send -a mail '${configName}: update %s'"; *1/ */
|
||||
/* /1* expunge = "${pkgs.libnotify}/bin/notify-send -a mail '${configName}: expunge %s'"; *1/ */
|
||||
/* }; */
|
||||
};
|
||||
mbsync = {
|
||||
enable = true;
|
||||
/* sync changes to maildir in both directions */
|
||||
create = "both";
|
||||
expunge = "both";
|
||||
remove = "both";
|
||||
};
|
||||
msmtp.enable = true;
|
||||
neomutt = {
|
||||
enable = true;
|
||||
extraMailboxes = mailboxes;
|
||||
extraConfig = ''
|
||||
# use encrypted headers
|
||||
set crypt_protected_headers_write = yes
|
||||
'' + neomuttExtraConfig;
|
||||
};
|
||||
notmuch.enable = true;
|
||||
};
|
||||
in {
|
||||
home.packages = with pkgs; [
|
||||
libsecret
|
||||
libnotify
|
||||
urlview
|
||||
];
|
||||
home.file.mailcap = {
|
||||
target = ".mailcap";
|
||||
source = ./mailcap;
|
||||
};
|
||||
|
||||
programs.password-store.enable = true;
|
||||
programs.aerc = {
|
||||
enable = true;
|
||||
extraConfig = builtins.readFile ./aerc/aerc.conf;
|
||||
/* { */
|
||||
/* general = { */
|
||||
/* unsafe-accounts-conf = true; */
|
||||
/* }; */
|
||||
/* }; */
|
||||
extraBinds = builtins.readFile ./aerc/binds.conf;
|
||||
};
|
||||
services.mbsync.enable = true;
|
||||
programs.mbsync.enable = true;
|
||||
services.imapnotify.enable = true;
|
||||
programs.notmuch = {
|
||||
enable = true;
|
||||
hooks.preNew = "mbsync --all";
|
||||
};
|
||||
|
||||
programs.neomutt = {
|
||||
enable = true;
|
||||
sidebar.enable = true;
|
||||
extraConfig = builtins.readFile ./neomutt/neomuttrc;
|
||||
/* vimKeys = true; */
|
||||
macros = [
|
||||
{ map = [ "pager" "index" ];
|
||||
key = "B";
|
||||
action = "|urlview\\n";
|
||||
}
|
||||
];
|
||||
binds = [
|
||||
/* sidebar */
|
||||
{ map = [ "attach" "browser" "index" ];
|
||||
key = "J";
|
||||
action = "sidebar-next";
|
||||
}
|
||||
{ map = [ "attach" "browser" "index" ];
|
||||
key = "K";
|
||||
action = "sidebar-prev";
|
||||
}
|
||||
{ map = [ "attach" "browser" "index" ];
|
||||
key = "O";
|
||||
action = "sidebar-open";
|
||||
}
|
||||
|
||||
/* moving around */
|
||||
{ map = [ "attach" "browser" "index" ];
|
||||
key = "j";
|
||||
action = "next-entry";
|
||||
}
|
||||
{ map = [ "attach" "browser" "index" ];
|
||||
key = "k";
|
||||
action = "previous-entry";
|
||||
}
|
||||
{ map = [ "attach" "browser" "index" ];
|
||||
key = "g";
|
||||
action = "noop";
|
||||
}
|
||||
{ map = [ "attach" "browser" "index" ];
|
||||
key = "gg";
|
||||
action = "first-entry";
|
||||
}
|
||||
{ map = [ "attach" "browser" "index" ];
|
||||
key = "G";
|
||||
action = "last-entry";
|
||||
}
|
||||
{ map = [ "attach" "browser" "index" ];
|
||||
key = "n";
|
||||
action = "next-unread";
|
||||
}
|
||||
{ map = [ "pager" ];
|
||||
key = "g";
|
||||
action = "noop";
|
||||
}
|
||||
{ map = [ "pager" ];
|
||||
key = "gg";
|
||||
action = "top";
|
||||
}
|
||||
{ map = [ "pager" ];
|
||||
key = "G";
|
||||
action = "bottom";
|
||||
}
|
||||
{ map = [ "pager" ];
|
||||
key = "k";
|
||||
action = "previous-line";
|
||||
}
|
||||
{ map = [ "pager" ];
|
||||
key = "j";
|
||||
action = "next-line";
|
||||
}
|
||||
|
||||
/* deletion */
|
||||
{ map = [ "pager" "index" ];
|
||||
key = "d";
|
||||
action = "noop";
|
||||
}
|
||||
{ map = [ "pager" "index" ];
|
||||
key = "dd";
|
||||
action = "delete-message";
|
||||
}
|
||||
/* TODO: mark as new? */
|
||||
{ map = [ "browser" "pager" "index" ];
|
||||
key = "U";
|
||||
action = "toggle-new";
|
||||
}
|
||||
{ map = [ "browser" "pager" "index" ];
|
||||
key = "n";
|
||||
action = "search-next";
|
||||
}
|
||||
{ map = [ "browser" "pager" "index" ];
|
||||
key = "N";
|
||||
action = "search-opposite";
|
||||
}
|
||||
|
||||
/* threads */
|
||||
{ map = [ "pager" "index" ];
|
||||
key = "dT";
|
||||
action = "delete-thread";
|
||||
}
|
||||
{ map = [ "pager" "index" ];
|
||||
key = "dt";
|
||||
action = "delete-subthread";
|
||||
}
|
||||
{ map = [ "pager" "index" ];
|
||||
key = "gt";
|
||||
action = "next-thread";
|
||||
}
|
||||
{ map = [ "pager" "index" ];
|
||||
key = "gT";
|
||||
action = "previous-thread";
|
||||
}
|
||||
{ map = [ "index" ];
|
||||
key = "za";
|
||||
action = "collapse-thread";
|
||||
}
|
||||
{ map = [ "index" ];
|
||||
key = "zA";
|
||||
action = "collapse-all";
|
||||
}
|
||||
];
|
||||
};
|
||||
programs.msmtp.enable = true;
|
||||
|
||||
accounts.email.accounts = let
|
||||
aliases = "mail(\\+.*)?@vbrandl.net";
|
||||
in {
|
||||
vbrandl = (
|
||||
mailBaseConfig {
|
||||
configName = "vbrandl";
|
||||
address = "mail@vbrandl.net";
|
||||
host = "mail.vbrandl.net";
|
||||
displayName = "Valentin Brandl";
|
||||
extraMailboxes = [ "Archive" ];
|
||||
|
||||
/* #set use_from = yes */
|
||||
/* #set envelope_from = true */
|
||||
neomuttExtraConfig = ''
|
||||
# TODO: reply with tagged mail
|
||||
set reverse_name = yes
|
||||
alternates '${aliases}'
|
||||
'';
|
||||
}) // {
|
||||
primary = true;
|
||||
aliases = [ aliases ];
|
||||
gpg = {
|
||||
encryptByDefault = true;
|
||||
signByDefault = true;
|
||||
key = "1FFE431282F4B8CC0A7579167FB009175885FC76";
|
||||
};
|
||||
};
|
||||
|
||||
riseup = (
|
||||
mailBaseConfig {
|
||||
configName = "riseup";
|
||||
address = "vbrandl@riseup.net";
|
||||
host = "mail.riseup.net";
|
||||
displayName = "Valentin Brandl";
|
||||
extraMailboxes = [ "SKS-devel" ];
|
||||
}) // {
|
||||
userName = "vbrandl";
|
||||
gpg = {
|
||||
encryptByDefault = true;
|
||||
signByDefault = true;
|
||||
key = "1FFE431282F4B8CC0A7579167FB009175885FC76";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user