nvim-lsp: updated package options

This commit is contained in:
Alexander Nortung 2023-01-16 22:02:01 +01:00
parent b381c38113
commit 09934f3756
2 changed files with 24 additions and 37 deletions

View file

@ -6,7 +6,7 @@ let
{ {
name = "bashls"; name = "bashls";
description = "Enable bashls, for bash."; description = "Enable bashls, for bash.";
packages = [ pkgs.nodePackages.bash-language-server ]; package = pkgs.nodePackages.bash-language-server;
} }
{ {
name = "clangd"; name = "clangd";
@ -21,7 +21,7 @@ let
{ {
name = "dartls"; name = "dartls";
description = "Enable dart language-server, for dart"; description = "Enable dart language-server, for dart";
packages = [ pkgs.dart ]; package = pkgs.dart;
extraOptions = { extraOptions = {
analysisExcludedFolders = mkOption { analysisExcludedFolders = mkOption {
type = types.nullOr (types.listOf types.str); type = types.nullOr (types.listOf types.str);
@ -112,7 +112,7 @@ let
{ {
name = "denols"; name = "denols";
description = "Enable denols, for Deno"; description = "Enable denols, for Deno";
packages = [ pkgs.deno ]; package = pkgs.deno;
} }
{ {
name = "eslint"; name = "eslint";
@ -122,8 +122,8 @@ let
{ {
name = "elixirls"; name = "elixirls";
description = "Enable elixirls"; description = "Enable elixirls";
package = null; package = pkgs.elixir_ls;
cmd = ["${pkgs.elixir_ls}/bin/elixir-ls"]; cmd = cfg: ["${cfg.package}/bin/elixir-ls"];
} }
{ {
name = "gdscript"; name = "gdscript";
@ -147,7 +147,7 @@ let
{ {
name = "nil_ls"; name = "nil_ls";
description = "Enable nil, for Nix"; description = "Enable nil, for Nix";
packages = [ pkgs.nil ]; package = pkgs.nil;
extraOptions = { extraOptions = {
formatting.command = mkOption { formatting.command = mkOption {
type = types.nullOr (types.listOf types.str); type = types.nullOr (types.listOf types.str);
@ -197,20 +197,16 @@ let
{ {
name = "tailwindcss"; name = "tailwindcss";
description = "Enable tailwindcss language server, for tailwindcss"; description = "Enable tailwindcss language server, for tailwindcss";
packages = [ pkgs.nodePackages."@tailwindcss/language-server" ]; package = pkgs.nodePackages."@tailwindcss/language-server";
} }
{ {
name = "texlab"; name = "texlab";
description = "Enable texlab language server, for LaTeX"; description = "Enable texlab language server, for LaTeX";
packages = [ pkgs.texlab ];
} }
{ {
name = "tsserver"; name = "tsserver";
description = "Enable tsserver for typescript"; description = "Enable tsserver for typescript";
package = pkgs.nodePackages.typescript-language-server; package = pkgs.nodePackages.typescript-language-server;
extraPackages = {
typescript = pkgs.nodePackages.typescript;
};
} }
{ {
name = "vuels"; name = "vuels";
@ -224,8 +220,8 @@ let
{ {
name = "hls"; name = "hls";
description = "Enable haskell language server"; description = "Enable haskell language server";
packages = [ pkgs.haskell-language-server ]; package = pkgs.haskell-language-server;
cmd = [ "haskell-language-server-wrapper" ]; cmd = cfg: [ "haskell-language-server-wrapper" ];
} }
]; ];
in in

View file

@ -7,8 +7,8 @@
, serverName ? name , serverName ? name
, package ? pkgs.${name} , package ? pkgs.${name}
, extraPackages ? { } , extraPackages ? { }
, cmd ? null , cmd ? (cfg: null)
, settings ? null , settings ? (cfg: { })
, extraOptions ? { } , extraOptions ? { }
, ... , ...
}: }:
@ -25,35 +25,26 @@
type = types.nullOr types.package; type = types.nullOr types.package;
}; };
} else { }; } else { };
extraPackagesOptions = mapAttrs'
(name: defaultPackage: {
name = "${name}Package";
value = mkOption {
default = defaultPackage;
type = types.package;
};
})
extraPackages;
in in
{ {
options = { options = {
plugins.lsp.servers.${name} = { plugins.lsp.servers.${name} = {
enable = mkEnableOption description; enable = mkEnableOption description;
} // packageOption // extraPackagesOptions; } // packageOption // extraOptions;
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable
extraPackages = (optional (package != null) cfg.package) ++ {
(mapAttrsToList (name: _: cfg."${name}Package") extraPackages); extraPackages = (optional (package != null) cfg.package) ++
(mapAttrsToList (name: _: cfg."${name}Package") extraPackages);
plugins.lsp.enabledServers = [{ plugins.lsp.enabledServers = [{
name = serverName; name = serverName;
extraOptions = { extraOptions = {
inherit cmd; cmd = cmd cfg;
settings = if settings != null then settings cfg else { }; settings = settings cfg;
}; };
}]; }];
}; };
}; };
} }