{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"];
      }
    ];
  };
}