2025-02-21 21:37:05 -08:00
|
|
|
{ pkgs, ... }:
|
2025-02-13 11:40:42 -08:00
|
|
|
{
|
2025-02-21 21:37:05 -08:00
|
|
|
environment.systemPackages = [
|
|
|
|
pkgs.nodePackages.eslint
|
|
|
|
pkgs.nodePackages.prettier
|
|
|
|
];
|
|
|
|
|
2025-02-13 11:40:42 -08:00
|
|
|
programs.nixvim = {
|
|
|
|
plugins.lsp = {
|
|
|
|
enable = true;
|
|
|
|
onAttach = ''
|
|
|
|
-- Set capabilities for the LSP client from blink-cmp
|
|
|
|
-- client.config.capabilities = require('blink.cmp').get_lsp_capabilities(client.config.capabilities)
|
|
|
|
|
|
|
|
local active_clients = vim.lsp.get_active_clients()
|
|
|
|
if client.name == "denols" then
|
|
|
|
for _, client_ in pairs(active_clients) do
|
|
|
|
-- stop tsserver if denols is already active
|
|
|
|
if client_.name == "ts_ls" then
|
|
|
|
client_.stop()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
elseif client.name == "ts_ls" then
|
|
|
|
for _, client_ in pairs(active_clients) do
|
|
|
|
-- prevent tsserver from starting if denols is already active
|
|
|
|
if client_.name == "denols" then
|
|
|
|
client.stop()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
'';
|
|
|
|
servers = {
|
2025-02-21 21:37:05 -08:00
|
|
|
## Needs a package
|
|
|
|
# awk_ls.enable = true;
|
|
|
|
bashls.enable = true;
|
|
|
|
clangd.enable = true;
|
|
|
|
cmake.enable = true;
|
|
|
|
## Needs a package
|
|
|
|
# css_variables.enable = true;
|
|
|
|
cssls.enable = true;
|
|
|
|
## Needs a package
|
|
|
|
# cssmodules_ls.enable = true;
|
|
|
|
## Needs a package
|
|
|
|
# custom_elements_ls.enable = true;
|
2025-02-13 11:40:42 -08:00
|
|
|
denols = {
|
|
|
|
enable = true;
|
|
|
|
rootDir = "require('lspconfig').util.root_pattern('deno.json', 'deno.jsonc')";
|
|
|
|
};
|
|
|
|
dockerls.enable = true; # Docker
|
2025-02-21 21:37:05 -08:00
|
|
|
eslint.enable = true;
|
2025-02-13 11:40:42 -08:00
|
|
|
gopls = { # Golang
|
|
|
|
enable = true;
|
|
|
|
autostart = true;
|
|
|
|
};
|
2025-02-21 21:37:05 -08:00
|
|
|
## Needs a package
|
|
|
|
# graphql.enable = true;
|
|
|
|
html.enable = true;
|
|
|
|
java_language_server.enable = true;
|
2025-02-13 11:40:42 -08:00
|
|
|
lua_ls = { # Lua
|
|
|
|
enable = true;
|
|
|
|
settings.telemetry.enable = false;
|
|
|
|
};
|
2025-02-21 21:37:05 -08:00
|
|
|
marksman.enable = true;
|
|
|
|
nil_ls.enable = true;
|
|
|
|
## Using nil_ls
|
|
|
|
# nixd.enable = true;
|
|
|
|
postgres_lsp.enable = true;
|
|
|
|
pyright.enable = true;
|
2025-02-13 11:40:42 -08:00
|
|
|
rust_analyzer = {
|
|
|
|
enable = true;
|
|
|
|
installRustc = true;
|
|
|
|
installCargo = true;
|
|
|
|
};
|
2025-02-21 21:37:05 -08:00
|
|
|
sqls.enable = true;
|
|
|
|
## Needs a package
|
|
|
|
# sqlls.enable = true;
|
|
|
|
stylelint_lsp.enable = true;
|
|
|
|
tailwindcss.enable = true;
|
|
|
|
ts_ls = {
|
|
|
|
enable = true;
|
|
|
|
rootDir = "require('lspconfig').util.root_pattern('package.json')";
|
|
|
|
settings = {
|
|
|
|
single_file_support = false;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
yamlls.enable = true; # YAML
|
2025-02-13 11:40:42 -08:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|