mirror of
https://github.com/nix-community/nixvim.git
synced 2025-08-15 15:12:36 +02:00
nvim-lsp: added package options for basic servers
This commit is contained in:
parent
e19114a4d0
commit
acefec6468
2 changed files with 35 additions and 15 deletions
|
@ -5,28 +5,28 @@ let
|
|||
{
|
||||
name = "clangd";
|
||||
description = "Enable clangd LSP, for C/C++.";
|
||||
packages = [ pkgs.clang-tools ];
|
||||
package = pkgs.clang-tools;
|
||||
}
|
||||
{
|
||||
name = "cssls";
|
||||
description = "Enable cssls, for CSS";
|
||||
packages = [ pkgs.nodePackages.vscode-langservers-extracted ];
|
||||
package = pkgs.nodePackages.vscode-langservers-extracted;
|
||||
}
|
||||
{
|
||||
name = "eslint";
|
||||
description = "Enable eslint";
|
||||
packages = [ pkgs.nodePackages.vscode-langservers-extracted ];
|
||||
package = pkgs.nodePackages.vscode-langservers-extracted;
|
||||
}
|
||||
{
|
||||
name = "elixirls";
|
||||
description = "Enable elixirls";
|
||||
packages = [ ];
|
||||
package = null;
|
||||
cmd = ["${pkgs.elixir_ls}/bin/elixir-ls"];
|
||||
}
|
||||
{
|
||||
name = "gdscript";
|
||||
description = "Enable gdscript, for Godot";
|
||||
packages = [ ];
|
||||
package = null;
|
||||
}
|
||||
{
|
||||
name = "gopls";
|
||||
|
@ -35,12 +35,12 @@ let
|
|||
{
|
||||
name = "html";
|
||||
description = "Enable html, for HTML";
|
||||
packages = [ pkgs.nodePackages.vscode-langservers-extracted ];
|
||||
package = pkgs.nodePackages.vscode-langservers-extracted;
|
||||
}
|
||||
{
|
||||
name = "jsonls";
|
||||
description = "Enable jsonls, for JSON";
|
||||
packages = [ pkgs.nodePackages.vscode-langservers-extracted ];
|
||||
package = pkgs.nodePackages.vscode-langservers-extracted;
|
||||
}
|
||||
{
|
||||
name = "pyright";
|
||||
|
@ -59,15 +59,15 @@ let
|
|||
{
|
||||
name = "tsserver";
|
||||
description = "Enable tsserver for typescript";
|
||||
packages = with pkgs; [
|
||||
nodePackages.typescript
|
||||
nodePackages.typescript-language-server
|
||||
];
|
||||
package = pkgs.nodePackages.typescript-language-server;
|
||||
extraPackages = {
|
||||
typescript = pkgs.nodePackages.typescript;
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "vuels";
|
||||
description = "Enable vuels, for Vue";
|
||||
packages = [ pkgs.nodePackages.vue-language-server ];
|
||||
package = pkgs.nodePackages.vue-language-server;
|
||||
}
|
||||
{
|
||||
name = "zls";
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
{ name
|
||||
, description ? "Enable ${name}."
|
||||
, serverName ? name
|
||||
, packages ? [ pkgs.${name} ]
|
||||
, package ? pkgs.${name}
|
||||
, extraPackages ? { }
|
||||
, cmd ? null
|
||||
, ...
|
||||
}:
|
||||
|
@ -14,16 +15,35 @@
|
|||
with lib;
|
||||
let
|
||||
cfg = config.plugins.lsp.servers.${name};
|
||||
|
||||
packageOption =
|
||||
if package != null then {
|
||||
package = mkOption {
|
||||
default = package;
|
||||
type = types.nullOr types.package;
|
||||
};
|
||||
} else { };
|
||||
|
||||
extraPackagesOptions = mapAttrs'
|
||||
(name: defaultPackage: {
|
||||
name = "${name}Package";
|
||||
value = mkOption {
|
||||
default = defaultPackage;
|
||||
type = types.package;
|
||||
};
|
||||
})
|
||||
extraPackages;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
plugins.lsp.servers.${name} = {
|
||||
enable = mkEnableOption description;
|
||||
};
|
||||
} // packageOption // extraPackagesOptions;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
extraPackages = packages;
|
||||
extraPackages = (optional (package != null) cfg.package) ++
|
||||
(mapAttrsToList (name: _: cfg."${name}Package") extraPackages);
|
||||
|
||||
plugins.lsp.enabledServers = [{
|
||||
name = serverName;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue