{ den, modules, ... }: { modules.ai = { provides = { ollama-cuda = { homeManager = { pkgs, ... }: { home.packages = [ pkgs.ollama-cuda ]; }; }; }; homeManager = { pkgs, config, ... }: { home.packages = [ pkgs.claude-code pkgs.snip ]; programs.opencode = { enable = true; extraPackages = with pkgs; [ rust-analyzer typescript-language-server ]; context = '' Instructions: - Do NOT preemptively load all references - use lazy loading based on actual need - When loaded, treat content as mandatory instructions that override defaults - Follow references recursively when needed - NO EMOJIS ''; settings = { "lsp" = true; plugin = [ "@tarquinen/opencode-dcp@latest" "@xberg-io/opencode-xberg" "@xberg-io/opencode-crawlberg" "@xberg-io/opencode-html-to-markdown" "@xberg-io/opencode-liter-llm" "opencode-plugin-litellm@latest" "@xberg-io/opencode-tree-sitter-language-pack" # Token slimming: filters shell command output via snip CLI # (https://github.com/VincentHardouin/opencode-snip) "opencode-snip@latest" # Replace/extend the per-model system prompt via # ~/.config/opencode/system-prompts.json # (https://github.com/kmcquade/opencode-sysprompt-override-plugin) "opencode-sysprompt-override@latest" ]; provider.litellm = { npm = "@ai-sdk/openai-compatible"; name = "LiteLLM (scuggo)"; options = { baseURL = "https://9f5db439.fwds.scug.io/v1"; apiKey = "{env:SCUG_IO_API_KEY}"; }; }; # Built-in OpenCode Go provider (https://opencode.ai/zen/go) — # key from sops secret opencode-go-zen-key via $OPENCODE_GO_API_KEY provider.opencode-go = { options = { apiKey = "{env:OPENCODE_GO_API_KEY}"; }; }; }; # TUI plugin: token-tracker (https://github.com/eserete/opencode-token-tracker) tui = { plugin = [ "./plugins/token-tracker.tsx" ]; }; }; xdg.configFile."opencode/plugins/token-tracker.tsx" = { source = pkgs.fetchurl { url = "https://raw.githubusercontent.com/eserete/opencode-token-tracker/main/token-tracker.tsx"; sha256 = "a1d56f6d86f512ca2e81653a57ff372c2ea0a3398bcdbebda6de9f9ed89ee45a"; }; }; }; }; }