diff options
Diffstat (limited to 'modules/development')
24 files changed, 80 insertions, 44 deletions
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; }; |
