2023-02-20 11:42:13 +01:00
|
|
|
{
|
|
|
|
lib,
|
2023-11-06 15:04:08 +01:00
|
|
|
helpers,
|
|
|
|
pkgs,
|
2023-02-20 11:42:13 +01:00
|
|
|
...
|
2024-05-15 09:00:10 +02:00
|
|
|
}:
|
2024-05-05 19:39:35 +02:00
|
|
|
with lib;
|
|
|
|
let
|
2022-07-28 21:37:49 +02:00
|
|
|
servers = [
|
2023-12-05 14:44:36 +07:00
|
|
|
{
|
|
|
|
name = "ansiblels";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "ansiblels for Ansible";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "ansible-language-server";
|
2024-05-05 19:39:35 +02:00
|
|
|
cmd = cfg: [
|
|
|
|
"${cfg.package}/bin/ansible-language-server"
|
|
|
|
"--stdio"
|
|
|
|
];
|
2023-12-05 14:44:36 +07:00
|
|
|
}
|
2024-04-26 11:42:49 +02:00
|
|
|
{
|
|
|
|
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";
|
|
|
|
}
|
2023-01-24 00:04:37 +00:00
|
|
|
{
|
|
|
|
name = "astro";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "astrols for Astro";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "astro-language-server";
|
2024-05-05 19:39:35 +02:00
|
|
|
cmd = cfg: [
|
|
|
|
"${cfg.package}/bin/astro-ls"
|
|
|
|
"--stdio"
|
|
|
|
];
|
2023-01-24 00:04:37 +00:00
|
|
|
}
|
2024-09-09 00:11:35 +02:00
|
|
|
{
|
|
|
|
name = "basedpyright";
|
|
|
|
description = "basedpyright, a static type checker and language server for python";
|
|
|
|
}
|
2023-01-10 13:41:47 +01:00
|
|
|
{
|
|
|
|
name = "bashls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "bashls for bash";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "bash-language-server";
|
2023-01-10 13:41:47 +01:00
|
|
|
}
|
2024-01-08 23:04:55 +00:00
|
|
|
{
|
|
|
|
name = "beancount";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "beancount-language-server";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "beancount-language-server";
|
2024-01-08 23:04:55 +00:00
|
|
|
}
|
2023-11-14 08:54:47 -05:00
|
|
|
{
|
|
|
|
name = "biome";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "Biome, Toolchain of the Web";
|
2023-11-14 08:54:47 -05:00
|
|
|
}
|
2024-08-08 23:29:39 +01:00
|
|
|
{
|
|
|
|
name = "bufls";
|
|
|
|
description = "Prototype for a Protobuf language server compatible with Buf.";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "buf-language-server";
|
2024-08-08 23:29:39 +01:00
|
|
|
}
|
2023-06-15 11:20:36 +02:00
|
|
|
{
|
|
|
|
name = "ccls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "ccls for C/C++";
|
2023-06-15 11:20:36 +02:00
|
|
|
}
|
2022-07-28 21:37:49 +02:00
|
|
|
{
|
|
|
|
name = "clangd";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "clangd LSP for C/C++";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "clang-tools";
|
2022-07-28 21:37:49 +02:00
|
|
|
}
|
2023-05-21 09:14:03 +02:00
|
|
|
{
|
|
|
|
name = "clojure-lsp";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "clojure-lsp for Clojure";
|
2023-05-21 09:14:03 +02:00
|
|
|
serverName = "clojure_lsp";
|
|
|
|
}
|
2023-06-27 08:12:02 +02:00
|
|
|
{
|
|
|
|
name = "cmake";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "cmake language server";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "cmake-language-server";
|
2023-06-27 08:12:02 +02:00
|
|
|
}
|
2023-07-04 09:49:50 +02:00
|
|
|
{
|
|
|
|
name = "csharp-ls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "csharp-ls for C#";
|
2023-07-04 09:49:50 +02:00
|
|
|
serverName = "csharp_ls";
|
|
|
|
}
|
2022-07-28 21:37:49 +02:00
|
|
|
{
|
|
|
|
name = "cssls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "cssls for CSS";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "vscode-langservers-extracted";
|
2024-05-05 19:39:35 +02:00
|
|
|
cmd = cfg: [
|
|
|
|
"${cfg.package}/bin/vscode-css-language-server"
|
|
|
|
"--stdio"
|
|
|
|
];
|
2022-07-28 21:37:49 +02:00
|
|
|
}
|
2024-01-05 14:25:40 +00:00
|
|
|
{
|
|
|
|
name = "dagger";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "dagger for Cuelang";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "cuelsp";
|
2024-01-05 14:25:40 +00:00
|
|
|
}
|
2023-01-10 23:47:52 +01:00
|
|
|
{
|
|
|
|
name = "dartls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "dart language-server";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "dart";
|
2024-05-05 19:39:35 +02:00
|
|
|
settingsOptions = import ./dartls-settings.nix { inherit lib helpers; };
|
|
|
|
settings = cfg: { dart = cfg; };
|
2023-01-10 23:47:52 +01:00
|
|
|
}
|
2022-11-16 13:37:35 +01:00
|
|
|
{
|
|
|
|
name = "denols";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "denols for Deno";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "deno";
|
2022-11-16 13:37:35 +01:00
|
|
|
}
|
2023-12-30 22:26:50 +00:00
|
|
|
{
|
|
|
|
name = "dhall-lsp-server";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "dhall-lsp-server for Dhall";
|
2023-12-30 22:26:50 +00:00
|
|
|
serverName = "dhall_lsp_server";
|
|
|
|
}
|
2023-09-04 17:27:41 -04:00
|
|
|
{
|
|
|
|
name = "digestif";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "digestif for LaTeX";
|
2023-09-04 17:27:41 -04:00
|
|
|
# luaPackages.digestif is currently broken, using lua54Packages instead
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"lua54Packages"
|
|
|
|
"digestif"
|
|
|
|
];
|
2023-09-04 17:27:41 -04:00
|
|
|
}
|
2024-04-16 11:10:55 +02:00
|
|
|
{
|
|
|
|
name = "docker-compose-language-service";
|
|
|
|
description = "docker-compose-language-service for Docker Compose";
|
|
|
|
serverName = "docker_compose_language_service";
|
|
|
|
}
|
2023-12-05 15:19:31 +07:00
|
|
|
{
|
|
|
|
name = "dockerls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "dockerls for Dockerfile";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "dockerfile-language-server-nodejs";
|
2024-05-05 19:39:35 +02:00
|
|
|
cmd = cfg: [
|
|
|
|
"${cfg.package}/bin/docker-langserver"
|
|
|
|
"--stdio"
|
|
|
|
];
|
2023-12-05 15:19:31 +07:00
|
|
|
}
|
2023-08-19 22:17:07 +02:00
|
|
|
{
|
|
|
|
name = "efm";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "efm-langserver for misc tools";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "efm-langserver";
|
2023-08-19 22:17:07 +02:00
|
|
|
}
|
2023-07-09 11:17:24 +00:00
|
|
|
{
|
|
|
|
name = "elmls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "elmls for Elm";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"elmPackages"
|
|
|
|
"elm-language-server"
|
|
|
|
];
|
2023-07-09 11:17:24 +00:00
|
|
|
}
|
2023-11-24 11:51:08 +01:00
|
|
|
{
|
2024-06-02 19:04:13 +01:00
|
|
|
name = "emmet-ls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "emmet_ls, emmet support based on LSP";
|
2024-06-02 19:04:13 +01:00
|
|
|
serverName = "emmet_ls";
|
2023-11-24 11:51:08 +01:00
|
|
|
}
|
2022-07-28 21:37:49 +02:00
|
|
|
{
|
|
|
|
name = "eslint";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "vscode-langservers-extracted";
|
2024-05-05 19:39:35 +02:00
|
|
|
cmd = cfg: [
|
|
|
|
"${cfg.package}/bin/vscode-eslint-language-server"
|
|
|
|
"--stdio"
|
|
|
|
];
|
2022-07-28 21:37:49 +02:00
|
|
|
}
|
2022-10-22 14:55:22 +01:00
|
|
|
{
|
|
|
|
name = "elixirls";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "elixir-ls";
|
2024-05-05 19:39:35 +02:00
|
|
|
cmd = cfg: [ "${cfg.package}/bin/elixir-ls" ];
|
2022-10-22 14:55:22 +01:00
|
|
|
}
|
2024-03-12 18:49:48 +00:00
|
|
|
{
|
|
|
|
name = "fortls";
|
|
|
|
description = "fortls for Fortran";
|
|
|
|
cmd = cfg: [
|
|
|
|
"${cfg.package}/bin/fortls"
|
|
|
|
"--hover_signature"
|
|
|
|
"--hover_language=fortran"
|
|
|
|
"--use_signature_help"
|
|
|
|
];
|
|
|
|
}
|
2023-10-20 08:39:09 +00:00
|
|
|
{
|
|
|
|
name = "fsautocomplete";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "fsautocomplete for F#";
|
2023-10-20 08:39:09 +00:00
|
|
|
}
|
2023-05-08 23:11:30 +02:00
|
|
|
{
|
|
|
|
name = "futhark-lsp";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "futhark-lsp for Futhark";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "futhark";
|
2023-05-08 23:11:30 +02:00
|
|
|
serverName = "futhark_lsp";
|
|
|
|
}
|
2022-07-28 21:37:49 +02:00
|
|
|
{
|
|
|
|
name = "gdscript";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "gdscript for Godot";
|
2023-01-19 10:36:56 +00:00
|
|
|
package = null;
|
2022-07-28 21:37:49 +02:00
|
|
|
}
|
2023-12-13 07:44:05 +01:00
|
|
|
{
|
|
|
|
name = "gleam";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "gleam for gleam";
|
2023-12-13 07:44:05 +01:00
|
|
|
}
|
2022-07-28 21:37:49 +02:00
|
|
|
{
|
|
|
|
name = "gopls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "gopls for Go";
|
2024-09-18 21:17:58 -05:00
|
|
|
extraOptions = {
|
|
|
|
goPackage = lib.mkPackageOption pkgs "go" {
|
|
|
|
nullable = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
extraConfig = cfg: {
|
|
|
|
extraPackages = [ cfg.goPackage ];
|
|
|
|
};
|
2022-07-28 21:37:49 +02:00
|
|
|
}
|
2024-03-17 01:13:25 +01:00
|
|
|
{
|
|
|
|
name = "golangci-lint-ls";
|
|
|
|
description = "golangci-lint-ls for Go";
|
|
|
|
serverName = "golangci_lint_ls";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "golangci-lint-langserver";
|
2024-03-17 01:13:25 +01:00
|
|
|
}
|
2023-12-15 09:22:01 +01:00
|
|
|
{
|
|
|
|
name = "graphql";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "graphql for GraphQL";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"nodePackages"
|
|
|
|
"graphql-language-service-cli"
|
|
|
|
];
|
2023-12-15 09:22:01 +01:00
|
|
|
}
|
2024-09-03 12:25:03 +02:00
|
|
|
{
|
|
|
|
name = "harper-ls";
|
|
|
|
description = "The Grammar Checker for Developers";
|
|
|
|
serverName = "harper_ls";
|
|
|
|
package = "harper";
|
|
|
|
}
|
2024-02-02 11:34:19 +01:00
|
|
|
{
|
|
|
|
name = "helm-ls";
|
|
|
|
description = "helm_ls for Helm";
|
|
|
|
serverName = "helm_ls";
|
|
|
|
}
|
2023-02-25 16:32:55 +01:00
|
|
|
{
|
|
|
|
name = "hls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "haskell language server";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "haskell-language-server";
|
2024-05-05 19:39:35 +02:00
|
|
|
cmd = cfg: [
|
|
|
|
"haskell-language-server-wrapper"
|
|
|
|
"--lsp"
|
|
|
|
];
|
2023-02-25 16:32:55 +01:00
|
|
|
}
|
2022-07-28 21:37:49 +02:00
|
|
|
{
|
|
|
|
name = "html";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "HTML language server from `vscode-langservers-extracted`";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "vscode-langservers-extracted";
|
2024-05-05 19:39:35 +02:00
|
|
|
cmd = cfg: [
|
|
|
|
"${cfg.package}/bin/vscode-html-language-server"
|
|
|
|
"--stdio"
|
|
|
|
];
|
2022-07-28 21:37:49 +02:00
|
|
|
}
|
2024-01-12 23:16:28 +01:00
|
|
|
{
|
|
|
|
name = "htmx";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "htmx for HTMX";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "htmx-lsp";
|
2024-01-12 23:16:28 +01:00
|
|
|
}
|
2024-09-14 00:35:47 +10:00
|
|
|
{
|
|
|
|
name = "idris2-lsp";
|
2024-09-15 10:56:08 +10:00
|
|
|
description = ''
|
|
|
|
Idris 2 Language Server.
|
|
|
|
Enabling this also enables the required `idris2` plugin.
|
|
|
|
'';
|
2024-09-14 00:35:47 +10:00
|
|
|
serverName = "idris2_lsp";
|
|
|
|
package = [
|
|
|
|
"idris2Packages"
|
|
|
|
"idris2Lsp"
|
|
|
|
];
|
2024-09-15 10:56:08 +10:00
|
|
|
extraConfig =
|
|
|
|
cfg:
|
|
|
|
mkIf cfg.enable {
|
|
|
|
plugins.idris2.enable = lib.mkDefault true;
|
|
|
|
};
|
2024-09-14 00:35:47 +10:00
|
|
|
}
|
2023-08-21 10:12:17 +02:00
|
|
|
{
|
|
|
|
name = "intelephense";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "intelephense for PHP";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"nodePackages"
|
|
|
|
"intelephense"
|
|
|
|
];
|
2023-08-21 10:12:17 +02:00
|
|
|
}
|
2023-06-06 18:43:15 -06:00
|
|
|
{
|
|
|
|
name = "java-language-server";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "Java language server";
|
2023-06-06 18:43:15 -06:00
|
|
|
serverName = "java_language_server";
|
2024-05-05 19:39:35 +02:00
|
|
|
cmd = cfg: [ "${cfg.package}/bin/java-language-server" ];
|
2023-06-06 18:43:15 -06:00
|
|
|
}
|
2024-07-23 00:04:54 -07:00
|
|
|
{
|
|
|
|
name = "jdt-language-server";
|
|
|
|
description = "Eclipse JDT Language Server for Java";
|
|
|
|
serverName = "jdtls";
|
|
|
|
cmd = cfg: [ (lib.getExe cfg.package) ];
|
|
|
|
}
|
2022-07-28 21:37:49 +02:00
|
|
|
{
|
|
|
|
name = "jsonls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "jsonls for JSON";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "vscode-langservers-extracted";
|
2024-05-05 19:39:35 +02:00
|
|
|
cmd = cfg: [
|
|
|
|
"${cfg.package}/bin/vscode-json-language-server"
|
|
|
|
"--stdio"
|
|
|
|
];
|
2024-04-30 09:24:32 +02:00
|
|
|
settings = cfg: { json = cfg; };
|
2022-07-28 21:37:49 +02:00
|
|
|
}
|
2024-06-14 09:17:19 +01:00
|
|
|
{
|
|
|
|
name = "jsonnet-ls";
|
|
|
|
description = "jsonnet language server";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "jsonnet-language-server";
|
2024-06-14 09:17:19 +01:00
|
|
|
serverName = "jsonnet_ls";
|
|
|
|
settingsOptions = import ./jsonnet-ls-settings.nix { inherit lib helpers; };
|
|
|
|
}
|
2023-05-30 08:55:50 +02:00
|
|
|
{
|
|
|
|
name = "julials";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "julials for Julia";
|
2023-05-30 08:55:50 +02:00
|
|
|
# The julia language server has to be installed from julia and thus is not packaged "as is" in
|
|
|
|
# nixpkgs.
|
|
|
|
package = null;
|
|
|
|
}
|
2023-06-06 19:10:21 -06:00
|
|
|
{
|
|
|
|
name = "kotlin-language-server";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "Kotlin language server";
|
2023-06-06 19:10:21 -06:00
|
|
|
serverName = "kotlin_language_server";
|
|
|
|
}
|
2023-11-11 23:40:32 +01:00
|
|
|
{
|
|
|
|
name = "leanls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "leanls for Lean";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "lean4";
|
2023-11-11 23:40:32 +01:00
|
|
|
}
|
2023-05-30 10:52:03 +02:00
|
|
|
{
|
2024-01-25 16:00:55 +01:00
|
|
|
name = "lemminx";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "lemminx for XML";
|
2024-01-25 16:00:55 +01:00
|
|
|
}
|
2024-04-02 15:35:29 +02:00
|
|
|
{
|
|
|
|
name = "lexical";
|
|
|
|
description = "lexical for Elixir";
|
|
|
|
}
|
2024-01-25 16:00:55 +01:00
|
|
|
{
|
2023-05-30 10:52:03 +02:00
|
|
|
name = "ltex";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "ltex-ls for LanguageTool";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "ltex-ls";
|
2024-05-05 19:39:35 +02:00
|
|
|
settingsOptions = import ./ltex-settings.nix { inherit lib helpers; };
|
|
|
|
settings = cfg: { ltex = cfg; };
|
2023-05-30 10:52:03 +02:00
|
|
|
}
|
2023-01-19 11:37:36 +01:00
|
|
|
{
|
2023-02-20 11:54:26 +01:00
|
|
|
name = "lua-ls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "lua-ls for Lua";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "lua-language-server";
|
2023-02-20 11:54:26 +01:00
|
|
|
serverName = "lua_ls";
|
2024-04-30 16:20:00 +02:00
|
|
|
settingsOptions = import ./lua-ls-settings.nix { inherit lib helpers; };
|
2024-05-05 19:39:35 +02:00
|
|
|
settings = cfg: { Lua = cfg; };
|
2023-01-19 11:37:36 +01:00
|
|
|
}
|
2023-12-31 21:32:33 +01:00
|
|
|
{
|
|
|
|
name = "marksman";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "marksman for Markdown";
|
2023-12-31 21:32:33 +01:00
|
|
|
}
|
2023-04-11 11:51:57 -04:00
|
|
|
{
|
|
|
|
name = "metals";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "metals for Scala";
|
2023-04-11 11:51:57 -04:00
|
|
|
}
|
2024-07-29 07:24:39 +02:00
|
|
|
{
|
|
|
|
name = "nextls";
|
|
|
|
description = "The language server for Elixir that just works.";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "next-ls";
|
2024-07-29 07:24:39 +02:00
|
|
|
cmd = cfg: [
|
|
|
|
"nextls"
|
|
|
|
"--stdio"
|
|
|
|
];
|
|
|
|
}
|
2024-04-29 08:33:43 +02:00
|
|
|
{
|
|
|
|
name = "nginx-language-server";
|
|
|
|
description = "nginx-language-server for `nginx.conf`";
|
|
|
|
serverName = "nginx_language_server";
|
|
|
|
}
|
2024-06-13 16:48:19 +02:00
|
|
|
{
|
|
|
|
name = "nickel-ls";
|
|
|
|
description = "nls for Nickel";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "nls";
|
2024-06-13 16:48:19 +02:00
|
|
|
serverName = "nickel_ls";
|
|
|
|
}
|
2023-02-25 16:32:55 +01:00
|
|
|
{
|
2024-06-02 19:04:13 +01:00
|
|
|
name = "nil-ls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "nil for Nix";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "nil";
|
2024-06-02 19:04:13 +01:00
|
|
|
serverName = "nil_ls";
|
|
|
|
settingsOptions = import ./nil-ls-settings.nix { inherit lib helpers; };
|
2024-05-23 19:41:41 -05:00
|
|
|
settings = cfg: { nil = cfg; };
|
2023-02-25 16:32:55 +01:00
|
|
|
}
|
2024-04-04 09:03:28 +02:00
|
|
|
{
|
|
|
|
name = "nimls";
|
|
|
|
description = "nimls for Nim";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "nimlsp";
|
2024-04-04 09:03:28 +02:00
|
|
|
}
|
2023-06-13 09:39:54 +02:00
|
|
|
{
|
|
|
|
name = "nixd";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "nixd for Nix";
|
2024-05-05 19:39:35 +02:00
|
|
|
settings = cfg: { nixd = cfg; };
|
2024-05-15 09:00:10 +02:00
|
|
|
settingsOptions = import ./nixd-settings.nix { inherit lib helpers; };
|
|
|
|
extraConfig = cfg: {
|
|
|
|
extraPackages = optional (cfg.settings.formatting.command == [ "nixpkgs-fmt" ]) pkgs.nixpkgs-fmt;
|
|
|
|
};
|
2023-06-13 09:39:54 +02:00
|
|
|
}
|
2024-01-10 19:01:45 -07:00
|
|
|
{
|
|
|
|
name = "nushell";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "Nushell language server";
|
2024-05-05 19:39:35 +02:00
|
|
|
cmd = cfg: [
|
|
|
|
"${cfg.package}/bin/nu"
|
|
|
|
"--lsp"
|
|
|
|
];
|
2024-01-10 19:01:45 -07:00
|
|
|
}
|
2024-03-08 19:48:07 +00:00
|
|
|
{
|
|
|
|
name = "ocamllsp";
|
|
|
|
description = "ocamllsp for OCaml";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"ocamlPackages"
|
|
|
|
"ocaml-lsp"
|
|
|
|
];
|
2024-03-08 19:48:07 +00:00
|
|
|
}
|
2023-12-21 23:59:13 +01:00
|
|
|
{
|
|
|
|
name = "ols";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "ols for the Odin programming language";
|
2023-12-21 23:59:13 +01:00
|
|
|
}
|
2023-07-20 08:09:49 +02:00
|
|
|
{
|
|
|
|
name = "omnisharp";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "OmniSharp language server for C#";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "omnisharp-roslyn";
|
2024-05-05 19:39:35 +02:00
|
|
|
cmd = cfg: [ "${cfg.package}/bin/OmniSharp" ];
|
|
|
|
settings = cfg: { omnisharp = cfg; };
|
2023-07-20 08:09:49 +02:00
|
|
|
settingsOptions = {
|
|
|
|
enableEditorConfigSupport = helpers.defaultNullOpts.mkBool true ''
|
|
|
|
Enables support for reading code style, naming convention and analyzer settings from
|
|
|
|
`.editorconfig`.
|
|
|
|
'';
|
|
|
|
|
|
|
|
enableMsBuildLoadProjectsOnDemand = helpers.defaultNullOpts.mkBool false ''
|
|
|
|
If true, MSBuild project system will only load projects for files that were opened in the
|
|
|
|
editor.
|
|
|
|
This setting is useful for big C# codebases and allows for faster initialization of code
|
|
|
|
navigation features only for projects that are relevant to code that is being edited.
|
|
|
|
With this setting enabled OmniSharp may load fewer projects and may thus display
|
|
|
|
incomplete reference lists for symbols.
|
|
|
|
'';
|
|
|
|
|
|
|
|
enableRoslynAnalyzers = helpers.defaultNullOpts.mkBool false ''
|
|
|
|
If true, MSBuild project system will only load projects for files that were opened in the
|
|
|
|
editor.
|
|
|
|
This setting is useful for big C# codebases and allows for faster initialization of code
|
|
|
|
navigation features only for projects that are relevant to code that is being edited.
|
|
|
|
With this setting enabled OmniSharp may load fewer projects and may thus display
|
|
|
|
incomplete reference lists for symbols.
|
|
|
|
'';
|
|
|
|
|
|
|
|
organizeImportsOnFormat = helpers.defaultNullOpts.mkBool false ''
|
|
|
|
Specifies whether 'using' directives should be grouped and sorted during document
|
|
|
|
formatting.
|
|
|
|
'';
|
|
|
|
|
|
|
|
enableImportCompletion = helpers.defaultNullOpts.mkBool false ''
|
|
|
|
Enables support for showing unimported types and unimported extension methods in
|
|
|
|
completion lists.
|
|
|
|
When committed, the appropriate using directive will be added at the top of the current
|
|
|
|
file.
|
|
|
|
This option can have a negative impact on initial completion responsiveness, particularly
|
|
|
|
for the first few completion sessions after opening a solution.
|
|
|
|
'';
|
|
|
|
|
|
|
|
sdkIncludePrereleases = helpers.defaultNullOpts.mkBool true ''
|
|
|
|
Specifies whether to include preview versions of the .NET SDK when determining which
|
|
|
|
version to use for project loading.
|
|
|
|
'';
|
|
|
|
|
|
|
|
analyzeOpenDocumentsOnly = helpers.defaultNullOpts.mkBool true ''
|
|
|
|
Only run analyzers against open files when 'enableRoslynAnalyzers' is true.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
}
|
2024-07-24 00:04:05 +02:00
|
|
|
{
|
|
|
|
name = "openscad-lsp";
|
|
|
|
description = "A Language Server Protocol server for OpenSCAD";
|
|
|
|
serverName = "openscad_lsp";
|
|
|
|
}
|
2023-12-08 15:08:59 +01:00
|
|
|
{
|
|
|
|
name = "perlpls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "PLS for Perl";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"perlPackages"
|
|
|
|
"PLS"
|
|
|
|
];
|
2023-12-08 15:08:59 +01:00
|
|
|
}
|
2023-11-20 12:12:22 +00:00
|
|
|
{
|
2024-06-02 19:04:13 +01:00
|
|
|
name = "pest-ls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "pest_ls for pest";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "pest-ide-tools";
|
2024-06-02 19:04:13 +01:00
|
|
|
serverName = "pest_ls";
|
2023-11-20 12:12:22 +00:00
|
|
|
}
|
2023-09-25 22:04:24 +02:00
|
|
|
{
|
|
|
|
name = "phpactor";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "phpactor for PHP";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "phpactor";
|
2023-09-25 22:04:24 +02:00
|
|
|
}
|
2023-11-17 12:34:39 +02:00
|
|
|
{
|
|
|
|
name = "prismals";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "prismals for Prisma";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"nodePackages"
|
|
|
|
"@prisma/language-server"
|
|
|
|
];
|
2023-11-17 12:34:39 +02:00
|
|
|
}
|
2024-01-12 09:40:28 +01:00
|
|
|
{
|
|
|
|
name = "prolog-ls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "prolog_ls for SWI-Prolog";
|
2024-01-12 09:40:28 +01:00
|
|
|
serverName = "prolog_ls";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "swiProlog";
|
2024-01-12 09:40:28 +01:00
|
|
|
}
|
2024-02-10 17:13:59 +01:00
|
|
|
{
|
2024-02-10 20:47:07 +01:00
|
|
|
name = "purescriptls";
|
|
|
|
description = "purescriptls for PureScript";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"nodePackages"
|
|
|
|
"purescript-language-server"
|
|
|
|
];
|
2024-02-10 17:13:59 +01:00
|
|
|
}
|
2023-02-25 16:32:55 +01:00
|
|
|
{
|
|
|
|
name = "pylsp";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "pylsp for Python";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"python3Packages"
|
|
|
|
"python-lsp-server"
|
|
|
|
];
|
2024-05-05 19:39:35 +02:00
|
|
|
settings = cfg: { pylsp = cfg; };
|
2023-02-25 16:32:55 +01:00
|
|
|
}
|
2023-12-10 13:58:09 +01:00
|
|
|
{
|
|
|
|
name = "pylyzer";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "pylyzer for Python";
|
2023-12-10 13:58:09 +01:00
|
|
|
}
|
2023-02-25 16:32:55 +01:00
|
|
|
{
|
|
|
|
name = "pyright";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "pyright for Python";
|
2023-02-25 16:32:55 +01:00
|
|
|
}
|
2024-06-04 22:14:30 +10:00
|
|
|
{
|
|
|
|
name = "r-language-server";
|
|
|
|
description = "languageserver for R";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"rPackages"
|
|
|
|
"languageserver"
|
|
|
|
];
|
2024-06-04 22:14:30 +10:00
|
|
|
serverName = "r_language_server";
|
|
|
|
}
|
2023-02-25 16:32:55 +01:00
|
|
|
{
|
|
|
|
name = "rnix-lsp";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "rnix LSP for Nix";
|
2023-02-25 16:32:55 +01:00
|
|
|
serverName = "rnix";
|
2024-03-12 16:42:22 +01:00
|
|
|
package = null;
|
2023-02-25 16:32:55 +01:00
|
|
|
}
|
2024-05-31 21:51:48 +02:00
|
|
|
{
|
|
|
|
name = "ruby-lsp";
|
|
|
|
description = "ruby-lsp for Ruby";
|
|
|
|
serverName = "ruby_lsp";
|
|
|
|
}
|
2024-04-19 09:50:49 +02:00
|
|
|
{
|
|
|
|
name = "ruff";
|
|
|
|
description = "Official ruff language server (Rust) for Python";
|
|
|
|
}
|
2023-04-27 12:44:39 +02:00
|
|
|
{
|
|
|
|
name = "ruff-lsp";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "ruff-lsp, for Python";
|
2023-04-27 12:44:39 +02:00
|
|
|
serverName = "ruff_lsp";
|
|
|
|
}
|
2023-02-25 16:32:55 +01:00
|
|
|
{
|
|
|
|
name = "rust-analyzer";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "rust-analyzer for Rust";
|
2023-02-25 16:32:55 +01:00
|
|
|
serverName = "rust_analyzer";
|
|
|
|
|
2024-07-04 19:20:02 +02:00
|
|
|
settingsOptions = import ./rust-analyzer-config.nix lib helpers;
|
2024-05-05 19:39:35 +02:00
|
|
|
settings = cfg: { rust-analyzer = cfg; };
|
2023-02-25 16:32:55 +01:00
|
|
|
}
|
2024-03-06 15:47:48 +00:00
|
|
|
{
|
|
|
|
name = "slint-lsp";
|
|
|
|
description = "slint_lsp for Slint GUI language";
|
|
|
|
serverName = "slint_lsp";
|
|
|
|
}
|
2023-12-01 20:21:01 -05:00
|
|
|
{
|
|
|
|
name = "solargraph";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "solargraph for Ruby";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"rubyPackages"
|
|
|
|
"solargraph"
|
|
|
|
];
|
2023-12-01 20:21:01 -05:00
|
|
|
}
|
2023-04-28 09:28:24 +02:00
|
|
|
{
|
|
|
|
name = "sourcekit";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "sourcekit language server for Swift and C/C++/Objective-C";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "sourcekit-lsp";
|
2023-04-28 09:28:24 +02:00
|
|
|
}
|
2024-03-23 13:28:17 +01:00
|
|
|
{
|
|
|
|
name = "sqls";
|
|
|
|
description = "sqls for SQL";
|
|
|
|
}
|
2023-08-07 08:02:19 +02:00
|
|
|
{
|
|
|
|
name = "svelte";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "svelte language server for Svelte";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"nodePackages"
|
|
|
|
"svelte-language-server"
|
|
|
|
];
|
2023-08-07 08:02:19 +02:00
|
|
|
}
|
2022-12-15 18:03:31 +01:00
|
|
|
{
|
|
|
|
name = "tailwindcss";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "tailwindcss language server for tailwindcss";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"nodePackages"
|
|
|
|
"@tailwindcss/language-server"
|
|
|
|
];
|
2022-12-15 18:03:31 +01:00
|
|
|
}
|
2023-08-24 11:03:37 +02:00
|
|
|
{
|
|
|
|
name = "taplo";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "taplo for TOML";
|
2023-08-24 11:03:37 +02:00
|
|
|
}
|
2024-01-06 15:14:54 +00:00
|
|
|
{
|
|
|
|
name = "templ";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "templ language server for the templ HTML templating language";
|
2024-01-06 15:14:54 +00:00
|
|
|
}
|
2023-04-08 14:09:30 -07:00
|
|
|
{
|
|
|
|
name = "terraformls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "terraform-ls for terraform";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "terraform-ls";
|
2023-04-08 14:09:30 -07:00
|
|
|
}
|
2023-01-10 13:42:22 +01:00
|
|
|
{
|
|
|
|
name = "texlab";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "texlab language server for LaTeX";
|
2023-01-10 13:42:22 +01:00
|
|
|
}
|
2024-06-14 09:36:04 +01:00
|
|
|
{
|
|
|
|
name = "tflint";
|
|
|
|
description = "tflint, a terraform linter";
|
|
|
|
}
|
2024-04-06 22:27:31 +01:00
|
|
|
{
|
|
|
|
name = "tinymist";
|
|
|
|
description = "tinymist for Typst";
|
2024-05-14 16:19:06 +02:00
|
|
|
settingsOptions = import ./tinymist-settings.nix { inherit lib helpers; };
|
2024-04-06 22:27:31 +01:00
|
|
|
}
|
2022-10-28 01:40:40 +02:00
|
|
|
{
|
2024-09-15 23:39:21 +08:00
|
|
|
name = "ts-ls";
|
|
|
|
serverName = "ts_ls";
|
|
|
|
description = "ts_ls for TypeScript";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "typescript-language-server";
|
2024-09-21 15:31:09 -05:00
|
|
|
# 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 = {
|
|
|
|
filetypes = [
|
|
|
|
"javascript"
|
|
|
|
"javascriptreact"
|
|
|
|
"javascript.jsx"
|
|
|
|
"typescript"
|
|
|
|
"typescriptreact"
|
|
|
|
"typescript.tsx"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
2022-10-28 01:40:40 +02:00
|
|
|
}
|
2024-02-15 23:00:35 +11:00
|
|
|
{
|
|
|
|
name = "typos-lsp";
|
|
|
|
serverName = "typos_lsp";
|
|
|
|
description = "Source code spell checker for Visual Studio Code and LSP clients";
|
|
|
|
}
|
2023-04-06 10:34:11 +02:00
|
|
|
{
|
|
|
|
name = "typst-lsp";
|
|
|
|
serverName = "typst_lsp";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "typst-lsp for typst";
|
2023-04-06 10:34:11 +02:00
|
|
|
}
|
2024-02-04 19:42:59 +08:00
|
|
|
{
|
|
|
|
name = "vala-ls";
|
|
|
|
description = "vala_ls for Vala";
|
|
|
|
serverName = "vala_ls";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "vala-language-server";
|
2024-02-04 19:42:59 +08:00
|
|
|
}
|
2024-03-24 13:51:21 +01:00
|
|
|
{
|
|
|
|
name = "vhdl-ls";
|
|
|
|
description = "vhdl_ls for VHDL";
|
|
|
|
serverName = "vhdl_ls";
|
|
|
|
}
|
2023-11-27 13:20:12 +01:00
|
|
|
{
|
|
|
|
name = "vls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "vls for V";
|
2023-11-27 13:20:12 +01:00
|
|
|
# The v language server has to be installed from v and thus is not packaged "as is" in
|
|
|
|
# nixpkgs.
|
|
|
|
package = null;
|
2024-05-14 16:47:28 +02:00
|
|
|
extraOptions = {
|
|
|
|
autoSetFiletype = mkOption {
|
|
|
|
type = types.bool;
|
|
|
|
description = ''
|
|
|
|
Files with the `.v` extension are not automatically detected as vlang files.
|
2024-07-30 18:26:30 +02:00
|
|
|
If this option is enabled, Nixvim will automatically set the filetype accordingly.
|
2024-05-14 16:47:28 +02:00
|
|
|
'';
|
|
|
|
default = true;
|
|
|
|
example = false;
|
|
|
|
};
|
|
|
|
};
|
2024-07-21 10:31:46 +03:00
|
|
|
extraConfig = cfg: {
|
|
|
|
filetype.extension = mkIf (cfg.enable && cfg.autoSetFiletype) { v = "vlang"; };
|
|
|
|
};
|
2023-11-27 13:20:12 +01:00
|
|
|
}
|
2022-07-28 21:37:49 +02:00
|
|
|
{
|
|
|
|
name = "vuels";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "vuels for Vue";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"nodePackages"
|
|
|
|
"vls"
|
|
|
|
];
|
2022-07-28 21:37:49 +02:00
|
|
|
}
|
2023-08-14 07:57:39 +00:00
|
|
|
{
|
|
|
|
name = "volar";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "@volar/vue-language-server for Vue";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = [
|
|
|
|
"nodePackages"
|
|
|
|
"@volar/vue-language-server"
|
|
|
|
];
|
2024-09-20 20:40:56 -05:00
|
|
|
extraOptions = {
|
|
|
|
tslsIntegration = mkOption {
|
|
|
|
type = types.bool;
|
|
|
|
description = ''
|
|
|
|
Enable integration with TypeScript language server.
|
|
|
|
'';
|
|
|
|
default = true;
|
|
|
|
example = false;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
extraConfig = cfg: {
|
|
|
|
plugins.lsp.servers.ts-ls = lib.mkIf (cfg.enable && cfg.tslsIntegration) {
|
|
|
|
filetypes = [ "vue" ];
|
|
|
|
extraOptions = {
|
|
|
|
init_options = {
|
|
|
|
plugins = [
|
|
|
|
{
|
|
|
|
name = "@vue/typescript-plugin";
|
|
|
|
location = "${lib.getBin cfg.package}/lib/node_modules/@vue/language-server";
|
|
|
|
languages = [ "vue" ];
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2023-08-14 07:57:39 +00:00
|
|
|
}
|
2023-04-11 11:49:32 -04:00
|
|
|
{
|
|
|
|
name = "yamlls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "yamlls for YAML";
|
2024-09-01 09:43:53 +01:00
|
|
|
package = "yaml-language-server";
|
2024-04-30 09:24:24 +02:00
|
|
|
settings = cfg: { yaml = cfg; };
|
2023-04-11 11:49:32 -04:00
|
|
|
}
|
2022-07-28 21:37:49 +02:00
|
|
|
{
|
|
|
|
name = "zls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "zls for Zig";
|
2022-07-28 21:37:49 +02:00
|
|
|
}
|
|
|
|
];
|
2024-09-15 23:39:21 +08:00
|
|
|
renamedServers = {
|
|
|
|
tsserver = "ts-ls";
|
|
|
|
};
|
2024-05-05 19:39:35 +02:00
|
|
|
in
|
|
|
|
{
|
2024-05-14 15:44:12 +02:00
|
|
|
imports =
|
|
|
|
let
|
2024-09-01 09:43:53 +01:00
|
|
|
mkLsp = import ./_mk-lsp.nix;
|
2024-05-14 15:44:12 +02:00
|
|
|
lspModules = map mkLsp servers;
|
2024-09-15 23:39:21 +08:00
|
|
|
baseLspPath = [
|
|
|
|
"plugins"
|
|
|
|
"lsp"
|
|
|
|
"servers"
|
|
|
|
];
|
|
|
|
renameModules = mapAttrsToList (
|
|
|
|
old: new: lib.mkRenamedOptionModule (baseLspPath ++ [ old ]) (baseLspPath ++ [ new ])
|
|
|
|
) renamedServers;
|
2024-05-14 15:44:12 +02:00
|
|
|
in
|
|
|
|
lspModules
|
2024-09-15 23:39:21 +08:00
|
|
|
++ renameModules
|
2024-05-14 15:44:12 +02:00
|
|
|
++ [
|
|
|
|
./ccls.nix
|
|
|
|
./efmls-configs.nix
|
|
|
|
./pylsp.nix
|
|
|
|
./rust-analyzer.nix
|
|
|
|
./svelte.nix
|
|
|
|
];
|
2022-07-28 21:37:49 +02:00
|
|
|
}
|