130 lines
3.4 KiB
Nix
130 lines
3.4 KiB
Nix
|
{ pkgs, ... }:
|
||
|
{
|
||
|
programs.nixvim = {
|
||
|
extraPackages = with pkgs; [
|
||
|
basedpyright
|
||
|
ruff
|
||
|
nil
|
||
|
nixfmt-rfc-style
|
||
|
(callPackage ../../../packages/luau-lsp.nix { inherit pkgs; })
|
||
|
];
|
||
|
plugins = {
|
||
|
lsp = {
|
||
|
enable = true;
|
||
|
postConfig = ''
|
||
|
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" },
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
--require('luau-lsp').setup { }
|
||
|
'';
|
||
|
};
|
||
|
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;
|
||
|
};
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
}
|