{ pkgs, config, osConfig, lib, ... }: let inherit (lib) mkIf mkEnableOption; cfg = config.home.programs.aerc; in { options = { home.programs.aerc.enable = mkEnableOption "Enables aerc"; }; config = mkIf cfg.enable { programs = { aerc = { enable = true; extraConfig = '' [compose] edit-headers = true file-picker-cmd = fzf --multi --query=%s reply-to-self = false [filters] .headers = ${pkgs.aerc}/libexec/aerc/filters/colorize text/calendar = ${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/libexec/aerc/filters/calendar text/html = ${pkgs.aerc}/libexec/aerc/filters/html | ${pkgs.aerc}/libexec/aerc/filters/colorize text/plain = ${pkgs.aerc}/libexec/aerc/filters/colorize text/* = ${pkgs.bat}/bin/bat -fP --file-name="$AERC_FILENAME " message/delivery-status = ${pkgs.aerc}/libexec/aerc/filters/colorize message/rfc822 = ${pkgs.aerc}/libexec/aerc/filters/colorize application/pdf = ${pkgs.zathura}/bin/zathura - application/x-sh = ${pkgs.bat}/bin/bat -fP -l sh audio/* = ${pkgs.mpv}/bin/mpv - [general] default-menu-cmd = ${pkgs.fzf}/bin/fzf enable-osc8 = true pgp-provider = gpg unsafe-accounts-conf = true [viewer] header-layout = From|To,Cc|Bcc,Date,Subject,DKIM+|SPF+|DMARC+ [ui] tab-title-account = {{.Account}} {{if .Unread}}({{.Unread}}){{end}} fuzzy-complete = true mouse-enabled = true msglist-scroll-offset = 5 show-thread-context = true thread-prefix-dummy = ┬ thread-prefix-first-child = ┬ thread-prefix-folded = + thread-prefix-has-siblings = ├ thread-prefix-indent = thread-prefix-last-sibling = ╰ thread-prefix-limb = ─ thread-prefix-lone = thread-prefix-orphan = ┌ thread-prefix-stem = │ thread-prefix-tip = thread-prefix-unfolded = threading-enabled = true spinner="◜,◠,◝,◞,◡,◟" ''; extraBinds = '' = :prev-tab = :next-tab ? = :help keys = :prompt 'Quit?' quit = :prompt 'Quit?' quit [messages] q = :prompt 'Quit?' quit j = :next k = :prev = :next 50% = :prev 50% = :next 100% = :prev 100% g = :select 0 G = :select -1 J = :next-folder K = :prev-folder = :mark -t:next = :exec checkmail = :view d = :choose -o y 'Really delete this message' delete-message a = :read:archive flat A = :unmark -a:mark -T:read:mark -T:archive flat s = :read:move Junk m = :compose r = :reply -aq $ = :term ! = :term | = :pipe / = :search \ = :change-tab notmuch:cf + = :query -n "{{.SubjectBase}} ({{.MessageId}})" -a notmuch thread:\{id:{{.MessageId}}\} n = :next-result N = :prev-result = :clear v = :split V = :vsplit [messages:folder=Drafts] = :recall [view] / = :toggle-key-passthrough/ q = :close o = :open S = :save | = :pipe a = :archive flat s = :move Junk = :open-link f = :forward r = :reply -aq H = :toggle-headers = :prev-part = :next-part J = :next K = :prev [view::passthrough] $noinherit = true $ex = = :toggle-key-passthrough [compose] $noinherit = true $ex = [compose::editor] $noinherit = true $ex = [compose::review] y = :send # Send n = :abort # Abort (discard message, no confirmation) v = :preview # Preview message p = :postpone # Postpone q = :choose -o d discard abort -o p postpone postpone # Abort or postpone e = :edit # Edit a = :menu -c 'fd . --type=f | fzf -m' attach # Add attachment d = :detach # Remove attachment s = :sign # PGP sign [terminal] $noinherit = true $ex = = :prev-tab = :next-tab ''; }; # notmuch = { # enable = true; # new = { # ignore = [ # ".uidvalidity" # ".mbsyncstate" # ".mbsyncstate.lock" # ".mbsyncstate.journal" # ".mbsyncstate.new" # ]; # tags = ["unread" "inbox" "new"]; # }; # }; # msmtp.enable = true; # mbsync.enable = true; }; accounts.email = { maildirBasePath = ".mail"; accounts.protonmail = { primary = true; realName = "adde"; address = "adam@cnst.dev"; aerc = { enable = true; extraAccounts = { source = "imap://adam%40cnst.dev@127.0.0.1:1143"; source-cred-cmd = "cat ${osConfig.age.secrets.mailpwd.path}"; outgoing = "smtp://adam%40cnst.dev@127.0.0.1:1025"; outgoing-cred-cmd = "cat ${osConfig.age.secrets.mailpwd.path}"; }; extraBinds.messages."r" = '':reply -aqA {{index (.Filename | split ("/")) 4}}''; extraBinds.view."r" = '':reply -aqA {{index (.Filename | split ("/")) 4}}''; }; }; }; # services = { # imapnotify.enable = true; # mbsync = { # enable = true; # postExec = "${lib.getExe' pkgs.maximbaz-scripts "indexmail"}"; # }; # }; # systemd.user.services.mbsync.Unit.After = ["sops-nix.service"]; # home.packages = with pkgs; [ # aerc # w3m # dante # ]; }; }