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;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
}
|