diff options
| author | Arpit Chakladar <arpitchakladar@gmail.com> | 2026-09-24 19:16:14 +0530 |
|---|---|---|
| committer | Arpit Chakladar <arpitchakladar@gmail.com> | 2026-09-24 19:16:14 +0530 |
| commit | f36491c92269d3e1dd241e67c292af762ac498c3 (patch) | |
| tree | 7e36c45915bf83dc7b69e21830cf0c27397c0592 | |
| parent | f85b86095aa4ea6ac4921b6d37981bffa5c0b711 (diff) | |
| download | home-manager-config-f36491c92269d3e1dd241e67c292af762ac498c3.tar.gz home-manager-config-f36491c92269d3e1dd241e67c292af762ac498c3.zip | |
refactor: some more minor refactoring
52 files changed, 211 insertions, 79 deletions
diff --git a/modules/colors/base16/default.nix b/modules/colors/base16/default.nix index 982113e..3102821 100644 --- a/modules/colors/base16/default.nix +++ b/modules/colors/base16/default.nix @@ -9,13 +9,13 @@ ... }: let + cfg = config.colors; availableColorSchemeFiles = { "onedark-dark" = ./onedark-dark.nix; }; selectedColorSchemeFile = - availableColorSchemeFiles.${config.colors.base16} - or (throw "Unknown color scheme: ${config.colors.base16}"); + availableColorSchemeFiles.${cfg.base16} or (throw "Unknown color scheme: ${cfg.base16}"); selectedColorScheme = import selectedColorSchemeFile { }; selectedColorSchemeColorNames = builtins.attrNames selectedColorScheme; 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; }; } diff --git a/modules/communication/senpai/assertions.nix b/modules/communication/senpai/assertions.nix index 8e74367..0f0a3dc 100644 --- a/modules/communication/senpai/assertions.nix +++ b/modules/communication/senpai/assertions.nix @@ -1,20 +1,20 @@ # Validates Senpai dependencies. { config, ... }: +let + cfg = config.communication.senpai; +in { assertions = [ { - assertion = !config.communication.senpai.enable || config.communication.senpai.server.address != ""; + assertion = !cfg.enable || cfg.server.address != ""; message = "communication.senpai.enable requires communication.senpai.server.address to be set."; } { - assertion = - !config.communication.senpai.enable || config.communication.senpai.identity.nickname != ""; + assertion = !cfg.enable || cfg.identity.nickname != ""; message = "communication.senpai.enable requires communication.senpai.identity.nickname to be set."; } { - assertion = - config.communication.senpai.identity.password-gopass-secret == null - || config.security.gopass.enable; + assertion = cfg.identity.password-gopass-secret == null || config.security.gopass.enable; message = "communication.senpai.identity.password-gopass-secret requires security.gopass.enable."; } ]; diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index 6ad371d..d851699 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -4,6 +4,9 @@ config, ... }: +let + cfg = config.desktop; +in { imports = [ ./rofi @@ -19,7 +22,7 @@ enable = lib.mkEnableOption "Enables graphical interface."; }; - config = lib.mkIf config.desktop.enable { + config = lib.mkIf cfg.enable { xdg.enable = true; }; } diff --git a/modules/desktop/mako/colors.nix b/modules/desktop/mako/colors.nix index 0ba4d33..6186dd6 100644 --- a/modules/desktop/mako/colors.nix +++ b/modules/desktop/mako/colors.nix @@ -5,8 +5,11 @@ pkgs, ... }: +let + cfg = config.desktop.mako; +in { - config.services.mako.settings = lib.mkIf config.desktop.mako.enable ( + config.services.mako.settings = lib.mkIf cfg.enable ( let base16Colors = import ../../colors/base16 { inherit config lib pkgs; }; in diff --git a/modules/desktop/niri/assertions.nix b/modules/desktop/niri/assertions.nix index 99e9d29..626899e 100644 --- a/modules/desktop/niri/assertions.nix +++ b/modules/desktop/niri/assertions.nix @@ -1,13 +1,16 @@ # Validates niri hardware GPU options require desktop to be enabled { config, ... }: +let + cfg = config.desktop; +in { assertions = [ { - assertion = !config.desktop.hardware.gpu.nvidia.enable || config.desktop.enable; + assertion = !cfg.hardware.gpu.nvidia.enable || cfg.enable; message = "desktop.hardware.gpu.nvidia.enable requires desktop.enable."; } { - assertion = !config.desktop.hardware.gpu.amd.enable || config.desktop.enable; + assertion = !cfg.hardware.gpu.amd.enable || cfg.enable; message = "desktop.hardware.gpu.amd.enable requires desktop.enable."; } ]; diff --git a/modules/development/git/assertions.nix b/modules/development/git/assertions.nix index 2baeced..1dd1cf5 100644 --- a/modules/development/git/assertions.nix +++ b/modules/development/git/assertions.nix @@ -1,24 +1,26 @@ # Validates SSH is enabled when git.useSSH is set { config, ... }: +let + cfg = config.development.git; +in { assertions = [ { - assertion = !config.development.git.signing.sign-by-default || config.development.git.enable; + assertion = !cfg.signing.sign-by-default || cfg.enable; message = '' development.git.signing.sign-by-default is enabled but development.git.enable is not. Enable development.git before enabling commit signing. ''; } { - assertion = - !config.development.git.signing.sign-by-default || config.development.git.signing.key != null; + assertion = !cfg.signing.sign-by-default || cfg.signing.key != null; message = '' development.git.signing.sign-by-default is enabled but development.git.signing.key is not set. Set a GPG key ID before enabling commit signing by default. ''; } { - assertion = !config.development.git.signing.sign-by-default || config.security.gpg.enable; + assertion = !cfg.signing.sign-by-default || config.security.gpg.enable; message = '' development.git.signing.sign-by-default is enabled but security.gpg.enable is not. Commit signing requires the managed GPG configuration. Please enable security.gpg. diff --git a/modules/development/lazygit/assertions.nix b/modules/development/lazygit/assertions.nix index 2539af6..d5b0a70 100644 --- a/modules/development/lazygit/assertions.nix +++ b/modules/development/lazygit/assertions.nix @@ -1,9 +1,12 @@ # LazyGit only makes sense when Git is enabled { config, ... }: +let + cfg = config.development.lazygit; +in { assertions = [ { - assertion = !config.development.lazygit.enable || config.development.git.enable; + assertion = !cfg.enable || config.development.git.enable; message = "development.lazygit.enable requires development.git.enable."; } ]; diff --git a/modules/development/nixvim/colorscheme.nix b/modules/development/nixvim/colorscheme.nix index 560f6ce..6919482 100644 --- a/modules/development/nixvim/colorscheme.nix +++ b/modules/development/nixvim/colorscheme.nix @@ -6,10 +6,11 @@ ... }: let + cfg = config.development.nixvim; base16Colors = import ../../colors/base16 { inherit config lib pkgs; }; in { - config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim = lib.mkIf cfg.enable { colorschemes.base16 = { enable = true; colorscheme = base16Colors.colorsWithHashPrefix; diff --git a/modules/development/nixvim/keymaps.nix b/modules/development/nixvim/keymaps.nix index cc258c1..254b40d 100644 --- a/modules/development/nixvim/keymaps.nix +++ b/modules/development/nixvim/keymaps.nix @@ -1,7 +1,10 @@ # Keyboard shortcut configuration for nixvim { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim.keymaps = lib.mkIf config.development.nixvim.enable [ + config.programs.nixvim.keymaps = lib.mkIf cfg.enable [ # set the <space> key to nop for normal and visual modes as we are tyring # to use it as our <leader> { diff --git a/modules/development/nixvim/plugins/cmp/default.nix b/modules/development/nixvim/plugins/cmp/default.nix index 4698801..ceb3a07 100644 --- a/modules/development/nixvim/plugins/cmp/default.nix +++ b/modules/development/nixvim/plugins/cmp/default.nix @@ -1,7 +1,10 @@ # Completion plugin for auto-completion { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim.plugins.cmp = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim.plugins.cmp = lib.mkIf cfg.enable { enable = true; autoEnableSources = true; settings = { diff --git a/modules/development/nixvim/plugins/comment/default.nix b/modules/development/nixvim/plugins/comment/default.nix index 8c69218..e0bba38 100644 --- a/modules/development/nixvim/plugins/comment/default.nix +++ b/modules/development/nixvim/plugins/comment/default.nix @@ -1,7 +1,10 @@ # Comment toggling plugin { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim.plugins.comment = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim.plugins.comment = lib.mkIf cfg.enable { enable = true; settings = { toggler = { diff --git a/modules/development/nixvim/plugins/dap-ui/default.nix b/modules/development/nixvim/plugins/dap-ui/default.nix index eb83609..cf5825b 100644 --- a/modules/development/nixvim/plugins/dap-ui/default.nix +++ b/modules/development/nixvim/plugins/dap-ui/default.nix @@ -1,7 +1,10 @@ # A UI for nvim-dap. { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim = lib.mkIf cfg.enable { plugins.dap-ui = { enable = true; }; diff --git a/modules/development/nixvim/plugins/dap-virtual-text/default.nix b/modules/development/nixvim/plugins/dap-virtual-text/default.nix index 4fea5ca..67ccb3f 100644 --- a/modules/development/nixvim/plugins/dap-virtual-text/default.nix +++ b/modules/development/nixvim/plugins/dap-virtual-text/default.nix @@ -1,7 +1,10 @@ # A plugin that adds virtual text support to the nvim-dap. { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim.plugins.dap-virtual-text = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim.plugins.dap-virtual-text = lib.mkIf cfg.enable { enable = true; }; } diff --git a/modules/development/nixvim/plugins/dap/default.nix b/modules/development/nixvim/plugins/dap/default.nix index 97452ac..39d0ae9 100644 --- a/modules/development/nixvim/plugins/dap/default.nix +++ b/modules/development/nixvim/plugins/dap/default.nix @@ -1,7 +1,10 @@ # Debug Adapter Protocol client implementation for Neovim. { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim = lib.mkIf cfg.enable { plugins.dap = { enable = true; }; diff --git a/modules/development/nixvim/plugins/gitsigns/default.nix b/modules/development/nixvim/plugins/gitsigns/default.nix index af8b920..7f85acc 100644 --- a/modules/development/nixvim/plugins/gitsigns/default.nix +++ b/modules/development/nixvim/plugins/gitsigns/default.nix @@ -6,10 +6,11 @@ ... }: let + cfg = config.development.nixvim; base16Colors = import ../../../../colors/base16 { inherit config lib pkgs; }; in { - config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim = lib.mkIf cfg.enable { plugins.gitsigns = { enable = true; diff --git a/modules/development/nixvim/plugins/indent-blankline/default.nix b/modules/development/nixvim/plugins/indent-blankline/default.nix index 6890dbf..6b11972 100644 --- a/modules/development/nixvim/plugins/indent-blankline/default.nix +++ b/modules/development/nixvim/plugins/indent-blankline/default.nix @@ -1,7 +1,10 @@ # Visual indentation guides { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim.plugins.indent-blankline = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim.plugins.indent-blankline = lib.mkIf cfg.enable { enable = true; settings = { indent = { diff --git a/modules/development/nixvim/plugins/lsp/default.nix b/modules/development/nixvim/plugins/lsp/default.nix index 1d56b66..8be4c99 100644 --- a/modules/development/nixvim/plugins/lsp/default.nix +++ b/modules/development/nixvim/plugins/lsp/default.nix @@ -1,7 +1,10 @@ # Language Server Protocol configuration { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim = lib.mkIf cfg.enable { plugins.lsp = { enable = true; inlayHints = true; diff --git a/modules/development/nixvim/plugins/lualine/default.nix b/modules/development/nixvim/plugins/lualine/default.nix index a7dd083..cc62332 100644 --- a/modules/development/nixvim/plugins/lualine/default.nix +++ b/modules/development/nixvim/plugins/lualine/default.nix @@ -6,10 +6,11 @@ ... }: let + cfg = config.development.nixvim; base16Colors = import ../../../../colors/base16 { inherit config lib pkgs; }; in { - config.programs.nixvim.plugins.lualine = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim.plugins.lualine = lib.mkIf cfg.enable { enable = true; settings = { options = { diff --git a/modules/development/nixvim/plugins/luasnip/default.nix b/modules/development/nixvim/plugins/luasnip/default.nix index cab0f62..4b4b059 100644 --- a/modules/development/nixvim/plugins/luasnip/default.nix +++ b/modules/development/nixvim/plugins/luasnip/default.nix @@ -1,7 +1,10 @@ # Snippet engine for Neovim { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim.plugins.luasnip = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim.plugins.luasnip = lib.mkIf cfg.enable { enable = true; }; } diff --git a/modules/development/nixvim/plugins/noice/default.nix b/modules/development/nixvim/plugins/noice/default.nix index 8f2ea0d..8a33ff3 100644 --- a/modules/development/nixvim/plugins/noice/default.nix +++ b/modules/development/nixvim/plugins/noice/default.nix @@ -1,7 +1,10 @@ # Modern UI for Neovim { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim.plugins.noice = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim.plugins.noice = lib.mkIf cfg.enable { enable = true; }; } diff --git a/modules/development/nixvim/plugins/nvim-tree/default.nix b/modules/development/nixvim/plugins/nvim-tree/default.nix index f54ada2..2e9bc58 100644 --- a/modules/development/nixvim/plugins/nvim-tree/default.nix +++ b/modules/development/nixvim/plugins/nvim-tree/default.nix @@ -1,7 +1,10 @@ # File explorer sidebar { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim = lib.mkIf cfg.enable { plugins.nvim-tree = { enable = true; settings = { diff --git a/modules/development/nixvim/plugins/telescope/default.nix b/modules/development/nixvim/plugins/telescope/default.nix index 505a3eb..17c84c4 100644 --- a/modules/development/nixvim/plugins/telescope/default.nix +++ b/modules/development/nixvim/plugins/telescope/default.nix @@ -1,7 +1,10 @@ # Fuzzy finder { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim.plugins.telescope = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim.plugins.telescope = lib.mkIf cfg.enable { enable = true; extensions = { fzf-native.enable = true; # Faster fuzzy sorting diff --git a/modules/development/nixvim/plugins/treesitter/default.nix b/modules/development/nixvim/plugins/treesitter/default.nix index 6150ad2..ab5de96 100644 --- a/modules/development/nixvim/plugins/treesitter/default.nix +++ b/modules/development/nixvim/plugins/treesitter/default.nix @@ -1,7 +1,10 @@ # Syntax highlighting and parsing { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim.plugins.treesitter = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim.plugins.treesitter = lib.mkIf cfg.enable { enable = true; folding = { enable = true; diff --git a/modules/development/nixvim/plugins/web-devicons/default.nix b/modules/development/nixvim/plugins/web-devicons/default.nix index 61ca5e9..13fd16a 100644 --- a/modules/development/nixvim/plugins/web-devicons/default.nix +++ b/modules/development/nixvim/plugins/web-devicons/default.nix @@ -1,7 +1,10 @@ # File icons for various file types { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim.plugins.web-devicons = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim.plugins.web-devicons = lib.mkIf cfg.enable { enable = true; }; } diff --git a/modules/development/nixvim/plugins/which-key/default.nix b/modules/development/nixvim/plugins/which-key/default.nix index 3a0c0ef..455071e 100644 --- a/modules/development/nixvim/plugins/which-key/default.nix +++ b/modules/development/nixvim/plugins/which-key/default.nix @@ -1,7 +1,10 @@ # Popup for keybindings { config, lib, ... }: +let + cfg = config.development.nixvim; +in { - config.programs.nixvim.plugins.which-key = lib.mkIf config.development.nixvim.enable { + config.programs.nixvim.plugins.which-key = lib.mkIf cfg.enable { enable = true; settings = { plugins = { diff --git a/modules/file-management/yazi/assertions.nix b/modules/file-management/yazi/assertions.nix index 288757d..6435b00 100644 --- a/modules/file-management/yazi/assertions.nix +++ b/modules/file-management/yazi/assertions.nix @@ -1,16 +1,19 @@ # Validates yazi dependencies and sub-options { config, ... }: +let + cfg = config.file-management.yazi; +in { assertions = [ { - assertion = !config.file-management.yazi.enable || config.terminal.kitty.enable; + assertion = !cfg.enable || config.terminal.kitty.enable; message = '' file-management.yazi is enabled but terminal.kitty.enable is not. yazi's desktop entry requires kitty as the terminal launcher. Please enable terminal.kitty. ''; } { - assertion = !config.file-management.yazi.file-chooser.enable || config.file-management.yazi.enable; + assertion = !cfg.file-chooser.enable || cfg.enable; message = "file-management.yazi.file-chooser.enable requires file-management.yazi.enable."; } ]; diff --git a/modules/file-management/yazi/theme.nix b/modules/file-management/yazi/theme.nix index 6589200..f774ff2 100644 --- a/modules/file-management/yazi/theme.nix +++ b/modules/file-management/yazi/theme.nix @@ -6,10 +6,11 @@ ... }: let + cfg = config.file-management.yazi; base16Colors = import ../../colors/base16 { inherit config lib pkgs; }; in { - config = lib.mkIf config.file-management.yazi.enable { + config = lib.mkIf cfg.enable { programs.yazi.theme = with base16Colors.colorsWithHashPrefix; { manager = { cwd = { diff --git a/modules/fonts/default.nix b/modules/fonts/default.nix index b7d78df..d2826fc 100644 --- a/modules/fonts/default.nix +++ b/modules/fonts/default.nix @@ -5,6 +5,9 @@ pkgs, ... }: +let + cfg = config.fonts; +in { options.fonts = { normal = lib.mkOption { @@ -15,13 +18,13 @@ bold = lib.mkOption { type = lib.types.str; description = "Default bold font name."; - default = config.fonts.normal; + default = cfg.normal; }; italic = lib.mkOption { type = lib.types.str; description = "Default italic font name."; - default = config.fonts.normal; + default = cfg.normal; }; size = lib.mkOption { diff --git a/modules/media/pamixer/default.nix b/modules/media/pamixer/default.nix index e3c42be..996e268 100644 --- a/modules/media/pamixer/default.nix +++ b/modules/media/pamixer/default.nix @@ -5,6 +5,9 @@ pkgs, ... }: +let + cfg = config.media.pamixer; +in { options.media.pamixer = { enable = lib.mkEnableOption "Enables pamixer."; @@ -16,7 +19,7 @@ }; }; - config = lib.mkIf config.media.pamixer.enable { - home.packages = [ config.media.pamixer.package ]; + config = lib.mkIf cfg.enable { + home.packages = [ cfg.package ]; }; } diff --git a/modules/media/screen-recording/assertions.nix b/modules/media/screen-recording/assertions.nix index f17cb23..81d767b 100644 --- a/modules/media/screen-recording/assertions.nix +++ b/modules/media/screen-recording/assertions.nix @@ -1,15 +1,18 @@ { config, ... }: +let + cfg = config.media.screen-recording; +in [ { - assertion = !config.media.screen-recording.enable || config.media.slurp.enable; + assertion = !cfg.enable || config.media.slurp.enable; message = "media.screen-recording is enabled but requires `media.slurp.enable`."; } { - assertion = !config.media.screen-recording.enable || config.media.wf-recorder.enable; + assertion = !cfg.enable || config.media.wf-recorder.enable; message = "media.screen-recording is enabled but requires `media.wf-recorder.enable`."; } { - assertion = !config.media.screen-recording.enable || config.terminal.kitty.enable; + assertion = !cfg.enable || config.terminal.kitty.enable; message = '' media.screen-recording is enabled but terminal.kitty.enable is not. screen-recording's desktop entry requires kitty as the terminal launcher. Please enable terminal.kitty. diff --git a/modules/networking/bluetui/assertions.nix b/modules/networking/bluetui/assertions.nix index e764a9c..537d721 100644 --- a/modules/networking/bluetui/assertions.nix +++ b/modules/networking/bluetui/assertions.nix @@ -1,9 +1,12 @@ # Validates kitty is enabled for bluetui desktop entry { config, ... }: +let + cfg = config.networking.bluetui; +in { assertions = [ { - assertion = !config.networking.bluetui.enable || config.terminal.kitty.enable; + assertion = !cfg.enable || config.terminal.kitty.enable; message = '' networking.bluetui is enabled but terminal.kitty.enable is not. bluetui's desktop entry requires kitty as the terminal launcher. Please enable terminal.kitty. diff --git a/modules/networking/impala/assertions.nix b/modules/networking/impala/assertions.nix index 0ddeb8e..6db3189 100644 --- a/modules/networking/impala/assertions.nix +++ b/modules/networking/impala/assertions.nix @@ -1,9 +1,12 @@ # Validates kitty is enabled for impala desktop entry { config, ... }: +let + cfg = config.networking.impala; +in { assertions = [ { - assertion = !config.networking.impala.enable || config.terminal.kitty.enable; + assertion = !cfg.enable || config.terminal.kitty.enable; message = '' networking.impala is enabled but terminal.kitty.enable is not. impala's desktop entry requires kitty as the terminal launcher. Please enable terminal.kitty. diff --git a/modules/networking/usque/assertions.nix b/modules/networking/usque/assertions.nix index a163dd8..5d6907a 100644 --- a/modules/networking/usque/assertions.nix +++ b/modules/networking/usque/assertions.nix @@ -1,9 +1,12 @@ # Validates usque sub-options require the main module to be enabled { config, ... }: +let + cfg = config.networking.usque; +in { assertions = [ { - assertion = !config.networking.usque.warp.enable || config.networking.usque.enable; + assertion = !cfg.warp.enable || cfg.enable; message = "networking.usque.warp.enable requires networking.usque.enable."; } ]; diff --git a/modules/office/calcurse/assertions.nix b/modules/office/calcurse/assertions.nix index 65805fe..bd7778e 100644 --- a/modules/office/calcurse/assertions.nix +++ b/modules/office/calcurse/assertions.nix @@ -1,9 +1,12 @@ # Validates calcurse sub-options require the main module to be enabled { config, ... }: +let + cfg = config.office.calcurse; +in { assertions = [ { - assertion = !config.office.calcurse.sync.enable || config.office.calcurse.enable; + assertion = !cfg.sync.enable || cfg.enable; message = "office.calcurse.sync.enable requires office.calcurse.enable."; } ]; diff --git a/modules/security/gopass/assertions.nix b/modules/security/gopass/assertions.nix index bfecfad..0509845 100644 --- a/modules/security/gopass/assertions.nix +++ b/modules/security/gopass/assertions.nix @@ -1,13 +1,16 @@ # Validates gopass sub-options require the main module to be enabled { config, ... }: +let + cfg = config.security.gopass; +in { assertions = [ { - assertion = !config.security.gopass.sync.enable || config.security.gopass.enable; + assertion = !cfg.sync.enable || cfg.enable; message = "security.gopass.sync.enable requires security.gopass.enable."; } { - assertion = !config.security.gopass.creation-templates.enable || config.security.gopass.enable; + assertion = !cfg.creation-templates.enable || cfg.enable; message = "security.gopass.creation-templates.enable requires security.gopass.enable."; } ]; diff --git a/modules/security/gpg/assertions.nix b/modules/security/gpg/assertions.nix index 1108e47..586fa91 100644 --- a/modules/security/gpg/assertions.nix +++ b/modules/security/gpg/assertions.nix @@ -1,9 +1,12 @@ # Validates GPG sub-options require the main module to be enabled { config, ... }: +let + cfg = config.security.gpg; +in { assertions = [ { - assertion = !config.security.gpg.backup.enable || config.security.gpg.enable; + assertion = !cfg.backup.enable || cfg.enable; message = "security.gpg.backup.enable requires security.gpg.enable."; } ]; diff --git a/modules/system/btop/assertions.nix b/modules/system/btop/assertions.nix index 82cddc3..8ac7ccb 100644 --- a/modules/system/btop/assertions.nix +++ b/modules/system/btop/assertions.nix @@ -1,13 +1,16 @@ # Validates btop sub-options require the main module to be enabled { config, ... }: +let + cfg = config.system.btop; +in { assertions = [ { - assertion = !config.system.btop.nvidia.enable || config.system.btop.enable; + assertion = !cfg.nvidia.enable || cfg.enable; message = "system.btop.nvidia.enable requires system.btop.enable."; } { - assertion = !config.system.btop.amd.enable || config.system.btop.enable; + assertion = !cfg.amd.enable || cfg.enable; message = "system.btop.amd.enable requires system.btop.enable."; } ]; diff --git a/modules/terminal/fzf/assertions.nix b/modules/terminal/fzf/assertions.nix index 75006fe..3436126 100644 --- a/modules/terminal/fzf/assertions.nix +++ b/modules/terminal/fzf/assertions.nix @@ -1,10 +1,13 @@ # fzf shell integration is only provided for zsh. bash is scripting-only # (not a login shell), so it does not receive fzf integration. { config, ... }: +let + cfg = config.terminal.fzf; +in { assertions = [ { - assertion = !config.terminal.fzf.enable || config.terminal.zsh.enable; + assertion = !cfg.enable || config.terminal.zsh.enable; message = '' terminal.fzf is enabled but terminal.zsh.enable is not set. fzf shell integration requires zsh. Please enable zsh. diff --git a/modules/terminal/kitty/colors.nix b/modules/terminal/kitty/colors.nix index a91b0b2..fbc36d1 100644 --- a/modules/terminal/kitty/colors.nix +++ b/modules/terminal/kitty/colors.nix @@ -5,8 +5,11 @@ pkgs, ... }: +let + cfg = config.terminal.kitty; +in { - config.programs.kitty.settings = lib.mkIf config.terminal.kitty.enable ( + config.programs.kitty.settings = lib.mkIf cfg.enable ( let base16Colors = import ../../colors/base16 { inherit config lib pkgs; }; in diff --git a/modules/terminal/kitty/keybindings.nix b/modules/terminal/kitty/keybindings.nix index 728595d..311318a 100644 --- a/modules/terminal/kitty/keybindings.nix +++ b/modules/terminal/kitty/keybindings.nix @@ -1,7 +1,10 @@ # Keybindings for kitty { config, lib, ... }: +let + cfg = config.terminal.kitty; +in { - config.programs.kitty.keybindings = lib.mkIf config.terminal.kitty.enable { + config.programs.kitty.keybindings = lib.mkIf cfg.enable { "ctrl+shift+k" = "scroll_line_up"; "ctrl+shift+j" = "scroll_line_down"; "ctrl+shift+u" = "scroll_page_up"; diff --git a/modules/web/chawan/assertions.nix b/modules/web/chawan/assertions.nix index 93b5fab..3d5bab8 100644 --- a/modules/web/chawan/assertions.nix +++ b/modules/web/chawan/assertions.nix @@ -1,9 +1,12 @@ # Validates kitty is enabled for chawan desktop entry { config, ... }: +let + cfg = config.web.chawan; +in { assertions = [ { - assertion = !config.web.chawan.enable || config.terminal.kitty.enable; + assertion = !cfg.enable || config.terminal.kitty.enable; message = '' web.chawan is enabled but terminal.kitty.enable is not. chawan's desktop entry requires kitty as the terminal launcher. Please enable terminal.kitty. diff --git a/modules/web/chromium/assertions.nix b/modules/web/chromium/assertions.nix index 79a9ba1..e999780 100644 --- a/modules/web/chromium/assertions.nix +++ b/modules/web/chromium/assertions.nix @@ -1,9 +1,12 @@ # Validates chromium sub-options require the main module to be enabled { config, ... }: +let + cfg = config.web.chromium; +in { assertions = [ { - assertion = !config.web.chromium.use-opengl || config.web.chromium.enable; + assertion = !cfg.use-opengl || cfg.enable; message = "web.chromium.use-opengl requires web.chromium.enable."; } ]; diff --git a/modules/web/chromium/browserpass.nix b/modules/web/chromium/browserpass.nix index af430c5..e76f338 100644 --- a/modules/web/chromium/browserpass.nix +++ b/modules/web/chromium/browserpass.nix @@ -5,6 +5,8 @@ ... }: let + cfg = config.web.chromium; + # Extension ID computed from the pinned extensionKey patchedHost = pkgs.runCommand "com.github.browserpass.native.json" @@ -15,13 +17,13 @@ let } '' luajit ${./patch_native_host.lua} \ - ${config.web.chromium.extensions.browserpass.id} \ + ${cfg.extensions.browserpass.id} \ ${config.programs.browserpass.package}/lib/browserpass/hosts/chromium/com.github.browserpass.native.json \ $out ''; in { - config = lib.mkIf (config.web.chromium.enable && config.security.gopass.enable) { + config = lib.mkIf (cfg.enable && config.security.gopass.enable) { programs.browserpass = { enable = true; browsers = [ "chromium" ]; diff --git a/modules/web/chromium/extensions/assertions.nix b/modules/web/chromium/extensions/assertions.nix index 52a0081..afc2659 100644 --- a/modules/web/chromium/extensions/assertions.nix +++ b/modules/web/chromium/extensions/assertions.nix @@ -1,8 +1,11 @@ { config, ... }: +let + cfg = config.web.chromium; +in { assertions = [ { - assertion = !config.web.chromium.enable || config.file-management.ouch.enable; + assertion = !cfg.enable || config.file-management.ouch.enable; message = '' web.chromium.enable is true but file-management.ouch.enable is not. chromium extension fetching requires ouch to decompress extension archives. Please enable file-management.ouch. |
