convert zig module

This commit is contained in:
sjcobb 2025-07-11 14:17:23 +01:00
commit 6292ff438c

View file

@ -7,29 +7,21 @@
inherit (builtins) attrNames; inherit (builtins) attrNames;
inherit (lib.options) mkEnableOption mkOption; inherit (lib.options) mkEnableOption mkOption;
inherit (lib.modules) mkIf mkMerge mkDefault; inherit (lib.modules) mkIf mkMerge mkDefault;
inherit (lib.lists) isList; inherit (lib.types) bool listOf package enum;
inherit (lib.types) bool either listOf package str enum;
inherit (lib.nvim.lua) expToLua;
inherit (lib.nvim.types) mkGrammarOption; inherit (lib.nvim.types) mkGrammarOption;
inherit (lib.meta) getExe;
inherit (lib.nvim.attrsets) mapListToAttrs;
cfg = config.vim.languages.zig; cfg = config.vim.languages.zig;
defaultServer = "zls"; defaultServers = ["zls"];
servers = { servers = {
zls = { zls = {
package = pkgs.zls; enable = true;
internalFormatter = true; cmd = [(getExe pkgs.zls)];
lspConfig = '' filetypes = ["zig" "zir"];
lspconfig.zls.setup { root_markers = ["zls.json" "build.zig" ".git"];
capabilities = capabilities, workspace_required = false;
on_attach = default_on_attach,
cmd = ${
if isList cfg.lsp.package
then expToLua cfg.lsp.package
else "{'${cfg.lsp.package}/bin/zls'}"
}
}
'';
}; };
}; };
@ -74,17 +66,11 @@ in {
lsp = { lsp = {
enable = mkEnableOption "Zig LSP support" // {default = config.vim.lsp.enable;}; enable = mkEnableOption "Zig LSP support" // {default = config.vim.lsp.enable;};
server = mkOption { servers = mkOption {
type = enum (attrNames servers); type = listOf (enum (attrNames servers));
default = defaultServer; default = defaultServers;
description = "Zig LSP server to use"; description = "Zig LSP server to use";
}; };
package = mkOption {
description = "ZLS package, or the command to run as a list of strings";
type = either package (listOf str);
default = pkgs.zls;
};
}; };
dap = { dap = {
@ -118,10 +104,12 @@ in {
(mkIf cfg.lsp.enable { (mkIf cfg.lsp.enable {
vim = { vim = {
lsp.lspconfig = { lsp.servers =
enable = true; mapListToAttrs (n: {
sources.zig-lsp = servers.${cfg.lsp.server}.lspConfig; name = n;
}; value = servers.${n};
})
cfg.lsp.servers;
# nvf handles autosaving already # nvf handles autosaving already
globals.zig_fmt_autosave = mkDefault 0; globals.zig_fmt_autosave = mkDefault 0;