166 lines
4.4 KiB
Nix
166 lines
4.4 KiB
Nix
{
|
|
inputs,
|
|
system,
|
|
...
|
|
}: let
|
|
pkgs = inputs.nixpkgs.legacyPackages.${system};
|
|
in {
|
|
xdg.configFile."opencode/skills".source = inputs.agents.lib.mkOpencodeSkills {
|
|
inherit pkgs;
|
|
customSkills = "${inputs.agents}/skills";
|
|
externalSkills = [
|
|
# Include all skills from anthropics/skills
|
|
{
|
|
src = inputs.skills-anthropic;
|
|
selectSkills = ["claude-api"];
|
|
}
|
|
# Or cherry-pick specific skills:
|
|
# { src = inputs.skills-anthropic; selectSkills = [ "mcp-builder" ]; }
|
|
];
|
|
};
|
|
|
|
# Other config — symlinked directly
|
|
xdg.configFile."opencode/context".source = "${inputs.agents}/context";
|
|
xdg.configFile."opencode/commands".source = "${inputs.agents}/commands";
|
|
xdg.configFile."opencode/prompts".source = "${inputs.agents}/prompts";
|
|
|
|
programs.opencode = {
|
|
enable = true;
|
|
enableMcpIntegration = true;
|
|
settings = {
|
|
theme = "opencode";
|
|
plugin = ["oh-my-opencode"];
|
|
agent = builtins.fromJSON (builtins.readFile "${inputs.agents}/agents/agents.json");
|
|
formatter = {
|
|
alejandra = {
|
|
command = ["alejandra" "-q" "-"];
|
|
extensions = [".nix"];
|
|
};
|
|
};
|
|
provider = {
|
|
litellm = {
|
|
npm = "@ai-sdk/openai-compatible";
|
|
name = "LiteLLM (AZ-Gruppe)";
|
|
options.baseURL = "https://llm.az-gruppe.com/v1";
|
|
models = {
|
|
"gpt-5.2" = {
|
|
name = "GPT-5.2";
|
|
limit = {
|
|
context = 400000;
|
|
output = 128000;
|
|
};
|
|
};
|
|
"gpt-5.3-codex" = {
|
|
name = "GPT-5.3 Codex";
|
|
limit = {
|
|
context = 400000;
|
|
output = 128000;
|
|
};
|
|
};
|
|
"claude-haiku-4-5" = {
|
|
name = "Claude Haiku 4.5";
|
|
options = {
|
|
thinking = {
|
|
type = "enabled";
|
|
budget_tokens = 16000;
|
|
};
|
|
};
|
|
limit = {
|
|
context = 200000;
|
|
output = 64000;
|
|
};
|
|
};
|
|
"claude-sonnet-4-6" = {
|
|
name = "Claude Sonnet 4.6";
|
|
options = {
|
|
thinking = {
|
|
type = "enabled";
|
|
budget_tokens = 16000;
|
|
};
|
|
};
|
|
limit = {
|
|
context = 200000;
|
|
output = 64000;
|
|
};
|
|
};
|
|
"claude-opus-4-6" = {
|
|
name = "Claude Opus 4.6";
|
|
options = {
|
|
thinking = {
|
|
type = "enabled";
|
|
budget_tokens = 16000;
|
|
};
|
|
};
|
|
limit = {
|
|
context = 200000;
|
|
output = 128000;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
home.file.".config/opencode/oh-my-opencode.json".text = builtins.toJSON {
|
|
"$schema" = "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json";
|
|
google_auth = false;
|
|
agents = {
|
|
sisyphus = {
|
|
model = "litellm/claude-opus-4-6";
|
|
};
|
|
oracle = {
|
|
model = "litellm/claude-sonnet-4-6";
|
|
};
|
|
librarian = {
|
|
model = "litellm/claude-sonnet-4-6";
|
|
};
|
|
explore = {
|
|
model = "litellm/claude-haiku-4-5";
|
|
};
|
|
multimodal-looker = {
|
|
model = "litellm/gpt-5.3-codex";
|
|
};
|
|
prometheus = {
|
|
model = "litellm/claude-opus-4-6";
|
|
};
|
|
metis = {
|
|
model = "litellm/claude-opus-4-6";
|
|
};
|
|
momus = {
|
|
model = "litellm/claude-opus-4-6";
|
|
};
|
|
atlas = {
|
|
model = "litellm/claude-sonnet-4-6";
|
|
};
|
|
};
|
|
categories = {
|
|
visual-engineering = {
|
|
model = "zai-coding-plan/glm-5";
|
|
};
|
|
ultrabrain = {
|
|
model = "litellm/claude-opus-4-6";
|
|
};
|
|
deep = {
|
|
model = "litellm/claude-sonnet-4-6";
|
|
};
|
|
artistry = {
|
|
model = "zai-coding-plan/glm-5";
|
|
};
|
|
quick = {
|
|
model = "litellm/claude-haiku-4-5";
|
|
};
|
|
unspecified-low = {
|
|
model = "litellm/claude-sonnet-4-6";
|
|
};
|
|
unspecified-high = {
|
|
model = "litellm/claude-opus-4-6";
|
|
};
|
|
writing = {
|
|
model = "zai-coding-plan/glm-5";
|
|
};
|
|
};
|
|
disabled_mcps = ["context7" "websearch"];
|
|
};
|
|
}
|