{ lib, pkgs, ... }: with builtins; { config.my.programs.nvim.plugins = with pkgs.vimPlugins; [ { plugin = which-key-nvim; lazy = false; conf = readFile ./which-key-nvim.lua; } { plugin = catppuccin-nvim; conf = readFile ./catppuccin-nvim.lua; lazy = false; priority = 99; } { plugin = formatter-nvim; keys = [ { key = "="; cmd = "Format"; desc = "format (formatter)"; } ]; conf = readFile ./formatter-nvim.lua; } { plugin = oil-nvim; lazy = false; conf = readFile ./oil-nvim.lua; dependencies = [ { plugin = which-key-nvim; } { plugin = nvim-web-devicons; } ]; } { plugin = mini-nvim; lazy = false; conf = readFile ./mini-nvim.lua; } { plugin = trouble-nvim; keys = [ { key = "xx"; cmd = "TroubleToggle document_diagnostics"; desc = "Document Diagnostics (Trouble)"; } { key = "xX"; cmd = "TroubleToggle workspace_diagnostics"; desc = "Workspace Diagnostics (Troule)"; } { key = "xl"; cmd = "TroubleToggle loclist"; desc = "Location List (Trouble)"; } { key = "xq"; cmd = "TroubleToggle quickfix"; desc = "Quickfix List (Trouble)"; } { key = "xt"; cmd = "TodoTrouble"; desc = "Todo (Trouble)"; } { key = "xT"; cmd = "TodoTrouble keywords=TODO,FIX,FIXME"; desc = "Todo/Fix/Fixme (Trouble)"; } { key = "st"; cmd = "TodoTelescope"; desc = "Todo"; } { key = "[q"; func = /* lua */ ''function() if require("trouble").is_open() then require("trouble").previous({ skip_groups = true, jump = true }) else vim.cmd.cprev() end end''; desc = "Previous trouble/quickfix item"; } { key = "]q"; func = /* lua */ ''function() if require("trouble").is_open() then require("trouble").next({ skip_groups = true, jump = true }) else vim.cmd.cnext() end end''; desc = "Next trouble/quickfix item"; } ]; conf = readFile ./trouble-nvim.lua; dependencies = [ { plugin = which-key-nvim; } { plugin = nvim-web-devicons; } ]; } { plugin = todo-comments-nvim; event = [ "BufReadPost" "BufNewFile" ]; conf = readFile ./todo-comments-nvim.lua; dependencies = [{ plugin = plenary-nvim; }]; } { plugin = direnv-vim; lazy = false; } { plugin = nvim-treesitter; event = [ "BufReadPost" "BufNewFile" ]; conf = let parserDir = pkgs.symlinkJoin { name = "tresitter-grammars-all"; paths = lib.attrValues (lib.filterAttrs (_: builtins.isAttrs) nvim-treesitter-parsers); }; in readFile ./nvim-treesitter.lua + '' vim.opt.runtimepath:append("${parserDir}") require'nvim-treesitter.configs'.setup { parser_install_dir = "${parserDir}", } ''; dependencies = [ { plugin = nvim-ts-context-commentstring; } { plugin = orgmode; conf = readFile ./orgmode.lua; } ]; } { plugin = nvim-lspconfig; event = [ "BufRead" "BufNewFile" ]; conf = readFile ./nvim-lspconfig.lua; dependencies = [ { plugin = null-ls-nvim; conf = readFile ./null-ls-nvim.lua; dependencies = [ { plugin = which-key-nvim; } { plugin = plenary-nvim; } ]; } { plugin = which-key-nvim; } { plugin = lsp_lines-nvim; } { plugin = nvim-ufo; conf = readFile ./nvim-ufo.lua; dependencies = [ { plugin = promise-async; } ]; } { plugin = neodev-nvim; conf = readFile ./neodev-nvim.lua; } ]; } { plugin = vim-fugitive; event = [ "VeryLazy" ]; } { plugin = vim-tmux-navigator; event = [ "VeryLazy" ]; } { plugin = gitsigns-nvim; event = [ "BufReadPost" "BufNewFile" ]; conf = readFile ./gitsigns-nvim.lua; dependencies = [{ plugin = which-key-nvim; }]; } { plugin = nvim-lastplace; event = [ "BufReadPost" "BufNewFile" ]; conf = readFile ./nvim-lastplace.lua; } { plugin = nvim-treesitter-textsubjects; event = [ "BufReadPost" "BufNewFile" ]; conf = readFile ./nvim-treesitter-textsubjects.lua; } { plugin = smartcolumn-nvim; event = [ "BufReadPost" "BufNewFile" ]; conf = readFile ./smartcolumn-nvim.lua; } { plugin = telescope-nvim; cmd = [ "Telescope" ]; conf = builtins.readFile ./telescope.lua; keys = [ { key = "ff"; cmd = "Telescope find_files"; desc = "Find files"; } { key = "fb"; cmd = "Telescope buffers"; desc = "Find buffers"; } { key = "fr"; cmd = "Telescope oldfiles"; desc = "Find recent files"; } { key = "sl"; cmd = "Telescope current_buffer_fuzzy_find"; desc = "Search lines"; } { key = "sg"; cmd = "Telescope live_grep"; desc = "Live grep"; } { key = "sc"; cmd = "Telescope command_history"; desc = "Command history"; } { key = "sC"; cmd = "Telescope commands"; desc = "Commands"; } { key = "sd"; cmd = "Telescope diagnostics"; desc = "Diagnostics"; } { key = "sh"; cmd = "Telescope help_tags"; desc = "Help tags"; } { key = "sk"; cmd = "Telescope keymaps"; desc = "Keymaps"; } { key = "ss"; cmd = "Telescope lsp_document_symbols"; desc = "Symbols (Document)"; } { key = "sS"; cmd = "Telescope lsp_workspace_symbols"; desc = "Symbols (Workspace)"; } { key = "gc"; cmd = "Telescope git_commits"; desc = "Commits"; } { key = "gs"; cmd = "Telescope git_status"; desc = "Status"; } ]; dependencies = [ { plugin = plenary-nvim; } { plugin = which-key-nvim; } { plugin = telescope-fzf-native-nvim; } ]; } { plugin = vim-startuptime; cmd = [ "StartupTime" ]; conf = readFile ./vim-startuptime.lua; } { plugin = typst-vim; ft = [ "typst" "typ" ]; } { plugin = comment-nvim; event = [ "BufReadPost" "BufNewFile" ]; conf = /* lua */ '' require("Comment").setup() ''; } { plugin = telekasten-nvim; dependencies = [ { plugin = telescope-nvim; } { plugin = which-key-nvim; } ]; cmd = [ "Telekasten" ]; keys = [ { key = "z"; cmd = "Telekasten"; desc = "zettelkasten"; } ]; conf = builtins.readFile ./zettelkasten-nvim.lua; } { plugin = markdown-preview-nvim; ft = [ "md" ]; } { plugin = coq_nvim; event = [ "BufReadPost" "BufNewFile" ]; init = builtins.readFile ./coq-nvim.lua; dependencies = [ { plugin = coq-thirdparty; conf = builtins.readFile ./coq-thirdparty.lua; dependencies = [ { plugin = codeium-vim; init = builtins.readFile ./codeium-vim.lua; } ]; } { plugin = coq-artifacts; } ]; } { plugin = nvim-surround; event = [ "BufReadPost" "BufNewFile" ]; conf = /* lua */ '' require("nvim-surround").setup({}) ''; } { plugin = nvim-treesitter-context; event = [ "BufReadPost" "BufNewFile" ]; conf = /* lua */ '' require("treesitter-context").setup({}) ''; } { plugin = dressing-nvim; event = [ "VeryLazy" ]; } { plugin = hmts-nvim; ft = [ "nix" ]; } ]; }