lib/languages: add lspOptions submodule type for freeform LSP config

This commit is contained in:
raf 2025-02-16 12:48:40 +03:00
parent e2b3daa6f8
commit 078688bb9f
No known key found for this signature in database
GPG key ID: 29D95B64378DB4BF

View file

@ -1,9 +1,10 @@
# From home-manager: https://github.com/nix-community/home-manager/blob/master/modules/lib/booleans.nix
{lib}: let
inherit (builtins) isString getAttr;
inherit (lib.options) mkOption;
inherit (lib.types) bool;
inherit (lib.types) listOf bool str submodule attrsOf anything;
inherit (lib.generators) mkLuaInline;
inherit (lib.nvim.attrsets) mapListToAttrs;
inherit (lib.nvim.types) luaInline;
in {
diagnosticsToLua = {
lang,
@ -32,4 +33,31 @@ in {
type = bool;
description = "Turn on ${desc} for enabled languages by default";
};
lspOptions = submodule {
freeformType = attrsOf anything;
options = {
capabilities = mkOption {
type = luaInline;
default = mkLuaInline "capabilities";
description = "LSP capabilitiess to pass to lspconfig";
};
on_attach = mkOption {
type = luaInline;
default = mkLuaInline "default_on_attach";
description = "Function to execute when an LSP server attaches to a buffer";
};
filetypes = mkOption {
type = listOf str;
description = "Filetypes to auto-attach LSP in";
};
cmd = mkOption {
type = listOf str;
description = "Command used to start the LSP server";
};
};
};
}