aboutsummaryrefslogtreecommitdiffstats
path: root/modules/communication/neomutt
diff options
context:
space:
mode:
Diffstat (limited to 'modules/communication/neomutt')
-rw-r--r--modules/communication/neomutt/.neomuttrc7
-rw-r--r--modules/communication/neomutt/account/.muttrc2
-rw-r--r--modules/communication/neomutt/account/default.nix2
-rw-r--r--modules/communication/neomutt/account/flavors/gmail/.muttrc2
-rw-r--r--modules/communication/neomutt/account/flavors/gmail/default.nix (renamed from modules/communication/neomutt/account/flavors/gmail.nix)5
-rw-r--r--modules/communication/neomutt/account/sync-channel.nix13
-rw-r--r--modules/communication/neomutt/default.nix24
-rw-r--r--modules/communication/neomutt/mailcap6
8 files changed, 33 insertions, 28 deletions
diff --git a/modules/communication/neomutt/.neomuttrc b/modules/communication/neomutt/.neomuttrc
index 3ed08f9..2f7ef00 100644
--- a/modules/communication/neomutt/.neomuttrc
+++ b/modules/communication/neomutt/.neomuttrc
@@ -1,3 +1,10 @@
+# Read messages in Neovim. `-` makes Neovim read the message from
+# stdin and -R prevents accidental edits to message content.
+set pager = "@@PAGER@@ -R -n +'setlocal nolist | silent! 1,2g/^$/delete _ | nohlsearch | setlocal nomodified nomodifiable' -"
+# Return directly to the index when Neovim exits and do not prepend
+# NeoMutt’s pager status line to the message passed to Neovim.
+set noprompt_after
+set pager_format = ""
# Base16 OneDark Dark terminal colors for neomutt
# Each column in the index receives a distinct color to keep the UI organized.
diff --git a/modules/communication/neomutt/account/.muttrc b/modules/communication/neomutt/account/.muttrc
new file mode 100644
index 0000000..2f8c9f2
--- /dev/null
+++ b/modules/communication/neomutt/account/.muttrc
@@ -0,0 +1,2 @@
+macro index,pager gs "<enter-command>set my_wait_key=$wait_key wait_key=no<enter><sync-mailbox><shell-escape>neomutt-sync @@QUICK_CHANNEL@@<enter><sync-mailbox><enter-command>set wait_key=$my_wait_key<enter>"
+macro index,pager gS "<enter-command>set my_wait_key=$wait_key wait_key=no<enter><sync-mailbox><shell-escape>neomutt-sync @@FULL_CHANNEL@@<enter><sync-mailbox><enter-command>set wait_key=$my_wait_key<enter>"
diff --git a/modules/communication/neomutt/account/default.nix b/modules/communication/neomutt/account/default.nix
index 5c0f8bf..e2d92eb 100644
--- a/modules/communication/neomutt/account/default.nix
+++ b/modules/communication/neomutt/account/default.nix
@@ -9,8 +9,8 @@
type = lib.types.attrsOf (
lib.types.submodule {
imports = [
+ ./flavors/gmail
./options.nix
- ./flavors/gmail.nix
./sync-channel.nix
];
}
diff --git a/modules/communication/neomutt/account/flavors/gmail/.muttrc b/modules/communication/neomutt/account/flavors/gmail/.muttrc
new file mode 100644
index 0000000..c87bba0
--- /dev/null
+++ b/modules/communication/neomutt/account/flavors/gmail/.muttrc
@@ -0,0 +1,2 @@
+mailboxes =Inbox ="[Gmail]/Drafts" ="[Gmail]/Sent Mail" ="[Gmail]/Spam" ="[Gmail]/Trash"
+unset record
diff --git a/modules/communication/neomutt/account/flavors/gmail.nix b/modules/communication/neomutt/account/flavors/gmail/default.nix
index 9cb51b2..66d7db3 100644
--- a/modules/communication/neomutt/account/flavors/gmail.nix
+++ b/modules/communication/neomutt/account/flavors/gmail/default.nix
@@ -30,10 +30,7 @@
};
};
- neomutt.extraConfig = lib.mkBefore ''
- mailboxes =Inbox ="[Gmail]/Drafts" ="[Gmail]/Sent Mail" ="[Gmail]/Spam" ="[Gmail]/Trash"
- unset record
- '';
+ neomutt.extraConfig = lib.mkBefore (builtins.readFile ./.muttrc);
notmuch.neomutt.virtualMailboxes = lib.mkDefault [
{
diff --git a/modules/communication/neomutt/account/sync-channel.nix b/modules/communication/neomutt/account/sync-channel.nix
index 7e538f2..6f3bd54 100644
--- a/modules/communication/neomutt/account/sync-channel.nix
+++ b/modules/communication/neomutt/account/sync-channel.nix
@@ -3,7 +3,7 @@
lib,
name,
...
-}@inputs:
+}:
let
mbsyncNamesFromName = (import ../lib.nix { inherit lib; }).mbsyncNamesFromName;
@@ -14,9 +14,12 @@ in
let
mbsyncNames = mbsyncNamesFromName name;
in
- ''
- macro index,pager gs "<enter-command>set my_wait_key=$wait_key wait_key=no<enter><sync-mailbox><shell-escape>neomutt-sync ${mbsyncNames.channels.quick}<enter><sync-mailbox><enter-command>set wait_key=$my_wait_key<enter>"
- macro index,pager gS "<enter-command>set my_wait_key=$wait_key wait_key=no<enter><sync-mailbox><shell-escape>neomutt-sync ${mbsyncNames.channels.full}<enter><sync-mailbox><enter-command>set wait_key=$my_wait_key<enter>"
- '';
+ builtins.replaceStrings
+ [ "@@QUICK_CHANNEL@@" "@@FULL_CHANNEL@@" ]
+ [
+ mbsyncNames.channels.quick
+ mbsyncNames.channels.full
+ ]
+ (builtins.readFile ./.muttrc);
};
}
diff --git a/modules/communication/neomutt/default.nix b/modules/communication/neomutt/default.nix
index 84e6c61..b9f22e0 100644
--- a/modules/communication/neomutt/default.nix
+++ b/modules/communication/neomutt/default.nix
@@ -79,14 +79,9 @@ in
xdg.mimeApps.defaultApplications = {
"x-scheme-handler/mailto" = "neomutt.desktop";
};
- xdg.configFile."neomutt/mailcap".text = ''
- text/html; ${lib.getExe config.web.chawan.package} '%s'; nametemplate=%s.html
- image/*; xdg-open '%s' &
- application/pdf; xdg-open '%s'; nametemplate=%s.pdf
- video/*; xdg-open '%s' &
- audio/*; xdg-open '%s' &
- application/*; xdg-open '%s' &
- '';
+ xdg.configFile."neomutt/mailcap".text =
+ builtins.replaceStrings [ "@@HTML_VIEWER@@" ] [ (lib.getExe config.web.chawan.package) ]
+ (builtins.readFile ./mailcap);
programs.neomutt = {
enable = true;
package = pkgs.symlinkJoin {
@@ -107,16 +102,9 @@ in
vimKeys = false;
unmailboxes = true;
checkStatsInterval = 20;
- extraConfig = ''
- # Read messages in Neovim. `-` makes Neovim read the message from
- # stdin and -R prevents accidental edits to message content.
- set pager = "${lib.getExe config.development.nixvim.package} -R -n +'setlocal nolist | silent! 1,2g/^$/delete _ | nohlsearch | setlocal nomodified nomodifiable' -"
- # Return directly to the index when Neovim exits and do not prepend
- # NeoMutt’s pager status line to the message passed to Neovim.
- set noprompt_after
- set pager_format = ""
- ''
- + builtins.readFile ./.neomuttrc;
+ extraConfig =
+ builtins.replaceStrings [ "@@PAGER@@" ] [ (lib.getExe config.development.nixvim.package) ]
+ (builtins.readFile ./.neomuttrc);
};
};
}
diff --git a/modules/communication/neomutt/mailcap b/modules/communication/neomutt/mailcap
new file mode 100644
index 0000000..3af2794
--- /dev/null
+++ b/modules/communication/neomutt/mailcap
@@ -0,0 +1,6 @@
+text/html; @@HTML_VIEWER@@ '%s'; nametemplate=%s.html
+image/*; xdg-open '%s' &
+application/pdf; xdg-open '%s'; nametemplate=%s.pdf
+video/*; xdg-open '%s' &
+audio/*; xdg-open '%s' &
+application/*; xdg-open '%s' &