plugins/lsp: Use the auto-generated lsp plugin list

This commit is contained in:
Quentin Boyer 2024-10-05 15:55:49 +02:00
parent c79bfb75da
commit 8e8d9afe8e
11 changed files with 172 additions and 679 deletions

View file

@ -1,14 +1,14 @@
{ lib, config, ... }:
let
cfg = config.plugins.none-ls.sources.formatting.prettier;
ts-ls-cfg = config.plugins.lsp.servers.ts-ls;
ts-ls-cfg = config.plugins.lsp.servers.ts_ls;
in
{
options.plugins.none-ls.sources.formatting.prettier = {
disableTsServerFormatter = lib.mkOption {
type = with lib.types; nullOr bool;
description = ''
Disables the formatting capability of the `ts-ls` language server if it is enabled.
Disables the formatting capability of the `ts_ls` language server if it is enabled.
'';
default = null;
example = true;
@ -18,14 +18,14 @@ in
config = lib.mkIf cfg.enable {
warnings = lib.optional ((cfg.disableTsServerFormatter == null) && ts-ls-cfg.enable) ''
You have enabled the `prettier` formatter in none-ls.
You have also enabled the `ts-ls` language server which also brings a formatting feature.
You have also enabled the `ts_ls` language server which also brings a formatting feature.
- To disable the formatter built-in the `ts-ls` language server, set
- To disable the formatter built-in the `ts_ls` language server, set
`plugins.none-ls.sources.formatting.prettier.disableTsServerFormatter` to `true`.
- Else, to silence this warning, explicitly set the option to `false`.
'';
plugins.lsp.servers.ts-ls =
plugins.lsp.servers.ts_ls =
lib.mkIf
(
cfg.enable

View file

@ -58,7 +58,8 @@ in
cmd = mkOption {
type = with types; nullOr (listOf str);
default = if (cfg.package or null) != null then cmd cfg else null;
default =
if (cfg.package or null) != null then if builtins.isFunction cmd then cmd cfg else cmd else null;
description = ''
A list where each entry corresponds to the blankspace delimited part of the command that
launches the server.

View file

@ -0,0 +1,39 @@
{
tsserver = "ts-ls";
# TODO: Remove after 24.11
# Names before the LSP server auto-generation
ast-grep = "ast_grep";
clojure-lsp = "clojure_lsp";
csharp-ls = "csharp_ls";
dhall-lsp-server = "dhall_lsp_server";
docker-compose-language-service = "docker_compose_language_service";
emmet-ls = "emmet_ls";
futhark-lsp = "futhark_lsp";
golangci-lint-ls = "golangci_lint_ls";
harper-ls = "harper_ls";
helm-ls = "helm_ls";
idris2-lsp = "idris2_lsp";
java-language-server = "java_language_server";
jdt-language-server = "jdtls";
jsonnet-ls = "jsonnet_ls";
kotlin-language-server = "kotlin_language_server";
lua-ls = "lua_ls";
nginx-language-server = "nginx_language_server";
nickel-ls = "nickel_ls";
nil-ls = "nil_ls";
openscad-lsp = "openscad_lsp";
pest-ls = "pest_ls";
prolog-ls = "prolog_ls";
r-language-server = "r_language_server";
rnix-lsp = "rnix";
ruby-lsp = "ruby_lsp";
ruff-lsp = "ruff_lsp";
rust-analyzer = "rust_analyzer";
slint-lsp = "slint_lsp";
ts-ls = "ts_ls";
typos-lsp = "typos_lsp";
typst-lsp = "typst_lsp";
vala-ls = "vala_ls";
vhdl-ls = "vhdl_ls";
}

View file

@ -6,197 +6,14 @@
}:
with lib;
let
servers = [
{
name = "ansiblels";
description = "ansiblels for Ansible";
package = "ansible-language-server";
cmd = cfg: [
"${cfg.package}/bin/ansible-language-server"
"--stdio"
];
}
{
name = "ast-grep";
description = ''
ast-grep(sg) is a fast and polyglot tool for code structural search, lint, rewriting at large scale.
ast-grep LSP only works in projects that have `sgconfig.y[a]ml` in their root directories.
'';
serverName = "ast_grep";
}
{
name = "astro";
description = "astrols for Astro";
package = "astro-language-server";
cmd = cfg: [
"${cfg.package}/bin/astro-ls"
"--stdio"
];
}
{
name = "basedpyright";
description = "basedpyright, a static type checker and language server for python";
}
{
name = "bashls";
description = "bashls for bash";
package = "bash-language-server";
}
{
name = "beancount";
description = "beancount-language-server";
package = "beancount-language-server";
}
{
name = "biome";
description = "Biome, Toolchain of the Web";
}
{
name = "bufls";
description = "Prototype for a Protobuf language server compatible with Buf.";
package = "buf-language-server";
}
{
name = "ccls";
description = "ccls for C/C++";
}
{
name = "clangd";
description = "clangd LSP for C/C++";
package = "clang-tools";
}
{
name = "clojure-lsp";
description = "clojure-lsp for Clojure";
serverName = "clojure_lsp";
}
{
name = "cmake";
description = "cmake language server";
package = "cmake-language-server";
}
{
name = "csharp-ls";
description = "csharp-ls for C#";
serverName = "csharp_ls";
}
{
name = "cssls";
description = "cssls for CSS";
package = "vscode-langservers-extracted";
cmd = cfg: [
"${cfg.package}/bin/vscode-css-language-server"
"--stdio"
];
}
{
name = "dagger";
description = "dagger for Cuelang";
package = "cuelsp";
}
{
name = "dartls";
description = "dart language-server";
package = "dart";
renamedServers = import ./_renamed.nix;
lspExtraArgs = {
dartls = {
settingsOptions = import ./dartls-settings.nix { inherit lib helpers; };
settings = cfg: { dart = cfg; };
}
{
name = "denols";
description = "denols for Deno";
package = "deno";
}
{
name = "dhall-lsp-server";
description = "dhall-lsp-server for Dhall";
serverName = "dhall_lsp_server";
}
{
name = "digestif";
description = "digestif for LaTeX";
# luaPackages.digestif is currently broken, using lua54Packages instead
package = [
"lua54Packages"
"digestif"
];
}
{
name = "docker-compose-language-service";
description = "docker-compose-language-service for Docker Compose";
serverName = "docker_compose_language_service";
}
{
name = "dockerls";
description = "dockerls for Dockerfile";
package = "dockerfile-language-server-nodejs";
cmd = cfg: [
"${cfg.package}/bin/docker-langserver"
"--stdio"
];
}
{
name = "efm";
description = "efm-langserver for misc tools";
package = "efm-langserver";
}
{
name = "elmls";
description = "elmls for Elm";
package = [
"elmPackages"
"elm-language-server"
];
}
{
name = "emmet-ls";
description = "emmet_ls, emmet support based on LSP";
serverName = "emmet_ls";
}
{
name = "eslint";
package = "vscode-langservers-extracted";
cmd = cfg: [
"${cfg.package}/bin/vscode-eslint-language-server"
"--stdio"
];
}
{
name = "elixirls";
package = "elixir-ls";
cmd = cfg: [ "${cfg.package}/bin/elixir-ls" ];
}
{
name = "fortls";
description = "fortls for Fortran";
cmd = cfg: [
"${cfg.package}/bin/fortls"
"--hover_signature"
"--hover_language=fortran"
"--use_signature_help"
];
}
{
name = "fsautocomplete";
description = "fsautocomplete for F#";
}
{
name = "futhark-lsp";
description = "futhark-lsp for Futhark";
package = "futhark";
serverName = "futhark_lsp";
}
{
name = "gdscript";
description = "gdscript for Godot";
package = null;
}
{
name = "gleam";
description = "gleam for gleam";
}
{
name = "gopls";
description = "gopls for Go";
};
gopls = {
extraOptions = {
goPackage = lib.mkPackageOption pkgs "go" {
nullable = true;
@ -205,224 +22,40 @@ let
extraConfig = cfg: {
extraPackages = [ cfg.goPackage ];
};
}
{
name = "golangci-lint-ls";
description = "golangci-lint-ls for Go";
serverName = "golangci_lint_ls";
package = "golangci-lint-langserver";
}
{
name = "graphql";
description = "graphql for GraphQL";
package = [
"nodePackages"
"graphql-language-service-cli"
];
}
{
name = "harper-ls";
description = "The Grammar Checker for Developers";
serverName = "harper_ls";
package = "harper";
}
{
name = "helm-ls";
description = "helm_ls for Helm";
serverName = "helm_ls";
}
{
name = "hls";
description = "haskell language server";
package = "haskell-language-server";
cmd = cfg: [
"haskell-language-server-wrapper"
"--lsp"
];
}
{
name = "html";
description = "HTML language server from `vscode-langservers-extracted`";
package = "vscode-langservers-extracted";
cmd = cfg: [
"${cfg.package}/bin/vscode-html-language-server"
"--stdio"
];
}
{
name = "htmx";
description = "htmx for HTMX";
package = "htmx-lsp";
}
{
name = "idris2-lsp";
description = ''
Idris 2 Language Server.
Enabling this also enables the required `idris2` plugin.
'';
serverName = "idris2_lsp";
package = [
"idris2Packages"
"idris2Lsp"
];
};
idris2_lsp = {
extraConfig =
cfg:
mkIf cfg.enable {
plugins.idris2.enable = lib.mkDefault true;
};
}
{
name = "intelephense";
description = "intelephense for PHP";
package = [
"nodePackages"
"intelephense"
];
}
{
name = "java-language-server";
description = "Java language server";
serverName = "java_language_server";
cmd = cfg: [ "${cfg.package}/bin/java-language-server" ];
}
{
name = "jdt-language-server";
description = "Eclipse JDT Language Server for Java";
serverName = "jdtls";
cmd = cfg: [ (lib.getExe cfg.package) ];
}
{
name = "jsonls";
description = "jsonls for JSON";
package = "vscode-langservers-extracted";
cmd = cfg: [
"${cfg.package}/bin/vscode-json-language-server"
"--stdio"
];
};
jsonls = {
settings = cfg: { json = cfg; };
}
{
name = "jsonnet-ls";
description = "jsonnet language server";
package = "jsonnet-language-server";
serverName = "jsonnet_ls";
};
jsonnet_ls = {
settingsOptions = import ./jsonnet-ls-settings.nix { inherit lib helpers; };
}
{
name = "julials";
description = "julials for Julia";
# The julia language server has to be installed from julia and thus is not packaged "as is" in
# nixpkgs.
package = null;
}
{
name = "kotlin-language-server";
description = "Kotlin language server";
serverName = "kotlin_language_server";
}
{
name = "leanls";
description = "leanls for Lean";
package = "lean4";
}
{
name = "lemminx";
description = "lemminx for XML";
}
{
name = "lexical";
description = "lexical for Elixir";
}
{
name = "ltex";
description = "ltex-ls for LanguageTool";
package = "ltex-ls";
};
ltex = {
settingsOptions = import ./ltex-settings.nix { inherit lib helpers; };
settings = cfg: { ltex = cfg; };
}
{
name = "lua-ls";
description = "lua-ls for Lua";
package = "lua-language-server";
serverName = "lua_ls";
};
lua_ls = {
settingsOptions = import ./lua-ls-settings.nix { inherit lib helpers; };
settings = cfg: { Lua = cfg; };
}
{
name = "marksman";
description = "marksman for Markdown";
}
{
name = "metals";
description = "metals for Scala";
}
{
name = "nextls";
description = "The language server for Elixir that just works.";
package = "next-ls";
cmd = cfg: [
"nextls"
"--stdio"
];
}
{
name = "nginx-language-server";
description = "nginx-language-server for `nginx.conf`";
serverName = "nginx_language_server";
}
{
name = "nickel-ls";
description = "nls for Nickel";
package = "nls";
serverName = "nickel_ls";
}
{
name = "nil-ls";
description = "nil for Nix";
package = "nil";
serverName = "nil_ls";
};
nil_ls = {
settingsOptions = import ./nil-ls-settings.nix { inherit lib helpers; };
settings = cfg: { nil = cfg; };
}
{
name = "nimls";
description = "nimls for Nim";
package = "nimlsp";
}
{
name = "nixd";
description = "nixd for Nix";
};
nixd = {
settings = cfg: { nixd = cfg; };
settingsOptions = import ./nixd-settings.nix { inherit lib helpers; };
extraConfig = cfg: {
extraPackages = optional (cfg.settings.formatting.command == [ "nixpkgs-fmt" ]) pkgs.nixpkgs-fmt;
};
}
{
name = "nushell";
description = "Nushell language server";
cmd = cfg: [
"${cfg.package}/bin/nu"
"--lsp"
];
}
{
name = "ocamllsp";
description = "ocamllsp for OCaml";
package = [
"ocamlPackages"
"ocaml-lsp"
];
}
{
name = "ols";
description = "ols for the Odin programming language";
}
{
name = "omnisharp";
description = "OmniSharp language server for C#";
package = "omnisharp-roslyn";
cmd = cfg: [ "${cfg.package}/bin/OmniSharp" ];
};
omnisharp = {
settings = cfg: { omnisharp = cfg; };
settingsOptions = {
enableEditorConfigSupport = helpers.defaultNullOpts.mkBool true ''
@ -471,180 +104,19 @@ let
Only run analyzers against open files when 'enableRoslynAnalyzers' is true.
'';
};
}
{
name = "openscad-lsp";
description = "A Language Server Protocol server for OpenSCAD";
serverName = "openscad_lsp";
}
{
name = "perlpls";
description = "PLS for Perl";
package = [
"perlPackages"
"PLS"
];
}
{
name = "pest-ls";
description = "pest_ls for pest";
package = "pest-ide-tools";
serverName = "pest_ls";
}
{
name = "phpactor";
description = "phpactor for PHP";
package = "phpactor";
}
{
name = "prismals";
description = "prismals for Prisma";
package = [
"nodePackages"
"@prisma/language-server"
];
}
{
name = "prolog-ls";
description = "prolog_ls for SWI-Prolog";
serverName = "prolog_ls";
package = "swi-prolog";
}
{
name = "purescriptls";
description = "purescriptls for PureScript";
package = [
"nodePackages"
"purescript-language-server"
];
}
{
name = "pylsp";
description = "pylsp for Python";
package = [
"python3Packages"
"python-lsp-server"
];
};
pylsp = {
settings = cfg: { pylsp = cfg; };
}
{
name = "pylyzer";
description = "pylyzer for Python";
}
{
name = "pyright";
description = "pyright for Python";
}
{
name = "r-language-server";
description = "languageserver for R";
package = [
"rPackages"
"languageserver"
];
serverName = "r_language_server";
}
{
name = "rnix-lsp";
description = "rnix LSP for Nix";
serverName = "rnix";
package = null;
}
{
name = "ruby-lsp";
description = "ruby-lsp for Ruby";
serverName = "ruby_lsp";
}
{
name = "ruff";
description = "Official ruff language server (Rust) for Python";
}
{
name = "ruff-lsp";
description = "ruff-lsp, for Python";
serverName = "ruff_lsp";
}
{
name = "rust-analyzer";
description = "rust-analyzer for Rust";
serverName = "rust_analyzer";
};
rust_analyzer = {
settingsOptions = import ./rust-analyzer-config.nix lib helpers;
settings = cfg: { rust-analyzer = cfg; };
}
{
name = "slint-lsp";
description = "slint_lsp for Slint GUI language";
serverName = "slint_lsp";
}
{
name = "solargraph";
description = "solargraph for Ruby";
package = [
"rubyPackages"
"solargraph"
];
}
{
name = "sourcekit";
description = "sourcekit language server for Swift and C/C++/Objective-C";
package = "sourcekit-lsp";
}
{
name = "sqls";
description = "sqls for SQL";
}
{
name = "svelte";
description = "svelte language server for Svelte";
package = [
"nodePackages"
"svelte-language-server"
];
}
{
name = "tailwindcss";
description = "tailwindcss language server for tailwindcss";
package = [
"nodePackages"
"@tailwindcss/language-server"
];
}
{
name = "taplo";
description = "taplo for TOML";
}
{
name = "templ";
description = "templ language server for the templ HTML templating language";
}
{
name = "terraformls";
description = "terraform-ls for terraform";
package = "terraform-ls";
}
{
name = "texlab";
description = "texlab language server for LaTeX";
}
{
name = "tflint";
description = "tflint, a terraform linter";
}
{
name = "tinymist";
description = "tinymist for Typst";
settingsOptions = import ./tinymist-settings.nix { inherit lib helpers; };
}
{
name = "ts-ls";
serverName = "ts_ls";
description = "ts_ls for TypeScript";
package = "typescript-language-server";
};
ts_ls = {
# NOTE: Provide the plugin default filetypes so that
# `plugins.lsp.servers.volar.tslsIntegration` doesn't wipe out the default filetypes
extraConfig = cfg: {
plugins.lsp.servers.ts-ls = {
plugins.lsp.servers.ts_ls = {
filetypes = [
"javascript"
"javascriptreact"
@ -655,34 +127,8 @@ let
];
};
};
}
{
name = "typos-lsp";
serverName = "typos_lsp";
description = "Source code spell checker for Visual Studio Code and LSP clients";
}
{
name = "typst-lsp";
serverName = "typst_lsp";
description = "typst-lsp for typst";
}
{
name = "vala-ls";
description = "vala_ls for Vala";
serverName = "vala_ls";
package = "vala-language-server";
}
{
name = "vhdl-ls";
description = "vhdl_ls for VHDL";
serverName = "vhdl_ls";
}
{
name = "vls";
description = "vls for V";
# The v language server has to be installed from v and thus is not packaged "as is" in
# nixpkgs.
package = null;
};
vls = {
extraOptions = {
autoSetFiletype = mkOption {
type = types.bool;
@ -697,22 +143,8 @@ let
extraConfig = cfg: {
filetype.extension = mkIf (cfg.enable && cfg.autoSetFiletype) { v = "vlang"; };
};
}
{
name = "vuels";
description = "vuels for Vue";
package = [
"nodePackages"
"vls"
];
}
{
name = "volar";
description = "@volar/vue-language-server for Vue";
package = [
"nodePackages"
"@volar/vue-language-server"
];
};
volar = {
extraOptions = {
tslsIntegration = mkOption {
type = types.bool;
@ -724,7 +156,7 @@ let
};
};
extraConfig = cfg: {
plugins.lsp.servers.ts-ls = lib.mkIf (cfg.enable && cfg.tslsIntegration) {
plugins.lsp.servers.ts_ls = lib.mkIf (cfg.enable && cfg.tslsIntegration) {
filetypes = [ "vue" ];
extraOptions = {
init_options = {
@ -739,27 +171,48 @@ let
};
};
};
}
{
name = "yamlls";
description = "yamlls for YAML";
package = "yaml-language-server";
};
yamlls = {
settings = cfg: { yaml = cfg; };
}
{
name = "zls";
description = "zls for Zig";
}
];
renamedServers = {
tsserver = "ts-ls";
};
};
lspPackages = import ../lsp-packages.nix;
getLspPackage =
name:
if lib.hasAttr name lspPackages.packages then
{ package = lspPackages.packages.${name}; }
else if lib.hasAttr name lspPackages.customCmd then
{ inherit (lspPackages.customCmd.${name}) package cmd; }
else
assert lib.assertMsg (lib.elem name lspPackages.unpackaged) "LSP server ${name} is unknown";
{
package = null;
};
generatedServers = lib.pipe ../../../generated/lspconfig-servers.json [
lib.importJSON
(lib.map (
{
name,
desc ? "${name} language server",
...
}:
{
inherit name;
description = desc;
}
// (getLspPackage name)
// (lspExtraArgs.${name} or { })
))
];
in
{
imports =
let
mkLsp = import ./_mk-lsp.nix;
lspModules = map mkLsp servers;
lspModules = map mkLsp generatedServers;
baseLspPath = [
"plugins"
"lsp"

View file

@ -6,10 +6,10 @@
}:
with lib;
let
cfg = config.plugins.lsp.servers.rust-analyzer;
cfg = config.plugins.lsp.servers.rust_analyzer;
in
{
options.plugins.lsp.servers.rust-analyzer = {
options.plugins.lsp.servers.rust_analyzer = {
# https://github.com/nix-community/nixvim/issues/674
installCargo = mkOption {
type = with types; nullOr bool;
@ -35,21 +35,21 @@ in
warnings =
(optional (cfg.installCargo == null) ''
`rust_analyzer` relies on `cargo`.
- Set `plugins.lsp.servers.rust-analyzer.installCargo = true` to install it automatically
- Set `plugins.lsp.servers.rust_analyzer.installCargo = true` to install it automatically
with Nixvim.
You can customize which package to install by changing
`plugins.lsp.servers.rust-analyzer.cargoPackage`.
- Set `plugins.lsp.servers.rust-analyzer.installCargo = false` to not have it install
`plugins.lsp.servers.rust_analyzer.cargoPackage`.
- Set `plugins.lsp.servers.rust_analyzer.installCargo = false` to not have it install
through Nixvim.
By doing so, you will dismiss this warning.
'')
++ (optional (cfg.installRustc == null) ''
`rust_analyzer` relies on `rustc`.
- Set `plugins.lsp.servers.rust-analyzer.installRustc = true` to install it automatically
- Set `plugins.lsp.servers.rust_analyzer.installRustc = true` to install it automatically
with Nixvim.
You can customize which package to install by changing
`plugins.lsp.servers.rust-analyzer.rustcPackage`.
- Set `plugins.lsp.servers.rust-analyzer.installRustc = false` to not have it install
`plugins.lsp.servers.rust_analyzer.rustcPackage`.
- Set `plugins.lsp.servers.rust_analyzer.installRustc = false` to not have it install
through Nixvim.
By doing so, you will dismiss this warning.
'');

View file

@ -9,7 +9,7 @@ pkgs.lib.optionalAttrs
servers = {
ansiblels.enable = true;
ast-grep.enable = true;
ast_grep.enable = true;
astro.enable = true;
basedpyright.enable = true;
bashls.enable = true;
@ -18,53 +18,53 @@ pkgs.lib.optionalAttrs
bufls.enable = true;
ccls.enable = true;
clangd.enable = true;
clojure-lsp.enable = true;
clojure_lsp.enable = true;
cmake.enable = true;
csharp-ls.enable = true;
csharp_ls.enable = true;
cssls.enable = true;
dagger.enable = true;
dartls.enable = true;
denols.enable = true;
dhall-lsp-server.enable = true;
dhall_lsp_server.enable = true;
digestif.enable = true;
docker-compose-language-service.enable = true;
docker_compose_language_service.enable = true;
dockerls.enable = true;
efm.enable = true;
elmls.enable = true;
emmet-ls.enable = true;
emmet_ls.enable = true;
eslint.enable = true;
elixirls.enable = true;
fortls.enable = true;
# pkgs.fsautocomplete only supports linux platforms
fsautocomplete.enable = pkgs.stdenv.isLinux;
futhark-lsp.enable = true;
futhark_lsp.enable = true;
gleam.enable = true;
gopls.enable = true;
golangci-lint-ls.enable = true;
golangci_lint_ls.enable = true;
graphql.enable = true;
harper-ls.enable = true;
helm-ls.enable = true;
harper_ls.enable = true;
helm_ls.enable = true;
hls.enable = true;
html.enable = true;
htmx.enable = true;
idris2-lsp.enable = true;
java-language-server.enable = true;
jdt-language-server.enable = true;
idris2_lsp.enable = true;
java_language_server.enable = true;
jdtls.enable = true;
jsonls.enable = true;
jsonnet-ls.enable = true;
jsonnet_ls.enable = true;
julials.enable = true;
kotlin-language-server.enable = true;
kotlin_language_server.enable = true;
leanls.enable = true;
lemminx.enable = true;
lexical.enable = true;
ltex.enable = true;
lua-ls.enable = true;
lua_ls.enable = true;
marksman.enable = true;
metals.enable = true;
nextls.enable = true;
nginx-language-server.enable = true;
nickel-ls.enable = true;
nil-ls.enable = true;
nginx_language_server.enable = true;
nickel_ls.enable = true;
nil_ls.enable = true;
nimls.enable = true;
nixd.enable = true;
nushell.enable = true;
@ -73,25 +73,25 @@ pkgs.lib.optionalAttrs
# ols is not supported on aarch64-linux
pkgs.stdenv.hostPlatform.system != "aarch64-linux";
omnisharp.enable = true;
openscad-lsp.enable = true;
openscad_lsp.enable = true;
perlpls.enable = true;
pest-ls.enable = true;
pest_ls.enable = true;
prismals.enable = true;
prolog-ls.enable = true;
prolog_ls.enable = true;
purescriptls.enable = true;
pylsp.enable = true;
pylyzer.enable = true;
pyright.enable = true;
r-language-server.enable = true;
ruby-lsp.enable = true;
r_language_server.enable = true;
ruby_lsp.enable = true;
ruff.enable = true;
ruff-lsp.enable = true;
rust-analyzer = {
ruff_lsp.enable = true;
rust_analyzer = {
enable = true;
installCargo = true;
installRustc = true;
};
slint-lsp.enable = true;
slint_lsp.enable = true;
solargraph.enable = true;
# As of 2024-09-13, sourcekit-lsp is broken due to swift dependency
# TODO: re-enable this test when fixed
@ -105,11 +105,11 @@ pkgs.lib.optionalAttrs
texlab.enable = true;
tflint.enable = true;
tinymist.enable = true;
ts-ls.enable = true;
typos-lsp.enable = true;
typst-lsp.enable = true;
vala-ls.enable = true;
vhdl-ls.enable = true;
ts_ls.enable = true;
typos_lsp.enable = true;
typst_lsp.enable = true;
vala_ls.enable = true;
vhdl_ls.enable = true;
vls.enable = true;
vuels.enable = true;
yamlls.enable = true;

View file

@ -31,7 +31,7 @@
lsp = {
enable = true;
servers = {
rust-analyzer = {
rust_analyzer = {
enable = true;
installCargo = true;
installRustc = true;
@ -84,7 +84,7 @@
enable = true;
servers = {
nixd.enable = true;
rust-analyzer = {
rust_analyzer = {
enable = true;
installCargo = true;
installRustc = true;

View file

@ -67,13 +67,13 @@
enable = true;
package = null;
};
nil-ls.enable = true;
rust-analyzer = {
nil_ls.enable = true;
rust_analyzer = {
enable = true;
installCargo = true;
installRustc = true;
};
ruff-lsp = {
ruff_lsp = {
enable = true;
extraOptions = {
init_options.settings.args = [ "--config=/path/to/config.toml" ];
@ -102,7 +102,7 @@
enable = true;
servers = {
volar.enable = true;
ts-ls = {
ts_ls = {
enable = true;
filetypes = [ "typescript" ];
};
@ -111,17 +111,17 @@
assertions = [
{
assertion = lib.any (x: x == "vue") config.plugins.lsp.servers.ts-ls.filetypes;
assertion = lib.any (x: x == "vue") config.plugins.lsp.servers.ts_ls.filetypes;
message = "Expected `vue` filetype configuration.";
}
{
assertion = lib.any (
x: x.name == "@vue/typescript-plugin"
) config.plugins.lsp.servers.ts-ls.extraOptions.init_options.plugins;
) config.plugins.lsp.servers.ts_ls.extraOptions.init_options.plugins;
message = "Expected `@vue/typescript-plugin` plugin.";
}
{
assertion = lib.any (x: x == "typescript") config.plugins.lsp.servers.ts-ls.filetypes;
assertion = lib.any (x: x == "typescript") config.plugins.lsp.servers.ts_ls.filetypes;
message = "Expected `typescript` filetype configuration.";
}
];
@ -133,7 +133,7 @@
plugins.lsp = {
enable = true;
servers = {
ts-ls = {
ts_ls = {
enable = true;
};
};
@ -141,17 +141,17 @@
assertions = [
{
assertion = lib.all (x: x != "vue") config.plugins.lsp.servers.ts-ls.filetypes;
assertion = lib.all (x: x != "vue") config.plugins.lsp.servers.ts_ls.filetypes;
message = "Did not expect `vue` filetype configuration.";
}
(lib.mkIf (config.plugins.lsp.servers.ts-ls.extraOptions ? init_options) {
(lib.mkIf (config.plugins.lsp.servers.ts_ls.extraOptions ? init_options) {
assertion = lib.all (
x: x.name != "@vue/typescript-plugin"
) config.plugins.lsp.servers.ts-ls.extraOptions.init_options.plugins;
) config.plugins.lsp.servers.ts_ls.extraOptions.init_options.plugins;
message = "Did not expect `@vue/typescript-plugin` plugin.";
})
{
assertion = lib.any (x: x == "typescript") config.plugins.lsp.servers.ts-ls.filetypes;
assertion = lib.any (x: x == "typescript") config.plugins.lsp.servers.ts_ls.filetypes;
message = "Expected `typescript` filetype configuration.";
}
];

View file

@ -3,7 +3,7 @@
plugins.lsp = {
enable = true;
servers.jsonnet-ls = {
servers.jsonnet_ls = {
enable = true;
settings = {

View file

@ -3,7 +3,7 @@
plugins.lsp = {
enable = true;
servers.lua-ls = {
servers.lua_ls = {
enable = true;
settings = {

View file

@ -3,7 +3,7 @@
plugins.lsp = {
enable = true;
servers.nil-ls = {
servers.nil_ls = {
enable = true;
settings = {