From f36491c92269d3e1dd241e67c292af762ac498c3 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Thu, 24 Sep 2026 19:16:14 +0530 Subject: refactor: some more minor refactoring --- modules/communication/neomutt/account/assertions.nix | 13 +++++++------ modules/communication/neomutt/account/default.nix | 7 +++++-- modules/communication/neomutt/assertions.nix | 11 +++++++---- modules/communication/neomutt/default.nix | 2 +- modules/communication/neomutt/keybindings.nix | 3 ++- modules/communication/neomutt/macros.nix | 5 ++++- modules/communication/neomutt/mail/mbsync.nix | 4 +++- modules/communication/neomutt/mail/notmuch.nix | 5 ++++- 8 files changed, 33 insertions(+), 17 deletions(-) (limited to 'modules/communication/neomutt') diff --git a/modules/communication/neomutt/account/assertions.nix b/modules/communication/neomutt/account/assertions.nix index 5c30311..09839c8 100644 --- a/modules/communication/neomutt/account/assertions.nix +++ b/modules/communication/neomutt/account/assertions.nix @@ -1,12 +1,15 @@ # Validates the neomutt account configurations { config, lib, ... }: +let + cfg = config.communication.neomutt; +in { config.assertions = [ { assertion = - !config.communication.neomutt.enable + !cfg.enable || !lib.any (account: account.enable && account.password-gopass-secret != null) ( - lib.attrValues config.communication.neomutt.accounts + lib.attrValues cfg.accounts ) || config.security.gopass.enable; message = '' @@ -16,10 +19,8 @@ } { assertion = - !config.communication.neomutt.enable - || !lib.any (account: account.enable && account.gpg.key != null) ( - lib.attrValues config.communication.neomutt.accounts - ) + !cfg.enable + || !lib.any (account: account.enable && account.gpg.key != null) (lib.attrValues cfg.accounts) || config.security.gpg.enable; message = '' An enabled communication.neomutt account specifies a GPG key but security.gpg.enable is not set. diff --git a/modules/communication/neomutt/account/default.nix b/modules/communication/neomutt/account/default.nix index 61256e1..07a4b89 100644 --- a/modules/communication/neomutt/account/default.nix +++ b/modules/communication/neomutt/account/default.nix @@ -1,5 +1,8 @@ # Converts neomutt account options into home-manager email config { config, lib, ... }: +let + cfg = config.communication.neomutt; +in { imports = [ ./assertions.nix @@ -19,7 +22,7 @@ description = "Specification of email accounts."; }; - config = lib.mkIf config.communication.neomutt.enable { + config = lib.mkIf cfg.enable { accounts.email.accounts = lib.mapAttrs (accountName: accountInformation: { inherit (accountInformation) address primary; @@ -109,6 +112,6 @@ command = accountInformation.signature.command; showSignature = accountInformation.signature.show-signature; }; - }) (lib.filterAttrs (n: a: a.enable) config.communication.neomutt.accounts); + }) (lib.filterAttrs (n: a: a.enable) cfg.accounts); }; } diff --git a/modules/communication/neomutt/assertions.nix b/modules/communication/neomutt/assertions.nix index e8351f0..cddc7bf 100644 --- a/modules/communication/neomutt/assertions.nix +++ b/modules/communication/neomutt/assertions.nix @@ -1,30 +1,33 @@ # Validates NeoMutt dependencies. { config, ... }: +let + cfg = config.communication.neomutt; +in { assertions = [ { - assertion = !config.communication.neomutt.enable || config.development.nixvim.enable; + assertion = !cfg.enable || config.development.nixvim.enable; message = '' communication.neomutt is enabled but development.nixvim.enable is not. neomutt uses Neovim as its external pager. Please enable development.nixvim. ''; } { - assertion = !config.communication.neomutt.enable || config.terminal.bat.enable; + assertion = !cfg.enable || config.terminal.bat.enable; message = '' communication.neomutt is enabled but terminal.bat.enable is not. neomutt requires bat for text/html filtering. Please enable terminal.bat. ''; } { - assertion = !config.communication.neomutt.enable || config.terminal.kitty.enable; + assertion = !cfg.enable || config.terminal.kitty.enable; message = '' communication.neomutt is enabled but terminal.kitty.enable is not. neomutt's desktop entry requires kitty as the terminal launcher. Please enable terminal.kitty. ''; } { - assertion = !config.communication.neomutt.enable || config.web.chawan.enable; + assertion = !cfg.enable || config.web.chawan.enable; message = '' communication.neomutt is enabled but web.chawan.enable is not. neomutt uses chawan for HTML email rendering. Please enable web.chawan. diff --git a/modules/communication/neomutt/default.nix b/modules/communication/neomutt/default.nix index 6bc363b..365ef32 100644 --- a/modules/communication/neomutt/default.nix +++ b/modules/communication/neomutt/default.nix @@ -11,7 +11,7 @@ let mbsyncNamesFromName = (import ./lib.nix { inherit lib; }).mbsyncNamesFromName; fullSyncChannels = lib.mapAttrsToList (name: account: (mbsyncNamesFromName name).channels.full) ( - lib.filterAttrs (name: account: account.enable) config.communication.neomutt.accounts + lib.filterAttrs (name: account: account.enable) cfg.accounts ); neomuttSyncScript = pkgs.writeShellApplication { diff --git a/modules/communication/neomutt/keybindings.nix b/modules/communication/neomutt/keybindings.nix index 80e33cd..3bfb137 100644 --- a/modules/communication/neomutt/keybindings.nix +++ b/modules/communication/neomutt/keybindings.nix @@ -2,13 +2,14 @@ { config, lib, ... }: let + cfg = config.communication.neomutt; bind = keyMap: key: action: { map = keyMap; inherit key action; }; in { - config.programs.neomutt.binds = lib.mkIf config.communication.neomutt.enable [ + config.programs.neomutt.binds = lib.mkIf cfg.enable [ # Index (bind [ "index" ] "$" "noop") (bind [ "index" ] "g" "noop") diff --git a/modules/communication/neomutt/macros.nix b/modules/communication/neomutt/macros.nix index 4e5bf7b..d4abf28 100644 --- a/modules/communication/neomutt/macros.nix +++ b/modules/communication/neomutt/macros.nix @@ -1,7 +1,10 @@ # neomutt macros for sync, URL extraction, flag legend, and quit { config, lib, ... }: +let + cfg = config.communication.neomutt; +in { - config.programs.neomutt.macros = lib.mkIf config.communication.neomutt.enable [ + config.programs.neomutt.macros = lib.mkIf cfg.enable [ { map = [ "index" diff --git a/modules/communication/neomutt/mail/mbsync.nix b/modules/communication/neomutt/mail/mbsync.nix index f586538..b93b134 100644 --- a/modules/communication/neomutt/mail/mbsync.nix +++ b/modules/communication/neomutt/mail/mbsync.nix @@ -5,6 +5,8 @@ ... }: let + cfg = config.communication.neomutt; + mbsyncNamesFromName = (import ../lib.nix { inherit lib; }).mbsyncNamesFromName; mbsyncValue = @@ -93,7 +95,7 @@ let ); in { - config = lib.mkIf config.communication.neomutt.enable { + config = lib.mkIf cfg.enable { programs.mbsync.enable = true; xdg.configFile."mbsync/.mbsyncrc".text = lib.concatStringsSep "\n" (map mbsyncAccount accounts); diff --git a/modules/communication/neomutt/mail/notmuch.nix b/modules/communication/neomutt/mail/notmuch.nix index 6f806fb..80b6bd1 100644 --- a/modules/communication/neomutt/mail/notmuch.nix +++ b/modules/communication/neomutt/mail/notmuch.nix @@ -1,7 +1,10 @@ # Mail indexer for fast email search { config, lib, ... }: +let + cfg = config.communication.neomutt; +in { - config = lib.mkIf config.communication.neomutt.enable { + config = lib.mkIf cfg.enable { programs.notmuch.enable = true; }; } -- cgit v1.2.3