return {
    {
        "mfussenegger/nvim-dap",
        dependencies = {
            "leoluz/nvim-dap-go",
            'mfussenegger/nvim-dap-python',
            "rcarriga/nvim-dap-ui",
            "nvim-neotest/nvim-nio",
        },
        config = function()
            local dap = require "dap"
            require('dap.ext.vscode').load_launchjs("launch.json")
            dap.defaults.fallback.exception_breakpoints = {'raised'}

            local ui = require "dapui"

            require("dapui").setup({
                layouts = {
                    {
                        elements = {
                            {
                                id = "breakpoints",
                                size = 0.5
                            },
                            {
                                id = "stacks",
                                size = 0.5
                            },
                            -- {
                            --     id = "watches",
                            --     size = 0.25
                            -- },
                        },
                        position = "left",
                        size = 25
                    },
                    {
                        elements = {
                            {
                                id = "scopes",
                                size = 1
                            },
                        },
                        position = "bottom",
                        size = 10
                    },
                    {
                        elements = {
                            {
                                id = "repl",
                                size = 1
                            },
                        },
                        position = "bottom",
                        size = 10
                    }
                },
            })
            require("dap-go").setup()
            require("dap-python").setup()

            vim.keymap.set("n", "<leader>b", dap.toggle_breakpoint)
            vim.keymap.set("n", "<leader>gb", dap.run_to_cursor)

            -- Eval var under cursor
            vim.keymap.set("n", "<leader>?", function()
                require("dapui").eval(nil, { enter = true })
            end)

            vim.keymap.set("n", "<F1>", dap.continue)
            vim.keymap.set("n", "<F2>", dap.step_into)
            vim.keymap.set("n", "<F3>", dap.step_over)
            vim.keymap.set("n", "<F4>", dap.step_out)
            vim.keymap.set("n", "<F5>", dap.step_back)
            vim.keymap.set("n", "<F6>", dap.restart)

            dap.listeners.before.attach.dapui_config = function()
                ui.open()
            end
            dap.listeners.before.launch.dapui_config = function()
                ui.open()
            end
            -- dap.listeners.before.event_terminated.dapui_config = function()
            --   ui.close()
            -- end
            -- dap.listeners.before.event_exited.dapui_config = function()
            --   ui.close()
            -- end
        end,
    },
}