From 48260c392ba5a13e0242e425256476d63447fa8a Mon Sep 17 00:00:00 2001 From: DerGrumpf Date: Wed, 17 Jun 2026 20:22:32 +0200 Subject: [PATCH] Added OpenCode --- home/default.nix | 1 + home/neovim/avante.nix | 52 ++++++++++++++++++++++++------------------ home/opencode.nix | 32 ++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 22 deletions(-) create mode 100644 home/opencode.nix diff --git a/home/default.nix b/home/default.nix index 9ca3f85..63de984 100644 --- a/home/default.nix +++ b/home/default.nix @@ -18,6 +18,7 @@ ./neovim ./python.nix ./fonts.nix + ./opencode.nix inputs.sops-nix.homeManagerModules.sops ] ++ lib.optionals (!isDarwin && !isServer) [ diff --git a/home/neovim/avante.nix b/home/neovim/avante.nix index a881f3a..2fd7092 100644 --- a/home/neovim/avante.nix +++ b/home/neovim/avante.nix @@ -5,25 +5,41 @@ plugins = { markdown-preview.enable = true; render-markdown.enable = true; - avante = { enable = true; autoLoad = true; settings = { - provider = "groq"; + provider = "ollama"; - providers.groq = { - __inherited_from = "openai"; - api_key_name = "cmd:cat /home/phil/.config/sops-nix/secrets/GROQ_API_KEY"; - endpoint = "https://api.groq.com/openai/v1/"; - model = "qwen/qwen3-32b"; # "llama-3.3-70b-versatile"; - system_promt = "You are a helpful coding assistant. Always respond in plain markdown format without using tool calls or JSON structures."; - disable_tools = true; - extra_request_body = { - temperature = 1; - max_tokens = 2000; - response_format = { - type = "text"; + providers = { + groq = { + __inherited_from = "openai"; + api_key_name = "cmd:cat /home/phil/.config/sops-nix/secrets/GROQ_API_KEY"; + endpoint = "https://api.groq.com/openai/v1/"; + model = "qwen/qwen3-32b"; + system_promt = "You are a helpful coding assistant. Always respond in plain markdown format without using tool calls or JSON structures."; + disable_tools = true; + extra_request_body = { + temperature = 1; + max_tokens = 2000; + response_format = { + type = "text"; + }; + }; + }; + + ollama = { + endpoint = "http://100.109.179.25:11434"; # tailscale IP, no /v1 suffix + model = "qwen2.5:3b"; # swap for "llama3.2:3b" or "deepseek-r1:1.5b" + timeout = 60000; # local + small model can be slow on first load + disable_tools = true; # these small models aren't reliable at tool calling + is_env_set.__raw = ''require("avante.providers.ollama").check_endpoint_alive''; + extra_request_body = { + options = { + temperature = 0.7; + num_ctx = 8192; + keep_alive = "5m"; + }; }; }; }; @@ -35,7 +51,6 @@ code = true; link = true; }; - behaviour = { enable_cursor_planning_mode = false; auto_suggestions = false; @@ -46,7 +61,6 @@ use_selection_as_context = true; max_context_tokens = 2000; }; - mappings = { ask = "aa"; edit = "ae"; @@ -79,11 +93,9 @@ reverse_switch_windows = ""; }; }; - hints = { enabled = true; }; - windows = { position = "right"; wrap = true; @@ -93,22 +105,18 @@ rounded = true; }; }; - highlights = { diff = { current = "DiffText"; incoming = "DiffAdd"; }; }; - diff = { autojump = true; list_opener = "copen"; }; }; }; - - #extraPackages = with pkgs; [ curl ]; }; }; } diff --git a/home/opencode.nix b/home/opencode.nix new file mode 100644 index 0000000..77b8de6 --- /dev/null +++ b/home/opencode.nix @@ -0,0 +1,32 @@ +_: { + programs.opencode = { + enable = true; + + settings = { + enabled_providers = [ "ollama" ]; + + model = "ollama/llama3.2:3b"; + + provider = { + ollama = { + npm = "@ai-sdk/openai-compatible"; + name = "Ollama (tailscale)"; + options = { + baseURL = "http://100.109.179.25:11434/v1"; + }; + models = { + "llama3.2:3b" = { + name = "Llama 3.2 3B"; + }; + "qwen2.5:3b" = { + name = "Qwen 2.5 3B"; + }; + "deepseek-r1:1.5b" = { + name = "DeepSeek-R1 1.5B"; + }; + }; + }; + }; + }; + }; +}