From 10f78d369846fa3761ed647e44f642fd45f5965e Mon Sep 17 00:00:00 2001 From: Jordan Holt Date: Mon, 8 Sep 2025 23:24:23 +0100 Subject: [PATCH] nixvim: add codecompanion --- users/jordan/common/neovim.nix | 54 ++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/users/jordan/common/neovim.nix b/users/jordan/common/neovim.nix index 9c5d4b0..386097b 100644 --- a/users/jordan/common/neovim.nix +++ b/users/jordan/common/neovim.nix @@ -1,4 +1,5 @@ { + osConfig, ... }: @@ -82,6 +83,57 @@ }; }; + plugins.codecompanion = { + enable = true; + + settings = { + adapters = { + http.opts.show_defaults = false; + openwebui.__raw = '' + function() + return require("codecompanion.adapters").extend("openai_compatible", { + name = "openwebui", + formatted_name = "Open WebUI", + opts = { + stream = true, + tools = true, + vision = false, + }, + url = "''${url}''${chat_endpoint}", + env = { + api_key = "cmd:cat ${osConfig.age.secrets.open-webui-api-key.path}", + url = "https://chat.ai.vimium.com", + chat_endpoint = "/api/chat/completions", + models_endpoint = "/api/models", + }, + headers = { + ["Content-Type"] = "application/json", + Authorization = "Bearer ''${api_key}", + }, + schema = { + model = { + default = "openai/gpt-5-chat", + }, + }, + }) + end + ''; + }; + + strategies = { + chat = { + adapter = "openwebui"; + }; + inline = { + adapter = "openwebui"; + }; + cmd = { + adapter = "openwebui"; + }; + }; + }; + }; + plugins.telescope = { enable = true; keymaps = { @@ -126,6 +178,8 @@ # plugins.none-ls.enable = true; # plugins.nvim-tree.enable = true; # plugins.oil.enable = true; + # plugins.persisted.enable = true; + # plugins.precognition.enable = true; # plugins.project-nvim.enable = true; };