mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 08:35:43 +02:00
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:
parent
b1f99f2f08
commit
d40a8b99f3
9 changed files with 96 additions and 114 deletions
66
plugins/nvim-lsp/basic-servers.nix
Normal file
66
plugins/nvim-lsp/basic-servers.nix
Normal 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;
|
||||||
|
}
|
|
@ -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" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -6,12 +6,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./clangd.nix
|
./basic-servers.nix
|
||||||
./rust-analyzer.nix
|
|
||||||
./rnix-lsp.nix
|
|
||||||
./pyright.nix
|
|
||||||
./zls.nix
|
|
||||||
./gopls.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
|
|
|
@ -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" ];
|
|
||||||
};
|
|
||||||
}
|
|
29
plugins/nvim-lsp/helpers.nix
Normal file
29
plugins/nvim-lsp/helpers.nix
Normal 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 ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -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"];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -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" ];
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue