diff --git a/configs/default.nix b/configs/default.nix index 73bc3e7..78b17d7 100644 --- a/configs/default.nix +++ b/configs/default.nix @@ -171,10 +171,9 @@ in mkdir "$1" && cd "$1" ''; in { + "ß" = "${pkgs.utillinux}/bin/setsid"; cat = "${pkgs.bat}/bin/bat --style=plain"; chromium-incognito = "chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito"; - pbcopy = "${pkgs.xclip}/bin/xclip -selection clipboard -in"; - pbpaste = "${pkgs.xclip}/bin/xclip -selection clipboard -out"; cp = "cp -i"; dig = "dig +short"; ip = "${pkgs.iproute}/bin/ip -c"; @@ -185,18 +184,20 @@ in mv = "mv -i"; nixi = "nix repl ''"; ns = "nix-shell --run zsh"; - s = "${pkgs.systemd}/bin/systemctl"; - us = "${pkgs.systemd}/bin/systemctl --user"; o = "${pkgs.xdg_utils}/bin/xdg-open"; + pbcopy = "${pkgs.xclip}/bin/xclip -selection clipboard -in"; + pbpaste = "${pkgs.xclip}/bin/xclip -selection clipboard -out"; rm = "rm -i"; + s = "${pkgs.systemd}/bin/systemctl"; take = "source ${take}"; tmux = "${pkgs.tmux}/bin/tmux -2"; - yt = "${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link - yta = "${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -xic"; # Download with audio tree = "${pkgs.exa}/bin/exa --tree"; + us = "${pkgs.systemd}/bin/systemctl --user"; wcd = "source ${wcd}"; weechat = "${pkgs.openssh}/bin/ssh kmein@prism.r -t tmux attach"; where = "source ${where}"; + yt = "${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link + yta = "${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -xic"; # Download with audio }; } { diff --git a/configs/mail.nix b/configs/mail.nix index 20fa4ba..fc8565f 100644 --- a/configs/mail.nix +++ b/configs/mail.nix @@ -5,8 +5,8 @@ in { environment.systemPackages = [ pkgs.neomutt ]; - home-manager.users.me = { - accounts.email.maildirBasePath = "${config.users.users.me.home}/mail"; + home-manager.users.me = let maildir = "${config.users.users.me.home}/mail"; in { + accounts.email.maildirBasePath = maildir; accounts.email.accounts = { kieran-gmail = { primary = true; @@ -15,12 +15,24 @@ in realName = config.niveum.user.name; userName = "kieran.meinhardt"; passwordCommand = pass "mail/kieran.meinhardt@gmail.com"; - neomutt.enable = true; + neomutt = { + enable = true; + extraConfig = '' + macro index \' "+[Gmail]/Alle Nachrichten" "Archive" + ''; + }; mbsync = { enable = true; create = "both"; + expunge = "both"; + }; + folders = { + drafts = "[Gmail]/Entw&APw-rfe"; + sent = "[Gmail]/Gesendet"; + trash = "[Gmail]/Papierkorb"; }; msmtp.enable = true; + notmuch.enable = false; }; hu-berlin = { primary = false; @@ -38,39 +50,138 @@ in port = 993; tls.enable = true; }; - neomutt.enable = true; + neomutt = { + enable = true; + extraConfig = '' + macro index \' "Archives" "Archive" + ''; + }; mbsync = { enable = true; create = "both"; + expunge = "both"; }; msmtp.enable = true; - - # notmuch.enable = true; + notmuch.enable = false; }; }; programs.neomutt = { enable = true; sidebar.enable = true; - sort = "threads"; # or reverse-date + sort = "reverse-threads"; # or reverse-threads vimKeys = true; checkStatsInterval = 60; settings = { + attribution = "\"%n (%a), %d:\""; date_format = "\"%Y-%m-%d %H:%M\""; - mime_forward = "yes"; # forward attachments with mail + envelope_from = "yes"; fast_reply = "yes"; # skip to compose when forwarding - forward_format = "\"Fwd: %s\""; # format of subject when forwarding + fcc_attach = "no"; # save attachments with the body + forward_format = "\"→ %s\""; # format of subject when forwarding forward_quote = "yes"; # include message in forwards + include = "yes"; # include message in replies + # index_format = "\"%2C %Z %?X?A& ? %D %-15.15F %s (%-4.4c)\""; + index_format= "\"${pkgs.writeDash "mutt-index" '' + # http://www.mutt.org/doc/manual/#formatstrings + recipent="$(echo $1 | sed 's/[^,]*<\([^>]*\)[^,]*/ \1/g')" + # output to mutt + # V + echo "%4C %Z %?GI?%GI& ? %[%y-%m-%d] %-20.20a %?M?(%3M)& ? %s %> $recipent %?g?%g?%" + # args to mutt-index dash script + # V + ''} %r |\""; + mail_check = "60"; # to avoid lags using IMAP with some email providers (yahoo for example) + mail_check_stats = "yes"; + mark_old = "no"; # unread mail stay unread until read + markers = "no"; # disables the `+` displayed at line wraps + mime_forward = "yes"; # forward attachments with mail + # nm_default_uri = "notmuch://${maildir}"; + # nm_record = "yes"; + # nm_record_tags = "-inbox archive"; + virtual_spoolfile = "yes"; # enable virtual folders reverse_name = "yes"; # reply as whomever it was to - include = "no"; # dont include message in replies + rfc2047_parameters = "yes"; # decode RFC2047-encoded attachments + sleep_time = "0"; # pause 0 seconds for informational messages + use_from = "yes"; + wait_key = "no"; # mutt won't ask "press key to continue" mailcap_path = toString (pkgs.writeText "mailcap" '' - text/html; ${pkgs.elinks}/bin/elinks -dump; copiousoutput; + text/plain; $EDITOR %s ; + text/html; ${pkgs.lynx} -assume_charset=%{charset} -display_charset=utf-8 -dump %s; nametemplate=%s.html; copiousoutput; + image/*; ${pkgs.sxiv}/bin/sxiv %s ; + video/*; ${pkgs.utillinux}/bin/setsid ${pkgs.mpv}/bin/mpv --quiet %s &; copiousoutput + application/*; ${pkgs.xdg_utils}/bin/xdg-open %s ; ''); }; - # binds = [ {map = null; key = null; action = null; }]; + macros = [ + { action = ".."; map = "browser"; key = "h"; } # go to parent directory + { action = "T~UN." ; map = "index"; key = "\\Cr"; } # mark all messages read + { action = "mbsync -a"; map = "index"; key = "O"; } # run mbsync to sync all mail + { action = "all\\n"; map = "index"; key = "A"; } # show all messages (undo limit) + # { action = "=Archiveecho 'Saved to Archive'"; map = "index"; key = ",a"; } + { + action = "unset wait_keyread -p 'Enter a search term to find with notmuch: ' x; echo \\$x >~/.cache/mutt_terms~i \\\"\\`notmuch search --output=messages \$(cat ~/.cache/mutt_terms) | head -n 600 | perl -le '@a=<>;s/\^id:// for@a;$,=\"|\";print@a' | perl -le '@a=<>; chomp@a; s/\\+/\\\\+/ for@a;print@a' \\`\\\""; + map = "index"; + key = "\\Cf"; + } + ]; + binds = [ + { action = "complete-query"; key = ""; map = "editor"; } + { action = "display-message"; key = "l"; map = "index"; } + { action = "exit"; key = "h"; map = "attach"; } + { action = "exit"; key = "h"; map = "pager"; } + { action = "group-reply"; key = "R"; map = "index"; } + { action = "group-reply"; key = "R"; map = "pager"; } + { action = "limit"; key = "L"; map = "index"; } + { action = "next-entry"; key = "j"; map = "index"; } + { action = "next-line"; key = "\\005"; map = "pager"; } # mouse wheel + { action = "next-undeleted"; key = "\\005"; map = "index"; } # mouse wheel + { action = "noop"; key = ""; map = "editor"; } + { action = "noop"; key = "\\Cf"; map = "index"; } + { action = "noop"; key = "h"; map = "index"; } + { action = "noop"; key = "i"; map = "index"; } + { action = "noop"; key = "i"; map = "pager"; } + { action = "previous-entry"; key = "k"; map = "index"; } + { action = "previous-line"; key = "\\031"; map = "pager"; } # mouse wheel + { action = "previous-undeleted"; key = "\\031"; map = "index"; } # mouse wheel + { action = "select-entry"; key = "l"; map = "browser"; } + { action = "sidebar-next"; key = "\\Cj"; map = "index"; } + { action = "sidebar-next"; key = "\\Cj"; map = "pager"; } + { action = "sidebar-next-new"; key = "\\Cn"; map = "index"; } + { action = "sidebar-next-new"; key = "\\Cn"; map = "pager"; } + { action = "sidebar-open"; key = "\\Co"; map = "index"; } + { action = "sidebar-open"; key = "\\Co"; map = "pager"; } + { action = "sidebar-prev"; key = "\\Ck"; map = "index"; } + { action = "sidebar-prev"; key = "\\Ck"; map = "pager"; } + { action = "sidebar-prev-new"; key = "\\Cp"; map = "index"; } + { action = "sidebar-prev-new"; key = "\\Cp"; map = "pager"; } + { action = "sidebar-toggle-visible"; key = "B"; map = "index"; } + { action = "sidebar-toggle-visible"; key = "B"; map = "pager"; } + { action = "sync-mailbox"; key = "S"; map = "index"; } + { action = "sync-mailbox"; key = "S"; map = "pager"; } + { action = "tag-entry"; key = ""; map = "index"; } + { action = "undelete-message"; key = "U"; map = "index"; } + { action = "view-attachments"; key = "l"; map = "pager"; } + { action = "view-mailcap"; key = ""; map = "attach"; } + { action = "view-mailcap"; key = "l"; map = "attach"; } + { action = "view-raw-message"; key = "H"; map = "index"; } + { action = "view-raw-message"; key = "H"; map = "pager"; } + ]; extraConfig = '' + auto_view text/html # automatically show html + alternative_order text/plain text/enriched text/html + + # virtual-mailboxes "INBOX" "notmuch://?query=tag:inbox" + # virtual-mailboxes "Unread" "notmuch://?query=tag:unread" + # virtual-mailboxes "TODO" "notmuch://?query=tag:TODO" + # virtual-mailboxes "Starred" "notmuch://?query=tag:*" + # virtual-mailboxes "Archive" "notmuch://?query=tag:archive" + # virtual-mailboxes "Sent" "notmuch://?query=tag:sent" + # virtual-mailboxes "Junk" "notmuch://?query=tag:junk" + # virtual-mailboxes "All" "notmuch://?query=*" + # Default index colors: - color index yellow default '.*' + # color index yellow default '.*' color index_author red default '.*' color index_number blue default color index_subject cyan default '.*' @@ -145,179 +256,6 @@ in programs.msmtp.enable = true; programs.mbsync.enable = true; - - /* - programs.notmuch.enable = true; - - home.file = { - ".muttrc".text = '' - # read html mail - auto_view text/html - set mailcap_path = ${pkgs.writeText "mailcap" "text/html; ${pkgs.elinks}/bin/elinks -dump ; copiousoutput;"} - - set nm_default_uri="notmuch://$HOME/Maildir" - set nm_record = yes - set nm_record_tags = "-inbox me archive" - set virtual_spoolfile=yes - - set sendmail=${pkgs.writers.writeDash "msmtp" '' - ${pkgs.coreutils}/bin/tee >(${pkgs.notmuch}/bin/notmuch insert --create-folder +sent) \ - | ${pkgs.msmtp}/bin/msmtpq "$@" - ''} - - # This file contains all of mutt-wizard's default settings. - # mutt-wizard will have this file sourced from your muttrc. - # In the interest of seamless updating, do not edit this file. - # If you want to override any settings, set those in your muttrc. - set date_format="%y-%m-%d %I:%M%p" - set index_format="%2C %Z %?X?A& ? %D %-15.15F %s (%-4.4c)" - set sort = 'reverse-date' - set rfc2047_parameters = yes - 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 mime_forward = yes # attachments are forwarded with mail - set wait_key = no # mutt won't ask "press key to continue" - set fast_reply # skip to compose when replying - set fcc_attach # save attachments with the body - set forward_format = "Fwd: %s" # format of subject when forwarding - set forward_quote # include message in forwards - set reverse_name # reply as whomever it was to - set include # include message in replies - set mail_check=60 # to avoid lags using IMAP with some email providers (yahoo for example) - auto_view text/html # automatically show html (mailcap uses w3m) - auto_view application/pgp-encrypted - alternative_order text/plain text/enriched text/html - bind index,pager i noop - bind index,pager g noop - bind index \Cf noop - - # General rebindings - bind index j next-entry - bind index k previous-entry - bind attach view-mailcap - bind attach l view-mailcap - bind editor noop - bind index G last-entry - bind index gg first-entry - bind pager,attach h exit - bind pager j next-line - bind pager k previous-line - bind pager l view-attachments - bind index D delete-message - bind index U undelete-message - bind index L limit - bind index h noop - bind index l display-message - bind index tag-entry - #bind browser h goto-parent - macro browser h '..' "Go to parent folder" - bind index,pager H view-raw-message - bind browser l select-entry - bind pager,browser gg top-page - bind pager,browser G bottom-page - bind index,pager,browser d half-down - bind index,pager,browser u half-up - bind index,pager S sync-mailbox - bind index,pager R group-reply - bind index \031 previous-undeleted # Mouse wheel - bind index \005 next-undeleted # Mouse wheel - bind pager \031 previous-line # Mouse wheel - bind pager \005 next-line # Mouse wheel - bind editor complete-query - - macro index \Cr "T~UN." "mark all messages as read" - macro index O "mbsync -a" "run mbsync to sync all mail" - macro index \Cf "unset wait_keyread -p 'Enter a search term to find with notmuch: ' x; echo \$x >~/.cache/mutt_terms~i \"\`notmuch search --output=messages \$(cat ~/.cache/mutt_terms) | head -n 600 | perl -le '@a=<>;s/\^id:// for@a;$,=\"|\";print@a' | perl -le '@a=<>; chomp@a; s/\\+/\\\\+/ for@a;print@a' \`\"" "show only messages matching a notmuch pattern" - macro index A "all\n" "show all messages (undo limit)" - - # Sidebar mappings - set sidebar_visible = yes - set sidebar_width = 20 - set sidebar_short_path = yes - set sidebar_next_new_wrap = yes - set mail_check_stats - set sidebar_format = '%B%?F? [%F]?%* %?N?%N/? %?S?%S?' - 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 - bind index,pager B sidebar-toggle-visible - - # Default index colors: - color index yellow default '.*' - color index_author red default '.*' - color index_number blue default - color index_subject cyan default '.*' - - # New mail is boldened: - color index brightyellow black "~N" - color index_author brightred black "~N" - color index_subject brightcyan black "~N" - - # Tagged mail is highlighted: - color index brightyellow blue "~T" - color index_author brightred blue "~T" - color index_subject brightcyan blue "~T" - - # Other colors and aesthetic settings: - mono bold bold - mono underline underline - mono indicator reverse - mono error bold - color normal default default - color indicator brightblack white - color sidebar_highlight red default - color sidebar_divider brightblack black - color sidebar_flagged red black - color sidebar_new green black - color normal brightyellow default - color error red default - color tilde black default - color message cyan default - color markers red white - color attachment white default - color search brightmagenta default - color status brightyellow black - color hdrdefault brightgreen 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 brightgreen default - color bold black default - color underline black default - color normal default default - - # Regex highlighting: - color header blue default ".*" - color header brightmagenta default "^(From)" - color header brightcyan default "^(Subject)" - color header brightwhite default "^(CC|BCC)" - color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses - color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL - color body green default "\`[^\`]*\`" # Green text between ` and ` - color body brightblue default "^# \.*" # Headings as bold blue - color body brightcyan default "^## \.*" # Subheadings as bold cyan - color body brightgreen default "^### \.*" # Subsubheadings as bold green - color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow - color body brightcyan default "[;:][-o][)/(|]" # emoticons - color body brightcyan default "[;:][)(|]" # emoticons - color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon? - color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon? - color body red default "(BAD signature)" - color body cyan default "(Good signature)" - color body brightblack default "^gpg: Good signature .*" - color body brightyellow default "^gpg: " - color body brightyellow red "^gpg: BAD signature from.*" - 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<>\"]" - ''; - }; - */ + programs.notmuch.enable = false; }; }