From eb73545d64999ed78ea17872efdf33f614df09df Mon Sep 17 00:00:00 2001 From: Ray Andrew Date: Fri, 26 Dec 2025 02:07:35 -0600 Subject: [PATCH] feat(email): add `mu` indexer --- home/email/default.nix | 37 ++++++++++++++++++++++++++++++------- hosts/dango/default.nix | 1 + 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/home/email/default.nix b/home/email/default.nix index 6751447..e34d681 100644 --- a/home/email/default.nix +++ b/home/email/default.nix @@ -3,6 +3,7 @@ lib, config, dots, + home-dir, xdg-config-dir, ... }: @@ -14,6 +15,7 @@ mbsync = mkEnableOption "Enable Mbsync"; neomutt = mkEnableOption "Enable NeoMutt"; notmuch = mkEnableOption "Enable notmuch"; + mu = mkEnableOption "Enable mu (maildir-utils)"; mailcap = mkEnableOption "Enable mailcap"; }; @@ -33,8 +35,26 @@ enable = config.custom.email.mbsync; configFile = "${dots}/config/mbsync/mbsyncrc"; frequency = "*:0/3"; - extraPackages = with pkgs; [ sops ] ++ lib.optionals config.custom.email.notmuch [ notmuch ]; - postExec = lib.mkIf config.custom.email.notmuch "${pkgs.notmuch}/bin/notmuch new"; + extraPackages = + with pkgs; + [ sops ] + ++ lib.optionals config.custom.email.notmuch [ notmuch ] + ++ lib.optionals config.custom.email.mu [ mu ]; + postExec = + let + notmuchCmd = lib.optionalString config.custom.email.notmuch "${pkgs.notmuch}/bin/notmuch new"; + muCmd = lib.optionalString config.custom.email.mu '' + # Initialize mu if not already done + if [ ! -d "${home-dir}/.cache/mu" ] && [ ! -d "${home-dir}/.mu" ]; then + ${pkgs.mu}/bin/mu init --maildir=${home-dir}/mail + fi + ${pkgs.mu}/bin/mu index + ''; + in + lib.mkIf (config.custom.email.notmuch || config.custom.email.mu) '' + ${notmuchCmd} + ${muCmd} + ''; environment = { SOPS_AGE_KEY_FILE = "${xdg-config-dir}/sops/age/keys.txt"; } @@ -61,6 +81,9 @@ ++ lib.optionals config.custom.email.notmuch [ notmuch ] + ++ lib.optionals config.custom.email.mu [ + mu + ] ++ lib.optionals config.custom.email.mailcap [ mailcap w3m # HTML rendering @@ -88,11 +111,11 @@ # Create mail directories home.activation.createMailDirs = lib.hm.dag.entryAfter [ "writeBoundary" ] '' - mkdir -p ~/mail/personal/Inbox - mkdir -p ~/mail/uchicago/Inbox - mkdir -p ~/.cache/neomutt/headers - mkdir -p ~/.cache/neomutt/messages - mkdir -p ~/.local/state + mkdir -p ${home-dir}/mail/personal/Inbox + mkdir -p ${home-dir}/mail/uchicago/Inbox + mkdir -p ${home-dir}/.cache/neomutt/headers + mkdir -p ${home-dir}/.cache/neomutt/messages + mkdir -p ${home-dir}/.local/state ''; # Set NOTMUCH_CONFIG environment variable diff --git a/hosts/dango/default.nix b/hosts/dango/default.nix index 625bd5c..f5bfefa 100644 --- a/hosts/dango/default.nix +++ b/hosts/dango/default.nix @@ -111,6 +111,7 @@ mbsync = true; mailcap = true; notmuch = true; + mu = true; }; }; }