Files
dotfiles/config/modules/ai/ai.nix
T
2026-08-03 11:04:49 +01:00

84 lines
2.8 KiB
Nix

{ 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";
};
};
};
};
}