49 lines
1.2 KiB
Nix
49 lines
1.2 KiB
Nix
{ lib, pkgs, config, ... }:
|
|
with lib;
|
|
let
|
|
cfg = config.mae.nvim;
|
|
lspLangConfigType = types.submodule {
|
|
options = {
|
|
enable = mkEnableOption "Enable named lsp lang config";
|
|
script = mkOption {
|
|
type = types.lines;
|
|
default = "{}";
|
|
};
|
|
};
|
|
};
|
|
mkLspLangConfig = name: cfg: ''
|
|
require'lspconfig'["${name}"].setup(require'coq'.lsp_ensure_capabilities(${cfg.script}))
|
|
'';
|
|
mkLspLangConfigs = cfgs: lib.strings.concatStringsSep "\n" ((lib.attrsets.mapAttrsToList mkLspLangConfig cfgs));
|
|
in
|
|
{
|
|
options.mae.nvim.lsp = {
|
|
enable = mkEnableOption "Enable lsp support in nvim with nvim-lspconfig and cmp-nvim";
|
|
servers = mkOption {
|
|
type = types.attrsOf lspLangConfigType;
|
|
default = [ ];
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.lsp.enable {
|
|
programs.neovim = {
|
|
plugins = with pkgs.vimPlugins; [
|
|
{
|
|
plugin = coq_nvim;
|
|
config = ''
|
|
vim.g.coq_settings = {
|
|
xdg = true,
|
|
auto_start = true
|
|
}
|
|
'';
|
|
type = "lua";
|
|
}
|
|
{
|
|
plugin = nvim-lspconfig;
|
|
config = mkLspLangConfigs cfg.lsp.servers;
|
|
type = "lua";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
}
|