diff options
| author | Arpit Chakladar <arpitchakladar+git@gmail.com> | 2026-07-15 20:32:36 +0530 |
|---|---|---|
| committer | Arpit Chakladar <arpitchakladar+git@gmail.com> | 2026-07-15 20:32:36 +0530 |
| commit | 23616c2e13f63f0262d64538032b98ce83cc0ec2 (patch) | |
| tree | 3ea56e8c12c6735b5dddb34b5699c59c00066b0f /modules | |
| parent | 01aaa7ad39c1fe8af6ffbca31abbab27dbfefc95 (diff) | |
| download | home-manager-config-23616c2e13f63f0262d64538032b98ce83cc0ec2.tar.gz home-manager-config-23616c2e13f63f0262d64538032b98ce83cc0ec2.zip | |
feat: renamed the options to reflect their changed directory stucture
Renamed the options for the configurations based on the sub-module that
they belong to
Diffstat (limited to 'modules')
71 files changed, 381 insertions, 218 deletions
diff --git a/modules/communication/email/default.nix b/modules/communication/email/default.nix index 3a57cf0..969403d 100644 --- a/modules/communication/email/default.nix +++ b/modules/communication/email/default.nix @@ -1,4 +1,3 @@ -# email - Mbsync and notmuch mail synchronization { config, lib, @@ -9,15 +8,22 @@ let mailDir = "${config.home.homeDirectory}/.local/share/mail"; in { - options.programs.email = { + options.communication.email = { enable = lib.mkEnableOption "Email suite (mbsync + notmuch)"; + + accounts = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + default = { }; + description = "Email accounts. Each attribute name is an account identifier."; + }; }; - config = lib.mkIf config.programs.email.enable { + config = lib.mkIf config.communication.email.enable { programs.mbsync.enable = true; programs.notmuch.enable = true; accounts.email.maildirBasePath = mailDir; + accounts.email.accounts = config.communication.email.accounts; home.sessionVariables.MAILDIR = mailDir; }; diff --git a/modules/communication/neomutt/assertions.nix b/modules/communication/neomutt/assertions.nix index 989d273..22434a4 100644 --- a/modules/communication/neomutt/assertions.nix +++ b/modules/communication/neomutt/assertions.nix @@ -3,31 +3,31 @@ { assertions = [ { - assertion = !config.programs.neomutt.enable || config.programs.less.enable; + assertion = !config.communication.neomutt.enable || config.terminal.less.enable; message = '' - programs.neomutt is enabled but programs.less.enable is not. - neomutt requires less as its pager. Please enable programs.less. + communication.neomutt is enabled but terminal.less.enable is not. + neomutt requires less as its pager. Please enable terminal.less. ''; } { - assertion = !config.programs.neomutt.enable || config.programs.bat.enable; + assertion = !config.communication.neomutt.enable || config.terminal.bat.enable; message = '' - programs.neomutt is enabled but programs.bat.enable is not. - neomutt requires bat for text/html filtering. Please enable programs.bat. + communication.neomutt is enabled but terminal.bat.enable is not. + neomutt requires bat for text/html filtering. Please enable terminal.bat. ''; } { - assertion = !config.programs.neomutt.enable || config.programs.email.enable; + assertion = !config.communication.neomutt.enable || config.communication.email.enable; message = '' - programs.neomutt is enabled but programs.email.enable is not. + communication.neomutt is enabled but communication.email.enable is not. neomutt requires the email module (mbsync + notmuch) to be enabled. ''; } { - assertion = !config.programs.neomutt.enable || config.programs.kitty.enable; + assertion = !config.communication.neomutt.enable || config.terminal.kitty.enable; message = '' - programs.neomutt is enabled but programs.kitty.enable is not. - neomutt's desktop entry requires kitty as the terminal launcher. Please enable programs.kitty. + communication.neomutt is enabled but terminal.kitty.enable is not. + neomutt's desktop entry requires kitty as the terminal launcher. Please enable terminal.kitty. ''; } ]; diff --git a/modules/communication/neomutt/default.nix b/modules/communication/neomutt/default.nix index 3626341..be3045d 100644 --- a/modules/communication/neomutt/default.nix +++ b/modules/communication/neomutt/default.nix @@ -25,7 +25,11 @@ in ./assertions.nix ./theme.nix ]; - config = lib.mkIf config.programs.neomutt.enable { + options.communication.neomutt = { + enable = lib.mkEnableOption "Enables neomutt."; + }; + + config = lib.mkIf config.communication.neomutt.enable { xdg.mimeApps.defaultApplications = { "x-scheme-handler/mailto" = "neomutt.desktop"; }; diff --git a/modules/communication/neomutt/theme.nix b/modules/communication/neomutt/theme.nix index 52845ee..1d62c55 100644 --- a/modules/communication/neomutt/theme.nix +++ b/modules/communication/neomutt/theme.nix @@ -3,7 +3,7 @@ # Colorscheme - True base16 OneDark colors for neomutt # Leverages Kitty's precise mapping to base16 (color0-15) { - config.programs.neomutt.extraConfig = lib.mkIf config.programs.neomutt.enable '' + config.programs.neomutt.extraConfig = lib.mkIf config.communication.neomutt.enable '' # vim: filetype=muttrc # # Base16 OneDark Dark terminal colors for neomutt diff --git a/modules/desktop/i3/default.nix b/modules/desktop/i3/default.nix index 4e8664d..c46123d 100644 --- a/modules/desktop/i3/default.nix +++ b/modules/desktop/i3/default.nix @@ -77,7 +77,7 @@ } { command = - if config.programs.feh.enable then + if config.media.feh.enable then "${lib.getExe pkgs.feh} --bg-scale ${../../../assets/sapling.png}" else "xsetroot -solid \"${config.scheme.withHashtag.base00}\""; diff --git a/modules/desktop/i3/keybindings.nix b/modules/desktop/i3/keybindings.nix index 8ca8071..600ed86 100644 --- a/modules/desktop/i3/keybindings.nix +++ b/modules/desktop/i3/keybindings.nix @@ -11,30 +11,30 @@ in { # --- General Applications --- "${mod}+r" = - lib.mkIf (config.programs.fzf.enable && config.programs.kitty.enable) - "exec ${lib.getExe config.programs.kitty.package} --class application-launcher -e ${lib.getExe config.scripts.fzf-launcher.package}"; + lib.mkIf (config.terminal.fzf.enable && config.terminal.kitty.enable) + "exec ${lib.getExe config.terminal.kitty.package} --class application-launcher -e ${lib.getExe config.scripts.fzf-launcher.package}"; "${mod}+t" = - lib.mkIf config.programs.kitty.enable "exec ${lib.getExe config.programs.kitty.package}"; + lib.mkIf config.terminal.kitty.enable "exec ${lib.getExe config.terminal.kitty.package}"; "${mod}+f" = - lib.mkIf (config.programs.kitty.enable && config.programs.lf.enable) - "exec ${lib.getExe config.programs.kitty.package} --title 'File Manager' --class file-explorer -e ${lib.getExe config.programs.lf.package}"; + lib.mkIf (config.terminal.kitty.enable && config.file-management.lf.enable) + "exec ${lib.getExe config.terminal.kitty.package} --title 'File Manager' --class file-explorer -e ${lib.getExe config.file-management.lf.package}"; "${mod}+s" = - lib.mkIf config.programs.kitty.enable "exec ${lib.getExe config.programs.kitty.package} --title 'Keybindings' --class keybindings-viewer -e ${lib.getExe config.scripts.i3-keybindings.package}"; + lib.mkIf config.terminal.kitty.enable "exec ${lib.getExe config.terminal.kitty.package} --title 'Keybindings' --class keybindings-viewer -e ${lib.getExe config.scripts.i3-keybindings.package}"; "${mod}+q" = "kill"; # --- Media / Hardware Keys --- "XF86MonBrightnessDown" = - lib.mkIf config.programs.brightnessctl.enable "exec ${lib.getExe config.programs.brightnessctl.package} set 5%-"; + lib.mkIf config.system.brightnessctl.enable "exec ${lib.getExe config.system.brightnessctl.package} set 5%-"; "XF86MonBrightnessUp" = - lib.mkIf config.programs.brightnessctl.enable "exec ${lib.getExe config.programs.brightnessctl.package} set +5%"; + lib.mkIf config.system.brightnessctl.enable "exec ${lib.getExe config.system.brightnessctl.package} set +5%"; "XF86AudioLowerVolume" = - lib.mkIf config.programs.pamixer.enable "exec ${lib.getExe config.programs.pamixer.package} --decrease 5"; + lib.mkIf config.media.pamixer.enable "exec ${lib.getExe config.media.pamixer.package} --decrease 5"; "XF86AudioRaiseVolume" = - lib.mkIf config.programs.pamixer.enable "exec ${lib.getExe config.programs.pamixer.package} --increase 5"; + lib.mkIf config.media.pamixer.enable "exec ${lib.getExe config.media.pamixer.package} --increase 5"; "XF86AudioMute" = - lib.mkIf config.programs.pamixer.enable "exec ${lib.getExe config.programs.pamixer.package} --toggle-mute"; + lib.mkIf config.media.pamixer.enable "exec ${lib.getExe config.media.pamixer.package} --toggle-mute"; "XF86AudioPlay" = - lib.mkIf config.programs.playerctl.enable "exec ${lib.getExe config.programs.playerctl.package} play-pause"; + lib.mkIf config.media.playerctl.enable "exec ${lib.getExe config.media.playerctl.package} play-pause"; # --- Window Management (Vim-style) --- # Focus @@ -86,7 +86,7 @@ in # --- Screenshots --- "${mod}+p" = - lib.mkIf config.programs.maim.enable "exec \"${lib.getExe config.programs.maim.package} -s | xclip -selection clipboard -t image/png\""; + lib.mkIf config.media.maim.enable "exec \"${lib.getExe config.media.maim.package} -s | xclip -selection clipboard -t image/png\""; "${mod}+Shift+p" = - lib.mkIf config.programs.maim.enable "exec \"mkdir -p ~/Pictures/Screenshots && ${lib.getExe config.programs.maim.package} -s ~/Pictures/Screenshots/screenshot-$(date +%Y%m%d-%H%M%S).png\""; + lib.mkIf config.media.maim.enable "exec \"mkdir -p ~/Pictures/Screenshots && ${lib.getExe config.media.maim.package} -s ~/Pictures/Screenshots/screenshot-$(date +%Y%m%d-%H%M%S).png\""; } diff --git a/modules/desktop/polybar/module/vpn-separator.nix b/modules/desktop/polybar/module/vpn-separator.nix index 0904b6c..3400298 100644 --- a/modules/desktop/polybar/module/vpn-separator.nix +++ b/modules/desktop/polybar/module/vpn-separator.nix @@ -8,7 +8,7 @@ with config.scheme.withHashtag; { type = "custom/script"; - exec-if = "${lib.getExe config.programs.zsh.package} -c '${lib.getExe' pkgs.iproute2 "ip"} a | ${lib.getExe pkgs.gnugrep} -q tun0'"; + exec-if = "${lib.getExe config.terminal.zsh.package} -c '${lib.getExe' pkgs.iproute2 "ip"} a | ${lib.getExe pkgs.gnugrep} -q tun0'"; exec = "echo VPN"; interval = 5; diff --git a/modules/desktop/polybar/module/vpn.nix b/modules/desktop/polybar/module/vpn.nix index 2171989..be5e54d 100644 --- a/modules/desktop/polybar/module/vpn.nix +++ b/modules/desktop/polybar/module/vpn.nix @@ -8,7 +8,7 @@ with config.scheme.withHashtag; { type = "custom/script"; - exec-if = "${lib.getExe config.programs.zsh.package} -c '${lib.getExe' pkgs.iproute2 "ip"} a | ${lib.getExe pkgs.gnugrep} -q tun0'"; + exec-if = "${lib.getExe config.terminal.zsh.package} -c '${lib.getExe' pkgs.iproute2 "ip"} a | ${lib.getExe pkgs.gnugrep} -q tun0'"; exec = "echo VPN"; interval = 5; diff --git a/modules/development/bruno/default.nix b/modules/development/bruno/default.nix index 7205f31..f7f069c 100644 --- a/modules/development/bruno/default.nix +++ b/modules/development/bruno/default.nix @@ -7,13 +7,13 @@ # Bruno - Open-source API client for testing HTTP endpoints { - options.programs.bruno = { + options.development.bruno = { enable = lib.mkEnableOption "Enables bruno."; package = lib.mkPackageOption pkgs "bruno" { }; }; - config = lib.mkIf config.programs.bruno.enable { - home.packages = [ config.programs.bruno.package ]; + config = lib.mkIf config.development.bruno.enable { + home.packages = [ config.development.bruno.package ]; xdg.mimeApps.defaultApplications = { "x-scheme-handler/bruno" = "bruno.desktop"; diff --git a/modules/development/delta/default.nix b/modules/development/delta/default.nix index 90e35d4..b39fee7 100644 --- a/modules/development/delta/default.nix +++ b/modules/development/delta/default.nix @@ -5,7 +5,11 @@ }: # Delta - A syntax-highlighting pager for git, diff, and grep output { - config = lib.mkIf config.programs.delta.enable { + options.development.delta = { + enable = lib.mkEnableOption "Enables delta."; + }; + + config = lib.mkIf config.development.delta.enable { programs.delta.options = { line-numbers = true; hunk-header-style = "omit"; @@ -14,13 +18,13 @@ line-numbers-right-format = "{np}│ "; }; - programs.git.settings = lib.mkIf config.programs.git.enable { + programs.git.settings = lib.mkIf config.development.git.enable { core.pager = "delta"; interactive.diffFilter = "delta --color-only"; delta.navigate = true; }; - programs.lazygit.settings = lib.mkIf config.programs.lazygit.enable { + programs.lazygit.settings = lib.mkIf config.development.lazygit.enable { git.pagers = [ { colorArg = "always"; diff --git a/modules/development/git/assertions.nix b/modules/development/git/assertions.nix index fbe5d3c..df85c62 100644 --- a/modules/development/git/assertions.nix +++ b/modules/development/git/assertions.nix @@ -3,10 +3,10 @@ assertions = [ { assertion = - !config.programs.git.useSSH || (config.programs.git.enable && config.programs.ssh.enable); + !config.development.git.useSSH || (config.development.git.enable && config.security.ssh.enable); message = '' - programs.git.useSSH is enabled but programs.ssh.enable is not. - SSH must be enabled (programs.ssh.enable = true) to use SSH for git. + development.git.useSSH is enabled but security.ssh.enable is not. + SSH must be enabled (security.ssh.enable = true) to use SSH for git. ''; } ]; diff --git a/modules/development/git/default.nix b/modules/development/git/default.nix index c1aade5..5d2d89c 100644 --- a/modules/development/git/default.nix +++ b/modules/development/git/default.nix @@ -12,7 +12,9 @@ ] ++ lib.optional (builtins.pathExists ../../private/git.nix) ../../private/git.nix; - options.programs.git = { + options.development.git = { + enable = lib.mkEnableOption "Enables git."; + username = lib.mkOption { type = lib.types.str; description = "Git username."; @@ -24,9 +26,19 @@ }; useSSH = lib.mkEnableOption "Use SSH instead of HTTPS for common git platforms."; + + signing = { + key = lib.mkOption { + type = lib.types.nullOr lib.types.str; + default = null; + description = "GPG key ID used for signing commits."; + }; + + signByDefault = lib.mkEnableOption "Sign commits by default."; + }; }; - config = lib.mkIf config.programs.git.enable { + config = lib.mkIf config.development.git.enable { home.packages = with pkgs; [ git-graph ]; @@ -56,7 +68,6 @@ ['^(bugfix|hotfix).*$', ['bright_red']], ['^tags/.*$', ['bright_green']], ] - # Everything else (e.g. custom/service branches) cycles through these instead of all being white unknown = ['bright_white', 'bright_red', 'bright_green', 'bright_yellow', 'bright_blue', 'bright_magenta', 'bright_cyan'] [svg_colors] @@ -72,24 +83,26 @@ ''; programs.git = { + enable = true; + signing = { + key = config.development.git.signing.key; + signByDefault = config.development.git.signing.signByDefault; + }; settings = lib.recursiveUpdate { user = { - name = config.programs.git.username; - email = config.programs.git.email; + name = config.development.git.username; + email = config.development.git.email; }; core.askPass = ""; alias = { - # The exclamation mark (!) tells Git to execute this as an external shell command. - # This overrides standard git-graph behavior with your custom format string. log-graph = '' !f() { fmt=$(printf '\033[1;34mCommit:\033[0m \033[33m%%h\033[0m \033[91m%%d\033[0m%%n\033[1;34mParents:\033[0m \033[35m%%p\033[0m%%n\033[1;34mAuthor:\033[0m \033[32m%%an\033[0m <\033[96m%%ae\033[0m>%%n\033[1;34mDate:\033[0m \033[36m%%ad (%%ar)\033[0m%%n%%n%%B%%n\033[90m--------------------------------------------------------\033[0m') git-graph --model custom --color always --sparse --style round --format="$fmt" }; f | less -R ''; - # Same formatting, but no pager — meant for embedding (lazygit, etc.) log-graph-embed = '' !f() { fmt=$(printf '\033[1;34mCommit:\033[0m \033[33m%%h\033[0m \033[91m%%d\033[0m%%n\033[1;34mParents:\033[0m \033[35m%%p\033[0m%%n\033[1;34mAuthor:\033[0m \033[32m%%an\033[0m <\033[96m%%ae\033[0m>%%n\033[1;34mDate:\033[0m \033[36m%%ad (%%ar)\033[0m%%n%%n%%B%%n\033[90m--------------------------------------------------------\033[0m') @@ -99,7 +112,7 @@ }; } ( - lib.optionalAttrs config.programs.git.useSSH { + lib.optionalAttrs config.development.git.useSSH { url."git@github.com:".insteadOf = "https://github.com/"; url."git@gitlab.com:".insteadOf = "https://gitlab.com/"; url."git@bitbucket.org:".insteadOf = "https://bitbucket.org/"; diff --git a/modules/development/lazygit/default.nix b/modules/development/lazygit/default.nix index cf46e9a..2c920c2 100644 --- a/modules/development/lazygit/default.nix +++ b/modules/development/lazygit/default.nix @@ -2,12 +2,17 @@ # Lazygit - A simple terminal UI for git commands { - config = lib.mkIf config.programs.lazygit.enable { + options.development.lazygit = { + enable = lib.mkEnableOption "Enables lazygit."; + }; + + config = lib.mkIf config.development.lazygit.enable { programs.lazygit = { - enableBashIntegration = config.programs.bash.enable; + enable = true; + enableBashIntegration = config.terminal.bash.enable; enableFishIntegration = config.programs.fish.enable; enableNushellIntegration = config.programs.nushell.enable; - enableZshIntegration = config.programs.zsh.enable; + enableZshIntegration = config.terminal.zsh.enable; settings = { gui = { diff --git a/modules/development/nixvim/colorscheme.nix b/modules/development/nixvim/colorscheme.nix index ba81634..ce2e7cc 100644 --- a/modules/development/nixvim/colorscheme.nix +++ b/modules/development/nixvim/colorscheme.nix @@ -2,7 +2,7 @@ # Colorscheme - Base16 theme configuration for nixvim { - config.programs.nixvim.colorschemes.base16 = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.colorschemes.base16 = lib.mkIf config.development.nixvim.enable { enable = true; colorscheme = with config.scheme.withHashtag; { base00 = base00; diff --git a/modules/development/nixvim/default.nix b/modules/development/nixvim/default.nix index c7978d4..6cd0957 100644 --- a/modules/development/nixvim/default.nix +++ b/modules/development/nixvim/default.nix @@ -8,8 +8,13 @@ ./plugins ]; - config = { + options.development.nixvim = { + enable = lib.mkEnableOption "Enables nixvim."; + }; + + config = lib.mkIf config.development.nixvim.enable { programs.nixvim = { + enable = true; defaultEditor = true; opts = { number = true; @@ -79,14 +84,13 @@ update_in_insert = false; float = { border = "rounded"; - source = true; # Show which LSP the diagnostic is from + source = true; header = ""; prefix = ""; }; }; }; - # Show diagnostics float on cursor hold autoCmd = [ { event = [ "CursorHold" ]; diff --git a/modules/development/nixvim/keymaps.nix b/modules/development/nixvim/keymaps.nix index 4e4b35a..941e902 100644 --- a/modules/development/nixvim/keymaps.nix +++ b/modules/development/nixvim/keymaps.nix @@ -2,7 +2,7 @@ # Keymaps - Keyboard shortcut configuration for nixvim { - config.programs.nixvim.keymaps = lib.mkIf config.programs.nixvim.enable [ + config.programs.nixvim.keymaps = lib.mkIf config.development.nixvim.enable [ { key = "<c-h>"; action = "<c-w>h"; diff --git a/modules/development/nixvim/plugins/cmp.nix b/modules/development/nixvim/plugins/cmp.nix index 683e0d3..0bf8601 100644 --- a/modules/development/nixvim/plugins/cmp.nix +++ b/modules/development/nixvim/plugins/cmp.nix @@ -2,7 +2,7 @@ # Cmp - Completion plugin (nvim-cmp) for auto-completion { - config.programs.nixvim.plugins.cmp = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.plugins.cmp = lib.mkIf config.development.nixvim.enable { enable = true; autoEnableSources = true; settings = { diff --git a/modules/development/nixvim/plugins/comment.nix b/modules/development/nixvim/plugins/comment.nix index cc1b9cb..a14bd10 100644 --- a/modules/development/nixvim/plugins/comment.nix +++ b/modules/development/nixvim/plugins/comment.nix @@ -2,7 +2,7 @@ # Comment - Comment toggling plugin (comment.nvim) { - config.programs.nixvim.plugins.comment = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.plugins.comment = lib.mkIf config.development.nixvim.enable { enable = true; settings = { toggler = { diff --git a/modules/development/nixvim/plugins/gitsigns.nix b/modules/development/nixvim/plugins/gitsigns.nix index ea99eba..a737238 100644 --- a/modules/development/nixvim/plugins/gitsigns.nix +++ b/modules/development/nixvim/plugins/gitsigns.nix @@ -2,7 +2,7 @@ # Gitsigns - Git status in the sign column (gitsigns.nvim) { - config.programs.nixvim.plugins.gitsigns = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.plugins.gitsigns = lib.mkIf config.development.nixvim.enable { enable = true; }; } diff --git a/modules/development/nixvim/plugins/indent-blankline.nix b/modules/development/nixvim/plugins/indent-blankline.nix index eb2674a..38e6a91 100644 --- a/modules/development/nixvim/plugins/indent-blankline.nix +++ b/modules/development/nixvim/plugins/indent-blankline.nix @@ -2,7 +2,7 @@ # Indent-blankline - Visual indentation guides (indent-blankline.nvim) { - config.programs.nixvim.plugins.indent-blankline = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.plugins.indent-blankline = lib.mkIf config.development.nixvim.enable { enable = true; settings = { indent = { diff --git a/modules/development/nixvim/plugins/lsp.nix b/modules/development/nixvim/plugins/lsp.nix index 7fc3ddd..cac48a2 100644 --- a/modules/development/nixvim/plugins/lsp.nix +++ b/modules/development/nixvim/plugins/lsp.nix @@ -2,7 +2,7 @@ # LSP - Language Server Protocol configuration (nvim-lspconfig) { - config.programs.nixvim.plugins.lsp = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.plugins.lsp = lib.mkIf config.development.nixvim.enable { enable = true; inlayHints = true; autoLoad = true; diff --git a/modules/development/nixvim/plugins/lualine.nix b/modules/development/nixvim/plugins/lualine.nix index 72f34be..b621b7c 100644 --- a/modules/development/nixvim/plugins/lualine.nix +++ b/modules/development/nixvim/plugins/lualine.nix @@ -2,7 +2,7 @@ # Lualine - Statusline configuration (lualine.nvim) { - config.programs.nixvim.plugins.lualine = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.plugins.lualine = lib.mkIf config.development.nixvim.enable { enable = true; settings = { options = { diff --git a/modules/development/nixvim/plugins/luasnip.nix b/modules/development/nixvim/plugins/luasnip.nix index 60571e9..6c48c8b 100644 --- a/modules/development/nixvim/plugins/luasnip.nix +++ b/modules/development/nixvim/plugins/luasnip.nix @@ -2,7 +2,7 @@ # Luasnip - Snippet engine for Neovim (Lua-based) { - config.programs.nixvim.plugins.luasnip = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.plugins.luasnip = lib.mkIf config.development.nixvim.enable { enable = true; }; } diff --git a/modules/development/nixvim/plugins/noice.nix b/modules/development/nixvim/plugins/noice.nix index d466506..ddbe6c8 100644 --- a/modules/development/nixvim/plugins/noice.nix +++ b/modules/development/nixvim/plugins/noice.nix @@ -2,7 +2,7 @@ # Noice - Modern UI for Neovim (cmdline, popupmenu, messages) { - config.programs.nixvim.plugins.noice = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.plugins.noice = lib.mkIf config.development.nixvim.enable { enable = true; }; } diff --git a/modules/development/nixvim/plugins/nvim-tree.nix b/modules/development/nixvim/plugins/nvim-tree.nix index 2ad6570..4eeb8c6 100644 --- a/modules/development/nixvim/plugins/nvim-tree.nix +++ b/modules/development/nixvim/plugins/nvim-tree.nix @@ -2,7 +2,7 @@ # Nvim-tree - File explorer sidebar (nvim-tree.lua) { - config.programs.nixvim.plugins.nvim-tree = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.plugins.nvim-tree = lib.mkIf config.development.nixvim.enable { enable = true; settings = { filters = { diff --git a/modules/development/nixvim/plugins/telescope.nix b/modules/development/nixvim/plugins/telescope.nix index b9678fc..cd8c001 100644 --- a/modules/development/nixvim/plugins/telescope.nix +++ b/modules/development/nixvim/plugins/telescope.nix @@ -2,7 +2,7 @@ # Telescope - Fuzzy finder { - config.programs.nixvim.plugins.telescope = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.plugins.telescope = lib.mkIf config.development.nixvim.enable { enable = true; extensions = { fzf-native.enable = true; # faster fuzzy sorting diff --git a/modules/development/nixvim/plugins/treesitter.nix b/modules/development/nixvim/plugins/treesitter.nix index 035ac7a..c983832 100644 --- a/modules/development/nixvim/plugins/treesitter.nix +++ b/modules/development/nixvim/plugins/treesitter.nix @@ -2,7 +2,7 @@ # Treesitter - Syntax highlighting and parsing (nvim-treesitter) { - config.programs.nixvim.plugins.treesitter = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.plugins.treesitter = lib.mkIf config.development.nixvim.enable { enable = true; folding = { enable = true; diff --git a/modules/development/nixvim/plugins/web-devicons.nix b/modules/development/nixvim/plugins/web-devicons.nix index 3c6ad86..6366af9 100644 --- a/modules/development/nixvim/plugins/web-devicons.nix +++ b/modules/development/nixvim/plugins/web-devicons.nix @@ -2,7 +2,7 @@ # Web-devicons - File icons for various file types (nvim-web-devicons) { - config.programs.nixvim.plugins.web-devicons = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.plugins.web-devicons = lib.mkIf config.development.nixvim.enable { enable = true; }; } diff --git a/modules/development/nixvim/plugins/which-key.nix b/modules/development/nixvim/plugins/which-key.nix index 18018e7..67f2427 100644 --- a/modules/development/nixvim/plugins/which-key.nix +++ b/modules/development/nixvim/plugins/which-key.nix @@ -2,7 +2,7 @@ # Which-key - Popup for keybindings (which-key.nvim) { - config.programs.nixvim.plugins.which-key = lib.mkIf config.programs.nixvim.enable { + config.programs.nixvim.plugins.which-key = lib.mkIf config.development.nixvim.enable { enable = true; settings = { plugins = { diff --git a/modules/development/opencode/default.nix b/modules/development/opencode/default.nix index 0b3f0b6..a685894 100644 --- a/modules/development/opencode/default.nix +++ b/modules/development/opencode/default.nix @@ -7,8 +7,13 @@ # Opencode - AI-powered coding assistant (opencode.ai) { - config = lib.mkIf config.programs.opencode.enable { + options.development.opencode = { + enable = lib.mkEnableOption "Enables opencode."; + }; + + config = lib.mkIf config.development.opencode.enable { programs.opencode = { + enable = true; package = pkgs.opencode; }; diff --git a/modules/development/qemu/default.nix b/modules/development/qemu/default.nix index b34264c..5142458 100644 --- a/modules/development/qemu/default.nix +++ b/modules/development/qemu/default.nix @@ -7,7 +7,7 @@ # QEMU - generic and open source machine & userspace emulator and virtualizer. { - options.programs.qemu = { + options.development.qemu = { enable = lib.mkEnableOption "Enables qemu."; package = lib.mkOption { type = lib.types.package; @@ -24,7 +24,7 @@ }; }; - config = lib.mkIf config.programs.qemu.enable { - home.packages = [ config.programs.qemu.package ]; + config = lib.mkIf config.development.qemu.enable { + home.packages = [ config.development.qemu.package ]; }; } diff --git a/modules/development/vscodium/default.nix b/modules/development/vscodium/default.nix index a8cbd37..7763a94 100644 --- a/modules/development/vscodium/default.nix +++ b/modules/development/vscodium/default.nix @@ -7,8 +7,13 @@ # VSCodium - Visual Studio Code fork { - config = lib.mkIf config.programs.vscodium.enable { + options.development.vscodium = { + enable = lib.mkEnableOption "Enables vscodium."; + }; + + config = lib.mkIf config.development.vscodium.enable { programs.vscodium = { + enable = true; package = pkgs.vscodium; }; diff --git a/modules/file-management/lf/default.nix b/modules/file-management/lf/default.nix index 47a950f..28955ea 100644 --- a/modules/file-management/lf/default.nix +++ b/modules/file-management/lf/default.nix @@ -7,7 +7,19 @@ # lf - terminal file manager { - config = lib.mkIf config.programs.lf.enable { + options.file-management.lf = { + enable = lib.mkEnableOption "Enables lf."; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.lf.overrideAttrs (old: { + dontWrapQtApps = true; + dontPatchShebangs = true; + }); + description = "The lf package to use."; + }; + }; + + config = lib.mkIf config.file-management.lf.enable { xdg.mimeApps.defaultApplications = { "inode/directory" = "lf.desktop"; }; @@ -17,11 +29,8 @@ ]; programs.lf = { - package = pkgs.lf.overrideAttrs (old: { - dontWrapQtApps = true; - dontPatchShebangs = true; - }); - + enable = true; + package = config.file-management.lf.package; settings = { number = true; icons = true; diff --git a/modules/file-management/lsd/default.nix b/modules/file-management/lsd/default.nix index 99fe1bd..b51c87e 100644 --- a/modules/file-management/lsd/default.nix +++ b/modules/file-management/lsd/default.nix @@ -2,8 +2,13 @@ # LSD - Ls alternative with icons and colors (Rust-based) { - config = lib.mkIf config.programs.lsd.enable { + options.file-management.lsd = { + enable = lib.mkEnableOption "Enables lsd."; + }; + + config = lib.mkIf config.file-management.lsd.enable { programs.lsd = { + enable = true; settings.icons.separator = " "; }; }; diff --git a/modules/file-management/ouch/default.nix b/modules/file-management/ouch/default.nix index 2b4411e..aafb23d 100644 --- a/modules/file-management/ouch/default.nix +++ b/modules/file-management/ouch/default.nix @@ -7,12 +7,12 @@ # Ouch! - CLI tool for compressing and decompressing various formats. { - options.programs.ouch = { + options.file-management.ouch = { enable = lib.mkEnableOption "Enables ouch."; package = lib.mkPackageOption pkgs "ouch" { }; }; - config = lib.mkIf config.programs.ouch.enable { - home.packages = [ config.programs.ouch.package ]; + config = lib.mkIf config.file-management.ouch.enable { + home.packages = [ config.file-management.ouch.package ]; }; } diff --git a/modules/media/feh/default.nix b/modules/media/feh/default.nix index 401a68a..f3486e5 100644 --- a/modules/media/feh/default.nix +++ b/modules/media/feh/default.nix @@ -7,8 +7,13 @@ # Feh - Lightweight image viewer and wallpaper setter { - config = lib.mkIf config.programs.feh.enable { + options.media.feh = { + enable = lib.mkEnableOption "Enables feh."; + }; + + config = lib.mkIf config.media.feh.enable { programs.feh = { + enable = true; package = pkgs.feh; }; diff --git a/modules/media/ffmpeg/default.nix b/modules/media/ffmpeg/default.nix index d86b5a6..9526ff5 100644 --- a/modules/media/ffmpeg/default.nix +++ b/modules/media/ffmpeg/default.nix @@ -7,12 +7,12 @@ # FFmpeg - Command-line audio/video converter and streaming tool { - options.programs.ffmpeg = { + options.media.ffmpeg = { enable = lib.mkEnableOption "Enables ffmpeg."; package = lib.mkPackageOption pkgs "ffmpeg-full" { }; }; - config = lib.mkIf config.programs.ffmpeg.enable { - home.packages = [ config.programs.ffmpeg.package ]; + config = lib.mkIf config.media.ffmpeg.enable { + home.packages = [ config.media.ffmpeg.package ]; }; } diff --git a/modules/media/impala/default.nix b/modules/media/impala/default.nix index 9c4d1f4..1a14412 100644 --- a/modules/media/impala/default.nix +++ b/modules/media/impala/default.nix @@ -7,13 +7,13 @@ # Impala - Apache Impala: SQL query engine for Apache Hadoop { - options.programs.impala = { + options.media.impala = { enable = lib.mkEnableOption "Enables impala."; package = lib.mkPackageOption pkgs "impala" { }; }; - config = lib.mkIf config.programs.impala.enable { - home.packages = [ config.programs.impala.package ]; + config = lib.mkIf config.media.impala.enable { + home.packages = [ config.media.impala.package ]; xdg.mimeApps.defaultApplications = { "x-scheme-handler/impala" = "impala.desktop"; diff --git a/modules/media/maim/default.nix b/modules/media/maim/default.nix index 3e30c88..fcf53b7 100644 --- a/modules/media/maim/default.nix +++ b/modules/media/maim/default.nix @@ -7,12 +7,12 @@ # Maim - Screenshot utility (slop-based region selection) { - options.programs.maim = { + options.media.maim = { enable = lib.mkEnableOption "Enables maim."; package = lib.mkPackageOption pkgs "maim" { }; }; - config = lib.mkIf config.programs.maim.enable { - home.packages = [ config.programs.maim.package ]; + config = lib.mkIf config.media.maim.enable { + home.packages = [ config.media.maim.package ]; }; } diff --git a/modules/media/pamixer/default.nix b/modules/media/pamixer/default.nix index b84e9cf..3632ecc 100644 --- a/modules/media/pamixer/default.nix +++ b/modules/media/pamixer/default.nix @@ -7,12 +7,12 @@ # Pamixer - PulseAudio command-line mixer (volume control) { - options.programs.pamixer = { + options.media.pamixer = { enable = lib.mkEnableOption "Enables pamixer."; package = lib.mkPackageOption pkgs "pamixer" { }; }; - config = lib.mkIf config.programs.pamixer.enable { - home.packages = [ config.programs.pamixer.package ]; + config = lib.mkIf config.media.pamixer.enable { + home.packages = [ config.media.pamixer.package ]; }; } diff --git a/modules/media/playerctl/default.nix b/modules/media/playerctl/default.nix index d501abd..58619a4 100644 --- a/modules/media/playerctl/default.nix +++ b/modules/media/playerctl/default.nix @@ -7,12 +7,12 @@ # Playerctl - CLI for controlling media players (Spotify, MPRIS, etc.) { - options.programs.playerctl = { + options.media.playerctl = { enable = lib.mkEnableOption "Enables playerctl."; package = lib.mkPackageOption pkgs "playerctl" { }; }; - config = lib.mkIf config.programs.playerctl.enable { - home.packages = [ config.programs.playerctl.package ]; + config = lib.mkIf config.media.playerctl.enable { + home.packages = [ config.media.playerctl.package ]; }; } diff --git a/modules/media/slop/default.nix b/modules/media/slop/default.nix index c86181b..8e2c01d 100644 --- a/modules/media/slop/default.nix +++ b/modules/media/slop/default.nix @@ -7,12 +7,12 @@ # Slop - Region selector for screenshots (used by maim/flameshot) { - options.programs.slop = { + options.media.slop = { enable = lib.mkEnableOption "Enables slop."; package = lib.mkPackageOption pkgs "slop" { }; }; - config = lib.mkIf config.programs.slop.enable { - home.packages = [ config.programs.slop.package ]; + config = lib.mkIf config.media.slop.enable { + home.packages = [ config.media.slop.package ]; }; } diff --git a/modules/media/vlc/default.nix b/modules/media/vlc/default.nix index 8069f3e..7e008fb 100644 --- a/modules/media/vlc/default.nix +++ b/modules/media/vlc/default.nix @@ -7,13 +7,13 @@ # VLC - Versatile multimedia player for audio/video playback { - options.programs.vlc = { + options.media.vlc = { enable = lib.mkEnableOption "Enables vlc."; package = lib.mkPackageOption pkgs "vlc" { }; }; - config = lib.mkIf config.programs.vlc.enable { - home.packages = [ config.programs.vlc.package ]; + config = lib.mkIf config.media.vlc.enable { + home.packages = [ config.media.vlc.package ]; xdg.mimeApps.defaultApplications = { "x-scheme-handler/vlc" = "vlc.desktop"; diff --git a/modules/office/zathura/default.nix b/modules/office/zathura/default.nix index 167b04f..f17a5c3 100644 --- a/modules/office/zathura/default.nix +++ b/modules/office/zathura/default.nix @@ -7,8 +7,13 @@ # Zathura - Minimalistic document viewer (PDF, DJVU, etc.) { - config = lib.mkIf config.programs.zathura.enable { + options.office.zathura = { + enable = lib.mkEnableOption "Enables zathura."; + }; + + config = lib.mkIf config.office.zathura.enable { programs.zathura = { + enable = true; package = pkgs.zathura; }; diff --git a/modules/private/email.example.nix b/modules/private/email.example.nix index ca4a3a1..1c863cc 100644 --- a/modules/private/email.example.nix +++ b/modules/private/email.example.nix @@ -1,12 +1,12 @@ { config, lib, ... }: { - config.accounts.email.accounts = { + config.communication.email.accounts = { "example" = { realName = "Example User"; address = "user@gmail.com"; userName = "user@gmail.com"; - passwordCommand = "${lib.getExe config.programs.gopass.package} -o mail/user@gmail.com"; + passwordCommand = "${lib.getExe config.security.gopass.package} -o mail/user@gmail.com"; flavor = "gmail.com"; primary = true; neomutt = { diff --git a/modules/private/git.example.nix b/modules/private/git.example.nix index 70e59b4..630839b 100644 --- a/modules/private/git.example.nix +++ b/modules/private/git.example.nix @@ -1,7 +1,7 @@ { ... }: { - config.programs.git = { + config.development.git = { username = "Arpit Chakladar"; email = "arpitchakladar+git@gmail.com"; signing = { diff --git a/modules/scripts/default.nix b/modules/scripts/default.nix index 1b4478b..a05aaed 100644 --- a/modules/scripts/default.nix +++ b/modules/scripts/default.nix @@ -6,7 +6,7 @@ }: let shell = - if config.programs.zsh.enable then (lib.getExe config.programs.zsh.package) else "/usr/bin/env sh"; + if config.terminal.zsh.enable then (lib.getExe config.terminal.zsh.package) else "/usr/bin/env sh"; mkScript = name: path: env: deps: @@ -40,11 +40,11 @@ let aria2-run = { path = ./aria2-run.sh; deps = [ - config.programs.aria2.package + config.web.aria2.package ]; conditions = [ { - option = "programs.aria2.enable"; + option = "web.aria2.enable"; value = true; } ]; @@ -55,30 +55,30 @@ let file-preview = { path = ./file-preview.sh; deps = [ - config.programs.kitty.package - config.programs.bat.package - config.programs.ffmpeg.package - config.programs.ouch.package + config.terminal.kitty.package + config.terminal.bat.package + config.media.ffmpeg.package + config.file-management.ouch.package pkgs.file pkgs.librsvg pkgs.poppler-utils ]; conditions = [ { - option = "programs.ffmpeg.enable"; + option = "media.ffmpeg.enable"; value = true; } { - option = "programs.ouch.enable"; + option = "file-management.ouch.enable"; value = true; } { # not a dependency - option = "programs.zathura.enable"; + option = "office.zathura.enable"; value = true; } { - option = "programs.bat.enable"; + option = "terminal.bat.enable"; value = true; } ]; @@ -86,7 +86,7 @@ let file-preview-clean = { path = ./file-preview-clean.sh; deps = [ - config.programs.kitty.package + config.terminal.kitty.package ]; conditions = [ { @@ -98,17 +98,17 @@ let fzf-launcher = { path = ./fzf-launcher.sh; deps = [ - config.programs.fzf.package + config.terminal.fzf.package pkgs.util-linux - config.programs.zsh.package + config.terminal.zsh.package ]; conditions = [ { - option = "programs.fzf.enable"; + option = "terminal.fzf.enable"; value = true; } { - option = "programs.zsh.enable"; + option = "terminal.zsh.enable"; value = true; } ]; @@ -125,16 +125,16 @@ let screen-recording = { path = ./screen-recording.sh; deps = [ - config.programs.ffmpeg.package - config.programs.slop.package + config.media.ffmpeg.package + config.media.slop.package ]; conditions = [ { - option = "programs.ffmpeg.enable"; + option = "media.ffmpeg.enable"; value = true; } { - option = "programs.slop.enable"; + option = "media.slop.enable"; value = true; } ]; @@ -142,26 +142,26 @@ let system-monitor = { path = ./system-monitor.sh; deps = [ - config.programs.bottom.package - config.programs.nvtop.package - config.programs.tmux.package - config.programs.kitty.package + config.system.bottom.package + config.system.nvtop.package + config.terminal.tmux.package + config.terminal.kitty.package ]; conditions = [ { - option = "programs.bottom.enable"; + option = "system.bottom.enable"; value = true; } { - option = "programs.nvtop.enable"; + option = "system.nvtop.enable"; value = true; } { - option = "programs.tmux.enable"; + option = "terminal.tmux.enable"; value = true; } { - option = "programs.kitty.enable"; + option = "terminal.kitty.enable"; value = true; } ]; @@ -169,19 +169,19 @@ let vpn-connect = { path = ./vpn-connect.sh; env = { - SYSTEMD_RESOLVED_PATH = "${config.programs.openvpn.package}/libexec/update-systemd-resolved"; + SYSTEMD_RESOLVED_PATH = "${config.security.openvpn.package}/libexec/update-systemd-resolved"; }; deps = [ - config.programs.fzf.package - config.programs.openvpn.package + config.terminal.fzf.package + config.security.openvpn.package ]; conditions = [ { - option = "programs.openvpn.enable"; + option = "security.openvpn.enable"; value = true; } { - option = "programs.fzf.enable"; + option = "terminal.fzf.enable"; value = true; } ]; @@ -214,7 +214,7 @@ let pkgs.makeDesktopItem { name = name; desktopName = sc.desktop.displayName; - exec = "${lib.getExe config.programs.kitty.package} -e ${lib.getExe sc.package}"; + exec = "${lib.getExe config.terminal.kitty.package} -e ${lib.getExe sc.package}"; icon = "kitty"; categories = [ "Utility" ]; terminal = false; @@ -298,7 +298,7 @@ in home.packages = [ pkgs.file - config.programs.bat.package + config.terminal.bat.package ] ++ lib.filter (x: x != null) (lib.mapAttrsToList (_: s: s.package) config.scripts) ++ lib.filter (x: x != null) desktopItems; diff --git a/modules/security/enteauth/default.nix b/modules/security/enteauth/default.nix index a332bf3..376451a 100644 --- a/modules/security/enteauth/default.nix +++ b/modules/security/enteauth/default.nix @@ -42,7 +42,7 @@ let }; in { - options.programs.enteauth = { + options.security.enteauth = { enable = lib.mkEnableOption "Enables wrapped ente-auth with automated keyring unlocks and a desktop entry."; package = lib.mkOption { type = lib.types.package; @@ -51,8 +51,8 @@ in }; }; - config = lib.mkIf config.programs.enteauth.enable { - home.packages = [ config.programs.enteauth.package ]; + config = lib.mkIf config.security.enteauth.enable { + home.packages = [ config.security.enteauth.package ]; xdg.mimeApps.defaultApplications = { "x-scheme-handler/enteauth" = "enteauth.desktop"; diff --git a/modules/security/gopass/default.nix b/modules/security/gopass/default.nix index 3990f7f..f5a037f 100644 --- a/modules/security/gopass/default.nix +++ b/modules/security/gopass/default.nix @@ -7,7 +7,7 @@ }: { - options.programs.gopass = { + options.security.gopass = { enable = lib.mkEnableOption "Enables gopass."; package = lib.mkOption { @@ -18,10 +18,10 @@ }; }; - config = lib.mkIf config.programs.gopass.enable { + config = lib.mkIf config.security.gopass.enable { programs.password-store = { enable = true; - package = config.programs.gopass.package; + package = config.security.gopass.package; settings = { PASSWORD_STORE_DIR = "${config.home.homeDirectory}/.local/share/pass"; }; diff --git a/modules/security/gpg/default.nix b/modules/security/gpg/default.nix index 858f79f..9ed3868 100644 --- a/modules/security/gpg/default.nix +++ b/modules/security/gpg/default.nix @@ -7,13 +7,21 @@ # gpg - GNU Privacy Guard { - config = lib.mkIf config.programs.gpg.enable { + options.security.gpg = { + enable = lib.mkEnableOption "Enables gpg."; + }; + + config = lib.mkIf config.security.gpg.enable { + programs.gpg = { + enable = true; + }; + services.gpg-agent = { enable = true; enableZshIntegration = true; defaultCacheTtl = 3600; maxCacheTtl = 86400; - enableSshSupport = config.programs.ssh.enable; + enableSshSupport = config.security.ssh.enable; pinentry.package = pkgs.pinentry-gtk2; }; }; diff --git a/modules/security/openvpn/default.nix b/modules/security/openvpn/default.nix index d0edef3..1636081 100644 --- a/modules/security/openvpn/default.nix +++ b/modules/security/openvpn/default.nix @@ -7,12 +7,12 @@ # OpenVPN - Open-source VPN client for secure remote access { - options.programs.openvpn = { + options.security.openvpn = { enable = lib.mkEnableOption "Enables openvpn."; package = lib.mkPackageOption pkgs "openvpn" { }; }; - config = lib.mkIf config.programs.openvpn.enable { - home.packages = [ config.programs.openvpn.package ]; + config = lib.mkIf config.security.openvpn.enable { + home.packages = [ config.security.openvpn.package ]; }; } diff --git a/modules/security/ssh/default.nix b/modules/security/ssh/default.nix index 7e8752a..2224f98 100644 --- a/modules/security/ssh/default.nix +++ b/modules/security/ssh/default.nix @@ -9,8 +9,13 @@ { imports = [ ./git.nix ]; - config = lib.mkIf config.programs.ssh.enable { + options.security.ssh = { + enable = lib.mkEnableOption "Enables ssh."; + }; + + config = lib.mkIf config.security.ssh.enable { programs.ssh = { + enable = true; package = pkgs.openssh; enableDefaultConfig = false; extraOptionOverrides = { diff --git a/modules/security/ssh/git.nix b/modules/security/ssh/git.nix index 9683629..2c79d34 100644 --- a/modules/security/ssh/git.nix +++ b/modules/security/ssh/git.nix @@ -41,7 +41,7 @@ let }; in { - config = lib.mkIf (config.programs.ssh.enable && config.programs.git.useSSH) { + config = lib.mkIf (config.security.ssh.enable && config.development.git.useSSH) { home.file = builtins.listToAttrs (map mkKeyFile hosts); programs.ssh.settings = builtins.listToAttrs (map mkGitHost hosts); diff --git a/modules/system/bluetui/default.nix b/modules/system/bluetui/default.nix index a2a97ec..498659c 100644 --- a/modules/system/bluetui/default.nix +++ b/modules/system/bluetui/default.nix @@ -7,12 +7,12 @@ # Bluetui - Terminal UI for Bluetooth management { - options.programs.bluetui = { + options.system.bluetui = { enable = lib.mkEnableOption "Enables bluetui."; package = lib.mkPackageOption pkgs "bluetui" { }; }; - config = lib.mkIf config.programs.bluetui.enable { - home.packages = [ config.programs.bluetui.package ]; + config = lib.mkIf config.system.bluetui.enable { + home.packages = [ config.system.bluetui.package ]; }; } diff --git a/modules/system/bottom/default.nix b/modules/system/bottom/default.nix index 3ecda86..59a2a43 100644 --- a/modules/system/bottom/default.nix +++ b/modules/system/bottom/default.nix @@ -7,9 +7,15 @@ # Bottom - Cross-platform graphical process/system monitor (Rust-based) { - config = lib.mkIf config.programs.bottom.enable { + options.system.bottom = { + enable = lib.mkEnableOption "Enables bottom."; + package = lib.mkPackageOption pkgs "bottom" { }; + }; + + config = lib.mkIf config.system.bottom.enable { programs.bottom = { - package = pkgs.bottom; + enable = true; + package = config.system.bottom.package; }; }; } diff --git a/modules/system/brightnessctl/default.nix b/modules/system/brightnessctl/default.nix index cea3517..b95ddb4 100644 --- a/modules/system/brightnessctl/default.nix +++ b/modules/system/brightnessctl/default.nix @@ -7,12 +7,12 @@ # brightnessctl - Backlight brightness control tool { - options.programs.brightnessctl = { + options.system.brightnessctl = { enable = lib.mkEnableOption "Enables brightnessctl."; package = lib.mkPackageOption pkgs "brightnessctl" { }; }; - config = lib.mkIf config.programs.brightnessctl.enable { - home.packages = [ config.programs.brightnessctl.package ]; + config = lib.mkIf config.system.brightnessctl.enable { + home.packages = [ config.system.brightnessctl.package ]; }; } diff --git a/modules/system/htop/default.nix b/modules/system/htop/default.nix index 7781464..cf36f41 100644 --- a/modules/system/htop/default.nix +++ b/modules/system/htop/default.nix @@ -7,8 +7,13 @@ # Htop - Interactive process viewer (using htop-vim version) { - config = lib.mkIf config.programs.htop.enable { + options.system.htop = { + enable = lib.mkEnableOption "Enables htop."; + }; + + config = lib.mkIf config.system.htop.enable { programs.htop = { + enable = true; package = pkgs.htop-vim; }; }; diff --git a/modules/system/nvtop/default.nix b/modules/system/nvtop/default.nix index 19dd61b..8b41978 100644 --- a/modules/system/nvtop/default.nix +++ b/modules/system/nvtop/default.nix @@ -7,7 +7,7 @@ # Nvtop - GPU process monitor (NVIDIA/AMD/Intel GPUs) { - options.programs.nvtop = { + options.system.nvtop = { enable = lib.mkEnableOption "Enables nvtop."; package = lib.mkOption { type = lib.types.package; @@ -17,7 +17,7 @@ }; }; - config = lib.mkIf config.programs.nvtop.enable { - home.packages = [ config.programs.nvtop.package ]; + config = lib.mkIf config.system.nvtop.enable { + home.packages = [ config.system.nvtop.package ]; }; } diff --git a/modules/system/systemctl-tui/default.nix b/modules/system/systemctl-tui/default.nix index 77dca8c..1b151cf 100644 --- a/modules/system/systemctl-tui/default.nix +++ b/modules/system/systemctl-tui/default.nix @@ -7,12 +7,12 @@ # systemctl-tui - TUI for systemctl (systemd service management) { - options.programs.systemctl-tui = { + options.system.systemctl-tui = { enable = lib.mkEnableOption "Enables systemctl-tui."; package = lib.mkPackageOption pkgs "systemctl-tui" { }; }; - config = lib.mkIf config.programs.systemctl-tui.enable { - home.packages = [ config.programs.systemctl-tui.package ]; + config = lib.mkIf config.system.systemctl-tui.enable { + home.packages = [ config.system.systemctl-tui.package ]; }; } diff --git a/modules/terminal/bash/default.nix b/modules/terminal/bash/default.nix new file mode 100644 index 0000000..6b53126 --- /dev/null +++ b/modules/terminal/bash/default.nix @@ -0,0 +1,8 @@ +{ lib, ... }: + +# Bash - GNU Bourne Again SHell +{ + options.terminal.bash = { + enable = lib.mkEnableOption "Enables bash."; + }; +} diff --git a/modules/terminal/bat/default.nix b/modules/terminal/bat/default.nix index 3c962a3..e1b4c96 100644 --- a/modules/terminal/bat/default.nix +++ b/modules/terminal/bat/default.nix @@ -7,8 +7,15 @@ # bat - a cat clone with wings { - config = lib.mkIf config.programs.bat.enable { + options.terminal.bat = { + enable = lib.mkEnableOption "Enables bat."; + package = lib.mkPackageOption pkgs "bat" { }; + }; + + config = lib.mkIf config.terminal.bat.enable { programs.bat = { + enable = true; + package = config.terminal.bat.package; config = { theme = "base16"; }; diff --git a/modules/terminal/default.nix b/modules/terminal/default.nix index 7a3ffcc..e02ac47 100644 --- a/modules/terminal/default.nix +++ b/modules/terminal/default.nix @@ -2,6 +2,7 @@ { imports = [ + ./bash ./bat ./fzf ./kitty diff --git a/modules/terminal/fzf/assertions.nix b/modules/terminal/fzf/assertions.nix index 7c2e79c..269af2e 100644 --- a/modules/terminal/fzf/assertions.nix +++ b/modules/terminal/fzf/assertions.nix @@ -3,9 +3,9 @@ assertions = [ { assertion = - !config.programs.fzf.enable || config.programs.zsh.enable || config.programs.bash.enable; + !config.terminal.fzf.enable || config.terminal.zsh.enable || config.terminal.bash.enable; message = '' - programs.fzf is enabled but neither programs.zsh.enable nor programs.bash.enable is set. + terminal.fzf is enabled but neither terminal.zsh.enable nor terminal.bash.enable is set. fzf shell integration requires zsh or bash. Please enable at least one. ''; } diff --git a/modules/terminal/fzf/default.nix b/modules/terminal/fzf/default.nix index 7671b3c..499bf3c 100644 --- a/modules/terminal/fzf/default.nix +++ b/modules/terminal/fzf/default.nix @@ -1,17 +1,29 @@ -{ config, lib, ... }: +{ + config, + lib, + pkgs, + ... +}: # FZF - Fuzzy finder, CLI fuzzy search tool { imports = [ ./assertions.nix ]; + options.terminal.fzf = { + enable = lib.mkEnableOption "Enables fzf."; + package = lib.mkPackageOption pkgs "fzf" { }; + }; + config = let shellIntegration = '' - ${if config.programs.zsh.enable then "eval \"$(fzf --zsh)\"" else "eval \"$(fzf --bash)\""} + ${if config.terminal.zsh.enable then "eval \"$(fzf --zsh)\"" else "eval \"$(fzf --bash)\""} ''; in - lib.mkIf config.programs.fzf.enable { + lib.mkIf config.terminal.fzf.enable { programs.fzf = { + enable = true; + package = config.terminal.fzf.package; defaultOptions = [ "--height 100%" "--layout=reverse" @@ -26,26 +38,26 @@ ]; colors = with config.scheme.withHashtag; { - fg = base05; # Foreground - bg = "-1"; # Background (-1 for transparent) - hl = base0D; # Highlight - - "fg+" = base07; # Foreground for selected item - "bg+" = "-1"; # Background for selected item - "hl+" = base0D; # Highlight for selected item - - gutter = "-1"; # Remove the white margin at the left - - info = base0B; # Info text (usually count of items) - border = base03; # Border color - prompt = base0A; # Prompt text color - pointer = base0F; # Pointer color (e.g., > for selected) - marker = base0C; # Marker color (e.g., for multi-select) - spinner = base0C; # Spinner color (during search) + fg = base05; + bg = "-1"; + hl = base0D; + + "fg+" = base07; + "bg+" = "-1"; + "hl+" = base0D; + + gutter = "-1"; + + info = base0B; + border = base03; + prompt = base0A; + pointer = base0F; + marker = base0C; + spinner = base0C; }; }; - programs.zsh.initContent = lib.mkIf config.programs.zsh.enable (lib.mkAfter shellIntegration); - programs.bash.initExtra = lib.mkIf config.programs.bash.enable (lib.mkAfter shellIntegration); + programs.zsh.initContent = lib.mkIf config.terminal.zsh.enable (lib.mkAfter shellIntegration); + programs.bash.initExtra = lib.mkIf config.terminal.bash.enable (lib.mkAfter shellIntegration); }; } diff --git a/modules/terminal/kitty/default.nix b/modules/terminal/kitty/default.nix index 3701180..9b1836a 100644 --- a/modules/terminal/kitty/default.nix +++ b/modules/terminal/kitty/default.nix @@ -1,17 +1,25 @@ { config, lib, + pkgs, ... }: # Kitty - GPU-accelerated terminal emulator { - config = lib.mkIf config.programs.kitty.enable { + options.terminal.kitty = { + enable = lib.mkEnableOption "Enables kitty."; + package = lib.mkPackageOption pkgs "kitty" { }; + }; + + config = lib.mkIf config.terminal.kitty.enable { xdg.mimeApps.defaultApplications = { "x-scheme-handler/terminal" = "kitty.desktop"; }; programs.kitty = { + enable = true; + package = config.terminal.kitty.package; settings = with config.scheme.withHashtag; { window_padding_width = 10; font_size = config.fonts.size; @@ -48,7 +56,7 @@ allow_remote_control = "yes"; listen_on = "unix:/tmp/kitty"; - shell = lib.mkIf config.programs.zsh.enable (lib.getExe config.programs.zsh.package); + shell = lib.mkIf config.terminal.zsh.enable (lib.getExe config.terminal.zsh.package); }; }; }; diff --git a/modules/terminal/less/default.nix b/modules/terminal/less/default.nix index 516377d..8785498 100644 --- a/modules/terminal/less/default.nix +++ b/modules/terminal/less/default.nix @@ -2,8 +2,13 @@ # less - terminal pager { - config = lib.mkIf config.programs.less.enable { + options.terminal.less = { + enable = lib.mkEnableOption "Enables less."; + }; + + config = lib.mkIf config.terminal.less.enable { programs.less = { + enable = true; options = [ "--RAW-CONTROL-CHARS" "--quit-if-one-screen" diff --git a/modules/terminal/starship/default.nix b/modules/terminal/starship/default.nix index ae5e082..647cef3 100644 --- a/modules/terminal/starship/default.nix +++ b/modules/terminal/starship/default.nix @@ -2,9 +2,14 @@ # Starship - Minimal, blazing-fast shell prompt { - config = lib.mkIf config.programs.starship.enable { + options.terminal.starship = { + enable = lib.mkEnableOption "Enables starship."; + }; + + config = lib.mkIf config.terminal.starship.enable { programs.starship = { - enableZshIntegration = config.programs.zsh.enable; + enable = true; + enableZshIntegration = config.terminal.zsh.enable; settings = let mkSegment = content: ''[┄\[](red)[${content}]($style)[\]](red)''; diff --git a/modules/terminal/tmux/default.nix b/modules/terminal/tmux/default.nix index e2e76c9..fdee9ff 100644 --- a/modules/terminal/tmux/default.nix +++ b/modules/terminal/tmux/default.nix @@ -7,9 +7,15 @@ # Tmux - Terminal multiplexer (window/pane management) { - config = lib.mkIf config.programs.tmux.enable { + options.terminal.tmux = { + enable = lib.mkEnableOption "Enables tmux."; + package = lib.mkPackageOption pkgs "tmux" { }; + }; + + config = lib.mkIf config.terminal.tmux.enable { programs.tmux = { - package = pkgs.tmux; + enable = true; + package = config.terminal.tmux.package; }; }; } diff --git a/modules/terminal/zsh/default.nix b/modules/terminal/zsh/default.nix index f3bdbb1..842556a 100644 --- a/modules/terminal/zsh/default.nix +++ b/modules/terminal/zsh/default.nix @@ -7,13 +7,19 @@ # Zsh - Z shell, extended bash with additional features and plugins { + options.terminal.zsh = { + enable = lib.mkEnableOption "Enables zsh."; + package = lib.mkPackageOption pkgs "zsh" { }; + }; + config = let nixCommandWrappers = builtins.readFile ./nix-aliases.sh; in - lib.mkIf config.programs.zsh.enable { + lib.mkIf config.terminal.zsh.enable { programs.zsh = { - package = pkgs.zsh; + enable = true; + package = config.terminal.zsh.package; dotDir = "${config.xdg.configHome}/zsh"; history.path = "${config.xdg.cacheHome}/zsh/history"; enableCompletion = true; @@ -31,8 +37,8 @@ ''; }; - programs.bash.initExtra = lib.mkIf config.programs.bash.enable (lib.mkAfter nixCommandWrappers); + programs.bash.initExtra = lib.mkIf config.terminal.bash.enable (lib.mkAfter nixCommandWrappers); - home.sessionVariables.SHELL = "${lib.getExe config.programs.zsh.package}"; + home.sessionVariables.SHELL = "${lib.getExe config.terminal.zsh.package}"; }; } diff --git a/modules/web/aria2/default.nix b/modules/web/aria2/default.nix index 79c6f8e..efea840 100644 --- a/modules/web/aria2/default.nix +++ b/modules/web/aria2/default.nix @@ -7,9 +7,15 @@ # Aria2 - command line download manager { - config = lib.mkIf config.programs.aria2.enable { + options.web.aria2 = { + enable = lib.mkEnableOption "Enables aria2."; + package = lib.mkPackageOption pkgs "aria2" { }; + }; + + config = lib.mkIf config.web.aria2.enable { programs.aria2 = { - package = pkgs.aria2; + enable = true; + package = config.web.aria2.package; settings = { dir = "${config.home.homeDirectory}/Downloads"; }; diff --git a/modules/web/brave/default.nix b/modules/web/brave/default.nix index 936da6a..e323058 100644 --- a/modules/web/brave/default.nix +++ b/modules/web/brave/default.nix @@ -6,8 +6,13 @@ }: { - config = lib.mkIf config.programs.brave.enable { + options.web.brave = { + enable = lib.mkEnableOption "Enables brave."; + }; + + config = lib.mkIf config.web.brave.enable { programs.brave = { + enable = true; package = pkgs.brave; commandLineArgs = [ @@ -16,10 +21,10 @@ ]; extensions = [ - { id = "nngceckbapebfimnlniiiahkandclblb"; } # Bitwarden - { id = "mpkodccbngfoacfalldjimigbofkhgjn"; } # Aria2 Explorer - { id = "eimadpbcbfnmbkopoojfekhnkhdbieeh"; } # Dark Reader - { id = "hpejmncgbammabkkodflfeekpcicfjnk"; } # Quite Black + { id = "nngceckbapebfimnlniiiahkandclblb"; } + { id = "mpkodccbngfoacfalldjimigbofkhgjn"; } + { id = "eimadpbcbfnmbkopoojfekhnkhdbieeh"; } + { id = "hpejmncgbammabkkodflfeekpcicfjnk"; } ]; }; |
