diff options
| author | Stefan Weigl-Bosker <stefan@s00.xyz> | 2025-06-06 17:16:55 -0400 |
|---|---|---|
| committer | Stefan Weigl-Bosker <stefan@s00.xyz> | 2025-06-06 17:16:55 -0400 |
| commit | 442df7a3962662458c8297bc3db313be79462c9b (patch) | |
| tree | b33615f9e543823e08272abc3c1bb82fd839ae62 | |
| parent | 6a7337ab1ce0b1e5bf89600d157c315709907781 (diff) | |
| download | home-442df7a3962662458c8297bc3db313be79462c9b.tar.gz | |
modules/aerc: init
| -rw-r--r-- | modules/aerc.nix | 150 | ||||
| -rw-r--r-- | modules/email/default.nix | 3 | ||||
| -rw-r--r-- | modules/global.nix | 1 |
3 files changed, 154 insertions, 0 deletions
diff --git a/modules/aerc.nix b/modules/aerc.nix new file mode 100644 index 0000000..f799588 --- /dev/null +++ b/modules/aerc.nix @@ -0,0 +1,150 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.modules.aerc; +in +{ + options.modules.aerc = { + enable = lib.mkEnableOption "aerc"; + }; + config = lib.mkIf cfg.enable { + programs.aerc = { + enable = true; + extraConfig = { + general = { + unsafe-accounts-conf = true; + default-menu-cmd = "fzf --tmux"; + }; + ui.sidebar-width = 0; + filters = { + "text/plain" = "colorize"; + }; + viewer = { + pager = "nvim +Man!"; + }; + }; + extraBinds = { + global = { + "\\[t" = ":prev-tab<Enter>"; + "\\]t" = ":next-tab<Enter>"; + "<C-t>" = ":term<Enter>"; + "?" = ":help keys<Enter>"; + "<C-c>" = ":prompt 'Quit?' quit<Enter>"; + "<C-q>" = ":prompt 'Quit?' quit<Enter>"; + "<C-z>" = ":suspend<Enter>"; + }; + + "messages:folder=Drafts"."<Enter>" = ":recall<Enter>"; + messages = { + /*** CUSTOM SECTION ***/ + "n" = ":next<Enter>"; + "e" = ":prev<Enter>"; + N = ":next-folder<enter>"; + E = ":prev-folder<enter>"; + j = ":next-result<enter>"; + J = ":prev-result<enter>"; + /*** ***/ + g = ":select 0<Enter>"; + G = ":select -1<Enter>"; + + "T" = ":toggle-threads<Enter>"; + "zc" = ":fold<Enter>"; + "zo" = ":unfold<Enter>"; + "za" = ":fold -t<Enter>"; + "zM" = ":fold -a<Enter>"; + "zR" = ":unfold -a<Enter>"; + "<tab>" = ":fold -t<Enter>"; + "<Enter>" = ":view<Enter>"; + "d" = ":choose -o y 'Really delete this message' delete-message<Enter>"; + "D" = ":delete<Enter>"; + "a" = ":archive flat<Enter>"; + "A" = ":unmark -a<Enter>:mark -T<Enter>:archive flat<Enter>"; + "C" = ":compose<Enter>"; + "b" = ":bounce<space>"; + + "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>"; + "<Esc>" = ":clear<Enter>"; + + "s" = ":split<Enter>"; + "S" = ":vsplit<Enter>"; + + "pl" = ":patch list<Enter>"; + "pa" = ":patch apply <Tab>"; + "pd" = ":patch drop <Tab>"; + "pb" = ":patch rebase<Enter>"; + "pt" = ":patch term<Enter>"; + "ps" = ":patch switch <Tab>"; + }; + view = { + "/" = ":toggle-key-passthrough<Enter>/"; + "q" = ":close<Enter>"; + "O" = ":open<Enter>"; + "o" = ":open<Enter>"; + "S" = ":save<space>"; + "|" = ":pipe<space>"; + "D" = ":delete<Enter>"; + "A" = ":archive flat<Enter>"; + + "<C-y>" = ":copy-link <space>"; + "<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-e>" = ":prev-part<Enter>"; + "<C-n>" = ":next-part<Enter>"; + "N" = ":next<Enter>"; + "E" = ":prev<Enter>"; + }; + compose = { + "$noinherit" = "true"; + "$ex" = "<C-x>"; + "$complete" = "<C-o>"; + "n" = ":next<Enter>"; + "e" = ":prev<Enter>"; + "<C-Left>" = ":switch-account -p<Enter>"; + "<C-Right>" = ":switch-account -n<Enter>"; + "<tab>" = ":next-field<Enter>"; + "<backtab>" = ":prev-field<Enter>"; + "<C-p>" = ":prev-tab<Enter>"; + "<C-PgUp>" = ":prev-tab<Enter>"; + "<C-n>" = ":next-tab<Enter>"; + "<C-PgDn>" = ":next-tab<Enter>"; + }; + "compose::review" = { + "y" = ":send<Enter>"; + "n" = ":abort<Enter>"; + "s" = ":sign<Enter>"; + "x" = ":encrypt<Enter>"; + "v" = ":preview<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>"; + }; + }; + }; + }; +} + diff --git a/modules/email/default.nix b/modules/email/default.nix index e3566c2..bcbc21c 100644 --- a/modules/email/default.nix +++ b/modules/email/default.nix @@ -16,6 +16,9 @@ in passwordCommand = "${pkgs.pass}/bin/pass show email/stefan@s00.xyz"; aerc = { enable = true; + extraAccounts = { + default = "INBOX"; + }; }; imap = { host = "imap.s00.xyz"; diff --git a/modules/global.nix b/modules/global.nix index 72b29cf..e99b3e2 100644 --- a/modules/global.nix +++ b/modules/global.nix @@ -46,6 +46,7 @@ in wrapWithNixGL = cfg.notNixOS; }; email.enable = true; + aerc.enable = true; zsh.enable = true; tmux.enable = true; fzf.enable = true; |