46 lines
1.1 KiB
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.";
|
|
};
|
|
}
|