nixos-config/config/programs/vim/modules/lsp/lsp.nix

46 lines
1.1 KiB
Nix

{
pkgs,
lib,
config,
...
}:
with builtins;
with lib; let
settingsFormat = pkgs.formats.json {};
in {
config = {
extraLua = let
json_setup = settingsFormat.generate "nix-neovim-lsp-server-setup.json" config.lspconfig;
in
if config.isDesktop
then ''
local from_json = require('nix-neovim.utils').from_json
for k, v in pairs(from_json("${json_setup}")) do
require("lspconfig")[k].setup(v)
end
''
else "";
output.path.path =
if config.isDesktop
then config.lspconfigPath
else [];
output.plugins =
if config.isDesktop
then [pkgs.vimPlugins.nvim-lspconfig]
else [];
};
options.lspconfig = mkOption {
type = with types; attrsOf (submodule {freeformType = settingsFormat.type;});
default = {};
description = ''
A set of options to `require("lspconfig").KEY.setup(VALUE)` in lua.
'';
};
options.lspconfigPath = mkOption {
type = with types; listOf package;
default = [];
description = "lspconfig binaries.";
};
}