50 lines
1.2 KiB
Nix
50 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";
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
}
|