{ pkgs, lib, inputs, ... }:

let
  # Paths to agenix-decrypted secrets (same on Darwin and NixOS)
  githubToken = "/run/agenix/github-token";
  anthropicToken = "/run/agenix/anthropicToken";
  
  # github-mcp-server binary path from nixpkgs
  githubMcpServer = "${pkgs.github-mcp-server}/bin/github-mcp-server";
in
{
  home.packages = [
    pkgs.github-mcp-server
    inputs.llm-agents.packages.${pkgs.system}.opencode
    inputs.llm-agents.packages.${pkgs.system}.beads
  ];

  # OpenCode configuration directory
  xdg.configFile = {
    "opencode/opencode.json".text = builtins.toJSON {
      "$schema" = "https://opencode.ai/config.json";
      theme = "ayu-mirage";
      autoupdate = false;
      permission = {
        external_directory = "allow";
      };
      provider = {
        anthropic = {
          options = {
            apiKey = "{file:${anthropicToken}}";
          };
        };
      };
      mcp = {
        github = {
          type = "local";
          command = [ githubMcpServer "stdio" ];
          environment = {
            GITHUB_PERSONAL_ACCESS_TOKEN = "{file:${githubToken}}";
          };
        };
      };
      agent = {
        build.tools."github_*" = false;
        plan.tools."github_*" = false;
      };
    };
    
    "opencode/themes/ayu-mirage.json".source = ./themes/ayu-mirage.json;
    "opencode/agent/librarian.md".source = ./agent/librarian.md;
  };
}
