Refactor language servers and add eslint, jsonls, cssls and html servers. (#28)

* nvim-lsp: refactor of basic language servers

* nvim-lsp: added html, css, json and eslint language servers

* nvim-lsp: added gdscript lsp

* nvim-lsp: added vuels
This commit is contained in:
Alexander Nortung 2022-07-28 21:37:49 +02:00 committed by GitHub
parent b1f99f2f08
commit d40a8b99f3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 96 additions and 114 deletions

View file

@ -0,0 +1,66 @@
{ pkgs, config, lib, ... }@args:
let
helpers = import ./helpers.nix args;
servers = [
{
name = "clangd";
description = "Enable clangd LSP, for C/C++.";
packages = [ pkgs.clang-tools ];
}
{
name = "cssls";
description = "Enable cssls, for CSS";
packages = [ pkgs.nodePackages.vscode-langservers-extracted ];
}
{
name = "eslint";
description = "Enable eslint";
packages = [ pkgs.nodePackages.vscode-langservers-extracted ];
}
{
name = "gdscript";
description = "Enable gdscript, for Godot";
packages = [];
}
{
name = "gopls";
description = "Enable gopls, for Go.";
}
{
name = "html";
description = "Enable html, for HTML";
packages = [ pkgs.nodePackages.vscode-langservers-extracted ];
}
{
name = "jsonls";
description = "Enable jsonls, for JSON";
packages = [ pkgs.nodePackages.vscode-langservers-extracted ];
}
{
name = "pyright";
description = "Enable pyright, for Python.";
}
{
name = "rnix-lsp";
description = "Enable rnix LSP, for Nix";
serverName = "rnix";
}
{
name = "rust-analyzer";
description = "Enable rust-analyzer, for Rust.";
serverName = "rust_analyzer";
}
{
name = "vuels";
description = "Enable vuels, for Vue";
packages = [ pkgs.nodePackages.vue-language-server ];
}
{
name = "zls";
description = "Enable zls, for Zig.";
}
];
in
{
imports = lib.lists.map (helpers.mkLsp) servers;
}

View file

@ -1,18 +0,0 @@
{ pkgs, config, lib, ... }:
with lib;
let
cfg = config.programs.nixvim.plugins.lsp.servers.clangd;
in
{
options = {
programs.nixvim.plugins.lsp.servers.clangd = {
enable = mkEnableOption "Enable clangd LSP, for C/C++.";
};
};
config = mkIf cfg.enable {
programs.nixvim.extraPackages = [ pkgs.clang-tools ];
programs.nixvim.plugins.lsp.enabledServers = [ "clangd" ];
};
}

View file

@ -6,12 +6,7 @@ let
in
{
imports = [
./clangd.nix
./rust-analyzer.nix
./rnix-lsp.nix
./pyright.nix
./zls.nix
./gopls.nix
./basic-servers.nix
];
options = {

View file

@ -1,18 +0,0 @@
{ config, pkgs, lib, ...}:
with lib;
let
cfg = config.programs.nixvim.plugins.lsp.servers.gopls;
in
{
options = {
programs.nixvim.plugins.lsp.servers.gopls = {
enable = mkEnableOption "Enable gopls, for Go.";
};
};
config = mkIf cfg.enable {
programs.nixvim.extraPackages = [ pkgs.gopls ];
programs.nixvim.plugins.lsp.enabledServers = [ "gopls" ];
};
}

View file

@ -0,0 +1,29 @@
{ pkgs, config, lib, ... }:
{
mkLsp = {
name,
description ? "Enable ${name}.",
serverName ? name,
packages ? [ pkgs.${name} ],
... }:
# returns a module
{ pkgs, config, lib, ... }:
with lib;
let
cfg = config.programs.nixvim.plugins.lsp.servers.${name};
in
{
options = {
programs.nixvim.plugins.lsp.servers.${name} = {
enable = mkEnableOption description;
};
};
config = mkIf cfg.enable {
programs.nixvim.extraPackages = packages;
programs.nixvim.plugins.lsp.enabledServers = [ serverName ];
};
};
}

View file

@ -1,18 +0,0 @@
{ config, pkgs, lib, ...}:
with lib;
let
cfg = config.programs.nixvim.plugins.lsp.servers.pyright;
in
{
options = {
programs.nixvim.plugins.lsp.servers.pyright = {
enable = mkEnableOption "Enable pyright, for Python.";
};
};
config = mkIf cfg.enable {
programs.nixvim.extraPackages = [ pkgs.pyright ];
programs.nixvim.plugins.lsp.enabledServers = [ "pyright"];
};
}

View file

@ -1,18 +0,0 @@
{ pkgs, config, lib, ... }:
with lib;
let
cfg = config.programs.nixvim.plugins.lsp.servers.rnix-lsp;
in
{
options = {
programs.nixvim.plugins.lsp.servers.rnix-lsp = {
enable = mkEnableOption "Enable rnix LSP, for Nix";
};
};
config = mkIf cfg.enable {
programs.nixvim.extraPackages = [ pkgs.rnix-lsp ];
programs.nixvim.plugins.lsp.enabledServers = [ "rnix" ];
};
}

View file

@ -1,18 +0,0 @@
{ pkgs, config, lib, ... }:
with lib;
let
cfg = config.programs.nixvim.plugins.lsp.servers.rust-analyzer;
in
{
options = {
programs.nixvim.plugins.lsp.servers.rust-analyzer = {
enable = mkEnableOption "Enable rust-analyzer, for Rust.";
};
};
config = mkIf cfg.enable {
programs.nixvim.extraPackages = [ pkgs.rust-analyzer ];
programs.nixvim.plugins.lsp.enabledServers = [ "rust_analyzer" ];
};
}

View file

@ -1,18 +0,0 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.programs.nixvim.plugins.lsp.servers.zls;
in
{
options = {
programs.nixvim.plugins.lsp.servers.zls = {
enable = mkEnableOption "Enable zls, for Zig.";
};
};
config = mkIf cfg.enable {
programs.nixvim.extraPackages = [ pkgs.zls ];
programs.nixvim.plugins.lsp.enabledServers = [ "zls" ];
};
}