{ pkgs, ... }: { environment.systemPackages = [ pkgs.nodePackages.eslint pkgs.nodePackages.prettier ]; 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 = { ## 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; denols = { enable = true; rootDir = "require('lspconfig').util.root_pattern('deno.json', 'deno.jsonc')"; }; dockerls.enable = true; # Docker eslint.enable = true; gopls = { # Golang enable = true; autostart = true; }; ## Needs a package # graphql.enable = true; html.enable = true; java_language_server.enable = true; lua_ls = { # Lua enable = true; settings.telemetry.enable = false; }; marksman.enable = true; nil_ls.enable = true; ## Using nil_ls # nixd.enable = true; postgres_lsp.enable = true; pyright.enable = true; rust_analyzer = { enable = true; installRustc = true; installCargo = true; }; 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 }; }; }; }