diff options
| author | Arpit Chakladar <arpitchakladar+git@gmail.com> | 2026-07-15 20:02:29 +0530 |
|---|---|---|
| committer | Arpit Chakladar <arpitchakladar+git@gmail.com> | 2026-07-15 20:03:04 +0530 |
| commit | 01aaa7ad39c1fe8af6ffbca31abbab27dbfefc95 (patch) | |
| tree | 88560b79fa71e3b83d9d9aca6d1bb40673a1a170 /modules/development/nixvim | |
| parent | 2c573bb0c437b83fe629a9a5b818c976d2dfd796 (diff) | |
| download | home-manager-config-01aaa7ad39c1fe8af6ffbca31abbab27dbfefc95.tar.gz home-manager-config-01aaa7ad39c1fe8af6ffbca31abbab27dbfefc95.zip | |
refactor: organized the modules into better categories
Instead of lumping everything in modules/programs we are separating them
into separate directories in modules/
Diffstat (limited to 'modules/development/nixvim')
| -rw-r--r-- | modules/development/nixvim/colorscheme.nix | 26 | ||||
| -rw-r--r-- | modules/development/nixvim/default.nix | 103 | ||||
| -rw-r--r-- | modules/development/nixvim/keymaps.nix | 41 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/cmp.nix | 37 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/comment.nix | 23 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/default.nix | 20 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/gitsigns.nix | 8 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/indent-blankline.nix | 14 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/lsp.nix | 234 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/lualine.nix | 90 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/luasnip.nix | 8 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/noice.nix | 8 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/nvim-tree.nix | 44 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/telescope.nix | 85 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/treesitter.nix | 19 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/web-devicons.nix | 8 | ||||
| -rw-r--r-- | modules/development/nixvim/plugins/which-key.nix | 21 |
17 files changed, 789 insertions, 0 deletions
diff --git a/modules/development/nixvim/colorscheme.nix b/modules/development/nixvim/colorscheme.nix new file mode 100644 index 0000000..ba81634 --- /dev/null +++ b/modules/development/nixvim/colorscheme.nix @@ -0,0 +1,26 @@ +{ config, lib, ... }: + +# Colorscheme - Base16 theme configuration for nixvim +{ + config.programs.nixvim.colorschemes.base16 = lib.mkIf config.programs.nixvim.enable { + enable = true; + colorscheme = with config.scheme.withHashtag; { + base00 = base00; + base01 = base01; + base02 = base02; + base03 = base03; + base04 = base04; + base05 = base05; + base06 = base06; + base07 = base07; + base08 = base08; + base09 = base09; + base0A = base0A; + base0B = base0B; + base0C = base0C; + base0D = base0D; + base0E = base0E; + base0F = base0F; + }; + }; +} diff --git a/modules/development/nixvim/default.nix b/modules/development/nixvim/default.nix new file mode 100644 index 0000000..c7978d4 --- /dev/null +++ b/modules/development/nixvim/default.nix @@ -0,0 +1,103 @@ +{ config, lib, ... }: + +# Nixvim - Neovim configured through Nix (home-manager integration) +{ + imports = [ + ./colorscheme.nix + ./keymaps.nix + ./plugins + ]; + + config = { + programs.nixvim = { + defaultEditor = true; + opts = { + number = true; + relativenumber = true; + shiftwidth = 2; + tabstop = 2; + softtabstop = 2; + expandtab = true; + list = true; + laststatus = 3; + foldlevel = 99; + clipboard = "unnamedplus"; + updatetime = 500; + }; + clipboard.providers.xclip.enable = true; + extraConfigLuaPre = with config.scheme.withHashtag; '' + vim.opt.fillchars:append({ eob = " " }) + vim.opt.listchars = { tab = " ", trail = "_", lead = " " } + vim.api.nvim_set_hl(0, "WinSeparator", { + fg = "${base01}", + bg = "${base00}", + }) + vim.api.nvim_set_hl(0, 'NotifyERRORBorder', { fg = '${base08}' }) + vim.api.nvim_set_hl(0, 'NotifyWARNBorder', { fg = '${base09}' }) + vim.api.nvim_set_hl(0, 'NotifyINFOBorder', { fg = '${base0B}' }) + vim.api.nvim_set_hl(0, 'NotifyDEBUGBorder', { fg = '${base03}' }) + vim.api.nvim_set_hl(0, 'NotifyTRACEBorder', { fg = '${base0E}' }) + + vim.api.nvim_set_hl(0, 'NotifyERRORIcon', { fg = '${base08}' }) + vim.api.nvim_set_hl(0, 'NotifyWARNIcon', { fg = '${base09}' }) + vim.api.nvim_set_hl(0, 'NotifyINFOIcon', { fg = '${base0B}' }) + vim.api.nvim_set_hl(0, 'NotifyDEBUGIcon', { fg = '${base03}' }) + vim.api.nvim_set_hl(0, 'NotifyTRACEIcon', { fg = '${base0E}' }) + + vim.api.nvim_set_hl(0, 'NotifyERRORTitle', { fg = '${base08}' }) + vim.api.nvim_set_hl(0, 'NotifyWARNTitle', { fg = '${base09}' }) + vim.api.nvim_set_hl(0, 'NotifyINFOTitle', { fg = '${base0B}' }) + vim.api.nvim_set_hl(0, 'NotifyDEBUGTitle', { fg = '${base03}' }) + vim.api.nvim_set_hl(0, 'NotifyTRACETitle', { fg = '${base0E}' }) + + vim.api.nvim_set_hl(0, 'NotifyERRORBody', { link = 'Normal' }) + vim.api.nvim_set_hl(0, 'NotifyWARNBody', { link = 'Normal' }) + vim.api.nvim_set_hl(0, 'NotifyINFOBody', { link = 'Normal' }) + vim.api.nvim_set_hl(0, 'NotifyDEBUGBody', { link = 'Normal' }) + vim.api.nvim_set_hl(0, 'NotifyTRACEBody', { link = 'Normal' }) + + vim.api.nvim_create_autocmd({ "FileType" }, { + pattern = { "yaml", "yml" }, + callback = function() + vim.opt_local.expandtab = true + vim.opt_local.shiftwidth = 2 + vim.opt_local.softtabstop = 2 + vim.opt_local.tabstop = 2 + end, + }) + ''; + performance = { + byteCompileLua.enable = true; + combinePlugins.enable = true; + }; + + diagnostic = { + settings = { + virtual_text = false; + signs = true; + underline = true; + update_in_insert = false; + float = { + border = "rounded"; + source = true; # Show which LSP the diagnostic is from + header = ""; + prefix = ""; + }; + }; + }; + + # Show diagnostics float on cursor hold + autoCmd = [ + { + event = [ "CursorHold" ]; + pattern = "*"; + callback.__raw = '' + function() + vim.diagnostic.open_float(nil, { focus = false }) + end + ''; + } + ]; + }; + }; +} diff --git a/modules/development/nixvim/keymaps.nix b/modules/development/nixvim/keymaps.nix new file mode 100644 index 0000000..4e4b35a --- /dev/null +++ b/modules/development/nixvim/keymaps.nix @@ -0,0 +1,41 @@ +{ config, lib, ... }: + +# Keymaps - Keyboard shortcut configuration for nixvim +{ + config.programs.nixvim.keymaps = lib.mkIf config.programs.nixvim.enable [ + { + key = "<c-h>"; + action = "<c-w>h"; + options.desc = "Move to left window"; + } + { + key = "<c-w>"; + action = "<c-w>j"; + options.desc = "Move to bottom window"; + } + { + key = "<c-k>"; + action = "<c-w>k"; + options.desc = "Move to top window"; + } + { + key = "<c-l>"; + action = "<c-w>l"; + options.desc = "Move to right window"; + } + { + key = "<c-n>"; + action = "<cmd>NvimTreeToggle<cr>"; + mode = [ + "n" + "i" + ]; + options.desc = "Toggle file explorer"; + } + { + key = "<c-c>"; + action = "<cmd>NotificationsClear<cr>"; + options.desc = "Clear notifications"; + } + ]; +} diff --git a/modules/development/nixvim/plugins/cmp.nix b/modules/development/nixvim/plugins/cmp.nix new file mode 100644 index 0000000..683e0d3 --- /dev/null +++ b/modules/development/nixvim/plugins/cmp.nix @@ -0,0 +1,37 @@ +{ config, lib, ... }: + +# Cmp - Completion plugin (nvim-cmp) for auto-completion +{ + config.programs.nixvim.plugins.cmp = lib.mkIf config.programs.nixvim.enable { + enable = true; + autoEnableSources = true; + settings = { + snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end"; + mapping = { + "<C-Space>" = "cmp.mapping.complete()"; + "<CR>" = "cmp.mapping.confirm({ select = true })"; + "<Tab>" = "cmp.mapping.select_next_item()"; + "<S-Tab>" = "cmp.mapping.select_prev_item()"; + "<Down>" = "cmp.mapping.select_next_item()"; + "<Up>" = "cmp.mapping.select_prev_item()"; + "<C-u>" = "cmp.mapping.scroll_docs(-4)"; # scroll docs up + "<C-d>" = "cmp.mapping.scroll_docs(4)"; # scroll docs down + + "<Escape>" = '' + cmp.mapping(function(fallback) + if cmp.visible() then + cmp.abort() + else + fallback() + end + end, { "i" }) + ''; + }; + sources = [ + { name = "nvim_lsp"; } + { name = "path"; } + { name = "buffer"; } + ]; + }; + }; +} diff --git a/modules/development/nixvim/plugins/comment.nix b/modules/development/nixvim/plugins/comment.nix new file mode 100644 index 0000000..cc1b9cb --- /dev/null +++ b/modules/development/nixvim/plugins/comment.nix @@ -0,0 +1,23 @@ +{ config, lib, ... }: + +# Comment - Comment toggling plugin (comment.nvim) +{ + config.programs.nixvim.plugins.comment = lib.mkIf config.programs.nixvim.enable { + enable = true; + settings = { + toggler = { + line = "gcc"; # toggle line comment + block = "gbc"; # toggle block comment + }; + opleader = { + line = "gc"; # line comment operator (gc + motion) + block = "gb"; # block comment operator (gb + motion) + }; + extra = { + above = "gcO"; # add comment line above + below = "gco"; # add comment line below + eol = "gcA"; # add comment at end of line + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/default.nix b/modules/development/nixvim/plugins/default.nix new file mode 100644 index 0000000..a263c51 --- /dev/null +++ b/modules/development/nixvim/plugins/default.nix @@ -0,0 +1,20 @@ +{ ... }: + +# Plugins - Collection of nixvim plugin configurations +{ + imports = [ + ./cmp.nix + ./comment.nix + ./gitsigns.nix + ./indent-blankline.nix + ./lsp.nix + ./lualine.nix + ./luasnip.nix + ./noice.nix + ./nvim-tree.nix + ./telescope.nix + ./treesitter.nix + ./web-devicons.nix + ./which-key.nix + ]; +} diff --git a/modules/development/nixvim/plugins/gitsigns.nix b/modules/development/nixvim/plugins/gitsigns.nix new file mode 100644 index 0000000..ea99eba --- /dev/null +++ b/modules/development/nixvim/plugins/gitsigns.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: + +# Gitsigns - Git status in the sign column (gitsigns.nvim) +{ + config.programs.nixvim.plugins.gitsigns = lib.mkIf config.programs.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/indent-blankline.nix b/modules/development/nixvim/plugins/indent-blankline.nix new file mode 100644 index 0000000..eb2674a --- /dev/null +++ b/modules/development/nixvim/plugins/indent-blankline.nix @@ -0,0 +1,14 @@ +{ config, lib, ... }: + +# Indent-blankline - Visual indentation guides (indent-blankline.nvim) +{ + config.programs.nixvim.plugins.indent-blankline = lib.mkIf config.programs.nixvim.enable { + enable = true; + settings = { + indent = { + char = "┊"; + tab_char = "│"; + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/lsp.nix b/modules/development/nixvim/plugins/lsp.nix new file mode 100644 index 0000000..7fc3ddd --- /dev/null +++ b/modules/development/nixvim/plugins/lsp.nix @@ -0,0 +1,234 @@ +{ config, lib, ... }: + +# LSP - Language Server Protocol configuration (nvim-lspconfig) +{ + config.programs.nixvim.plugins.lsp = lib.mkIf config.programs.nixvim.enable { + enable = true; + inlayHints = true; + autoLoad = true; + + keymaps.lspBuf = { + K = "hover"; + gD = "references"; + gd = "definition"; + gi = "implementation"; + gt = "type_definition"; + }; + + servers = { + # -- System & Configuration -- + nixd = { + enable = true; + package = null; + }; # Nix + bashls = { + enable = true; + package = null; + }; # Bash/Shell + taplo = { + enable = true; + package = null; + }; # TOML + yamlls = { + enable = true; + package = null; + }; # YAML + jsonls = { + enable = true; + package = null; + }; # JSON + marksman = { + enable = true; + package = null; + }; # Markdown + + # -- Web Development (HTML/CSS/JS/TS) -- + html = { + enable = true; + package = null; + }; # HTML + cssls = { + enable = true; + package = null; + }; # CSS/SCSS/LESS + tailwindcss = { + enable = true; + package = null; + }; # Tailwind CSS + vtsls = { + # JS/TS (Modern fast wrapper for tsserver) + enable = true; + package = null; + settings = { + # Optional but recommended: stops huge generic types from taking over your screen + vtsls.experimental.maxInlayHintLength = 30; + + # TypeScript type inferences + typescript.inlayHints = { + parameterNames.enabled = "all"; + parameterTypes.enabled = true; + variableTypes.enabled = true; + propertyDeclarationTypes.enabled = true; + functionLikeReturnTypes.enabled = true; + enumMemberValues.enabled = true; + }; + + # JavaScript type inferences (via JSDoc) + javascript.inlayHints = { + parameterNames.enabled = "all"; + parameterTypes.enabled = true; + variableTypes.enabled = true; + propertyDeclarationTypes.enabled = true; + functionLikeReturnTypes.enabled = true; + enumMemberValues.enabled = true; + }; + }; + }; + eslint = { + enable = true; + package = null; + }; # ESLint diagnostics/formatting + + # -- Web Frameworks -- + volar = { + # Vue + enable = true; + package = null; + tslsIntegration = false; + }; + svelte = { + enable = true; + package = null; + }; # Svelte + astro = { + enable = true; + package = null; + }; # Astro + + # -- Scripting & High-Level Languages -- + basedpyright = { + # Python (Modern, faster fork of Pyright) + enable = true; + package = null; + settings.basedpyright.analysis.inlayHints = { + variableTypes = true; + callArgumentNames = true; + functionReturnTypes = true; + genericTypes = false; # can get noisy, opt-in + }; + }; + ruff = { + enable = true; + package = null; + }; # Python (Ultra-fast linter/formatter) + ruby_lsp = { + enable = true; + package = null; + }; # Ruby (Shopify's modern standard) + lua_ls = { + # Lua + enable = true; + package = null; + settings.Lua.hint = { + enable = true; + arrayIndex = "Auto"; + setType = true; + paramName = "All"; + paramType = true; + }; + }; + intelephense = { + enable = true; + package = null; + }; # PHP + elixirls = { + enable = true; + package = null; + }; # Elixir + + # -- Systems, Compiled, & Enterprise -- + clangd = { + enable = true; + package = null; + }; # C/C++ (inlay hints on by default) + rust_analyzer = { + # Rust (inlay hints on by default) + enable = true; + package = null; + installCargo = false; + installRustc = false; + }; + gopls = { + # Go + enable = true; + package = null; + settings.gopls.hints = { + assignVariableTypes = true; + compositeLiteralFields = true; + compositeLiteralTypes = true; + constantValues = true; + functionTypeParameters = true; + parameterNames = true; + rangeVariableTypes = true; + }; + }; + zls = { + enable = true; + package = null; + }; # Zig (inlay hints on by default) + jdtls = { + # Java + enable = true; + package = null; + settings.java.inlayHints.parameterNames.enabled = "all"; + }; + kotlin_language_server = { + enable = true; + package = null; + }; # Kotlin + csharp_ls = { + enable = true; + package = null; + }; # C# (.NET) — no inlay hint support + hls = { + # Haskell + enable = true; + package = null; + installGhc = false; + settings.haskell.plugin."inlay-hints".globalOn = true; + }; + ocamllsp = { + enable = true; + package = null; + }; # OCaml + + # -- Infrastructure & DevOps -- + dockerls = { + enable = true; + package = null; + }; # Dockerfile + docker_compose_language_service = { + enable = true; + package = null; + }; # Docker Compose + terraformls = { + enable = true; + package = null; + }; # Terraform/HCL + + # -- Data & APIs -- + sqlls = { + enable = true; + package = null; + }; # SQL + graphql = { + enable = true; + package = null; + }; # GraphQL + prismals = { + enable = true; + package = null; + }; # Prisma ORM + }; + }; +} diff --git a/modules/development/nixvim/plugins/lualine.nix b/modules/development/nixvim/plugins/lualine.nix new file mode 100644 index 0000000..72f34be --- /dev/null +++ b/modules/development/nixvim/plugins/lualine.nix @@ -0,0 +1,90 @@ +{ config, lib, ... }: + +# Lualine - Statusline configuration (lualine.nvim) +{ + config.programs.nixvim.plugins.lualine = lib.mkIf config.programs.nixvim.enable { + enable = true; + settings = { + options = { + theme = with config.scheme.withHashtag; { + normal = { + a = { + fg = base00; + bg = base0D; + gui = "bold"; + }; + b = { + fg = base05; + bg = base01; + }; + c = { + fg = base05; + bg = base00; + }; + }; + insert = { + a = { + fg = base00; + bg = base0B; + gui = "bold"; + }; + b = { + fg = base05; + bg = base01; + }; + c = { + fg = base05; + bg = base00; + }; + }; + visual = { + a = { + fg = base00; + bg = base0A; + gui = "bold"; + }; + b = { + fg = base05; + bg = base01; + }; + c = { + fg = base05; + bg = base00; + }; + }; + replace = { + a = { + fg = base00; + bg = base08; + gui = "bold"; + }; + b = { + fg = base05; + bg = base01; + }; + c = { + fg = base05; + bg = base00; + }; + }; + inactive = { + a = { + fg = base04; + bg = base00; + gui = "bold"; + }; + b = { + fg = base04; + bg = base00; + }; + c = { + fg = base04; + bg = base00; + }; + }; + }; + icons_enabled = true; + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/luasnip.nix b/modules/development/nixvim/plugins/luasnip.nix new file mode 100644 index 0000000..60571e9 --- /dev/null +++ b/modules/development/nixvim/plugins/luasnip.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: + +# Luasnip - Snippet engine for Neovim (Lua-based) +{ + config.programs.nixvim.plugins.luasnip = lib.mkIf config.programs.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/noice.nix b/modules/development/nixvim/plugins/noice.nix new file mode 100644 index 0000000..d466506 --- /dev/null +++ b/modules/development/nixvim/plugins/noice.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: + +# Noice - Modern UI for Neovim (cmdline, popupmenu, messages) +{ + config.programs.nixvim.plugins.noice = lib.mkIf config.programs.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/nvim-tree.nix b/modules/development/nixvim/plugins/nvim-tree.nix new file mode 100644 index 0000000..2ad6570 --- /dev/null +++ b/modules/development/nixvim/plugins/nvim-tree.nix @@ -0,0 +1,44 @@ +{ config, lib, ... }: + +# Nvim-tree - File explorer sidebar (nvim-tree.lua) +{ + config.programs.nixvim.plugins.nvim-tree = lib.mkIf config.programs.nixvim.enable { + enable = true; + settings = { + filters = { + dotfiles = false; + git_clean = false; + no_buffer = false; + custom = { }; + }; + git = { + enable = true; + ignore = false; + }; + view = { + width = 30; + }; + renderer = { + indent_markers = { + enable = true; + inline_arrows = false; + icons = { + corner = "└"; + edge = "│"; + item = "├"; + bottom = "─"; + none = " "; + }; + }; + icons = { + show = { + folder = true; + folder_arrow = false; + file = true; + git = true; + }; + }; + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/telescope.nix b/modules/development/nixvim/plugins/telescope.nix new file mode 100644 index 0000000..b9678fc --- /dev/null +++ b/modules/development/nixvim/plugins/telescope.nix @@ -0,0 +1,85 @@ +{ config, lib, ... }: + +# Telescope - Fuzzy finder +{ + config.programs.nixvim.plugins.telescope = lib.mkIf config.programs.nixvim.enable { + enable = true; + extensions = { + fzf-native.enable = true; # faster fuzzy sorting + ui-select.enable = true; # use telescope for vim.ui.select (code actions etc.) + }; + settings = { + defaults = { + layout_strategy = "horizontal"; + layout_config = { + horizontal = { + preview_width = 0.55; + results_width = 0.45; + }; + width = 0.87; + height = 0.80; + }; + mappings = { + i = { + "<C-k>".__raw = "require('telescope.actions').move_selection_previous"; + "<C-j>".__raw = "require('telescope.actions').move_selection_next"; + "<Escape>".__raw = "require('telescope.actions').close"; + }; + }; + }; + }; + keymaps = { + # Files + "<leader>ff" = { + action = "find_files"; + options.desc = "Find files"; + }; + "<leader>fg" = { + action = "live_grep"; + options.desc = "Live grep"; + }; + "<leader>fb" = { + action = "buffers"; + options.desc = "Find buffers"; + }; + "<leader>fr" = { + action = "oldfiles"; + options.desc = "Recent files"; + }; + + # LSP + "<leader>fd" = { + action = "diagnostics"; + options.desc = "Diagnostics"; + }; + "<leader>fs" = { + action = "lsp_document_symbols"; + options.desc = "Document symbols"; + }; + + # Git + "<leader>gc" = { + action = "git_commits"; + options.desc = "Git commits"; + }; + "<leader>gb" = { + action = "git_branches"; + options.desc = "Git branches"; + }; + + # Misc + "<leader>fh" = { + action = "help_tags"; + options.desc = "Help tags"; + }; + "<leader>fc" = { + action = "commands"; + options.desc = "Commands"; + }; + "<leader>fk" = { + action = "keymaps"; + options.desc = "Find keymaps"; + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/treesitter.nix b/modules/development/nixvim/plugins/treesitter.nix new file mode 100644 index 0000000..035ac7a --- /dev/null +++ b/modules/development/nixvim/plugins/treesitter.nix @@ -0,0 +1,19 @@ +{ config, lib, ... }: + +# Treesitter - Syntax highlighting and parsing (nvim-treesitter) +{ + config.programs.nixvim.plugins.treesitter = lib.mkIf config.programs.nixvim.enable { + enable = true; + folding = { + enable = true; + }; + settings = { + highlight = { + enable = true; + }; + indent = { + enable = true; + }; + }; + }; +} diff --git a/modules/development/nixvim/plugins/web-devicons.nix b/modules/development/nixvim/plugins/web-devicons.nix new file mode 100644 index 0000000..3c6ad86 --- /dev/null +++ b/modules/development/nixvim/plugins/web-devicons.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: + +# Web-devicons - File icons for various file types (nvim-web-devicons) +{ + config.programs.nixvim.plugins.web-devicons = lib.mkIf config.programs.nixvim.enable { + enable = true; + }; +} diff --git a/modules/development/nixvim/plugins/which-key.nix b/modules/development/nixvim/plugins/which-key.nix new file mode 100644 index 0000000..18018e7 --- /dev/null +++ b/modules/development/nixvim/plugins/which-key.nix @@ -0,0 +1,21 @@ +{ config, lib, ... }: + +# Which-key - Popup for keybindings (which-key.nvim) +{ + config.programs.nixvim.plugins.which-key = lib.mkIf config.programs.nixvim.enable { + enable = true; + settings = { + plugins = { + marks = true; + registers = true; + spelling = { + enabled = true; + suggestions = 20; + }; + }; + win = { + border = "single"; + }; + }; + }; +} |
