From f61711c00d6303e0c1de9de408bec0c8df0f68c7 Mon Sep 17 00:00:00 2001 From: Anish Lakhwara Date: Wed, 24 Dec 2025 17:25:55 -0800 Subject: [PATCH] feat: opencode.nvim --- home/profiles/nvim/default.nix | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/home/profiles/nvim/default.nix b/home/profiles/nvim/default.nix index e056ba2a..fb752d38 100644 --- a/home/profiles/nvim/default.nix +++ b/home/profiles/nvim/default.nix @@ -90,6 +90,17 @@ let sha256 = "czKjJgCpvRSdtR7rNGlJrluDgPIdx94KUyx33op5gdY="; }; }; + opencode-nvim = pkgs.vimUtils.buildVimPlugin { + pname = "opencode.nvim"; + version = "2024-12-24"; + src = pkgs.fetchFromGitHub { + owner = "NickvanDyke"; + repo = "opencode.nvim"; + rev = "dfca5bb214d78a600781d50da350238b3e6e2621"; + hash = "sha256-W7fPGiLpKRe1Nw0MckigUijTNq+L9Z+vxOKcf3oNZf0="; + }; + doCheck = false; + }; gh-addressed = pkgs.vimUtils.buildVimPlugin { pname = "gh-addressed"; version = "2024-09-17"; @@ -1013,6 +1024,22 @@ in vim.keymap.set('n', '', 'resize +2', {silent = true}) vim.keymap.set('n', '', 'vertical resize +2', {silent = true}) + -- opencode.nvim setup with tmux provider + vim.g.opencode_opts = { + provider = { + enabled = "tmux", + tmux = { + -- default tmux provider settings work well + }, + }, + } + + -- opencode.nvim keybindings + vim.keymap.set({ "n", "x" }, "oa", function() require("opencode").ask("@this: ") end, { desc = "Ask opencode" }) + vim.keymap.set({ "n", "x" }, "os", function() require("opencode").select() end, { desc = "Select opencode action" }) + vim.keymap.set({ "n", "t" }, "oo", function() require("opencode").toggle() end, { desc = "Toggle opencode" }) + vim.keymap.set({ "n", "x" }, "op", function() return require("opencode").operator("@this ") end, { expr = true, desc = "Add range to opencode" }) + -- Kitaab recent files (only date-based files, sorted reverse) function KitaabRecent() local pickers = require('telescope.pickers') @@ -1174,6 +1201,9 @@ in # custom yuck-vim nvim-parinfer + + # opencode integration + opencode-nvim # vim-processing ] ++ lib.optionals pkgs.stdenv.isLinux [ # Linux-only plugins