2023-02-20 11:42:13 +01:00
|
|
|
{
|
|
|
|
lib,
|
2023-11-06 15:04:08 +01:00
|
|
|
helpers,
|
|
|
|
config,
|
|
|
|
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";
|
2023-12-05 14:44:36 +07:00
|
|
|
package = pkgs.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";
|
2023-01-24 00:04:37 +00:00
|
|
|
package = pkgs.nodePackages."@astrojs/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
|
|
|
}
|
2023-01-10 13:41:47 +01:00
|
|
|
{
|
|
|
|
name = "bashls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "bashls for bash";
|
2023-01-19 10:36:56 +00:00
|
|
|
package = pkgs.nodePackages.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-01-08 23:04:55 +00:00
|
|
|
package = pkgs.beancount-language-server;
|
|
|
|
}
|
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
|
|
|
}
|
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++";
|
2023-01-19 10:36:56 +00:00
|
|
|
package = pkgs.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";
|
|
|
|
package = pkgs.clojure-lsp;
|
|
|
|
}
|
2023-06-27 08:12:02 +02:00
|
|
|
{
|
|
|
|
name = "cmake";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "cmake language server";
|
2023-06-27 08:12:02 +02:00
|
|
|
package = pkgs.cmake-language-server;
|
|
|
|
}
|
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
|
|
|
package = pkgs.csharp-ls;
|
|
|
|
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";
|
2023-06-18 19:26:14 +02:00
|
|
|
package = pkgs.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-01-05 14:25:40 +00:00
|
|
|
package = pkgs.cuelsp;
|
|
|
|
}
|
2023-01-10 23:47:52 +01:00
|
|
|
{
|
|
|
|
name = "dartls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "dart language-server";
|
2023-01-19 10:36:56 +00:00
|
|
|
package = pkgs.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";
|
2023-01-19 10:36:56 +00:00
|
|
|
package = pkgs.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
|
|
|
|
package = pkgs.lua54Packages.digestif;
|
|
|
|
}
|
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";
|
2023-12-05 15:19:31 +07:00
|
|
|
package = pkgs.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";
|
2023-08-19 22:17:07 +02:00
|
|
|
package = pkgs.efm-langserver;
|
|
|
|
}
|
2023-07-09 11:17:24 +00:00
|
|
|
{
|
|
|
|
name = "elmls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "elmls for Elm";
|
2023-07-09 11:17:24 +00:00
|
|
|
package = pkgs.elmPackages.elm-language-server;
|
|
|
|
}
|
2023-11-24 11:51:08 +01:00
|
|
|
{
|
|
|
|
name = "emmet_ls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "emmet_ls, emmet support based on LSP";
|
2023-11-24 11:51:08 +01:00
|
|
|
package = pkgs.emmet-ls;
|
|
|
|
}
|
2022-07-28 21:37:49 +02:00
|
|
|
{
|
|
|
|
name = "eslint";
|
2023-06-18 19:26:14 +02:00
|
|
|
package = pkgs.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-02-02 11:38:47 +01:00
|
|
|
package = pkgs.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
|
|
|
package = pkgs.fsautocomplete;
|
|
|
|
}
|
2023-05-08 23:11:30 +02:00
|
|
|
{
|
|
|
|
name = "futhark-lsp";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "futhark-lsp for Futhark";
|
2023-05-08 23:11:30 +02:00
|
|
|
package = pkgs.futhark;
|
|
|
|
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";
|
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";
|
|
|
|
package = pkgs.golangci-lint-langserver;
|
|
|
|
}
|
2023-12-15 09:22:01 +01:00
|
|
|
{
|
|
|
|
name = "graphql";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "graphql for GraphQL";
|
2023-12-15 09:22:01 +01:00
|
|
|
package = pkgs.nodePackages.graphql-language-service-cli;
|
|
|
|
}
|
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";
|
2023-02-25 16:32:55 +01:00
|
|
|
package = pkgs.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`";
|
2023-06-18 19:26:14 +02:00
|
|
|
package = pkgs.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-01-12 23:16:28 +01:00
|
|
|
package = pkgs.htmx-lsp;
|
|
|
|
}
|
2023-08-21 10:12:17 +02:00
|
|
|
{
|
|
|
|
name = "intelephense";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "intelephense for PHP";
|
2023-08-21 10:12:17 +02:00
|
|
|
package = pkgs.nodePackages.intelephense;
|
|
|
|
}
|
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
|
|
|
}
|
2022-07-28 21:37:49 +02:00
|
|
|
{
|
|
|
|
name = "jsonls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "jsonls for JSON";
|
2023-06-18 19:26:14 +02:00
|
|
|
package = pkgs.vscode-langservers-extracted;
|
2024-05-05 19:39:35 +02:00
|
|
|
cmd = cfg: [
|
|
|
|
"${cfg.package}/bin/vscode-json-language-server"
|
|
|
|
"--stdio"
|
|
|
|
];
|
2022-07-28 21:37:49 +02:00
|
|
|
}
|
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-01-18 17:10:19 +01:00
|
|
|
package = pkgs.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";
|
2023-05-30 10:52:03 +02:00
|
|
|
package = pkgs.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";
|
2023-02-28 15:07:24 +01:00
|
|
|
# Use the old name of the lua LS if the user is on a stable branch of nixpkgs
|
2023-11-14 08:54:47 -05:00
|
|
|
# Rename occurred here: https://github.com/NixOS/nixpkgs/pull/215057
|
2023-02-28 15:07:24 +01:00
|
|
|
package =
|
2024-05-05 19:39:35 +02:00
|
|
|
if (hasAttr "lua-language-server" pkgs) then
|
|
|
|
pkgs.lua-language-server
|
|
|
|
else
|
|
|
|
pkgs.sumneko-lua-language-server;
|
2023-02-20 11:54:26 +01:00
|
|
|
serverName = "lua_ls";
|
2023-02-23 10:14:42 +01:00
|
|
|
|
|
|
|
# All available settings are documented here:
|
|
|
|
# https://github.com/LuaLS/lua-language-server/wiki/Settings
|
|
|
|
settingsOptions = {
|
|
|
|
runtime = {
|
|
|
|
version = mkOption {
|
|
|
|
type = types.nullOr types.str;
|
|
|
|
description = ''
|
|
|
|
Tell the language server which version of Lua you're using
|
|
|
|
(most likely LuaJIT in the case of Neovim)
|
|
|
|
'';
|
|
|
|
default = "LuaJIT";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
diagnostics = {
|
|
|
|
globals = mkOption {
|
|
|
|
type = types.nullOr (types.listOf types.str);
|
|
|
|
description = ''
|
|
|
|
An array of variable names that will be declared as global.
|
|
|
|
'';
|
2024-05-05 19:39:35 +02:00
|
|
|
default = [ "vim" ];
|
2023-02-23 10:14:42 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
workspace = {
|
|
|
|
library = mkOption {
|
2024-05-05 19:39:35 +02:00
|
|
|
type = with types; nullOr (listOf (either str helpers.nixvimTypes.rawLua));
|
2023-02-23 10:14:42 +01:00
|
|
|
description = ''
|
|
|
|
An array of abosolute or workspace-relative paths that will be added to the workspace
|
|
|
|
diagnosis - meaning you will get completion and context from these library files.
|
|
|
|
Can be a file or directory.
|
|
|
|
Files included here will have some features disabled such as renaming fields to
|
|
|
|
prevent accidentally renaming your library files.
|
|
|
|
'';
|
2024-05-05 19:39:35 +02:00
|
|
|
default = [ (helpers.mkRaw "vim.api.nvim_get_runtime_file('', true)") ];
|
2023-02-23 10:14:42 +01:00
|
|
|
};
|
|
|
|
checkThirdParty = mkOption {
|
|
|
|
type = types.nullOr types.bool;
|
|
|
|
description = ''
|
|
|
|
Whether third party libraries can be automatically detected and applied.
|
|
|
|
Third party libraries can set up the environment to be as close as possible to your
|
|
|
|
target runtime environment.
|
|
|
|
'';
|
|
|
|
# prevents an annoying warning
|
|
|
|
# https://github.com/LuaLS/lua-language-server/discussions/1688#discussioncomment-4185003
|
|
|
|
default = false;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
telemetry = {
|
|
|
|
enable = mkEnableOption "telemetry";
|
|
|
|
};
|
|
|
|
};
|
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
|
|
|
package = pkgs.marksman;
|
|
|
|
}
|
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-04-29 08:33:43 +02:00
|
|
|
{
|
|
|
|
name = "nginx-language-server";
|
|
|
|
description = "nginx-language-server for `nginx.conf`";
|
|
|
|
serverName = "nginx_language_server";
|
|
|
|
}
|
2023-02-25 16:32:55 +01:00
|
|
|
{
|
|
|
|
name = "nil_ls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "nil for Nix";
|
2023-02-25 16:32:55 +01:00
|
|
|
package = pkgs.nil;
|
|
|
|
settingsOptions = {
|
|
|
|
formatting.command = mkOption {
|
|
|
|
type = types.nullOr (types.listOf types.str);
|
|
|
|
default = null;
|
|
|
|
description = ''
|
|
|
|
External formatter command (with arguments).
|
|
|
|
It should accepts file content in stdin and print the formatted code into stdout.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
diagnostics = {
|
|
|
|
ignored = mkOption {
|
|
|
|
type = types.listOf types.str;
|
2024-05-05 19:39:35 +02:00
|
|
|
default = [ ];
|
2023-02-25 16:32:55 +01:00
|
|
|
description = ''
|
|
|
|
Ignored diagnostic kinds.
|
|
|
|
The kind identifier is a snake_cased_string usually shown together
|
|
|
|
with the diagnostic message.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
excludedFiles = mkOption {
|
|
|
|
type = types.listOf types.str;
|
2024-05-05 19:39:35 +02:00
|
|
|
default = [ ];
|
2023-02-25 16:32:55 +01:00
|
|
|
description = ''
|
|
|
|
Files to exclude from showing diagnostics. Useful for generated files.
|
|
|
|
It accepts an array of paths. Relative paths are joint to the workspace root.
|
|
|
|
Glob patterns are currently not supported.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2024-05-05 19:39:35 +02:00
|
|
|
settings = cfg: {
|
|
|
|
nil = {
|
|
|
|
inherit (cfg) formatting diagnostics;
|
|
|
|
};
|
|
|
|
};
|
2023-02-25 16:32:55 +01:00
|
|
|
}
|
2024-04-04 09:03:28 +02:00
|
|
|
{
|
|
|
|
name = "nimls";
|
|
|
|
description = "nimls for Nim";
|
|
|
|
package = pkgs.nimlsp;
|
|
|
|
}
|
2023-06-13 09:39:54 +02:00
|
|
|
{
|
|
|
|
name = "nixd";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "nixd for Nix";
|
2023-06-13 09:39:54 +02:00
|
|
|
package = pkgs.nixd;
|
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";
|
|
|
|
package = pkgs.ocamlPackages.ocaml-lsp;
|
|
|
|
}
|
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
|
|
|
package = pkgs.ols;
|
|
|
|
}
|
2023-07-20 08:09:49 +02:00
|
|
|
{
|
|
|
|
name = "omnisharp";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "OmniSharp language server for C#";
|
2023-07-20 08:09:49 +02:00
|
|
|
package = pkgs.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.
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
}
|
2023-12-08 15:08:59 +01:00
|
|
|
{
|
|
|
|
name = "perlpls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "PLS for Perl";
|
2023-12-08 15:08:59 +01:00
|
|
|
package = pkgs.perlPackages.PLS;
|
|
|
|
}
|
2023-11-20 12:12:22 +00:00
|
|
|
{
|
|
|
|
name = "pest_ls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "pest_ls for pest";
|
2023-11-20 12:12:22 +00:00
|
|
|
package = pkgs.pest-ide-tools;
|
|
|
|
}
|
2023-09-25 22:04:24 +02:00
|
|
|
{
|
|
|
|
name = "phpactor";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "phpactor for PHP";
|
2023-09-25 22:04:24 +02:00
|
|
|
package = pkgs.phpactor;
|
|
|
|
}
|
2023-11-17 12:34:39 +02:00
|
|
|
{
|
|
|
|
name = "prismals";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "prismals for Prisma";
|
2023-11-17 12:34:39 +02:00
|
|
|
package = pkgs.nodePackages."@prisma/language-server";
|
|
|
|
}
|
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";
|
|
|
|
package = pkgs.swiProlog;
|
|
|
|
}
|
2024-02-10 17:13:59 +01:00
|
|
|
{
|
2024-02-10 20:47:07 +01:00
|
|
|
name = "purescriptls";
|
|
|
|
description = "purescriptls for PureScript";
|
2024-02-10 17:13:59 +01:00
|
|
|
package = pkgs.nodePackages.purescript-language-server;
|
|
|
|
}
|
2023-02-25 16:32:55 +01:00
|
|
|
{
|
|
|
|
name = "pylsp";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "pylsp for Python";
|
2023-02-25 16:32:55 +01:00
|
|
|
package = pkgs.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
|
|
|
}
|
|
|
|
{
|
|
|
|
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-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
|
|
|
package = pkgs.python3Packages.ruff-lsp;
|
|
|
|
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";
|
|
|
|
|
2023-08-28 17:28:12 +02:00
|
|
|
settingsOptions = import ./rust-analyzer-config.nix lib pkgs;
|
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";
|
2023-12-01 20:21:01 -05:00
|
|
|
package = pkgs.rubyPackages.solargraph;
|
|
|
|
}
|
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";
|
2023-04-28 09:28:24 +02:00
|
|
|
package = pkgs.sourcekit-lsp;
|
|
|
|
}
|
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";
|
2023-08-07 08:02:19 +02:00
|
|
|
package = pkgs.nodePackages.svelte-language-server;
|
|
|
|
}
|
2022-12-15 18:03:31 +01:00
|
|
|
{
|
|
|
|
name = "tailwindcss";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "tailwindcss language server for tailwindcss";
|
2023-01-19 10:36:56 +00:00
|
|
|
package = pkgs.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
|
|
|
package = pkgs.taplo;
|
|
|
|
}
|
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";
|
2023-04-08 14:09:30 -07:00
|
|
|
package = pkgs.terraform-ls;
|
|
|
|
}
|
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-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
|
|
|
{
|
|
|
|
name = "tsserver";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "tsserver for TypeScript";
|
2023-01-19 10:36:56 +00:00
|
|
|
package = pkgs.nodePackages.typescript-language-server;
|
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
|
|
|
package = pkgs.typst-lsp;
|
|
|
|
}
|
2024-02-04 19:42:59 +08:00
|
|
|
{
|
|
|
|
name = "vala-ls";
|
|
|
|
description = "vala_ls for Vala";
|
|
|
|
serverName = "vala_ls";
|
|
|
|
package = pkgs.vala-language-server;
|
|
|
|
}
|
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.
|
|
|
|
If this option is enabled, Nixvim will automatically set the filetype accordingly.
|
|
|
|
'';
|
|
|
|
default = true;
|
|
|
|
example = false;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
extraConfig = cfg: { filetype.extension = mkIf 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";
|
2023-02-20 11:46:56 +01:00
|
|
|
package = pkgs.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";
|
2023-08-14 07:57:39 +00:00
|
|
|
package = pkgs.nodePackages."@volar/vue-language-server";
|
|
|
|
}
|
2023-04-11 11:49:32 -04:00
|
|
|
{
|
|
|
|
name = "yamlls";
|
2024-01-26 22:05:52 +08:00
|
|
|
description = "yamlls for YAML";
|
2023-04-11 11:49:32 -04:00
|
|
|
package = pkgs.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-05-05 19:39:35 +02:00
|
|
|
in
|
|
|
|
{
|
2024-05-14 15:44:12 +02:00
|
|
|
imports =
|
|
|
|
let
|
|
|
|
mkLsp = import ./_mk-lsp.nix { inherit lib config pkgs; };
|
|
|
|
lspModules = map mkLsp servers;
|
|
|
|
in
|
|
|
|
lspModules
|
|
|
|
++ [
|
|
|
|
./ccls.nix
|
|
|
|
./efmls-configs.nix
|
|
|
|
./pylsp.nix
|
|
|
|
./rust-analyzer.nix
|
|
|
|
./svelte.nix
|
|
|
|
];
|
2022-07-28 21:37:49 +02:00
|
|
|
}
|