languages/zig: use new dap config format

This commit is contained in:
Ching Pei Yang 2026-06-13 00:07:24 +02:00
commit 1f457c85e7
No known key found for this signature in database
GPG key ID: B3841364253DC4C8

View file

@ -7,42 +7,34 @@
inherit (builtins) attrNames;
inherit (lib.options) mkEnableOption mkOption literalExpression;
inherit (lib.modules) mkIf mkMerge mkDefault;
inherit (lib.generators) mkLuaInline;
inherit (lib) genAttrs;
inherit (lib.types) bool package enum listOf;
inherit (lib.nvim.types) mkGrammarOption;
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf enumWithRename;
cfg = config.vim.languages.zig;
defaultServers = ["zls"];
servers = ["zls"];
# TODO: dap.adapter.lldb is duplicated when enabling the
# vim.languages.clang.dap module. This does not cause
# breakage... but could be cleaner.
defaultDebugger = "lldb-vscode";
defaultDebugger = ["lldb"];
debuggers = {
lldb-vscode = {
package = pkgs.lldb;
dapConfig = ''
dap.adapters.lldb = {
type = 'executable',
command = '${cfg.dap.package}/bin/lldb-dap',
name = 'lldb'
}
dap.configurations.zig = {
{
name = 'Launch',
type = 'lldb',
request = 'launch',
program = function()
lldb = {
zig = [
{
name = "Launch";
type = "lldb";
request = "launch";
program = mkLuaInline ''
function()
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
end,
cwd = "''${workspaceFolder}",
stopOnEntry = false,
args = {},
},
end
'';
cwd = "\${workspaceFolder}";
stopOnEntry = false;
args = {};
}
'';
];
};
};
in {
@ -83,7 +75,11 @@ in {
};
debugger = mkOption {
type = enum (attrNames debuggers);
type =
deprecatedSingleOrListOf "vim.langauges.zig.dap.debugger"
(enumWithRename "vim.langauges.zig.dap.debugger" (attrNames debuggers) {
lldb-vscode = "lldb";
});
default = defaultDebugger;
description = "Zig debugger to use";
};
@ -119,9 +115,10 @@ in {
})
(mkIf cfg.dap.enable {
vim = {
debugger.nvim-dap.enable = true;
debugger.nvim-dap.sources.zig-debugger = debuggers.${cfg.dap.debugger}.dapConfig;
vim.debugger.nvim-dap = {
enable = true;
presets.lldb.enable = true;
configurations = mkMerge (map (name: debuggers.${name}) cfg.dap.debugger);
};
})
]);