diff --git a/_config.xdg.dataHome/neomutt/cache/headers b/_config.xdg.dataHome/neomutt/cache/headers new file mode 100644 index 0000000..dbcc25e Binary files /dev/null and b/_config.xdg.dataHome/neomutt/cache/headers differ diff --git a/_config.xdg.dataHome/neomutt/cache/headers-lock b/_config.xdg.dataHome/neomutt/cache/headers-lock new file mode 100644 index 0000000..5bcc15e Binary files /dev/null and b/_config.xdg.dataHome/neomutt/cache/headers-lock differ diff --git a/home/default.nix b/home/default.nix index e405eab..f6be9d6 100644 --- a/home/default.nix +++ b/home/default.nix @@ -81,7 +81,7 @@ ./R.nix ./nvim ./fish.nix - ./mail.nix + ./mail ./tex.nix ./openconnect.nix ]; diff --git a/home/mail/bindings.neomuttrc b/home/mail/bindings.neomuttrc new file mode 100644 index 0000000..1667a89 --- /dev/null +++ b/home/mail/bindings.neomuttrc @@ -0,0 +1,93 @@ +# Navigation +bind index,pager k previous-entry +bind index,pager j next-entry +bind index,pager \Cu half-up +bind index,pager \Cd half-down +bind pager gg top +bind index gg first-entry +bind pager G bottom +bind index G last-entry +bind index,pager N search-opposite +bind index collapse-thread +bind index,pager gf change-folder + +# Read HTML +bind index,pager V noop +macro index,pager V "html" + +# Sidebar navigation +# bind index,pager \Cj sidebar-next +# bind index,pager \Ck sidebar-prev +# bind index,pager \Cl sidebar-open +# bind index,pager gl sidebar-toggle-visible + +# macro index,pager g8 "less" "Just testing" + +# compose +bind compose p postpone-message +bind compose P pgp-menu +# macro compose I "`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > "$tmpfile" && echo "$tmpfile"`" "attach image from clipboard" + +bind editor complete-query +bind editor ^T complete +bind index,pager a group-reply +bind index,pager m noop +macro index,pager mar "newn*" "Mark all read" + +# compose with signature management +macro index,pager @ "set signature=$my_signature" "Compose to sender" +macro index,pager c "set signature=$my_signature" "Compose new message" +macro index,pager r "unset signature" "Reply to message" +macro index,pager a "unset signature" "Reply all" +macro index,pager f "unset signature" "Forward message" + +# moving messages +macro index,pager J ":set resolve=no\nn:set resolve=yes\n$my_junk" \ + "Move to junk folder" +macro index,pager y ":set resolve=no\nn:set resolve=yes\n$mbox" \ + "Move message to the archive" +macro index,pager I "$spoolfile" "Move message to the inbox" + +# switch folders +# macro index,pager gi "$spoolfile" "Go to inbox" +macro index,pager g! "$spoolfile" "Go to inbox" +macro index,pager gd "$postponed" "Go to drafts" +# macro index,pager gs "$record" "Go to sent" +macro index,pager g< "$record" "Go to sent" +# macro index,pager ga "$mbox" "Go to archive" +macro index,pager g> "$mbox" "Go to archive" +macro index,pager gt "$trash" "Go to trash" +macro index,pager gj "$my_junk" "Go to junk" + +# accounts +macro index,pager gu "+gu/IMAP/Inbox" "Go to GU" +macro index,pager gp "+systemli/IMAP/Inbox" "Go to Systemli" +macro index,pager gm "+gmail/IMAP/Inbox" "Go to Gmail" +macro index,pager gk "+ks/IMAP/Inbox" "Go to KS" +macro index,pager gi "+ktiu/IMAP/Inbox" "Go to ktiu" +macro index,pager gf "+dkg/IMAP/Inbox" "Go to DKG" + +macro index,pager L "all\n" "Show all messages (undo limit)" + +macro index,pager go "mbsync -c ~/.config/mbsync/mbsyncrc $my_mbsync_acct && notmuch new" \ + "Run mbsync to sync mail for this account" + +macro index,pager g/ \ + "" \ + "mu find" + +macro index,pager A \ + "khard add-email --vcard-version=4.0" \ + "add the sender email address to khard" + +macro index,pager S \ + " ripmime -i - -d ~/tmp && rm ~/tmp/textfile*" \ + "save all non-text attachments using ripmime" + +macro index,pager gb \ + " urlscan" \ + "extract URLs out of a message" + +macro index,pager gO \ + "mbsync -ac ~/.config/mbsync/mbsyncrc && notmuch new" \ + "run mbsync to sync all mail" diff --git a/home/mail/config.neomuttrc b/home/mail/config.neomuttrc new file mode 100644 index 0000000..78ea42f --- /dev/null +++ b/home/mail/config.neomuttrc @@ -0,0 +1,151 @@ +# set mailcap_path = ~/.config/neomutt/mailcap +# set tmpdir = ~/.local/share/neomutt/tmp +set alias_file = ~/.local/share/neomutt/aliases.neomuttrc +set my_download_folder = ~/tmp +set folder = ~/.local/share/mail/imap/ + +# Caching +set header_cache = ~/.local/share/neomutt/cache/headers +set message_cachedir = ~/.local/share/neomutt/cache/bodies +set header_cache_backend = "lmdb" + +# Basic options +unset wait_key +set mbox_type = Maildir +# set delete +set mail_check_stats +unset confirm_append +unset beep +unset mark_old +set sleep_time = 0 +# set shell = /bin/bash + +# Sending +# set sendmail = "/home/till/.nix-profile/bin/sendmail -C /home/till/.config/msmtp/msmtprc" +set use_envelope_from +unset reverse_realname + +# Searching +# set nm_default_url = "notmuch:///home/till/.local/share/neomutt/mail/" + +# Multi-account setup +# source ~/.config/neomutt/accounts/dkg.neomuttrc +# source ~/.config/neomutt/accounts/gu.neomuttrc +# bind index,pager g noop + +# folder-hook $folder/gu/ source ~/.config/neomutt/accounts/gu.neomuttrc +# folder-hook $folder/systemli/ source ~/.config/neomutt/accounts/systemli.neomuttrc +# folder-hook $folder/ks/ source ~/.config/neomutt/accounts/ks.neomuttrc +# folder-hook $folder/gmail/ source ~/.config/neomutt/accounts/gmail.neomuttrc +# folder-hook $folder/ktiu/ source ~/.config/neomutt/accounts/ktiu.neomuttrc +# folder-hook $folder/dkg/ source ~/.config/neomutt/accounts/dkg.neomuttrc +# folder-hook $folder/papa/ source ~/.config/neomutt/accounts/papa.neomuttrc +# folder-hook . source ~/.config/neomutt/bindings.neomuttrc + + +# # Source config +# source ~/.config/neomutt/views.neomuttrc +# source ~/.config/neomutt/sidebar.neomuttrc +# source ~/.config/neomutt/colors.neomuttrc +# source ~/.config/neomutt/smime.neomuttrc +# source ~/.config/neomutt/pgp.neomuttrc +source $alias_file + +# Compose +set editor = "nvim -c 'call woof#init#Init()'" +set edit_headers +set forward_format = "Fwd: %s" +set forward_attachments +set fast_reply +set include +set forward_quote +unset recall +set resume_draft_files +set abort_noattach_regex = "(attach|enclosed|anbei|anhängen|angehängt|anhang|anhänge|hängt an)" +set abort_noattach = ask-yes +set mime_type_query_command = "file -b --mime-type %s" +set query_command= "khard email --parsable '%s'" + +# Status bar +set status_chars = "✔↻٪A" +set status_format = "— [ %r ] %f (%lB) %>— %m messages%?n? [ %n new ]?%?d? [ %d to delete ]?%?t? [ %t tagged ]? —" +unset help + +# Index +set index_format = "%-25.25F %<[y?%<[7d?%<[d?%[ %H:%M]&%[%a %H:%M]>&%[%d.%m. %Hh]>&%[%d.%m.%Y]> %Z %?X?▼ &?%s" +set strict_threads +set send_charset = "utf-8:iso-8859-1:us-ascii" +set charset = "utf-8" + +# sorting +set sort = threads +set sort_aux = reverse-last-date-received + +# Pager view +set pager_index_lines = 10 +set pager_context = 3 +set pager_stop +set smart_wrap +set menu_scroll +set tilde +unset markers +ignore * +unignore from: to: cc: bcc: date: subject: +unhdr_order * +hdr_order from: to: cc: bcc: date: subject: +alternative_order text/plain text/enriched text/html +auto_view text/html + +# Attachments +set rfc2047_parameters +set attach_save_dir = $my_download_folder + +## Indicator +color indicator brightwhite brightblack + +## Index +color index_flags brightmagenta default '.*' +color index_date cyan default + +## New mail +color index brightblack default '~N' + +## Header colors +color header brightblack default ".*" +color header brightgreen default "^(Subject)" +color header yellow default "^(From|To|CC|BCC)" +color header blue default "^Date" + +## Status +color status yellow default '\[ ↻ \]' +color status green default '\[ ✔ \]' +color status magenta default '\[ ٪ \]' +color status black default '\[ [0-9]+ new \]' +color status red default '\[ [0-9]+ to delete \]' + +## Mutt +color message cyan default +color error red default +color tilde black default + +## Pager +color normal default default +color attachment brightblack default +color search black yellow +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 cyan default +color underline black default + +## Email +color body blue default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses +color body blue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL +color body red default "(BAD signature)" +color body green default "(Good signature)" +color body brightblack default "^gpg: .*" +color body green default "^gpg: Good signature .*" +color body red default "^gpg: BAD signature from.*" diff --git a/home/mail/default.nix b/home/mail/default.nix index d4c2d53..b1ccd0d 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -1,35 +1,70 @@ { config, pkgs, ... }: { - accounts.email = { - maildirBasePath = "${config.xdg.dataHome}/mail/imap"; - accounts.ktiu = { - primary = true; - address = "till@ktiu.net"; - realName = "Till Straube"; - imap.host = "shorbut.ktiu.net"; - smtp.host = "shorbut.ktiu.net"; - userName = "till"; - neomutt.enable = true; - mbsync.enable = true; - passwordCommand = "secret-tool lookup server shorbut.ktiu.net account till"; - }; - }; + programs.msmtp.enable = true; programs.mbsync.enable = true; programs.neomutt = { enable = true; vimKeys = true; - binds = [ - { key = "V"; action = "noop"; map = ["index" "pager"]; } ]; - macros = [ - { key = "c"; action = "set signature=$my_signature"; map = ["index" "pager"]; } - ]; - extraConfig = builtins.readFile ./neomutt.conf; - # xdg.configFile."nvim/autocommmands.vim".source = ./autocommands.vim; - # xdg.configFile."nvim/ftplugin/markdown.vim".source = ./ftplugin/markdown.vim; - # xdg.configFile."nvim/ftplugin/r.vim".source = ./ftplugin/r.vim; - # xdg.configFile."nvim/ftplugin/rmd.vim".source = ./ftplugin/rmd.vim; - # xdg.configFile."nvim/syntax/rmd.vim".source = ./syntax/rmd.vim; + sort = "reverse-threads"; + changeFolderWhenSourcingAccount = false; + extraConfig = builtins.readFile ./config.neomttrc; + }; + xdg.configFile."neomutt/bindings.neomuttrc".source = ./bindings.neomuttrc; + accounts.email = { + maildirBasePath = "${config.xdg.dataHome}/mail/imap"; + accounts = { + ktiu = { + primary = true; + address = "till@ktiu.net"; + realName = "Till Straube"; + imap.host = "shorbut.ktiu.net"; + smtp.host = "shorbut.ktiu.net"; + userName = "till"; + signature.text = '' + Till Straube + ''; + signature.showSignature = "append"; + neomutt.enable = true; + neomutt.extraConfig = '' + unalternates * + alternates @ktiu.net$ + set reverse_name + # set my_signature = {signature} + color status yellow default + ''; + mbsync.enable = true; + msmtp.enable = true; + passwordCommand = "secret-tool lookup server shorbut.ktiu.net account till"; + }; + gu = { + address = "straube@geo.uni-frankfurt.de"; + realName = "Till Straube"; + imap.host = "imap.server.uni-frankfurt.de"; + smtp.host = "smtpauth.rz.uni-frankfurt.de"; + userName = "tstraube"; + signature = { + text = '' + Till Straube + ''; + showSignature = "append"; + }; + neomutt.enable = true; + neomutt.extraConfig = '' + unalternates * + alternates ^straube@em.uni-frankfurt.de$ \ + ^tstraube@em.uni-frankfurt.de$ \ + ^tstraube@rz.uni-frankfurt.de$ \ + ^tstraube@uni-frankfurt.de$ + unset reverse_name + # set my_signature = {signature} + color status blue default + ''; + mbsync.enable = true; + msmtp.enable = true; + passwordCommand = "secret-tool lookup server imap.server.uni-frankfurt.de account tstraube"; + }; + }; }; } diff --git a/home/mail/neomutt.conf b/home/mail/neomutt.conf deleted file mode 100644 index af04619..0000000 --- a/home/mail/neomutt.conf +++ /dev/null @@ -1,51 +0,0 @@ -# set mailcap_path = ~/.config/neomutt/mailcap -# set tmpdir = ~/.local/share/neomutt/tmp -set alias_file = ${config.xdg.dataHome}/neomutt/aliases.neomuttrc -# set my_download_folder = ~/tmp - -# Caching -set header_cache = ${config.xdg.dataHome}/neomutt/cache/headers -set message_cachedir = ${config.xdg.dataHome}/neomutt/cache/bodies -set header_cache_backend = "lmdb" - -# Basic options -unset wait_key -set mbox_type = Maildir -# set delete -set mail_check_stats -unset confirm_append -unset beep -unset mark_old -set sleep_time = 0 -# set shell = /bin/bash - -# Sending -# set sendmail = "/home/till/.nix-profile/bin/sendmail -C /home/till/.config/msmtp/msmtprc" -set use_envelope_from -unset reverse_realname - -# Searching -# set nm_default_url = "notmuch:///home/till/.local/share/neomutt/mail/" - -# Multi-account setup -# source ~/.config/neomutt/accounts/dkg.neomuttrc -# source ~/.config/neomutt/accounts/gu.neomuttrc -# bind index,pager g noop - -# folder-hook $folder/gu/ source ~/.config/neomutt/accounts/gu.neomuttrc -# folder-hook $folder/systemli/ source ~/.config/neomutt/accounts/systemli.neomuttrc -# folder-hook $folder/ks/ source ~/.config/neomutt/accounts/ks.neomuttrc -# folder-hook $folder/gmail/ source ~/.config/neomutt/accounts/gmail.neomuttrc -# folder-hook $folder/ktiu/ source ~/.config/neomutt/accounts/ktiu.neomuttrc -# folder-hook $folder/dkg/ source ~/.config/neomutt/accounts/dkg.neomuttrc -# folder-hook $folder/papa/ source ~/.config/neomutt/accounts/papa.neomuttrc -# folder-hook . source ~/.config/neomutt/bindings.neomuttrc - - -# # Source config -# source ~/.config/neomutt/views.neomuttrc -# source ~/.config/neomutt/sidebar.neomuttrc -# source ~/.config/neomutt/colors.neomuttrc -# source ~/.config/neomutt/smime.neomuttrc -# source ~/.config/neomutt/pgp.neomuttrc -# source $alias_file