nix/home-manager/common/software/cli/nixvim.nix
2024-12-17 21:17:39 +01:00

141 lines
3.8 KiB
Nix

{ ... }: {
imports = [
./nixvim/base.nix
./nixvim/cmp.nix
];
programs.nixvim = {
extraConfigLuaPost = ''
local _border = "rounded"
vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with (
vim.lsp.handlers.signature_help, {
border = _border
}
)
require('lspconfig.ui.windows').default_options = { border = _border }
local signs = { Error = "󰅚 ", Warn = "󰀪 ", Hint = "󰌶 ", Info = " " }
for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
end
local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview
function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...)
opts = opts or {}
opts.border = opts.border or border
return orig_util_open_floating_preview(contents, syntax, opts, ...)
end
vim.diagnostic.config ( { virtual_text = { prefix = '', } } )
vim.diagnostic.config { float = { border = _border } }
vim.diagnostic.config({ virtual_text = false })
'';
diagnostics.virtual_lines.only_current_line = true;
plugins = {
ollama = {
enable = true;
model = "vanilj/Phi-4";
url = "http://127.0.0.1:11434";
action = "display";
serve.onStart = true;
};
dressing.enable = true;
lsp-lines.enable = true;
crates-nvim.enable = true;
lspsaga = {
enable = false;
lightbulb.enable = false;
ui.border = "rounded";
};
lsp = {
enable = true;
servers = {
rust_analyzer = {
enable = true;
installCargo = true;
installRustc = true;
};
pylsp = {
enable = true;
autostart = true;
settings = {
plugins = {
black = {
enabled = true;
preview = true;
};
jedi_completion = {
enabled = true;
fuzzy = true;
};
pylint.enabled = true;
pylsp_mypy.enabled = true;
};
};
};
nixd.enable = true;
html.enable = true;
cssls.enable = true;
bashls.enable = false;
tailwindcss.enable = true;
svelte.enable = true;
docker_compose_language_service.enable = true;
marksman.enable = true;
};
onAttach = ''
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with (
vim.lsp.handlers.hover, {
border = "rounded",
}
)
'';
keymaps = {
silent = true;
diagnostic = {
"<leader>lk" = {
action = "goto_prev";
desc = "Go to prev";
};
"<leader>lj" = {
action = "goto_next";
desc = "Go to next";
};
};
lspBuf = {
K = {
action = "hover";
desc = "Hover";
};
"<leader>lr" = {
action = "references";
desc = "LSP [r]eferences";
};
"<leader>ld" = {
action = "definition";
desc = "LSP [d]efinitions";
};
"<leader>li" = {
action = "implementation";
desc = "LSP [i]implementations";
};
"<leader>lt" = {
action = "type_definition";
desc = "LSP [t]ype definitions";
};
"<leader>la" = {
action = "code_action";
desc = "LSP Code [A]ctions";
};
};
};
};
};
};
}