diff --git a/flake.lock b/flake.lock index 6eae5d0..a08e725 100644 --- a/flake.lock +++ b/flake.lock @@ -539,11 +539,11 @@ "openspec": "openspec" }, "locked": { - "lastModified": 1774836080, - "narHash": "sha256-kMV6ZuUOFVE+KTVGjW4XBVEp2nalZNwmk98ZhcQRGrQ=", + "lastModified": 1774890264, + "narHash": "sha256-ol7BhlYppMb8AN1USa6Sb9nu0BdOhebejq24fdm6qqI=", "ref": "refs/heads/master", - "rev": "a63f91d25bc199fcdcddefc46df0532809dc7263", - "revCount": 201, + "rev": "e915e5ea193d8bf6b87f37e43b333ed98656602c", + "revCount": 203, "type": "git", "url": "https://code.m3ta.dev/m3tam3re/nixpkgs" }, @@ -998,6 +998,7 @@ "nixpkgs-unstable": "nixpkgs-unstable", "nur": "nur", "skills-anthropic": "skills-anthropic", + "skills-vercel": "skills-vercel", "zugferd-service": "zugferd-service" } }, @@ -1017,6 +1018,22 @@ "type": "github" } }, + "skills-vercel": { + "flake": false, + "locked": { + "lastModified": 1774562450, + "narHash": "sha256-w4vw0I3q+3AtfcQSRBwOvNKFIz2FEOgqsdcCcZ7UllY=", + "owner": "vercel-labs", + "repo": "skills", + "rev": "d95d0cacfd0ebe9677cb96d51c66a8e9d5630f2c", + "type": "github" + }, + "original": { + "owner": "vercel-labs", + "repo": "skills", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, diff --git a/flake.nix b/flake.nix index cb93940..42cea74 100644 --- a/flake.nix +++ b/flake.nix @@ -60,11 +60,17 @@ url = "git+https://code.m3ta.dev/m3tam3re/AGENTS"; inputs.nixpkgs.follows = "nixpkgs"; }; + skills-anthropic = { url = "github:anthropics/skills"; flake = false; }; + skills-vercel = { + url = "github:vercel-labs/skills"; + flake = false; + }; + zugferd-service = { url = "git+https://git.az-gruppe.com/AZ-Intec-GmbH/zugferd-service"; }; diff --git a/home/features/coding/opencode.nix b/home/features/coding/opencode.nix index 143b5b4..caa08af 100644 --- a/home/features/coding/opencode.nix +++ b/home/features/coding/opencode.nix @@ -1,42 +1,22 @@ -{ - inputs, - system, - ... -}: let - pkgs = inputs.nixpkgs.legacyPackages.${system}; -in { - xdg.configFile."opencode/skills".source = inputs.agents.lib.mkOpencodeSkills { - inherit pkgs; - customSkills = "${inputs.agents}/skills"; +# AZ-Gruppe work machine opencode overrides. +# The shared base module lives in m3ta-nixpkgs: +# modules/home-manager/coding/opencode.nix (coding.opencode options) +# Only work-specific provider config and model assignments live here. +{inputs, ...}: { + coding.opencode = { + enable = true; + agentsInput = inputs.agents; + externalSkills = [ - # Include all skills from anthropics/skills { src = inputs.skills-anthropic; - selectSkills = ["claude-api"]; + selectSkills = ["pdf" "docx" "frontend-design"]; } - # Or cherry-pick specific skills: - # { src = inputs.skills-anthropic; selectSkills = [ "mcp-builder" ]; } + {src = inputs.skills-vercel;} ]; - }; - # 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"]; - }; - }; + # AZ-Gruppe LiteLLM endpoint + available models + extraSettings = { provider = { litellm = { npm = "@ai-sdk/openai-compatible"; @@ -100,66 +80,30 @@ in { }; }; }; - }; - 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"; + # Model assignments for oh-my-opencode — all via AZ LiteLLM + ohMyOpencodeSettings = { + 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"; }; - 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.1"; + 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.1"; }; }; - 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"]; }; }