diff --git a/extra.nix b/extra.nix index 767d5dd..08fe70b 100644 --- a/extra.nix +++ b/extra.nix @@ -39,6 +39,13 @@ inputs: let lspSignature.enable = true; }; + vim.debugger = { + nvim-dap = { + enable = true; + ui.enable = true; + }; + }; + vim.languages = { enableLSP = true; enableFormat = true; @@ -202,6 +209,7 @@ inputs: let image_text = "The Superior Text Editor"; client_id = "793271441293967371"; main_image = "neovim"; + show_time = true; rich_presence = { editing_text = "Editing %s"; }; diff --git a/flake.lock b/flake.lock index 4e4fbde..9246363 100644 --- a/flake.lock +++ b/flake.lock @@ -996,6 +996,38 @@ "type": "github" } }, + "nvim-dap": { + "flake": false, + "locked": { + "lastModified": 1682077642, + "narHash": "sha256-l5sJ6PKW10CtOzSBKzWasWVMZq/mAkgpgWOecIVuV+0=", + "owner": "mfussenegger", + "repo": "nvim-dap", + "rev": "6cedcb527e264c8f25e86afa8dae74c6692dee51", + "type": "github" + }, + "original": { + "owner": "mfussenegger", + "repo": "nvim-dap", + "type": "github" + } + }, + "nvim-dap-ui": { + "flake": false, + "locked": { + "lastModified": 1683055722, + "narHash": "sha256-8TavZqkTCr2/jaO3C8fp+r7qfN6mCzVvidbHGtJGLfs=", + "owner": "rcarriga", + "repo": "nvim-dap-ui", + "rev": "749bfe12d1447703899fa823c1c075fbe2d42c24", + "type": "github" + }, + "original": { + "owner": "rcarriga", + "repo": "nvim-dap-ui", + "type": "github" + } + }, "nvim-lightbulb": { "flake": false, "locked": { @@ -1327,6 +1359,8 @@ "nvim-code-action-menu": "nvim-code-action-menu", "nvim-compe": "nvim-compe", "nvim-cursorline": "nvim-cursorline", + "nvim-dap": "nvim-dap", + "nvim-dap-ui": "nvim-dap-ui", "nvim-lightbulb": "nvim-lightbulb", "nvim-lspconfig": "nvim-lspconfig", "nvim-neoclip": "nvim-neoclip", diff --git a/flake.nix b/flake.nix index e488e89..acc3393 100644 --- a/flake.nix +++ b/flake.nix @@ -164,6 +164,17 @@ inputs.flake-utils.follows = "flake-utils"; }; + # Debuggers + nvim-dap = { + url = "github:mfussenegger/nvim-dap"; + flake = false; + }; + + nvim-dap-ui = { + url = "github:rcarriga/nvim-dap-ui"; + flake = false; + }; + # Filetrees nvim-tree-lua = { url = "github:nvim-tree/nvim-tree.lua"; diff --git a/lib/types/plugins.nix b/lib/types/plugins.nix index f99394f..38b571b 100644 --- a/lib/types/plugins.nix +++ b/lib/types/plugins.nix @@ -81,6 +81,8 @@ with lib; let "project-nvim" "elixir-ls" "elixir-tools" + "nvim-dap" + "nvim-dap-ui" ]; # You can either use the name of the plugin or a package. pluginsType = with types; diff --git a/modules/debugger/default.nix b/modules/debugger/default.nix new file mode 100644 index 0000000..f882196 --- /dev/null +++ b/modules/debugger/default.nix @@ -0,0 +1,5 @@ +_: { + imports = [ + ./nvim-dap + ]; +} diff --git a/modules/debugger/nvim-dap/config.nix b/modules/debugger/nvim-dap/config.nix new file mode 100644 index 0000000..60d8a92 --- /dev/null +++ b/modules/debugger/nvim-dap/config.nix @@ -0,0 +1,23 @@ +{ + config, + lib, + ... +}: +with lib; +with builtins; let + cfg = config.vim.debugger.nvim-dap; +in { + config = mkIf cfg.enable { + vim.startPlugins = + [ + "nvim-dap" + ] + ++ optionals cfg.ui.enable [ + "nvim-dap-ui" + ]; + + vim.luaConfigRC.nvim-dap-ui = nvim.dag.entryAnywhere '' + require("dapui").setup() + ''; + }; +} diff --git a/modules/debugger/nvim-dap/default.nix b/modules/debugger/nvim-dap/default.nix new file mode 100644 index 0000000..083220b --- /dev/null +++ b/modules/debugger/nvim-dap/default.nix @@ -0,0 +1,6 @@ +_: { + imports = [ + ./config.nix + ./nvim-dap.nix + ]; +} diff --git a/modules/debugger/nvim-dap/nvim-dap.nix b/modules/debugger/nvim-dap/nvim-dap.nix new file mode 100644 index 0000000..14eb359 --- /dev/null +++ b/modules/debugger/nvim-dap/nvim-dap.nix @@ -0,0 +1,10 @@ +{lib, ...}: +with lib; { + options.vim.debugger.nvim-dap = { + enable = mkEnableOption "Enable debugging via nvim-dap"; + + ui = { + enable = mkEnableOption "Enable UI extension for nvim-dap"; + }; + }; +} diff --git a/modules/modules.nix b/modules/modules.nix index a23241c..b3cb152 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -29,6 +29,7 @@ ./comments ./projects ./languages + ./debugger ]; pkgsModule = {config, ...}: {