From cfe5f116911caa1d22579935fd08e70c8c5b9134 Mon Sep 17 00:00:00 2001 From: Julia Lange Date: Tue, 12 May 2026 22:56:05 -0700 Subject: [PATCH] Neovim, add opencode support --- hmModules/apps/neovim/app.nix | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/hmModules/apps/neovim/app.nix b/hmModules/apps/neovim/app.nix index 83b1bb4..1104c9a 100644 --- a/hmModules/apps/neovim/app.nix +++ b/hmModules/apps/neovim/app.nix @@ -19,6 +19,7 @@ lualine.enable = lib.mkOption { default = true; }; luasnip.enable = lib.mkOption { default = false; }; nvimcmp.enable = lib.mkOption { default = true; }; + opencode.enable = lib.mkOption { default = true; }; telescope = { enable = lib.mkOption { default = true; }; fzf.enable = lib.mkOption { default = true; }; @@ -83,7 +84,29 @@ # -- Easy copy and pasting to external programs # -- map "+yy # -- map "+P - ]; + ] ++ lib.lists.optionals config.neovim.plugins.opencode.enable (let + ocFunc = cmd: let raw = "function() require('opencode').${cmd} end"; + in (config.lib.nixvim.mkRaw raw); + in [ + { + key = "ot"; + action = ocFunc "toggle()"; + mode = [ "n" "x" ]; + options.desc = "Toggle opencode"; + } + { + key = "oa"; + action = ocFunc "ask('', { submit = true })"; + mode = [ "n" "x" ]; + options.desc = "Ask opencode..."; + } + { + key = "or"; + action = ocFunc "operator('@this ')"; + mode = [ "n" "x" ]; + options.desc = "Add range to opencode"; + } + ]); }; programs.nixvim.colorschemes = with config.neovim.themes; { @@ -126,6 +149,16 @@ }; }; + opencode = { + enable = opencode.enable; + settings = { + input.enabled = true; + lsp.enabled = true; + events.permissions.enabled = false; + }; + }; + snacks.enable = opencode.enable; + telescope = { enable = telescope.enable; keymaps = {