{ pkgs, lib, inputs, ... }: with builtins; { config.home-manager.users.moritz.programs.neovim.lazy.plugins = with pkgs.vimPlugins; [ { plugin = oil-nvim; lazy = false; opts = { }; dependencies = [ { plugin = which-key-nvim; } { plugin = nvim-web-devicons; } ]; } { plugin = mini-nvim; lazy = false; conf = readFile ./lua/mini-nvim.lua; } { plugin = trouble-nvim; cmd = [ "TodoTelescope" ]; keys = [ { key = "cD"; cmd = "TroubleToggle document_diagnostics"; desc = "Document Diagnostics (Trouble)"; } { key = "cW"; cmd = "TroubleToggle workspace_diagnostics"; desc = "Workspace Diagnostics (Trouble)"; } { key = "cl"; cmd = "TroubleToggle loclist"; desc = "Location List (Trouble)"; } { key = "cq"; cmd = "TroubleToggle quickfix"; desc = "Quickfix List (Trouble)"; } { key = "ft"; 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"; } ]; opts = { }; dependencies = [ { plugin = nvim-web-devicons; } ]; } { plugin = nvim-cmp; keys = [ { key = "tc"; cmd = "CmpToggle"; desc = "Toggle Cmp sources"; } ]; conf = readFile ./lua/nvim-cmp.lua; event = [ "InsertEnter" ]; dependencies = [ { plugin = nvim-autopairs; opts = { }; } { plugin = cmp-async-path; } { plugin = cmp-buffer; } { plugin = cmp-cmdline; } { plugin = cmp-nvim-lsp; } { plugin = cmp_luasnip; } { plugin = cmp-spell; } { plugin = cmp-nvim-lsp-signature-help; } { plugin = friendly-snippets; } { plugin = lspkind-nvim; } { plugin = luasnip; conf = readFile ./lua/luasnip.lua; } ]; } { plugin = direnv-vim; lazy = false; } { plugin = nvim-lspconfig; event = [ "BufRead" "BufNewFile" ]; conf = readFile ./lua/nvim-lspconfig.lua; dependencies = [ { plugin = pkgs.vimPlugins.null-ls-nvim.overrideAttrs (_: { version = lib.my.mkVersionInput inputs.none-ls-nvim; src = inputs.none-ls-nvim; }); conf = readFile ./lua/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 ./lua/nvim-ufo.lua; dependencies = [ { plugin = promise-async; } ]; } { plugin = neodev-nvim; conf = readFile ./lua/neodev-nvim.lua; } { plugin = inc-rename-nvim; opts = { input_buffer_type = "dressing"; }; dependencies = [ { plugin = dressing-nvim; } ]; } { plugin = pkgs.vimUtils.buildVimPlugin { pname = "actions-preview-nvim"; version = lib.my.mkVersionInput inputs.actions-preview-nvim; src = inputs.actions-preview-nvim; }; } ]; } { plugin = vim-fugitive; cmd = [ "G" "Git" "Ggrep" "Glgrep" "Gclog" "Gllog" "Gcd" "Glcd" "Gedit" "Gsplit" "Gvsplit" "Gtabedit" "Gpedit" "Gdrop" "Gread" "Gwrite" "Gwq" "Gdiffsplit" "Gvdiffsplit" "GMove" "GRename" "GDelete" "GBrowse" ]; } { plugin = vim-tmux-navigator; event = [ "VeryLazy" ]; } { plugin = nvim-lastplace; event = [ "BufReadPost" "BufNewFile" ]; opts = { lastplace_ignore_buftype = [ "quickfix" "nofile" "help" ]; lastplace_ignore_filetype = [ "gitcommit" "gitrebase" "svn" "hgcommit" ]; lastplace_open_folds = true; }; } { plugin = telescope-nvim; cmd = [ "Telescope" ]; conf = builtins.readFile ./lua/telescope.lua; keys = [ { key = "ff"; cmd = "Telescope find_files"; desc = "Find files"; } { key = "fb"; cmd = "Telescope buffers"; desc = "Find buffers"; } { key = "fl"; cmd = "Telescope current_buffer_fuzzy_find"; desc = "Search lines"; } { key = "fl"; cmd = "y:Telescope current_buffer_fuzzy_find default_text=0"; desc = "Search lines (selection)"; mode = [ "v" ]; } { key = "fg"; cmd = "Telescope live_grep"; desc = "Live grep"; } { key = "fg"; cmd = "y:Telescope live_grep default_text=0"; desc = "Live grep (selection)"; mode = [ "v" ]; } { key = "fh"; cmd = "Telescope help_tags"; desc = "Help tags"; } { key = "fr"; cmd = "Telescope oldfiles"; desc = "Recent files"; } ]; dependencies = [ { plugin = plenary-nvim; } { plugin = telescope-fzf-native-nvim; } ]; } { plugin = vim-startuptime; cmd = [ "StartupTime" ]; conf = readFile ./lua/vim-startuptime.lua; } { plugin = typst-vim; ft = [ "typst" "typ" ]; } { plugin = comment-nvim; event = [ "BufReadPost" "BufNewFile" ]; opts = { }; } { plugin = nvim-surround; event = [ "BufReadPost" "BufNewFile" ]; opts = { }; } { plugin = zen-mode-nvim; keys = [ { key = "tz"; cmd = "ZenMode"; desc = "Zen mode"; } ]; conf = /* lua */ '' require("zen-mode").setup({ plugins = { tmux = { enabled = true, }, }, }) ''; dependencies = [ { plugin = twilight-nvim; conf = /* lua */ '' require("twilight").setup({ context = 20, expand = { -- for treesitter, we we always try to expand to the top-most ancestor with these types "function", "function_definition", "if_statement", "method", "method_definition", "table", }, }) ''; } ]; } { plugin = pkgs.vimUtils.buildVimPlugin { pname = "nvim-puppeteer"; version = lib.my.mkVersionInput inputs.nvim-puppeteer; src = inputs.nvim-puppeteer; }; lazy = false; # NOTE: plugin lazy-loads itself. } { plugin = conform-nvim; keys = [ { key = "="; cmd = "lua require('conform').format()"; desc = "format buffer"; mode = [ "n" "v" ]; } ]; cmd = [ "ConformInfo" "Format" ]; conf = readFile ./lua/conform.lua; } ]; }