aboutsummaryrefslogtreecommitdiffstats
path: root/modules/tools
diff options
context:
space:
mode:
authorArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2025-12-11 21:03:34 +0530
committerArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2025-12-11 21:03:34 +0530
commit2eb0760f02a2a821a5d774f70521b6c16426639d (patch)
treea86ecfa0a4fcdebaa636eabaaa231d22841ad099 /modules/tools
parent54142dba0991ecbe3031ef532d0a379ee3c58871 (diff)
downloadhome-manager-config-2eb0760f02a2a821a5d774f70521b6c16426639d.tar.gz
home-manager-config-2eb0760f02a2a821a5d774f70521b6c16426639d.zip
Splitted nixvim config into different modules
Diffstat (limited to 'modules/tools')
-rw-r--r--modules/tools/default.nix1
-rw-r--r--modules/tools/neovim/config/default.nix4
-rw-r--r--modules/tools/neovim/config/keybindings.lua5
-rw-r--r--modules/tools/neovim/config/options.lua41
-rw-r--r--modules/tools/neovim/default.nix35
-rw-r--r--modules/tools/neovim/plugins/config/base16.mustache.lua12
-rw-r--r--modules/tools/neovim/plugins/config/comment.lua1
-rw-r--r--modules/tools/neovim/plugins/config/default.nix27
-rw-r--r--modules/tools/neovim/plugins/config/dressing.lua1
-rw-r--r--modules/tools/neovim/plugins/config/lsp-config.lua75
-rw-r--r--modules/tools/neovim/plugins/config/lualine.mustache.lua61
-rw-r--r--modules/tools/neovim/plugins/config/noice.mustache.lua10
-rw-r--r--modules/tools/neovim/plugins/config/nvim-tree.lua15
-rw-r--r--modules/tools/neovim/plugins/config/nvim-ufo.lua21
-rw-r--r--modules/tools/neovim/plugins/config/treesitter.nix13
-rw-r--r--modules/tools/neovim/plugins/config/which-key.lua5
-rw-r--r--modules/tools/neovim/plugins/default.nix31
-rw-r--r--modules/tools/nixvim/default.nix2
-rw-r--r--modules/tools/nixvim/plugins.nix122
-rw-r--r--modules/tools/nixvim/plugins/comment.nix7
-rw-r--r--modules/tools/nixvim/plugins/default.nix13
-rw-r--r--modules/tools/nixvim/plugins/lualine.nix39
-rw-r--r--modules/tools/nixvim/plugins/noice.nix18
-rw-r--r--modules/tools/nixvim/plugins/nvim-tree.nix45
-rw-r--r--modules/tools/nixvim/plugins/treesitter.nix12
-rw-r--r--modules/tools/nixvim/plugins/web-devicons.nix7
-rw-r--r--modules/tools/nixvim/plugins/which-key.nix15
27 files changed, 157 insertions, 481 deletions
diff --git a/modules/tools/default.nix b/modules/tools/default.nix
index 0217362..3bafb42 100644
--- a/modules/tools/default.nix
+++ b/modules/tools/default.nix
@@ -17,7 +17,6 @@
./lsd
./neofetch
./nixvim
- # ./neovim
./nnn
./nvtop
./pamixer
diff --git a/modules/tools/neovim/config/default.nix b/modules/tools/neovim/config/default.nix
deleted file mode 100644
index 4514d2f..0000000
--- a/modules/tools/neovim/config/default.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-''
-${builtins.readFile ./options.lua}
-${builtins.readFile ./keybindings.lua}
-''
diff --git a/modules/tools/neovim/config/keybindings.lua b/modules/tools/neovim/config/keybindings.lua
deleted file mode 100644
index 3f2c9bf..0000000
--- a/modules/tools/neovim/config/keybindings.lua
+++ /dev/null
@@ -1,5 +0,0 @@
--- Navigate splits
-vim.keymap.set("n", "<C-h>", ":wincmd h<CR>", { silent = true });
-vim.keymap.set("n", "<C-j>", ":wincmd j<CR>", { silent = true });
-vim.keymap.set("n", "<C-k>", ":wincmd k<CR>", { silent = true });
-vim.keymap.set("n", "<C-l>", ":wincmd l<CR>", { silent = true });
diff --git a/modules/tools/neovim/config/options.lua b/modules/tools/neovim/config/options.lua
deleted file mode 100644
index fc0b04c..0000000
--- a/modules/tools/neovim/config/options.lua
+++ /dev/null
@@ -1,41 +0,0 @@
-vim.g.mapleader = " ";
-vim.g.maplocalleader = " ";
-
-vim.o.clipboard = "unnamedplus";
-
-vim.o.number = true;
-vim.o.list = true;
-vim.o.listchars = "tab:| ,trail:_,lead:_";
-
-vim.o.laststatus = 3;
-
-vim.o.signcolumn = "auto";
-vim.opt.fillchars = { eob = " " };
-
-vim.o.tabstop = 3;
-vim.o.shiftwidth = 0;
-vim.o.expandtab = false;
-
-vim.o.updatetime = 300;
-
-vim.o.mouse = "a";
-
--- Force all filetypes to use tabs
-vim.api.nvim_create_autocmd("FileType", {
- pattern = "*",
- callback = function()
- vim.bo.expandtab = false;
- vim.bo.tabstop = 3;
- vim.bo.shiftwidth = 0;
- end,
-});
-
--- Exception that use spaces
-vim.api.nvim_create_autocmd("FileType", {
- pattern = { "yaml" },
- callback = function()
- vim.bo.expandtab = true;
- vim.bo.tabstop = 2;
- vim.bo.shiftwidth = 2;
- end,
-});
diff --git a/modules/tools/neovim/default.nix b/modules/tools/neovim/default.nix
deleted file mode 100644
index bc57f2f..0000000
--- a/modules/tools/neovim/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ pkgs, config, lib, ... }:
-
-{
- options.tools.neovim = {
- enable = lib.mkEnableOption "Enables neovim.";
- profile = lib.mkOption {
- type = lib.types.enum [
- "minimal"
- "full"
- ];
- default = "minimal";
- description = "The profile for neovim to use.";
- };
- };
-
- config = let
- plugins = import ./plugins { inherit config pkgs lib; };
- in lib.mkIf config.tools.neovim.enable {
- programs.neovim = {
- enable = true;
- viAlias = true;
- vimAlias = true;
- vimdiffAlias = true;
- defaultEditor = true;
- plugins = plugins.list;
- extraLuaConfig =
- ''
-${import ./config}
-${plugins.configuration}
- '';
- };
-
- home.packages = plugins.requirements;
- };
-}
diff --git a/modules/tools/neovim/plugins/config/base16.mustache.lua b/modules/tools/neovim/plugins/config/base16.mustache.lua
deleted file mode 100644
index 3c13fcc..0000000
--- a/modules/tools/neovim/plugins/config/base16.mustache.lua
+++ /dev/null
@@ -1,12 +0,0 @@
-vim.o.termguicolors = true;
-vim.opt.termguicolors = true;
-vim.o.background = "dark";
-vim.g.base16colorspace = 256
-vim.cmd.colorscheme("base16-scheme");
-
--- Overrides
--- disable the background of line numbers
-vim.api.nvim_set_hl(0, "LineNr", { link = "Normal" });
-
--- change the color of the pane separator
-vim.api.nvim_set_hl(0, "WinSeparator", { fg = "#{{base02-hex}}", bg = "None" });
diff --git a/modules/tools/neovim/plugins/config/comment.lua b/modules/tools/neovim/plugins/config/comment.lua
deleted file mode 100644
index 9086261..0000000
--- a/modules/tools/neovim/plugins/config/comment.lua
+++ /dev/null
@@ -1 +0,0 @@
-require("Comment").setup();
diff --git a/modules/tools/neovim/plugins/config/default.nix b/modules/tools/neovim/plugins/config/default.nix
deleted file mode 100644
index 9ae2485..0000000
--- a/modules/tools/neovim/plugins/config/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ config }:
-
-let
- fullExtra = if config.tools.neovim.profile == "full" then
-''
-${builtins.readFile ./lsp-config.lua}
-${builtins.readFile ./dressing.lua}
-${builtins.readFile (config.scheme {
- template = builtins.readFile ./noice.mustache.lua;
-})}
-${builtins.readFile ./nvim-ufo.lua}
-${builtins.readFile ./which-key.lua}
-''
- else "";
-in
-''
-${builtins.readFile ./comment.lua}
-${builtins.readFile (config.scheme {
- template = builtins.readFile ./lualine.mustache.lua;
-})}
-${import ./treesitter.nix { inherit config; }}
-${builtins.readFile (config.scheme {
- template = builtins.readFile ./base16.mustache.lua;
-})}
-${builtins.readFile ./nvim-tree.lua}
-${fullExtra}
-''
diff --git a/modules/tools/neovim/plugins/config/dressing.lua b/modules/tools/neovim/plugins/config/dressing.lua
deleted file mode 100644
index 6d14d47..0000000
--- a/modules/tools/neovim/plugins/config/dressing.lua
+++ /dev/null
@@ -1 +0,0 @@
-require("dressing").setup();
diff --git a/modules/tools/neovim/plugins/config/lsp-config.lua b/modules/tools/neovim/plugins/config/lsp-config.lua
deleted file mode 100644
index cca4116..0000000
--- a/modules/tools/neovim/plugins/config/lsp-config.lua
+++ /dev/null
@@ -1,75 +0,0 @@
-local lspconfig = require("lspconfig");
-
-local filetype_to_lsp = {
- lua = { server = "lua_ls", executable = "lua-language-server" },
- cpp = { server = "clangd", executable = "clangd" },
- c = { server = "clangd", executable = "clangd" },
- python = { server = "pyright", executable = "pyright-langserver" },
- javascript = { server = "tsserver", executable = "typescript-language-server" },
- typescript = { server = "tsserver", executable = "typescript-language-server" },
- go = { server = "gopls", executable = "gopls" },
- html = { server = "html", executable = "vscode-html-language-server" },
- css = { server = "cssls", executable = "vscode-css-language-server" },
- json = { server = "jsonls", executable = "vscode-json-language-server" },
- bash = { server = "bashls", executable = "bash-language-server" },
- graphql = { server = "graphql", executable = "graphql-lsp" },
- dockerfile = { server = "dockerls", executable = "docker-langserver" },
- php = { server = "phpactor", executable = "phpactor" },
- rust = { server = "rust_analyzer", executable = "rust-analyzer" },
- haskell = { server = "hls", executable = "haskell-language-server-wrapper" },
- deno = { server = "denols", executable = "deno" },
- vim = { server = "vimls", executable = "vim-language-server" },
- elixir = { server = "elixirls", executable = "elixir-ls" },
- clojure = { server = "clojure_lsp", executable = "clojure-lsp" },
- scala = { server = "scala_metals", executable = "metals" },
- ruby = { server = "sorbet", executable = "srb" },
- zig = { server = "zls", executable = "zls" },
- kotlin = { server = "kotlin_language_server", executable = "kotlin-language-server" },
- java = { server = "jdtls", executable = "jdtls" },
- dart = { server = "dartls", executable = "dart" },
- yaml = { server = "yamlls", executable = "yaml-language-server" },
- perl = { server = "perlls", executable = "perl" },
- r = { server = "r_language_server", executable = "R" },
- tex = { server = "texlab", executable = "texlab" },
- swift = { server = "sourcekit", executable = "sourcekit-lsp" },
- svelte = { server = "svelteserver", executable = "svelteserver" },
- terraform = { server = "terraformls", executable = "terraform-ls" },
- vue = { server = "vls", executable = "vls" },
- markdown = { server = "marksman", executable = "marksman" },
- yaml = { server = "yamlls", executable = "yaml-language-server" },
-};
-
--- Keeping track of all the lsps that have been already configured
-local lsp_setup_done = {};
-
--- Function to setup LSP based on filetype
-local function setup_lsp(filetype)
- local lsp = filetype_to_lsp[filetype];
- if lsp ~= nil and not lsp_setup_done[lsp.server] then
- lsp_setup_done[lsp.server] = true;
- if vim.fn.executable(lsp.executable) == 1 then
- lspconfig[lsp.server].setup({});
- end
- end
-end
-
-vim.api.nvim_create_autocmd("FileType", {
- pattern = "*", -- Match all file types
- callback = function()
- setup_lsp(vim.bo.filetype); -- Call the setup_lsp function only if the filetype is in the mapping
- end,
-});
-
--- Show diagnostics in a floating window when hovering over the line
-vim.api.nvim_create_autocmd("CursorHold", {
- callback = function()
- vim.diagnostic.open_float(nil, { focusable = false })
- end,
-})
-
-local lsp_keymap_opts = { noremap = true, silent = true };
-
-vim.keymap.set("n", "<leader>d", vim.lsp.buf.definition, lsp_keymap_opts);
-vim.keymap.set("n", "<leader>i", vim.lsp.buf.implementation, lsp_keymap_opts);
-vim.keymap.set("n", "<leader>r", vim.lsp.buf.references, lsp_keymap_opts);
-vim.keymap.set("n", "<leader>k", vim.lsp.buf.hover, lsp_keymap_opts);
diff --git a/modules/tools/neovim/plugins/config/lualine.mustache.lua b/modules/tools/neovim/plugins/config/lualine.mustache.lua
deleted file mode 100644
index bf4f1d1..0000000
--- a/modules/tools/neovim/plugins/config/lualine.mustache.lua
+++ /dev/null
@@ -1,61 +0,0 @@
-local lualine_theme = {
- normal = {
- a = { fg = "#{{base0D-hex}}", bg = "none", gui = "bold" },
- b = { fg = "#{{base05-hex}}", bg = "none" },
- c = { fg = "#{{base05-hex}}", bg = "none" },
- },
- insert = {
- a = { fg = "#{{base0B-hex}}", bg = "none", gui = "bold" },
- },
- visual = {
- a = { fg = "#{{base0E-hex}}", bg = "none", gui = "bold" },
- },
- replace = {
- a = { fg = "#{{base08-hex}}", bg = "none", gui = "bold" },
- },
- command = {
- a = { fg = "#{{base0A-hex}}", bg = "none", gui = "bold" },
- },
- inactive = {
- a = { fg = "#{{base04-hex}}", bg = "none" },
- b = { fg = "#{{base04-hex}}", bg = "none" },
- c = { fg = "#{{base04-hex}}", bg = "none" },
- },
-};
-
-local function macro_recording()
- local recording_register = vim.fn.reg_recording()
- if recording_register ~= "" then
- return "@" .. recording_register
- else
- return ""
- end
-end
-
-require("lualine").setup {
- options = {
- icons_enabled = true,
- theme = lualine_theme,
- section_separators = "",
- component_separators = "",
- },
- sections = {
- lualine_a = { "mode" },
- lualine_b = {
- "branch",
- {
- "diff",
- colored = true,
- symbols = {
- added = " ",
- modified = " ",
- removed = " ",
- }
- }
- },
- lualine_c = { "filename" },
- lualine_x = { macro_recording, "encoding", "fileformat", "filetype" },
- lualine_y = { "progress" },
- lualine_z = { "location" },
- },
-};
diff --git a/modules/tools/neovim/plugins/config/noice.mustache.lua b/modules/tools/neovim/plugins/config/noice.mustache.lua
deleted file mode 100644
index a258c8e..0000000
--- a/modules/tools/neovim/plugins/config/noice.mustache.lua
+++ /dev/null
@@ -1,10 +0,0 @@
-require("noice").setup();
-
-vim.api.nvim_set_hl(0, "NoiceCommandOutput", { fg = "#{{base05-hex}}", bg = "#{{base00-hex}}" });
-vim.api.nvim_set_hl(0, "NoiceCmdline", { fg = "#{{base05-hex}}", bg = "#{{base00-hex}}" });
-vim.api.nvim_set_hl(0, "NoiceCmdlinePopup", { fg = "#{{base05-hex}}", bg = "#{{base00-hex}}" });
-vim.api.nvim_set_hl(0, "NoiceCmdlinePopupBorder", { fg = "#{{base03-hex}}", bg = "#{{base00-hex}}" });
-vim.api.nvim_set_hl(0, "NoiceError", { fg = "#{{base08-hex}}", bg = "#{{base00-hex}}" });
-vim.api.nvim_set_hl(0, "NoiceWarning", { fg = "#{{base0A-hex}}", bg = "#{{base00-hex}}" });
-vim.api.nvim_set_hl(0, "NoiceInfo", { fg = "#{{base0C-hex}}", bg = "#{{base00-hex}}" });
-vim.api.nvim_set_hl(0, "NoiceHint", { fg = "#{{base0B-hex}}", bg = "#{{base00-hex}}" });
diff --git a/modules/tools/neovim/plugins/config/nvim-tree.lua b/modules/tools/neovim/plugins/config/nvim-tree.lua
deleted file mode 100644
index cdbef6a..0000000
--- a/modules/tools/neovim/plugins/config/nvim-tree.lua
+++ /dev/null
@@ -1,15 +0,0 @@
-require("nvim-tree").setup {
- filters = {
- enable = false
- },
- renderer = {
- indent_markers = {
- enable = true
- },
- root_folder_label = function(path)
- return vim.fn.fnamemodify(path, ":t")
- end,
- },
-};
-
-vim.keymap.set("n", "<C-n>", ":NvimTreeToggle<CR>", { silent = true });
diff --git a/modules/tools/neovim/plugins/config/nvim-ufo.lua b/modules/tools/neovim/plugins/config/nvim-ufo.lua
deleted file mode 100644
index 641373f..0000000
--- a/modules/tools/neovim/plugins/config/nvim-ufo.lua
+++ /dev/null
@@ -1,21 +0,0 @@
-require("ufo").setup {
- provider_selector = function(bufnr, filetype, buftype)
- return {
- "treesitter",
- "indent"
- }
- end,
-};
-
-vim.o.foldenable = true
-vim.o.foldcolumn = '0'
-vim.o.foldlevel = 99 -- Ensure all folds start open
-vim.o.foldlevelstart = 99
-
--- press <Shift>K or capslockK
-vim.keymap.set("n", "<S-K>", function()
- local winid = ufo.peekFoldedLinesUnderCursor()
- if not winid then
- vim.lsp.buf.hover()
- end
-end)
diff --git a/modules/tools/neovim/plugins/config/treesitter.nix b/modules/tools/neovim/plugins/config/treesitter.nix
deleted file mode 100644
index be0bdb6..0000000
--- a/modules/tools/neovim/plugins/config/treesitter.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ config }:
-
-''
-require("nvim-treesitter.configs").setup {
- auto_install = true,
- highlight = {
- enable = true,
- },
- parser_install_dir = "${config.xdg.dataHome}/nvim",
-};
-
-vim.opt.runtimepath:append("${config.xdg.dataHome}/nvim");
-''
diff --git a/modules/tools/neovim/plugins/config/which-key.lua b/modules/tools/neovim/plugins/config/which-key.lua
deleted file mode 100644
index 1290432..0000000
--- a/modules/tools/neovim/plugins/config/which-key.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-local wk = require("which-key");
-
-vim.keymap.set("n", "<leader>h", function()
- wk.show({ global = true })
-end, { silent = true });
diff --git a/modules/tools/neovim/plugins/default.nix b/modules/tools/neovim/plugins/default.nix
deleted file mode 100644
index b06cb24..0000000
--- a/modules/tools/neovim/plugins/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ config, pkgs, lib }:
-
-{
- configuration = import ./config { inherit config; };
-
- list = with pkgs.vimPlugins; lib.mkMerge [
- [
- comment-nvim
- lualine-nvim
- nvim-treesitter
- nvim-web-devicons
- nvim-tree-lua
- which-key-nvim
- (base16-vim.overrideAttrs (old: {
- patchPhase = "ln -s ${config.scheme base16-vim} colors/base16-scheme.vim";
- }))
- ]
- (if config.tools.neovim.profile == "full" then
- [
- noice-nvim
- dressing-nvim
- nvim-lspconfig
- nvim-ufo
- ]
- else [])
- ];
-
- requirements = with pkgs; [
- gcc # for treesitter
- ];
-}
diff --git a/modules/tools/nixvim/default.nix b/modules/tools/nixvim/default.nix
index 1188526..3040fdc 100644
--- a/modules/tools/nixvim/default.nix
+++ b/modules/tools/nixvim/default.nix
@@ -9,7 +9,7 @@ in {
nixvim.homeModules.nixvim
./colorscheme.nix
./keymaps.nix
- ./plugins.nix
+ ./plugins
];
options.tools.nixvim = {
diff --git a/modules/tools/nixvim/plugins.nix b/modules/tools/nixvim/plugins.nix
deleted file mode 100644
index 9af84fb..0000000
--- a/modules/tools/nixvim/plugins.nix
+++ /dev/null
@@ -1,122 +0,0 @@
-{ pkgs, config, lib, ... }:
-
-{
- config = lib.mkIf config.tools.nixvim.enable {
- programs.nixvim.plugins = {
- comment = {
- enable = true;
- };
- lualine = {
- 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;
- };
- };
- };
- noice = {
- enable = true;
- cmdline = {
- enabled = true;
- view = "cmdline_popup";
- };
- popupmenu = {
- enabled = true;
- backend = "cmp";
- };
- presets = {
- command_palette = true;
- };
- };
- nvim-tree = {
- enable = true;
- settings = {
- filters = {
- dotfiles = false;
- git_clean = false;
- no_buffer = false;
- custom = {};
- };
- git = {
- enable = true;
- ignore = false;
- };
- view = {
- width = {
- padding = 0;
- };
- };
- 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;
- };
- };
- };
- };
- };
- treesitter = {
- enable = true;
- settings = {
- highlight = { enable = true; };
- indent = { enable = true; };
- };
- };
- web-devicons = {
- enable = true;
- };
- which-key = {
- enable = true;
- settings = {
- plugins = {
- marks = true;
- registers = true;
- spelling = { enabled = true; suggestions = 20; };
- };
- win = { border = "single"; };
- };
- };
- };
- };
-}
diff --git a/modules/tools/nixvim/plugins/comment.nix b/modules/tools/nixvim/plugins/comment.nix
new file mode 100644
index 0000000..ae53f8d
--- /dev/null
+++ b/modules/tools/nixvim/plugins/comment.nix
@@ -0,0 +1,7 @@
+{ config, lib, ... }:
+
+{
+ config.programs.nixvim.plugins.comment = lib.mkIf config.tools.nixvim.enable {
+ enable = true;
+ };
+}
diff --git a/modules/tools/nixvim/plugins/default.nix b/modules/tools/nixvim/plugins/default.nix
new file mode 100644
index 0000000..dff8677
--- /dev/null
+++ b/modules/tools/nixvim/plugins/default.nix
@@ -0,0 +1,13 @@
+{ ... }:
+
+{
+ imports = [
+ ./comment.nix
+ ./lualine.nix
+ ./noice.nix
+ ./nvim-tree.nix
+ ./treesitter.nix
+ ./web-devicons.nix
+ ./which-key.nix
+ ];
+}
diff --git a/modules/tools/nixvim/plugins/lualine.nix b/modules/tools/nixvim/plugins/lualine.nix
new file mode 100644
index 0000000..8d13399
--- /dev/null
+++ b/modules/tools/nixvim/plugins/lualine.nix
@@ -0,0 +1,39 @@
+{ config, lib, ... }:
+
+{
+ config.programs.nixvim.plugins.lualine = lib.mkIf config.tools.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/tools/nixvim/plugins/noice.nix b/modules/tools/nixvim/plugins/noice.nix
new file mode 100644
index 0000000..a149ee8
--- /dev/null
+++ b/modules/tools/nixvim/plugins/noice.nix
@@ -0,0 +1,18 @@
+{ config, lib, ... }:
+
+{
+ config.programs.nixvim.plugins.noice = lib.mkIf config.tools.nixvim.enable {
+ enable = true;
+ cmdline = {
+ enabled = true;
+ view = "cmdline_popup";
+ };
+ popupmenu = {
+ enabled = true;
+ backend = "cmp";
+ };
+ presets = {
+ command_palette = true;
+ };
+ };
+}
diff --git a/modules/tools/nixvim/plugins/nvim-tree.nix b/modules/tools/nixvim/plugins/nvim-tree.nix
new file mode 100644
index 0000000..9e2e55e
--- /dev/null
+++ b/modules/tools/nixvim/plugins/nvim-tree.nix
@@ -0,0 +1,45 @@
+{ config, lib, ... }:
+
+{
+ config.programs.nixvim.plugins.nvim-tree = lib.mkIf config.tools.nixvim.enable {
+ enable = true;
+ settings = {
+ filters = {
+ dotfiles = false;
+ git_clean = false;
+ no_buffer = false;
+ custom = {};
+ };
+ git = {
+ enable = true;
+ ignore = false;
+ };
+ view = {
+ width = {
+ padding = 0;
+ };
+ };
+ 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/tools/nixvim/plugins/treesitter.nix b/modules/tools/nixvim/plugins/treesitter.nix
new file mode 100644
index 0000000..9e2ec1d
--- /dev/null
+++ b/modules/tools/nixvim/plugins/treesitter.nix
@@ -0,0 +1,12 @@
+{ config, lib, ... }:
+
+{
+ config.programs.nixvim.plugins.treesitter = lib.mkIf config.tools.nixvim.enable {
+ enable = true;
+ folding = true;
+ settings = {
+ highlight = { enable = true; };
+ indent = { enable = true; };
+ };
+ };
+}
diff --git a/modules/tools/nixvim/plugins/web-devicons.nix b/modules/tools/nixvim/plugins/web-devicons.nix
new file mode 100644
index 0000000..6cbfcd0
--- /dev/null
+++ b/modules/tools/nixvim/plugins/web-devicons.nix
@@ -0,0 +1,7 @@
+{ config, lib, ... }:
+
+{
+ config.programs.nixvim.plugins.web-devicons = lib.mkIf config.tools.nixvim.enable {
+ enable = true;
+ };
+}
diff --git a/modules/tools/nixvim/plugins/which-key.nix b/modules/tools/nixvim/plugins/which-key.nix
new file mode 100644
index 0000000..99f4393
--- /dev/null
+++ b/modules/tools/nixvim/plugins/which-key.nix
@@ -0,0 +1,15 @@
+{ config, lib, ... }:
+
+{
+ config.programs.nixvim.plugins.which-key = lib.mkIf config.tools.nixvim.enable {
+ enable = true;
+ settings = {
+ plugins = {
+ marks = true;
+ registers = true;
+ spelling = { enabled = true; suggestions = 20; };
+ };
+ win = { border = "single"; };
+ };
+ };
+}