From 97a16187aab03c24a85a79d3e97fabb24de12621 Mon Sep 17 00:00:00 2001 From: "Alexandre Cavalheiro S. Tiago da Silva" Date: Mon, 28 Oct 2024 01:53:18 -0300 Subject: [PATCH] feat(neovim): make debugger adapters work for rust and c++ --- .../home-manager/programs/neovim/default.nix | 3 + .../programs/neovim/lua/polish.lua | 39 --------- .../home-manager/programs/neovim/polish.nix | 80 +++++++++++++++++++ modules/nixos/system.nix | 12 ++- specific/desktop/home-manager.nix | 1 + 5 files changed, 95 insertions(+), 40 deletions(-) delete mode 100644 modules/home-manager/programs/neovim/lua/polish.lua create mode 100644 modules/home-manager/programs/neovim/polish.nix diff --git a/modules/home-manager/programs/neovim/default.nix b/modules/home-manager/programs/neovim/default.nix index 9da4fa1..38dbeaf 100644 --- a/modules/home-manager/programs/neovim/default.nix +++ b/modules/home-manager/programs/neovim/default.nix @@ -58,6 +58,7 @@ in # C/C++ clang-tools gcc # Needed for treesitter + vscode-extensions.ms-vscode.cpptools # C# csharp-ls @@ -114,5 +115,7 @@ in config = config; pkgs = pkgs; }; + + xdg.configFile."nvim/lua/polish.lua".text = import ./polish.nix pkgs; }; } diff --git a/modules/home-manager/programs/neovim/lua/polish.lua b/modules/home-manager/programs/neovim/lua/polish.lua deleted file mode 100644 index b19c743..0000000 --- a/modules/home-manager/programs/neovim/lua/polish.lua +++ /dev/null @@ -1,39 +0,0 @@ --- This will run last in the setup process and is a good place to configure --- things like custom filetypes. This just pure lua so anything that doesn't --- fit in the normal config locations above can go here - --- Set up custom filetypes -vim.filetype.add { - extension = { - foo = "fooscript", - }, - filename = { - ["Foofile"] = "fooscript", - }, - pattern = { - ["~/%.config/foo/.*"] = "fooscript", - }, -} - - -local dap = require "dap" - -dap.adapters.codelldb = { - port = "${port}", - type = "server", - executable = { - command = "codelldb", - args = { "--port", "${port}" }, - }, -} - -dap.configurations.rust = { - { - name = "Launch file", - type = "codelldb", - request = "launch", - program = function() return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") end, - cwd = "${workspaceFolder}", - stopOnEntry = false, - }, -} diff --git a/modules/home-manager/programs/neovim/polish.nix b/modules/home-manager/programs/neovim/polish.nix new file mode 100644 index 0000000..3e7c5e6 --- /dev/null +++ b/modules/home-manager/programs/neovim/polish.nix @@ -0,0 +1,80 @@ +pkgs: +#lua +'' + -- This will run last in the setup process and is a good place to configure + -- things like custom filetypes. This just pure lua so anything that doesn't + -- fit in the normal config locations above can go here + + -- Set up custom filetypes + vim.filetype.add({ + extension = { + foo = "fooscript", + }, + filename = { + ["Foofile"] = "fooscript", + }, + pattern = { + ["~/%.config/foo/.*"] = "fooscript", + }, + }) + + local dap = require("dap") + + -- @type DapAdapter + dap.adapters.codelldb = { + port = "''${port}", + type = "server", + executable = { + command = "codelldb", + args = { "--port", "''${port}" }, + }, + } + + dap.adapters.cppdbg = { + id = "cppdbg", + type = "executable", + command = + "${pkgs.vscode-extensions.ms-vscode.cpptools}/share/vscode/extensions/ms-vscode.cpptools/debugAdapters/bin/OpenDebugAD7", + } + + -- @type DapConfiguration + dap.configurations.rust = { + { + name = "Launch file", + type = "codelldb", + request = "launch", + program = function() + return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") + end, + cwd = "''${workspaceFolder}", + stopOnEntry = false, + }, + } + + dap.configurations.cpp = { + { + name = "Launch file", + type = "cppdbg", + request = "launch", + program = function() + return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") + end, + cwd = "''${workspaceFolder}", + stopAtEntry = true, + }, + { + name = "Attach to gdbserver :1234", + type = "cppdbg", + request = "launch", + MIMode = "gdb", + miDebuggerServerAddress = "localhost:1234", + miDebuggerPath = "/usr/bin/gdb", + cwd = "''${workspaceFolder}", + program = function() + return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") + end, + }, + } + + dap.configurations.c = dap.configurations.cpp +'' diff --git a/modules/nixos/system.nix b/modules/nixos/system.nix index c9640bc..e97e632 100644 --- a/modules/nixos/system.nix +++ b/modules/nixos/system.nix @@ -5,12 +5,21 @@ boot.kernelPackages = pkgs.linuxPackages_zen; # Add AMD drivers. - boot.initrd.kernelModules = [ "amdgpu" ]; + boot.initrd.kernelModules = [ + "amdgpu" + "v4l2loopback" + "zenergy" + ]; boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback + config.boot.kernelPackages.zenergy ]; + boot.extraModprobeConfig = '' + options v4l2loopback devices=1 video_nr=1 card_label="Virtual camera" exclusive_caps=1 + ''; + # Bootloader. boot.loader = { systemd-boot = { @@ -46,6 +55,7 @@ settings = { PasswordAuthentication = false; PermitRootLogin = "no"; + StreamLocalBindUnlink = "yes"; }; }; } diff --git a/specific/desktop/home-manager.nix b/specific/desktop/home-manager.nix index c540040..7114161 100644 --- a/specific/desktop/home-manager.nix +++ b/specific/desktop/home-manager.nix @@ -67,6 +67,7 @@ config = { whitelist = { prefix = [ + "/mnt/internal/hydractify/GitHub" "/mnt/internal/personal/projects" "/mnt/internal/repos" "/mnt/internal/shared/projects"