Files
nix-config/dotfiles/nvim/lua/custom/plugins.lua

268 lines
7.3 KiB
Lua

local cmp = require "cmp"
local plugins = {
{ "folke/neodev.nvim", opts = {} },
{
"nvim-telescope/telescope.nvim",
config = function()
require("telescope").load_extension "git_worktree"
end,
},
{
"hudclark/grpc-nvim",
dependencies = "nvim-lua/plenary.nvim",
},
{
"ThePrimeagen/git-worktree.nvim",
},
{
"folke/noice.nvim",
event = "VeryLazy",
opts = {
lsp = {
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true,
},
},
-- you can enable a preset for easier configuration
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
long_message_to_split = true, -- long messages will be sent to a split
inc_rename = false, -- enables an input dialog for inc-rename.nvim
lsp_doc_border = false, -- add a border to hover docs and signature help
},
messages = {
enabled = false,
},
},
config = function(_, opts)
require("noice").setup(opts)
end,
dependencies = {
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
"MunifTanjim/nui.nvim",
-- OPTIONAL:
-- `nvim-notify` is only needed, if you want to use the notification view.
-- If not available, we use `mini` as the fallback
"rcarriga/nvim-notify",
},
},
{
"folke/trouble.nvim",
opts = {},
cmd = "Trouble",
},
{
"williamboman/mason.nvim",
opts = {
ensure_installed = {
"rust-analyzer",
"typescript-language-server",
"prettier",
"js-debug-adapter",
"terraform-ls",
"gopls",
"pyright",
"mypy",
"ruff",
"black",
"lua-language-server",
"nil",
"phpactor",
},
},
},
{
"neovim/nvim-lspconfig",
config = function()
require "plugins.configs.lspconfig"
require "custom.configs.lspconfig"
end,
},
{
"github/copilot.vim",
lazy = false,
},
{
"rust-lang/rust.vim",
ft = "rust",
init = function()
vim.g.rustfmt_autosave = 1
end,
},
{
"simrat39/rust-tools.nvim",
ft = "rust",
dependencies = { "neovim/nvim-lspconfig", "nvim-lua/plenary.nvim" },
opts = function()
local lspconfig = require "plugins.configs.lspconfig"
return {
server = {
tools = {
hover_actions = {
auto_focus = true,
},
},
on_attach = lspconfig.on_attach,
capabilities = lspconfig.capabilities,
},
}
end,
},
{
"kdheepak/lazygit.nvim",
lazy = false,
dependencies = {
"nvim-lua/plenary.nvim",
},
},
{
"crnvl96/lazydocker.nvim",
opts = {}, -- automatically calls `require("lazydocker").setup()`
dependencies = {
"MunifTanjim/nui.nvim",
},
},
{
"saecki/crates.nvim",
event = { "BufRead Cargo.toml" },
config = function(_, opts)
local crates = require "crates"
crates.setup(opts)
cmp.setup.buffer {
sources = { { name = "crates" } },
}
crates.show()
require("core.utils").load_mappings "crates"
end,
},
{
"hrsh7th/nvim-cmp",
opts = function()
local M = require "plugins.configs.cmp"
M.completion.completeopt = "menu,menuone,noselect"
M.mapping["<CR>"] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Insert,
select = false,
}
table.insert(M.sources, { name = "crates" })
return M
end,
},
{
"mhartington/formatter.nvim",
event = "VeryLazy",
opts = function()
return require "custom.configs.formatter"
end,
},
{
"laytan/cloak.nvim",
lazy = false,
config = function()
require("cloak").setup {
enabled = true,
cloak_character = "*",
-- The applied highlight group (colors) on the cloaking, see `:h highlight`.
highlight_group = "Comment",
patterns = {
{
-- Match any file starting with ".env".
-- This can be a table to match multiple file patterns.
file_pattern = {
".env*",
"wrangler.toml",
".dev.vars",
},
-- Match an equals sign and any character after it.
-- This can also be a table of patterns to cloak,
-- example: cloak_pattern = { ":.+", "-.+" } for yaml files.
cloak_pattern = "=.+",
},
},
}
end,
},
{
"yetone/avante.nvim",
-- if you want to build from source then do `make BUILD_FROM_SOURCE=true`
-- ⚠️ must add this setting! ! !
build = vim.fn.has "win32" ~= 0 and "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false"
or "make",
event = "VeryLazy",
version = false, -- Never set this value to "*"! Never!
---@module 'avante'
opts = {
-- add any opts here
-- this file can contain specific instructions for your project
instructions_file = "avante.md",
-- for example
provider = "claude",
providers = {
claude = {
endpoint = "https://api.anthropic.com",
model = "claude-sonnet-4-20250514",
timeout = 30000, -- Timeout in milliseconds
extra_request_body = {
temperature = 0.75,
max_tokens = 20480,
},
},
moonshot = {
endpoint = "https://api.moonshot.ai/v1",
model = "kimi-k2-0711-preview",
timeout = 30000, -- Timeout in milliseconds
extra_request_body = {
temperature = 0.75,
max_tokens = 32768,
},
},
},
},
dependencies = {
"nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim",
--- The below dependencies are optional,
"nvim-mini/mini.pick", -- for file_selector provider mini.pick
"nvim-telescope/telescope.nvim", -- for file_selector provider telescope
"hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions
"ibhagwan/fzf-lua", -- for file_selector provider fzf
"stevearc/dressing.nvim", -- for input provider dressing
"folke/snacks.nvim", -- for input provider snacks
"nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons
"zbirenbaum/copilot.lua", -- for providers='copilot'
{
-- support for image pasting
"HakonHarnes/img-clip.nvim",
event = "VeryLazy",
opts = {
-- recommended settings
default = {
embed_image_as_base64 = false,
prompt_for_file_name = false,
drag_and_drop = {
insert_mode = true,
},
-- required for Windows users
use_absolute_path = true,
},
},
},
{
-- Make sure to set this up properly if you have lazy=true
"MeanderingProgrammer/render-markdown.nvim",
opts = {
file_types = { "markdown", "Avante" },
},
ft = { "markdown", "Avante" },
},
},
},
}
return plugins