{ ... }: { programs.nixvim = { plugins = { dap.enable = true; dap-ui.enable = true; dap-virtual-text.enable = true; }; extraConfigLua = '' vim.fn.sign_define("DapBreakpoint", { text = "● ", texthl = "DiagnosticSignError", linehl = "", numhl = "" }) vim.fn.sign_define("DapBreakpointCondition", { text = "● ", texthl = "DiagnosticSignWarn", linehl = "", numhl = "" }) vim.fn.sign_define("DapLogPoint", { text = "● ", texthl = "DiagnosticSignInfo", linehl = "", numhl = "" }) vim.fn.sign_define("DapStopped", { text = "→ ", texthl = "DiagnosticSignWarn", linehl = "", numhl = "" }) vim.fn.sign_define("DapBreakpointReject", { text = "●", texthl = "DiagnosticSignHint", linehl = "", numhl = "" }) ''; keymaps = [ { mode = "n"; key = "dB"; action = "lua require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: '))"; options.desc = "set breakpoint with condition"; } { mode = "n"; key = "db"; action = "lua require('dap').toggle_breakpoint()"; options.desc = "Toggle Breakpoint"; } { mode = "n"; key = "dc"; action = "lua require('dapui').close()"; options.desc = "Close"; } { mode = "n"; key = "ddr"; action = "lua require('dap').repl.open()"; options.desc = "Repl"; } { mode = "n"; key = "de"; action = "lua require('dap').step_out()"; options.desc = "Step Out"; } { mode = "n"; key = "dlp"; action = "lua require('dap').set_breakpoint(nil, nil, vim.fn.input('Log point message: '))"; options.desc = "Log Point Message"; } { mode = "n"; key = "dn"; action = "lua require('dap').step_over()"; options.desc = "Step Over"; } { mode = "n"; key = "do"; action = "lua require('dapui').open()"; options.desc = "Open"; } { mode = "n"; key = "dr"; action = "lua require('dap').continue()"; options.desc = "Continue"; } { mode = "n"; key = "ds"; action = "lua require('dap').step_into()"; options.desc = "Step Into"; } { mode = "n"; key = "dt"; action = "lua require('dapui').close()"; options.desc = "Toggle"; } ]; }; }