flake/nixos/nvim/plugins/lsp.nix

134 lines
3.5 KiB
Nix
Raw Normal View History

2025-02-02 18:53:01 -06:00
{ pkgs, ... }:
{
programs.nixvim = {
extraPackages = with pkgs; [
basedpyright
ruff
nil
nixfmt-rfc-style
(callPackage ../../../packages/luau-lsp.nix { inherit pkgs; })
];
plugins = {
2025-02-04 08:26:49 -06:00
lsp-status = {
enable = true;
};
2025-02-02 18:53:01 -06:00
lsp = {
enable = true;
2025-02-04 08:26:49 -06:00
postConfig = # lua
''
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
-- Disable hover in favor of Pyright
client.server_capabilities.hoverProvider = false
end
end,
desc = 'LSP: Disable hover capability from Ruff',
})
require('lspconfig').basedpyright.setup { settings = { pyright = { disableOrganizeImports = true } } }
require('lspconfig').ruff.setup { }
require('lspconfig').nil_ls.setup {
cmd = { "${pkgs.nil}/bin/nil" },
settings = {
['nil'] = {
formatting = {
command = { "${pkgs.nixfmt-rfc-style}/bin/nixfmt" },
},
2025-02-02 18:53:01 -06:00
},
},
2025-02-04 08:26:49 -06:00
}
--require('luau-lsp').setup { }
'';
2025-02-02 18:53:01 -06:00
};
trouble = {
enable = true;
settings = {
auto_refresh = true;
};
};
};
extraPlugins = [
(pkgs.vimUtils.buildVimPlugin {
# https://github.com/lopi-py/luau-lsp.nvim
name = "luau-lsp.nvim";
src = pkgs.fetchFromGitHub {
owner = "lopi-py";
repo = "luau-lsp.nvim";
rev = "v1.6.0";
sha256 = "sha256-8+ax8n1fA4jgJugvWtRXkad4YM7TmAAsAopzalmGu/4=";
};
})
];
keymaps = [
{
mode = "n";
key = "<leader>x";
action = ":Trouble<CR>";
options = {
desc = "Trouble";
silent = true;
};
}
{
mode = "n";
key = "<leader>xx";
action = ":Trouble diagnostics toggle<CR>";
options = {
desc = "Diagnostics (Trouble)";
silent = true;
};
}
{
mode = "n";
key = "<leader>xX";
action = ":Trouble diagnostics toggle filter.buf=0<CR>";
options = {
desc = "Buffer Diagnostics (Trouble)";
silent = true;
};
}
{
mode = "n";
key = "<leader>xs";
action = ":Trouble symbols toggle focus=false<CR>";
options = {
desc = "Symbols (Trouble)";
silent = true;
};
}
{
mode = "n";
key = "<leader>xd";
action = ":Trouble lsp_definitions toggle<CR>";
options = {
desc = "LSP Definitions / references / ... (Trouble)";
silent = true;
};
}
{
mode = "n";
key = "<leader>xl";
action = ":Trouble loclist toggle<CR>";
options = {
desc = "Location List (Trouble)";
silent = true;
};
}
{
mode = "n";
key = "<leader>xq";
action = ":Trouble qflist toggle<CR>";
options = {
desc = "Quickfix (Trouble)";
silent = true;
};
}
];
};
}