diff --git a/flake.nix b/flake.nix index dd0dea4..06f5994 100644 --- a/flake.nix +++ b/flake.nix @@ -294,6 +294,7 @@ "custom-tea-rbw" = pkgs.custom.tea-rbw; "custom-rclone-torbox-setup" = pkgs.custom.rclone-torbox-setup; "custom-opencode" = pkgs.custom.opencode; + "qt-pinned-jellyfin-media-player" = pkgsQt.jellyfin-media-player; "qt-pinned-stremio" = pkgsQt.stremio; } diff --git a/home/roles/base/default.nix b/home/roles/base/default.nix index 3529980..673b20d 100644 --- a/home/roles/base/default.nix +++ b/home/roles/base/default.nix @@ -103,6 +103,10 @@ in source = ./opencode-config.json; }; + xdg.configFile."opencode/oh-my-openagent.jsonc" = { + source = ./opencode-omo-config.jsonc; + }; + # Note: modules must be imported at top-level home config }; } diff --git a/home/roles/base/opencode-config.json b/home/roles/base/opencode-config.json index 08c3e40..ab83a6f 100644 --- a/home/roles/base/opencode-config.json +++ b/home/roles/base/opencode-config.json @@ -1,5 +1,6 @@ { "$schema": "https://opencode.ai/config.json", + "plugin": ["oh-my-openagent"], "provider": { "llama-local": { "name": "Llama.cpp (zix790prors RTX 4070 Ti)", diff --git a/home/roles/base/opencode-omo-config.jsonc b/home/roles/base/opencode-omo-config.jsonc new file mode 100644 index 0000000..cafa793 --- /dev/null +++ b/home/roles/base/opencode-omo-config.jsonc @@ -0,0 +1,136 @@ +{ + "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json", + "agents": { + "sisyphus": { + "model": "ollama-cloud/glm-5.1", + "fallback_models": [ + "ollama-cloud/kimi-k2.5", + "llama-local/Qwen3.6-35B-A3B", + "ollama-cloud/qwen3-coder-next" + ] + }, + "prometheus": { + "model": "ollama-cloud/glm-5.1", + "fallback_models": [ + "ollama-cloud/kimi-k2.5", + "ollama-cloud/qwen3-coder-next" + ] + }, + "atlas": { + "model": "ollama-cloud/glm-5.1", + "fallback_models": [ + "ollama-cloud/gemma4:31b", + "ollama-cloud/kimi-k2.5" + ] + }, + "explore": { + "model": "ollama-cloud/gemma4:31b", + "fallback_models": [ + "ollama-cloud/ministral-3:14b", + "llama-local/Qwen3.6-35B-A3B" + ] + }, + "librarian": { + "model": "ollama-cloud/gemma4:31b", + "fallback_models": [ + "ollama-cloud/ministral-3:14b" + ] + }, + "oracle": { + "model": "ollama-cloud/qwen3-coder-next", + "fallback_models": [ + "ollama-cloud/deepseek-v3.2", + "ollama-cloud/glm-5.1" + ] + }, + "multimodal-looker": { + "disable": true + }, + "hephaestus": { + "disable": true + }, + "momus": { + "model": "ollama-cloud/glm-5.1", + "fallback_models": [ + "ollama-cloud/qwen3-coder-next" + ] + }, + "metis": { + "model": "ollama-cloud/glm-5.1", + "fallback_models": [ + "ollama-cloud/kimi-k2.5" + ] + } + }, + "categories": { + "quick": { + "model": "ollama-cloud/gemma4:31b", + "fallback_models": [ + "ollama-cloud/ministral-3:14b" + ] + }, + "unspecified-low": { + "model": "ollama-cloud/glm-5.1", + "fallback_models": [ + "ollama-cloud/kimi-k2.5", + "llama-local/Qwen3.6-35B-A3B" + ] + }, + "unspecified-high": { + "model": "ollama-cloud/glm-5.1", + "fallback_models": [ + "ollama-cloud/kimi-k2.5", + "ollama-cloud/qwen3-coder-next" + ] + }, + "deep": { + "model": "ollama-cloud/qwen3-coder-next", + "fallback_models": [ + "ollama-cloud/deepseek-v3.2", + "ollama-cloud/glm-5.1" + ] + }, + "ultrabrain": { + "model": "ollama-cloud/qwen3-coder-next", + "fallback_models": [ + "ollama-cloud/deepseek-v3.2", + "ollama-cloud/glm-5.1" + ] + }, + "writing": { + "model": "ollama-cloud/glm-5.1", + "fallback_models": [ + "ollama-cloud/kimi-k2.5" + ] + }, + "visual-engineering": { + "model": "ollama-cloud/glm-5.1", + "fallback_models": [ + "ollama-cloud/qwen3-coder-next" + ] + } + }, + "runtime_fallback": { + "enabled": true, + "retry_on_errors": [400, 429, 503, 529], + "max_fallback_attempts": 3, + "cooldown_seconds": 60, + "notify_on_fallback": true + }, + "background_task": { + "defaultConcurrency": 5, + "providerConcurrency": { + "ollama-cloud": 10, + "llama-local": 2 + } + }, + "disabled_hooks": ["no-sisyphus-gpt"], + "comment_checker": { + "custom_prompt": "Check for AI-generated filler phrases, redundant obvious statements, and excessively verbose explanations. Comments should add value beyond what the code itself expresses. Flag: 'TODO' without ticket references, 'Note that...' when obvious, repeating the function name in the comment, and any form of 'simply' or 'simply just'. Use {{comments}} placeholder." + }, + "tmux": { "enabled": false }, + "experimental": { + "aggressive_truncation": true, + "task_system": true + } +} \ No newline at end of file