From 7f7b1ffe0879f84cf2223668be5c712382493344 Mon Sep 17 00:00:00 2001 From: Joakim Repomaa Date: Fri, 20 Feb 2026 15:31:02 +0200 Subject: [PATCH] home: use zen for zed --- home/modules/zed/default.nix | 178 +++++++++++++++++++++++++++++++++-- 1 file changed, 170 insertions(+), 8 deletions(-) diff --git a/home/modules/zed/default.nix b/home/modules/zed/default.nix index c7f7e0d..f4898ed 100644 --- a/home/modules/zed/default.nix +++ b/home/modules/zed/default.nix @@ -81,8 +81,8 @@ in agent = { enabled = true; default_model = { - provider = "OpenCode"; - model = "opencode/kimi-k2.5"; + provider = "openai"; + model = "kimi-k2.5"; }; }; auto_update = false; @@ -218,11 +218,173 @@ in "tsconfig.*.json" ]; }; - agent_servers = { - OpenCode = { - type = "custom"; - command = lib.getExe pkgs-unstable.opencode; - args = [ "acp" ]; + language_models = { + openai = { + api_url = "https://opencode.ai/zen/v1"; + available_models = [ + # Claude models + { + name = "claude-opus-4-6"; + display_name = "OpenCode Zen - Claude Opus 4.6"; + max_tokens = 1048576; + } + { + name = "claude-opus-4-5"; + display_name = "OpenCode Zen - Claude Opus 4.5"; + max_tokens = 200000; + } + { + name = "claude-opus-4-1"; + display_name = "OpenCode Zen - Claude Opus 4.1"; + max_tokens = 200000; + } + { + name = "claude-sonnet-4"; + display_name = "OpenCode Zen - Claude Sonnet 4"; + max_tokens = 1048576; + } + { + name = "claude-sonnet-4-5"; + display_name = "OpenCode Zen - Claude Sonnet 4.5"; + max_tokens = 1048576; + } + { + name = "claude-3-5-haiku"; + display_name = "OpenCode Zen - Claude 3.5 Haiku"; + max_tokens = 200000; + } + { + name = "claude-haiku-4-5"; + display_name = "OpenCode Zen - Claude Haiku 4.5"; + max_tokens = 200000; + } + # GPT models + { + name = "gpt-5.2"; + display_name = "OpenCode Zen - GPT 5.2"; + max_tokens = 400000; + } + { + name = "gpt-5.2-codex"; + display_name = "OpenCode Zen - GPT 5.2 Codex"; + max_tokens = 400000; + } + { + name = "gpt-5.1"; + display_name = "OpenCode Zen - GPT 5.1"; + max_tokens = 400000; + } + { + name = "gpt-5.1-codex-max"; + display_name = "OpenCode Zen - GPT 5.1 Codex Max"; + max_tokens = 400000; + } + { + name = "gpt-5.1-codex"; + display_name = "OpenCode Zen - GPT 5.1 Codex"; + max_tokens = 400000; + } + { + name = "gpt-5.1-codex-mini"; + display_name = "OpenCode Zen - GPT 5.1 Codex Mini"; + max_tokens = 400000; + } + { + name = "gpt-5"; + display_name = "OpenCode Zen - GPT 5"; + max_tokens = 400000; + } + { + name = "gpt-5-codex"; + display_name = "OpenCode Zen - GPT 5 Codex"; + max_tokens = 400000; + } + { + name = "gpt-5-nano"; + display_name = "OpenCode Zen - GPT 5 Nano"; + max_tokens = 400000; + } + # Gemini models + { + name = "gemini-3-pro"; + display_name = "OpenCode Zen - Gemini 3 Pro"; + max_tokens = 1048576; + } + { + name = "gemini-3-flash"; + display_name = "OpenCode Zen - Gemini 3 Flash"; + max_tokens = 1048576; + } + # GLM models + { + name = "glm-4.7"; + display_name = "OpenCode Zen - GLM 4.7"; + max_tokens = 205000; + } + { + name = "glm-4.6"; + display_name = "OpenCode Zen - GLM 4.6"; + max_tokens = 205000; + } + { + name = "glm-4.7-free"; + display_name = "OpenCode Zen - GLM 4.7 Free"; + max_tokens = 205000; + } + # Kimi models + { + name = "kimi-k2.5"; + display_name = "OpenCode Zen - Kimi K2.5"; + max_tokens = 262000; + } + { + name = "kimi-k2.5-free"; + display_name = "OpenCode Zen - Kimi K2.5 Free"; + max_tokens = 262000; + } + { + name = "kimi-k2"; + display_name = "OpenCode Zen - Kimi K2"; + max_tokens = 262000; + } + { + name = "kimi-k2-thinking"; + display_name = "OpenCode Zen - Kimi K2 Thinking"; + max_tokens = 262000; + } + # MiniMax models + { + name = "minimax-m2.1"; + display_name = "OpenCode Zen - MiniMax M2.1"; + max_tokens = 205000; + } + { + name = "minimax-m2.5-free"; + display_name = "OpenCode Zen - MiniMax M2.5 Free"; + max_tokens = 205000; + } + { + name = "minimax-m2.1-free"; + display_name = "OpenCode Zen - MiniMax M2.1 Free"; + max_tokens = 205000; + } + # Other models + { + name = "trinity-large-preview-free"; + display_name = "OpenCode Zen - Trinity Large Preview Free"; + max_tokens = 131000; + } + { + name = "big-pickle"; + display_name = "OpenCode Zen - Big Pickle"; + max_tokens = 200000; + } + { + name = "alpha-g5"; + display_name = "OpenCode Zen - Alpha G5"; + max_tokens = 200000; + } + ]; }; }; }; @@ -286,7 +448,7 @@ in }; home.sessionVariables = lib.mkIf cfg.defaultEditor { - EDITOR = lib.getExe cfg.package; + EDITOR = "${lib.getExe cfg.package} -w"; }; }; }