about summary refs log tree commit diff stats
path: root/modules/home.legacy/conf/neomutt/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/home.legacy/conf/neomutt/default.nix')
-rw-r--r--modules/home.legacy/conf/neomutt/default.nix168
1 files changed, 168 insertions, 0 deletions
diff --git a/modules/home.legacy/conf/neomutt/default.nix b/modules/home.legacy/conf/neomutt/default.nix
new file mode 100644
index 00000000..e4fbcb39
--- /dev/null
+++ b/modules/home.legacy/conf/neomutt/default.nix
@@ -0,0 +1,168 @@
+{pkgs, ...}: {
+  programs.neomutt = {
+    enable = true;
+    package = pkgs.writeShellScriptBin "neomutt" ''
+      systemctl --user start mbsync.service;
+      ${pkgs.neomutt}/bin/neomutt;
+    '';
+    vimKeys = false; # see the modified ones below
+    checkStatsInterval = 60;
+    binds = [
+      #------------------------------------------------------------
+      # Vi Key Bindings (taken from their configuration, modified for dvorak)
+      #------------------------------------------------------------
+
+      # Moving around
+      {
+        action = "noop";
+        key = "g";
+        map = ["attach" "browser" "index"];
+      }
+      {
+        action = "first-entry";
+        key = "gg";
+        map = ["attach" "browser" "index"];
+      }
+      {
+        action = "last-entry";
+        key = "G";
+        map = ["attach" "browser" "index"];
+      }
+      {
+        action = "noop";
+        key = "g";
+        map = ["pager"];
+      }
+      {
+        action = "top";
+        key = "gg";
+        map = ["pager"];
+      }
+      {
+        action = "bottom";
+        key = "G";
+        map = ["pager"];
+      }
+      {
+        action = "previous-line";
+        key = "n";
+        map = ["pager"];
+      }
+      {
+        action = "next-line";
+        key = "t";
+        map = ["pager"];
+      }
+
+      # Scrolling
+      {
+        action = "next-page";
+        key = "\\CF";
+        map = ["attach" "browser" "pager" "index"];
+      }
+      {
+        action = "previous-page";
+        key = "\\CB";
+        map = ["attach" "browser" "pager" "index"];
+      }
+      {
+        action = "half-up";
+        key = "\\Cu";
+        map = ["attach" "browser" "pager" "index"];
+      }
+      {
+        action = "half-down";
+        key = "\\Cd";
+        map = ["attach" "browser" "pager" "index"];
+      }
+      {
+        action = "next-line";
+        key = "\\Ce";
+        map = ["browser" "pager"];
+      }
+      {
+        action = "previous-line";
+        key = "\\Cy";
+        map = ["browser" "pager"];
+      }
+      {
+        action = "next-line";
+        key = "\\Ce";
+        map = ["index"];
+      }
+      {
+        action = "previous-line";
+        key = "\\Cy";
+        map = ["index"];
+      }
+
+      {
+        action = "noop";
+        key = "d";
+        map = ["pager" "index"];
+      }
+      {
+        action = "delete-message";
+        key = "dd";
+        map = ["pager" "index"];
+      }
+
+      # Mail & Reply
+      {
+        # Doesn't work currently
+        action = "list-reply";
+        key = "\\Cm";
+        map = ["index"];
+      }
+
+      # Threads
+      {
+        action = "search-opposite";
+        key = "N";
+        map = ["browser" "pager" "index"];
+      }
+      {
+        action = "delete-thread";
+        key = "dT";
+        map = ["pager" "index"];
+      }
+      {
+        action = "delete-subthread";
+        key = "dt";
+        map = ["pager" "index"];
+      }
+      {
+        action = "next-thread";
+        key = "gt";
+        map = ["pager" "index"];
+      }
+      {
+        action = "previous-thread";
+        key = "gT";
+        map = ["pager" "index"];
+      }
+      {
+        action = "collapse-thread";
+        key = "za";
+        map = ["index"];
+      }
+      {
+        # Missing: folddisable/foldenable
+        action = "collapse-all";
+        key = "zA";
+        map = ["index"];
+      }
+
+      {
+        action = "search-next";
+        key = "l";
+        map = ["index"];
+      }
+      {
+        action = "limit";
+        key = "f";
+        map = ["index"];
+      }
+    ];
+  };
+}