flake/nixos/nvim/plugins/lsp.nix

170 lines
4.5 KiB
Nix
Raw Permalink Normal View History

2025-02-10 22:23:35 -06:00
{
pkgs,
lib,
...
}:
2025-02-02 18:53:01 -06:00
{
programs.nixvim = {
extraPackages = with pkgs; [
nixfmt-rfc-style
];
plugins = {
2025-02-05 15:19:48 -06:00
luasnip = {
enable = true;
};
2025-02-04 08:26:49 -06:00
lsp-status = {
enable = true;
};
2025-02-06 23:23:02 -06:00
schemastore = {
enable = true;
json.enable = true;
yaml.enable = true;
};
2025-02-02 18:53:01 -06:00
lsp = {
enable = true;
2025-02-06 23:23:02 -06:00
capabilities = # lua
''capabilities.textDocument.completion.completionItem.snippetSupport = true'';
inlayHints = true;
servers = {
basedpyright = {
enable = true; # Python
settings = {
pyright.disableOrganizeImports = true;
};
};
ruff.enable = true; # Python
2025-02-08 12:53:14 -06:00
omnisharp = {
enable = true; # C#
package = pkgs.omnisharp-roslyn;
cmd = [ "${lib.getExe pkgs.omnisharp-roslyn}" ];
};
2025-02-06 23:23:02 -06:00
nil_ls = {
enable = true; # Nix
settings.formatting.command = [ "${lib.getExe pkgs.nixfmt-rfc-style}" ];
};
luau_lsp = {
enable = true;
package = pkgs.callPackage ../../../packages/luau-lsp.nix { inherit pkgs; };
};
2025-02-08 12:53:14 -06:00
lua_ls.enable = true;
2025-02-06 23:23:02 -06:00
html.enable = true;
jsonls.enable = true;
yamlls.enable = true;
taplo.enable = true; # TOML
cssls.enable = true;
tailwindcss.enable = true;
dockerls.enable = true;
docker_compose_language_service.enable = true;
bashls.enable = true;
2025-02-08 12:53:14 -06:00
ts_ls.enable = true;
2025-02-06 23:23:02 -06:00
denols.enable = true; # JavaScript / TypeScript (Deno)
eslint.enable = true; # JavaScript / TypeScript
2025-02-10 22:23:35 -06:00
slint_lsp.enable = true;
2025-02-06 23:23:02 -06:00
typos_lsp.enable = true;
};
preConfig = # lua
2025-02-04 08:26:49 -06:00
''
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup('lsp_attach_disable_ruff_hover', { clear = true }),
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
if client == nil then
return
end
if client.name == 'ruff' then
2025-02-06 23:23:02 -06:00
-- Disable hover in favor of basedpyright
2025-02-04 08:26:49 -06:00
client.server_capabilities.hoverProvider = false
end
end,
desc = 'LSP: Disable hover capability from Ruff',
})
'';
2025-02-02 18:53:01 -06:00
};
trouble = {
enable = true;
settings = {
auto_refresh = true;
};
};
};
2025-02-08 12:53:14 -06:00
extraPlugins = with pkgs.vimPlugins; [
vim-csharp
# (pkgs.vimUtils.buildVimPlugin {
# # https://github.com/OrangeT/vim-csharp
# name = "vim-csharp";
# src = pkgs.fetchFromGitHub {
# owner = "OrangeT";
# repo = "vim-csharp";
# rev = "b5982fc69bba7d507638a308d6875b031054280d";
# sha256 = "";
# };
# })
];
2025-02-02 18:53:01 -06:00
keymaps = [
{
mode = "n";
key = "<leader>x";
2025-02-08 12:53:14 -06:00
action = "<CMD>Trouble<CR>";
2025-02-02 18:53:01 -06:00
options = {
desc = "Trouble";
silent = true;
};
}
{
mode = "n";
key = "<leader>xx";
2025-02-08 12:53:14 -06:00
action = "<CMD>Trouble diagnostics toggle<CR>";
2025-02-02 18:53:01 -06:00
options = {
desc = "Diagnostics (Trouble)";
silent = true;
};
}
{
mode = "n";
key = "<leader>xX";
2025-02-08 12:53:14 -06:00
action = "<CMD>Trouble diagnostics toggle filter.buf=0<CR>";
2025-02-02 18:53:01 -06:00
options = {
desc = "Buffer Diagnostics (Trouble)";
silent = true;
};
}
{
mode = "n";
key = "<leader>xs";
2025-02-08 12:53:14 -06:00
action = "<CMD>Trouble symbols toggle focus=false<CR>";
2025-02-02 18:53:01 -06:00
options = {
desc = "Symbols (Trouble)";
silent = true;
};
}
{
mode = "n";
key = "<leader>xd";
2025-02-08 12:53:14 -06:00
action = "<CMD>Trouble lsp_definitions toggle<CR>";
2025-02-02 18:53:01 -06:00
options = {
desc = "LSP Definitions / references / ... (Trouble)";
silent = true;
};
}
{
mode = "n";
key = "<leader>xl";
2025-02-08 12:53:14 -06:00
action = "<CMD>Trouble loclist toggle<CR>";
2025-02-02 18:53:01 -06:00
options = {
desc = "Location List (Trouble)";
silent = true;
};
}
{
mode = "n";
key = "<leader>xq";
2025-02-08 12:53:14 -06:00
action = "<CMD>Trouble qflist toggle<CR>";
2025-02-02 18:53:01 -06:00
options = {
desc = "Quickfix (Trouble)";
silent = true;
};
}
];
};
}