mirror of
https://github.com/kmein/niveum
synced 2026-03-16 10:11:08 +01:00
feat: neomutt -> aerc
This commit is contained in:
320
configs/aerc.nix
Normal file
320
configs/aerc.nix
Normal file
@@ -0,0 +1,320 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
defaults = {
|
||||||
|
aerc.enable = true;
|
||||||
|
realName = "Kierán Meinhardt";
|
||||||
|
folders.inbox = "INBOX";
|
||||||
|
};
|
||||||
|
hu-defaults = {
|
||||||
|
imap.host = "mailbox.cms.hu-berlin.de";
|
||||||
|
smtp.host = "mailhost.cms.hu-berlin.de";
|
||||||
|
};
|
||||||
|
passwordCommandFrom = path: toString (pkgs.writers.writeDash "email-credentials" "echo ${lib.escapeShellArg (lib.strings.fileContents path)}");
|
||||||
|
in {
|
||||||
|
home-manager.users.me = {
|
||||||
|
accounts.email.accounts = rec {
|
||||||
|
hu-student =
|
||||||
|
defaults
|
||||||
|
// hu-defaults
|
||||||
|
// rec {
|
||||||
|
userName = "meinhark";
|
||||||
|
address = "kieran.felix.meinhardt@hu-berlin.de";
|
||||||
|
aliases = ["${userName}@hu-berlin.de"];
|
||||||
|
passwordCommand = passwordCommandFrom <secrets/eduroam/password>;
|
||||||
|
};
|
||||||
|
hu-student-cs =
|
||||||
|
defaults
|
||||||
|
// hu-defaults
|
||||||
|
// rec {
|
||||||
|
userName = "meinhark";
|
||||||
|
address = "kieran.felix.meinhardt@informatik.hu-berlin.de";
|
||||||
|
aliases = ["${userName}@informatik.hu-berlin.de"];
|
||||||
|
imap.host = "mailbox.informatik.hu-berlin.de";
|
||||||
|
smtp.host = "mailhost.informatik.hu-berlin.de";
|
||||||
|
passwordCommand = passwordCommandFrom <secrets/eduroam/password>;
|
||||||
|
};
|
||||||
|
hu-employee =
|
||||||
|
defaults
|
||||||
|
// hu-defaults
|
||||||
|
// rec {
|
||||||
|
userName = "meinhaki";
|
||||||
|
address = "kieran.meinhardt@hu-berlin.de";
|
||||||
|
aliases = ["${userName}@hu-berlin.de"];
|
||||||
|
passwordCommand = passwordCommandFrom <secrets/mail/meinhaki>;
|
||||||
|
signature = {
|
||||||
|
showSignature = "append";
|
||||||
|
text = ''
|
||||||
|
${defaults.realName}
|
||||||
|
Studentische Hilfskraft / Administrator ALEW
|
||||||
|
Humboldt-Universität zu Berlin
|
||||||
|
|
||||||
|
Telefon: +49 (0)30 2093 9634
|
||||||
|
Raum 3.212, Dorotheenstraße 24, 10117 Berlin-Mitte
|
||||||
|
https://alew.hu-berlin.de
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hu-admin =
|
||||||
|
defaults
|
||||||
|
// hu-defaults
|
||||||
|
// rec {
|
||||||
|
userName = "dslalewa";
|
||||||
|
address = "admin.alew.vglsprwi@hu-berlin.de";
|
||||||
|
aliases = ["${userName}@hu-berlin.de"];
|
||||||
|
passwordCommand = passwordCommandFrom <secrets/mail/dslalewa>;
|
||||||
|
inherit (hu-employee) signature;
|
||||||
|
};
|
||||||
|
hu-fsi =
|
||||||
|
defaults
|
||||||
|
// hu-defaults
|
||||||
|
// rec {
|
||||||
|
userName = "fsklassp";
|
||||||
|
passwordCommand = passwordCommandFrom <secrets/mail/fsklassp>;
|
||||||
|
address = "${userName}@hu-berlin.de";
|
||||||
|
realName = "FSI Klassische Philologie";
|
||||||
|
signature = {
|
||||||
|
showSignature = "append";
|
||||||
|
text = ''
|
||||||
|
Fachschafts-Initiative
|
||||||
|
|
||||||
|
Humboldt-Universität zu Berlin
|
||||||
|
Sprach- und literaturwissenschaftliche Fakultät
|
||||||
|
Institut für klassische Philologie
|
||||||
|
Unter den Linden 6
|
||||||
|
10099 Berlin
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
fysi =
|
||||||
|
defaults
|
||||||
|
// rec {
|
||||||
|
address = "kieran@fysi.tech";
|
||||||
|
userName = address;
|
||||||
|
passwordCommand = passwordCommandFrom <secrets/mail/fastmail>;
|
||||||
|
flavor = "fastmail.com";
|
||||||
|
};
|
||||||
|
cock =
|
||||||
|
defaults
|
||||||
|
// rec {
|
||||||
|
address = "2210@cock.li";
|
||||||
|
userName = address;
|
||||||
|
passwordCommand = passwordCommandFrom <secrets/mail/cock>;
|
||||||
|
realName = "";
|
||||||
|
imap.host = "mail.cock.li";
|
||||||
|
smtp.host = imap.host;
|
||||||
|
};
|
||||||
|
google-amro =
|
||||||
|
defaults
|
||||||
|
// rec {
|
||||||
|
address = "amroplay@gmail.com";
|
||||||
|
userName = address;
|
||||||
|
passwordCommand = passwordCommandFrom <secrets/mail/gmail/amroplay>;
|
||||||
|
flavor = "gmail.com";
|
||||||
|
aerc.enable = false;
|
||||||
|
};
|
||||||
|
google-kieran =
|
||||||
|
defaults
|
||||||
|
// rec {
|
||||||
|
address = "kieran.meinhardt@gmail.com";
|
||||||
|
userName = address;
|
||||||
|
passwordCommand = passwordCommandFrom <secrets/mail/gmail/kieran.meinhardt>;
|
||||||
|
flavor = "gmail.com";
|
||||||
|
aerc.enable = false;
|
||||||
|
folders = {
|
||||||
|
drafts = "[Gmail]/Entwürfe";
|
||||||
|
sent = "[Gmail]/Gesendet";
|
||||||
|
trash = "[Gmail]/Papierkorb";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
posteo =
|
||||||
|
defaults
|
||||||
|
// rec {
|
||||||
|
address = "kieran.meinhardt@posteo.net";
|
||||||
|
aliases = ["kmein@posteo.de"];
|
||||||
|
userName = address;
|
||||||
|
imap.host = "posteo.de";
|
||||||
|
smtp.host = imap.host;
|
||||||
|
primary = true;
|
||||||
|
passwordCommand = passwordCommandFrom <secrets/mail/posteo>;
|
||||||
|
# himalaya = { enable = true; backend = "imap"; sender = "smtp"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# programs.himalaya.enable = true;
|
||||||
|
|
||||||
|
programs.aerc = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extraBinds = {
|
||||||
|
# Binds are of the form <key sequence> = <command to run>
|
||||||
|
# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>"
|
||||||
|
# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit
|
||||||
|
global = {
|
||||||
|
"<C-p>" = ":prev-tab<Enter>";
|
||||||
|
"<C-n>" = ":next-tab <Enter>";
|
||||||
|
"<C-t>" = ":term<Enter>";
|
||||||
|
"?" = ":help keys<Enter>";
|
||||||
|
};
|
||||||
|
messages = {
|
||||||
|
q = ":quit<Enter>";
|
||||||
|
j = ":next <Enter>";
|
||||||
|
"<Down>" = ":next<Enter>";
|
||||||
|
"<C-d>" = ":next 50%<Enter>";
|
||||||
|
"<C-f>" = ":next 100%<Enter>";
|
||||||
|
"<PgDn>" = ":next 100%<Enter>";
|
||||||
|
k = ":prev <Enter>";
|
||||||
|
"<Up>" = ":prev<Enter>";
|
||||||
|
"<C-u>" = ":prev 50%<Enter>";
|
||||||
|
"<C-b>" = ":prev 100%<Enter>";
|
||||||
|
"<PgUp>" = ":prev 100%<Enter>";
|
||||||
|
g = ":select 0 <Enter>";
|
||||||
|
G = ":select -1<Enter>";
|
||||||
|
J = ":next-folder <Enter>";
|
||||||
|
K = ":prev-folder<Enter>";
|
||||||
|
H = ":collapse-folder<Enter>";
|
||||||
|
L = ":expand-folder<Enter>";
|
||||||
|
"<space>" = ":read -t<Enter>";
|
||||||
|
v = ":mark -t<Enter>";
|
||||||
|
V = ":mark -v<Enter>";
|
||||||
|
F = ":flag -t<Enter>";
|
||||||
|
T = ":toggle-threads<Enter>";
|
||||||
|
"<Enter>" = ":view<Enter>";
|
||||||
|
d = ":prompt 'Delete? ' 'delete-message'<Enter>";
|
||||||
|
D = ":move Trash<Enter>";
|
||||||
|
A = ":archive flat<Enter>";
|
||||||
|
C = ":compose<Enter>";
|
||||||
|
rr = ":reply -a<Enter>";
|
||||||
|
rq = ":reply -aq<Enter>";
|
||||||
|
Rr = ":reply<Enter>";
|
||||||
|
Rq = ":reply -q<Enter>";
|
||||||
|
c = ":cf<space>";
|
||||||
|
"$" = ":term<space>";
|
||||||
|
"!" = ":term<space>";
|
||||||
|
"|" = ":pipe<space>";
|
||||||
|
"/" = ":search<space>";
|
||||||
|
"\\" = ":filter <space>";
|
||||||
|
n = ":next-result<Enter>";
|
||||||
|
N = ":prev-result<Enter>";
|
||||||
|
"<Esc>" = ":clear<Enter>";
|
||||||
|
"*" = ":filter -x Flagged<Enter>";
|
||||||
|
};
|
||||||
|
view = {
|
||||||
|
"/" = ":toggle-key-passthrough <Enter> /";
|
||||||
|
q = ":close<Enter>";
|
||||||
|
O = ":open<Enter>";
|
||||||
|
S = ":save<space>";
|
||||||
|
"|" = ":pipe<space>";
|
||||||
|
D = ":move Trash<Enter>";
|
||||||
|
A = ":archive flat<Enter>";
|
||||||
|
"<C-l>" = ":open-link <space>";
|
||||||
|
f = ":forward <Enter>";
|
||||||
|
rr = ":reply -a<Enter>";
|
||||||
|
rq = ":reply -aq<Enter>";
|
||||||
|
Rr = ":reply<Enter>";
|
||||||
|
Rq = ":reply -q<Enter>";
|
||||||
|
H = ":toggle-headers<Enter>";
|
||||||
|
"<C-k>" = ":prev-part<Enter>";
|
||||||
|
"<C-j>" = ":next-part<Enter>";
|
||||||
|
J = ":next <Enter>";
|
||||||
|
K = ":prev<Enter>";
|
||||||
|
};
|
||||||
|
"view::passthrough" = {
|
||||||
|
"$noinherit" = "true";
|
||||||
|
"$ex" = "<C-x>";
|
||||||
|
"<Esc>" = ":toggle-key-passthrough<Enter>";
|
||||||
|
};
|
||||||
|
compose = {
|
||||||
|
# Keybindings used when the embedded terminal is not selected in the compose
|
||||||
|
# view
|
||||||
|
"$noinherit" = "true";
|
||||||
|
"$ex" = "<C-x>";
|
||||||
|
"<C-k>" = ":prev-field<Enter>";
|
||||||
|
"<C-j>" = ":next-field<Enter>";
|
||||||
|
"<tab>" = ":next-field<Enter>";
|
||||||
|
"<C-p>" = ":prev-tab<Enter>";
|
||||||
|
"<C-n>" = ":next-tab<Enter>";
|
||||||
|
};
|
||||||
|
|
||||||
|
"compose::editor" = {
|
||||||
|
# Keybindings used when the embedded terminal is selected in the compose view
|
||||||
|
"$noinherit" = "true";
|
||||||
|
"$ex" = "<C-x>";
|
||||||
|
"<C-k>" = ":prev-field<Enter>";
|
||||||
|
"<C-j>" = ":next-field<Enter>";
|
||||||
|
"<C-p>" = ":prev-tab<Enter>";
|
||||||
|
"<C-n>" = ":next-tab<Enter>";
|
||||||
|
};
|
||||||
|
|
||||||
|
"compose::review" = {
|
||||||
|
# Keybindings used when reviewing a message to be sent
|
||||||
|
y = ":send <Enter>";
|
||||||
|
n = ":abort<Enter>";
|
||||||
|
p = ":postpone<Enter>";
|
||||||
|
q = ":choose -o d discard abort -o p postpone postpone<Enter>";
|
||||||
|
e = ":edit<Enter>";
|
||||||
|
a = ":attach<space>";
|
||||||
|
d = ":detach<space>";
|
||||||
|
};
|
||||||
|
|
||||||
|
terminal = {
|
||||||
|
"$noinherit" = "true";
|
||||||
|
"$ex" = "<C-x>";
|
||||||
|
"<C-p>" = ":prev-tab<Enter>";
|
||||||
|
"<C-n>" = ":next-tab<Enter>";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
ui.sort = "-r date";
|
||||||
|
ui.timestamp-format = "2006-01-02 15:04";
|
||||||
|
ui.mouse-enabled = true;
|
||||||
|
ui.spinner = ". , .";
|
||||||
|
general.unsafe-accounts-conf = true;
|
||||||
|
general.pgp-provider = "gpg";
|
||||||
|
viewer = {pager = "${pkgs.less}/bin/less -R";};
|
||||||
|
compose = {
|
||||||
|
address-book-cmd = "khard email --parsable '%s'";
|
||||||
|
no-attachment-warning = "(attach|attached|attachments?|anbei|Anhang|angehängt)";
|
||||||
|
};
|
||||||
|
filters = {
|
||||||
|
"text/plain" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
|
||||||
|
"text/calendar" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/calendar";
|
||||||
|
"text/html" = "${pkgs.aerc}/share/aerc/filters/html"; # Requires w3m, dante
|
||||||
|
# "text/html" =
|
||||||
|
# "${pkgs.aerc}/share/aerc/filters/html | ${pkgs.aerc}/share/aerc/filters/colorize";
|
||||||
|
# "text/*" =
|
||||||
|
# ''${pkgs.bat}/bin/bat -fP --file-name="$AERC_FILENAME "'';
|
||||||
|
"message/delivery-status" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
|
||||||
|
"message/rfc822" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
|
||||||
|
"application/x-sh" = "${pkgs.bat}/bin/bat -fP -l sh";
|
||||||
|
};
|
||||||
|
openers = let
|
||||||
|
as-pdf = pkgs.writers.writeDash "as-pdf" ''
|
||||||
|
d=$(mktemp -d)
|
||||||
|
trap clean EXIT
|
||||||
|
clean() {
|
||||||
|
rm -rf "$d"
|
||||||
|
}
|
||||||
|
${pkgs.libreoffice}/bin/libreoffice --headless --convert-to pdf "$1" --outdir "$d"
|
||||||
|
${pkgs.zathura}/bin/zathura "$d"/*.pdf
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
"image/*" = "${pkgs.nsxiv}/bin/nsxiv";
|
||||||
|
"application/pdf" = "${pkgs.zathura}/bin/zathura";
|
||||||
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" = toString as-pdf;
|
||||||
|
"application/vnd.oasis.opendocument.text" = toString as-pdf;
|
||||||
|
"video/*" = "${pkgs.mpv}/bin/mpv";
|
||||||
|
"audio/*" = "${pkgs.mpv}/bin/mpv";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
templates = {
|
||||||
|
# new_message = "hello!";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -219,6 +219,7 @@ in {
|
|||||||
./bash.nix
|
./bash.nix
|
||||||
./beets.nix
|
./beets.nix
|
||||||
./bluetooth.nix
|
./bluetooth.nix
|
||||||
|
./aerc.nix
|
||||||
./ccc.nix
|
./ccc.nix
|
||||||
./khal.nix
|
./khal.nix
|
||||||
./chromium.nix
|
./chromium.nix
|
||||||
@@ -241,7 +242,6 @@ in {
|
|||||||
./mpv.nix
|
./mpv.nix
|
||||||
./mime.nix
|
./mime.nix
|
||||||
./neovim.nix
|
./neovim.nix
|
||||||
./neomutt.nix
|
|
||||||
./nix.nix
|
./nix.nix
|
||||||
./newsboat.nix
|
./newsboat.nix
|
||||||
./flameshot-once.nix
|
./flameshot-once.nix
|
||||||
|
|||||||
@@ -1,172 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
mainMailbox = "posteo";
|
|
||||||
|
|
||||||
accounts = import <niveum/lib/email.nix> {inherit lib mainMailbox;};
|
|
||||||
|
|
||||||
neomuttConfig = emailAccounts: let
|
|
||||||
as-pdf = pkgs.writers.writeDash "as-pdf" ''
|
|
||||||
d=$(mktemp -d)
|
|
||||||
trap clean EXIT
|
|
||||||
clean() {
|
|
||||||
rm -rf "$d"
|
|
||||||
}
|
|
||||||
${pkgs.libreoffice}/bin/libreoffice --headless --convert-to pdf "$1" --outdir "$d"
|
|
||||||
${pkgs.zathura}/bin/zathura "$d"/*.pdf
|
|
||||||
'';
|
|
||||||
in ''
|
|
||||||
set mailcap_path = ${
|
|
||||||
pkgs.writeText "mailcap" ''
|
|
||||||
text/plain; $EDITOR %s ;
|
|
||||||
text/html; ${pkgs.lynx}/bin/lynx -assume_charset=%{charset} -display_charset=utf-8 -dump %s; nametemplate=%s.html; copiousoutput;
|
|
||||||
image/*; ${pkgs.nsxiv}/bin/nsxiv %s ;
|
|
||||||
video/*; ${pkgs.util-linux}/bin/setsid ${pkgs.mpv}/bin/mpv --quiet %s &; copiousoutput
|
|
||||||
audio/*; ${pkgs.mpv}/bin/mpv %s ;
|
|
||||||
application/pdf; ${pkgs.zathura}/bin/zathura %s ;
|
|
||||||
application/pgp-encrypted; ${pkgs.gnupg}/bin/gpg -d '%s'; copiousoutput;
|
|
||||||
application/pgp-keys; ${pkgs.gnupg}/bin/gpg --import '%s'; copiousoutput;
|
|
||||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document; ${as-pdf} %s;
|
|
||||||
application/vnd.oasis.opendocument.text; ${as-pdf} %s;
|
|
||||||
application/vnd.openxmlformats*; ${pkgs.libreoffice}/bin/soffice '%s';
|
|
||||||
''
|
|
||||||
}:$mailcap_path
|
|
||||||
|
|
||||||
set sidebar_visible
|
|
||||||
set sidebar_format = "%D%?F? [%F]?%* %?N?%N/?%S"
|
|
||||||
set sidebar_width = 25 # Plenty of space
|
|
||||||
set sidebar_divider_char = '│' # Pretty line-drawing character
|
|
||||||
set mail_check_stats
|
|
||||||
|
|
||||||
set index_format="%2C %Z %D %-15.15L %s"
|
|
||||||
set date_format="%F %R"
|
|
||||||
|
|
||||||
set sort = 'reverse-date'
|
|
||||||
set sleep_time = 0 # Pause 0 seconds for informational messages
|
|
||||||
set markers = no # Disables the `+` displayed at line wraps
|
|
||||||
set mark_old = no # Unread mail stay unread until read
|
|
||||||
set wait_key = no # mutt won't ask "press key to continue"
|
|
||||||
set fast_reply # skip to compose when replying
|
|
||||||
set forward_format = "Fwd: %s" # format of subject when forwarding
|
|
||||||
set reverse_name # reply as whomever it was to
|
|
||||||
set include=ask-no # don't include message in replies
|
|
||||||
auto_view text/html # automatically show html (mailcap uses lynx)
|
|
||||||
auto_view application/pgp-encrypted
|
|
||||||
alternative_order text/plain text/enriched text/html
|
|
||||||
|
|
||||||
set abort_noattach abort_noattach_regex="\<(attach|attached|attachments?|anbei|Anhang|angehängt)\>"
|
|
||||||
set attach_save_dir=/tmp
|
|
||||||
set fast_reply
|
|
||||||
|
|
||||||
set narrow_tree # narrow threads for more depth
|
|
||||||
|
|
||||||
bind index,pager B sidebar-toggle-visible # Use 'B' to switch the Sidebar on and off
|
|
||||||
bind index,pager \Ck sidebar-prev
|
|
||||||
bind index,pager \Cj sidebar-next
|
|
||||||
bind index,pager \Co sidebar-open
|
|
||||||
bind index,pager \Cp sidebar-prev-new
|
|
||||||
bind index,pager \Cn sidebar-next-new
|
|
||||||
|
|
||||||
macro index * <limit>~F\r
|
|
||||||
macro index + <limit>all\r
|
|
||||||
|
|
||||||
set query_command = "khard email --parsable %s"
|
|
||||||
bind editor <Tab> complete-query
|
|
||||||
bind editor ^T complete
|
|
||||||
|
|
||||||
set mail_check = 90
|
|
||||||
set timeout = 15
|
|
||||||
# set imap_check_subscribed
|
|
||||||
set use_from
|
|
||||||
|
|
||||||
|
|
||||||
set header_cache="~/.cache/mutt" message_cachedir="~/.cache/mutt"
|
|
||||||
|
|
||||||
source ${
|
|
||||||
pkgs.writeText "accounts.neomuttrc" ''
|
|
||||||
set realname = "Kierán Meinhardt"
|
|
||||||
account-hook . 'unset imap_user imap_pass smtp_user smtp_pass'
|
|
||||||
# set accordingly: postponed trash record
|
|
||||||
${
|
|
||||||
lib.concatStringsSep "\n\n" (lib.mapAttrsToList (name: account: let
|
|
||||||
imapRoot = "imaps://${account.user}@${account.imap}";
|
|
||||||
in ''
|
|
||||||
account-hook ${account.user}@${account.imap} 'set imap_user="${account.user}" imap_pass="${account.password}"'
|
|
||||||
account-hook ${account.user}@${account.smtp} 'set smtp_user="${account.user}" smtp_pass="${account.password}"'
|
|
||||||
folder-hook ${account.user}@${account.imap} 'set smtp_url="${account.smtpSettings "${account.user}@${account.smtp}"}" from="${account.address}" record="${imapRoot}/${account.folders.sent}" postponed="${imapRoot}/${account.folders.drafts}" trash="${imapRoot}/${account.folders.trash}"'
|
|
||||||
named-mailboxes "${name}←" "${imapRoot}" "${name}→" "${imapRoot}/${account.folders.sent}"
|
|
||||||
'')
|
|
||||||
emailAccounts)
|
|
||||||
}
|
|
||||||
''
|
|
||||||
}
|
|
||||||
|
|
||||||
set spoolfile="${mainMailbox}"
|
|
||||||
|
|
||||||
source ${
|
|
||||||
pkgs.writeText "colors.neomuttrc" ''
|
|
||||||
# Default index colors:
|
|
||||||
color index_number blue default
|
|
||||||
color index red default '.*'
|
|
||||||
color index_flags lightcyan default '.*'
|
|
||||||
color index_author yellow default '.*'
|
|
||||||
color index_subject default default '.*'
|
|
||||||
|
|
||||||
# New mail is boldened:
|
|
||||||
color index_author lightyellow default "~N"
|
|
||||||
color index_subject lightwhite default "~N"
|
|
||||||
|
|
||||||
# Flagged mail is highlighted:
|
|
||||||
color index_flags lightmagenta default '~F'
|
|
||||||
|
|
||||||
# Other colors and aesthetic settings:
|
|
||||||
mono bold bold
|
|
||||||
mono underline underline
|
|
||||||
mono error bold
|
|
||||||
mono indicator reverse
|
|
||||||
# color sidebar_flagged red black
|
|
||||||
mono sidebar_new bold
|
|
||||||
color error red default
|
|
||||||
color message cyan default
|
|
||||||
color search brightmagenta default
|
|
||||||
color hdrdefault lightblack default
|
|
||||||
color quoted green default
|
|
||||||
color quoted1 blue default
|
|
||||||
color quoted2 cyan default
|
|
||||||
color quoted3 yellow default
|
|
||||||
color quoted4 red default
|
|
||||||
color quoted5 brightred default
|
|
||||||
color signature lightblack default
|
|
||||||
color tree color235 default
|
|
||||||
|
|
||||||
# Regex highlighting:
|
|
||||||
color header red default "^(Date)"
|
|
||||||
color header yellow default "^(From)"
|
|
||||||
color header white default "^(B?CC)"
|
|
||||||
color header brightwhite default "^(Subject)"
|
|
||||||
color body cyan default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
|
|
||||||
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
|
|
||||||
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
|
|
||||||
color body red default "(BAD signature)|^gpg: BAD signature from.*"
|
|
||||||
color body brightgreen default "(Good signature)|^gpg: Good signature .*"
|
|
||||||
color body brightyellow default "^gpg: "
|
|
||||||
mono body bold "^gpg: Good signature"
|
|
||||||
mono body bold "^gpg: BAD signature from.*"
|
|
||||||
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
|
|
||||||
''
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
environment.systemPackages = [pkgs.neomutt];
|
|
||||||
environment.shellAliases =
|
|
||||||
lib.mapAttrs' (accountName: account:
|
|
||||||
lib.nameValuePair
|
|
||||||
"mua-${accountName}"
|
|
||||||
"${pkgs.neomutt}/bin/neomutt -F ${pkgs.writeText "neomuttrc-${accountName}" (neomuttConfig {"${accountName}" = accounts.${accountName};})}")
|
|
||||||
accounts
|
|
||||||
// {mua = "${pkgs.neomutt}/bin/neomutt -f ${mainMailbox}←";};
|
|
||||||
|
|
||||||
home-manager.users.me.xdg.configFile."neomutt/neomuttrc".text = neomuttConfig accounts;
|
|
||||||
}
|
|
||||||
132
lib/email.nix
132
lib/email.nix
@@ -1,92 +1,4 @@
|
|||||||
{
|
{lib, ...}: {
|
||||||
lib,
|
|
||||||
mainMailbox ? "posteo",
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
uni = {
|
|
||||||
user = "meinhark";
|
|
||||||
password = lib.strings.fileContents <secrets/eduroam/password>;
|
|
||||||
address = "kieran.felix.meinhardt@hu-berlin.de";
|
|
||||||
imap = "mailbox.cms.hu-berlin.de";
|
|
||||||
smtp = "mailhost.cms.hu-berlin.de";
|
|
||||||
smtpSettings = smtp: "smtp://${smtp}";
|
|
||||||
folders = {
|
|
||||||
drafts = "Drafts";
|
|
||||||
sent = "Sent";
|
|
||||||
trash = "Trash";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
uni-old = {
|
|
||||||
user = "meinhark";
|
|
||||||
password = lib.strings.fileContents <secrets/eduroam/password>;
|
|
||||||
address = "meinhark@informatik.hu-berlin.de";
|
|
||||||
imap = "mailbox.informatik.hu-berlin.de";
|
|
||||||
smtp = "mailhost.informatik.hu-berlin.de";
|
|
||||||
smtpSettings = smtp: "smtp://${smtp}";
|
|
||||||
folders = {
|
|
||||||
drafts = "Drafts";
|
|
||||||
sent = "Sent";
|
|
||||||
trash = "Trash";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
work-uni = {
|
|
||||||
user = "meinhaki";
|
|
||||||
password = lib.strings.fileContents <secrets/mail/meinhaki>;
|
|
||||||
address = "kieran.meinhardt@hu-berlin.de";
|
|
||||||
imap = "mailbox.cms.hu-berlin.de";
|
|
||||||
smtp = "mailhost.cms.hu-berlin.de";
|
|
||||||
smtpSettings = smtp: "smtp://${smtp}";
|
|
||||||
folders = {
|
|
||||||
drafts = "Drafts";
|
|
||||||
sent = "Sent";
|
|
||||||
trash = "Trash";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
work-admin = {
|
|
||||||
user = "dslalewa";
|
|
||||||
password = lib.strings.fileContents <secrets/mail/dslalewa>;
|
|
||||||
address = "admin.alew.vglsprwi@hu-berlin.de";
|
|
||||||
imap = "mailbox.cms.hu-berlin.de";
|
|
||||||
smtp = "mailhost.cms.hu-berlin.de";
|
|
||||||
smtpSettings = smtp: "smtp://${smtp}";
|
|
||||||
folders = {
|
|
||||||
drafts = "Drafts";
|
|
||||||
sent = "Sent";
|
|
||||||
trash = "Trash";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
uni-fsi = {
|
|
||||||
user = "fsklassp";
|
|
||||||
password = lib.strings.fileContents <secrets/mail/fsklassp>;
|
|
||||||
address = "fsklassp@hu-berlin.de";
|
|
||||||
imap = "mailbox.cms.hu-berlin.de";
|
|
||||||
smtp = "mailhost.cms.hu-berlin.de";
|
|
||||||
smtpSettings = smtp: "smtp://${smtp}";
|
|
||||||
folders = {
|
|
||||||
drafts = "Drafts";
|
|
||||||
sent = "Sent";
|
|
||||||
trash = "Trash";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
work-fysi = rec {
|
|
||||||
user = "kieran@fysi.tech";
|
|
||||||
address = user;
|
|
||||||
password = lib.strings.fileContents <secrets/mail/fastmail>;
|
|
||||||
imap = "imap.fastmail.com";
|
|
||||||
smtp = "smtp.fastmail.com";
|
|
||||||
smtpSettings = smtp: "smtps://${smtp}:465";
|
|
||||||
folders = {
|
|
||||||
drafts = "Drafts";
|
|
||||||
sent = "Sent";
|
|
||||||
trash = "Trash";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
cock = rec {
|
cock = rec {
|
||||||
user = "2210@cock.li";
|
user = "2210@cock.li";
|
||||||
address = user;
|
address = user;
|
||||||
@@ -100,46 +12,4 @@
|
|||||||
trash = "Trash";
|
trash = "Trash";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
"${mainMailbox}" = rec {
|
|
||||||
user = "kieran.meinhardt@posteo.net";
|
|
||||||
address = user;
|
|
||||||
password = lib.strings.fileContents <secrets/mail/posteo>;
|
|
||||||
imap = "posteo.de";
|
|
||||||
smtp = imap;
|
|
||||||
smtpSettings = smtp: "smtp://${smtp}";
|
|
||||||
folders = {
|
|
||||||
drafts = "Drafts";
|
|
||||||
sent = "Sent";
|
|
||||||
trash = "Trash";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
google-amro = rec {
|
|
||||||
user = "amroplay@gmail.com";
|
|
||||||
address = user;
|
|
||||||
password = lib.strings.fileContents <secrets/mail/gmail/amroplay>;
|
|
||||||
imap = "imap.gmail.com";
|
|
||||||
smtp = "smtp.gmail.com";
|
|
||||||
smtpSettings = smtp: "smtps://${smtp}:465";
|
|
||||||
folders = {
|
|
||||||
drafts = "[Gmail]/Drafts";
|
|
||||||
sent = "[Gmail]/Sent Mail";
|
|
||||||
trash = "[Gmail]/Bin";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
google-kieran = rec {
|
|
||||||
user = "kieran.meinhardt@gmail.com";
|
|
||||||
address = user;
|
|
||||||
password = lib.strings.fileContents <secrets/mail/gmail/kieran.meinhardt>;
|
|
||||||
imap = "imap.gmail.com";
|
|
||||||
smtp = "smtp.gmail.com";
|
|
||||||
smtpSettings = smtp: "smtps://${smtp}:465";
|
|
||||||
folders = {
|
|
||||||
drafts = "[Gmail]/Entwürfe";
|
|
||||||
sent = "[Gmail]/Gesendet";
|
|
||||||
trash = "[Gmail]/Papierkorb";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user