Use nix to configure language servers

This commit is contained in:
Jakob Lechner 2023-07-12 11:22:10 +00:00
parent 603fbb786a
commit 98bcfeaa92
No known key found for this signature in database
GPG key ID: 996082EFB5906C10

View file

@ -88,81 +88,82 @@
-- init.lua
-- this configuration applies to servers and workstations
''
] ++ lib.optional nixosConfig.jalr.workstation.enable ''
-- this configuration applies to workstations only
-- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md
local lsp = require('lspconfig')
-- C and C++
lsp.ccls.setup {
on_attach = on_attach,
cmd = { "${pkgs.ccls}/bin/ccls" },
}
-- Nix
lsp.rnix.setup {
on_attach = on_attach,
cmd = { "${pkgs.rnix-lsp}/bin/rnix-lsp" },
}
-- Python
lsp.pylsp.setup {
on_attach = on_attach,
cmd = { "${pkgs.python310Packages.python-lsp-server}/bin/pylsp" },
settings = {
-- https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md
pylsp = {
plugins = {
flake8 = {
enabled = true;
executable = "${pkgs.python310Packages.flake8}/bin/flake8";
};
jedi_completion = { enabled = true; };
jedi_definition = { enabled = true; };
jedi_hover = { enabled = true; };
jedi_references = { enabled = true; };
jedi_signature_help = { enabled = true; };
jedi_symbols = { enabled = true; };
mccabe = { enabled = true; };
preload = { enabled = true; };
pycodestyle = { enabled = true; };
pyflakes = { enabled = true; };
rope_completion = { enabled = true; };
yapf = { enabled = true; };
] ++ lib.optional nixosConfig.jalr.workstation.enable (
''
-- this configuration applies to workstations only
-- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md
local lsp = require('lspconfig')
'' +
builtins.concatStringsSep "\n" (
lib.mapAttrsToList
(
lang: cfg: "lsp.${lang}.setup\n" + lib.generators.toLua { asBindings = false; indent = " "; } cfg
)
{
# C and C++
ccls = {
cmd = [ "${pkgs.ccls}/bin/ccls" ];
};
};
};
}
-- Ruby
lsp.solargraph.setup {
on_attach = on_attach,
cmd = { "${pkgs.solargraph}/bin/solargraph", "stdio" },
}
# Nix
rnix = {
cmd = [ "${pkgs.rnix-lsp}/bin/rnix-lsp" ];
};
-- Rust
lsp.rust_analyzer.setup {
on_attach = on_attach,
cmd = { "${pkgs.rust-analyzer}/bin/rust-analyzer" },
}
# Python
pylsp = {
cmd = [ "${pkgs.python310Packages.python-lsp-server}/bin/pylsp" ];
settings = {
# https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md
pylsp = {
plugins = {
flake8 = {
enabled = true;
executable = "${pkgs.python310Packages.flake8}/bin/flake8";
};
jedi_completion = { enabled = true; };
jedi_definition = { enabled = true; };
jedi_hover = { enabled = true; };
jedi_references = { enabled = true; };
jedi_signature_help = { enabled = true; };
jedi_symbols = { enabled = true; };
mccabe = { enabled = true; };
preload = { enabled = true; };
pycodestyle = { enabled = true; };
pyflakes = { enabled = true; };
rope_completion = { enabled = true; };
yapf = { enabled = true; };
};
};
};
};
-- Bash
lsp.bashls.setup {
on_attach = on_attach,
cmd = { "${pkgs.nodePackages.bash-language-server}/bin/bash-language-server", "start" },
}
# Ruby
solargraph = {
cmd = [ "${pkgs.solargraph}/bin/solargraph" "stdio" ];
};
-- Terraform
lsp.terraform_lsp.setup {
on_attach = on_attach,
cmd = { "${pkgs.terraform-lsp}/bin/terraform-lsp", "serve" },
}
# Rust
rust_analyzer = {
cmd = [ "${pkgs.rust-analyzer}/bin/rust-analyzer" ];
};
-- YAML
lsp.yamlls.setup {
on_attach = on_attach,
cmd = { "${pkgs.nodePackages.yaml-language-server}/bin/yaml-language-server", "--stdio" },
}
''
# Bash
bashls = {
cmd = [ "${pkgs.nodePackages.bash-language-server}/bin/bash-language-server" "start" ];
};
# Terraform
terraform_lsp = {
cmd = [ "${pkgs.terraform-lsp}/bin/terraform-lsp" "serve" ];
};
# YAML
yamlls = {
cmd = [ "${pkgs.nodePackages.yaml-language-server}/bin/yaml-language-server" "--stdio" ];
};
}
)
)
);
}