{ inputs, ... }: {
  imports =
    [ "${inputs.m3ta-nixpkgs}/modules/home-manager/coding/basecamp-mcp.nix" ];

  xdg.configFile = {
    "opencode/command" = {
      source = "${inputs.agents}/command";
      recursive = true;
    };
    "opencode/context" = {
      source = "${inputs.agents}/context";
      recursive = true;
    };
    "opencode/prompts" = {
      source = "${inputs.agents}/prompts";
      recursive = true;
    };
    "opencode/skill" = {
      source = "${inputs.agents}/skill";
      recursive = true;
    };
  };

  m3ta.coding.opencode.mcp.basecamp = {
    enable = true;
    envFile = "/run/agenix/basecamp-env";
  };
  programs.opencode = {
    enable = true;
    settings = {
      theme = "opencode";
      plugin =
        [ "oh-my-opencode" "opencode-beads" "opencode-antigravity-auth@beta" ];
      agent = builtins.fromJSON
        (builtins.readFile "${inputs.agents}/agent/agents.json");
      formatter = {
        alejandra = {
          command = [ "alejandra" "-q" "-" ];
          extensions = [ ".nix" ];
        };
      };
      mcp = {
        Ref = {
          type = "local";
          command = [
            "sh"
            "-c"
            "REF_API_KEY=$(cat /run/agenix/ref-key) exec bunx ref-tools-mcp@latest"
          ];
          enabled = true;
        };
        Anytype = {
          type = "local";
          command = [
            "sh"
            "-c"
            "OPENAPI_MCP_HEADERS=$(cat /run/agenix/anytype-key) exec bunx @anyproto/anytype-mcp"
          ];
          enabled = false;
        };
        Exa = {
          type = "local";
          command = [
            "sh"
            "-c"
            "EXA_API_KEY=$(cat /run/agenix/exa-key) exec bunx exa-mcp-server@latest tools=web_search_exa"
          ];
          enabled = true;
        };
      };
      provider = {
        google = {
          models = {
            "antigravity-gemini-3-pro" = {
              name = "Gemini 3 Pro (Antigravity)";
              limit = {
                context = 1048576;
                output = 65535;
              };
              modalities = {
                input = [ "text" "image" "pdf" ];
                output = [ "text" ];
              };
              variants = {
                low = { thinkingLevel = "low"; };
                high = { thinkingLevel = "high"; };
              };
            };
            "antigravity-gemini-3-flash" = {
              name = "Gemini 3 Flash (Antigravity)";
              limit = {
                context = 1048576;
                output = 65536;
              };
              modalities = {
                input = [ "text" "image" "pdf" ];
                output = [ "text" ];
              };
              variants = {
                minimal = { thinkingLevel = "minimal"; };
                low = { thinkingLevel = "low"; };
                medium = { thinkingLevel = "medium"; };
                high = { thinkingLevel = "high"; };
              };
            };
            "antigravity-claude-sonnet-4-5" = {
              name = "Claude Sonnet 4.5 (no thinking) (Antigravity)";
              limit = {
                context = 200000;
                output = 64000;
              };
              modalities = {
                input = [ "text" "image" "pdf" ];
                output = [ "text" ];
              };
            };
            "antigravity-claude-sonnet-4-5-thinking" = {
              name = "Claude Sonnet 4.5 Thinking (Antigravity)";
              limit = {
                context = 200000;
                output = 64000;
              };
              modalities = {
                input = [ "text" "image" "pdf" ];
                output = [ "text" ];
              };
              variants = {
                low = { thinkingConfig = { thinkingBudget = 8192; }; };
                max = { thinkingConfig = { thinkingBudget = 32768; }; };
              };
            };
            "antigravity-claude-opus-4-5-thinking" = {
              name = "Claude Opus 4.5 Thinking (Antigravity)";
              limit = {
                context = 200000;
                output = 64000;
              };
              modalities = {
                input = [ "text" "image" "pdf" ];
                output = [ "text" ];
              };
              variants = {
                low = { thinkingConfig = { thinkingBudget = 8192; }; };
                max = { thinkingConfig = { thinkingBudget = 32768; }; };
              };
            };
            "gemini-2.5-flash" = {
              name = "Gemini 2.5 Flash (Gemini CLI)";
              limit = {
                context = 1048576;
                output = 65536;
              };
              modalities = {
                input = [ "text" "image" "pdf" ];
                output = [ "text" ];
              };
            };
            "gemini-2.5-pro" = {
              name = "Gemini 2.5 Pro (Gemini CLI)";
              limit = {
                context = 1048576;
                output = 65536;
              };
              modalities = {
                input = [ "text" "image" "pdf" ];
                output = [ "text" ];
              };
            };
            "gemini-3-flash-preview" = {
              name = "Gemini 3 Flash Preview (Gemini CLI)";
              limit = {
                context = 1048576;
                output = 65536;
              };
              modalities = {
                input = [ "text" "image" "pdf" ];
                output = [ "text" ];
              };
            };
            "gemini-3-pro-preview" = {
              name = "Gemini 3 Pro Preview (Gemini CLI)";
              limit = {
                context = 1048576;
                output = 65535;
              };
              modalities = {
                input = [ "text" "image" "pdf" ];
                output = [ "text" ];
              };
            };
          };
        };
      };
    };
  };

  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";
    agents = {
      Sisyphus = {
        model = "opencode/glm-4.7-free";
        permission = {
          edit = "allow";
          bash = {
            "*" = "allow";
            "rm *" = "ask";
            "rmdir *" = "ask";
            "mv *" = "ask";
            "chmod *" = "ask";
            "chown *" = "ask";
            "git *" = "ask";
            "git status*" = "allow";
            "git log*" = "allow";
            "git diff*" = "allow";
            "git branch*" = "allow";
            "git show*" = "allow";
            "git stash list*" = "allow";
            "git remote -v" = "allow";
            "git add *" = "allow";
            "git commit *" = "allow";
            "jj *" = "ask";
            "jj status" = "allow";
            "jj log*" = "allow";
            "jj diff*" = "allow";
            "jj show*" = "allow";
            "npm *" = "ask";
            "npx *" = "ask";
            "bun *" = "ask";
            "bunx *" = "ask";
            "uv *" = "ask";
            "pip *" = "ask";
            "pip3 *" = "ask";
            "yarn *" = "ask";
            "pnpm *" = "ask";
            "cargo *" = "ask";
            "go *" = "ask";
            "make *" = "ask";
            "dd *" = "deny";
            "mkfs*" = "deny";
            "fdisk *" = "deny";
            "parted *" = "deny";
            "eval *" = "deny";
            "source *" = "deny";
            "curl *|*sh" = "deny";
            "wget *|*sh" = "deny";
            "sudo *" = "deny";
            "su *" = "deny";
            "systemctl *" = "deny";
            "service *" = "deny";
            "shutdown *" = "deny";
            "reboot*" = "deny";
            "init *" = "deny";
            "> /dev/*" = "deny";
            "cat * > /dev/*" = "deny";
          };
          external_directory = "ask";
          doom_loop = "ask";
        };
      };
      librarian = {
        model = "opencode/glm-4.7-free";
        permission = {
          edit = "deny";
          bash = "deny";
        };
      };
      explore = {
        model = "opencode/glm-4.7-free";
        permission = {
          edit = "deny";
          bash = "deny";
        };
      };
      oracle = {
        model = "opencode/glm-4.7-free";
        permission = {
          edit = "deny";
          bash = "deny";
        };
      };
      frontend-ui-ux-engineer = {
        model = "opencode/glm-4.7-free";
        permission = {
          edit = "allow";
          bash = {
            "*" = "ask";
            "npm *" = "ask";
            "npx *" = "ask";
            "bun *" = "ask";
            "bunx *" = "ask";
            "rm *" = "ask";
            "mv *" = "ask";
            "dd *" = "deny";
            "mkfs*" = "deny";
            "sudo *" = "deny";
            "curl *|*sh" = "deny";
            "wget *|*sh" = "deny";
          };
        };
      };
      document-writer = {
        model = "opencode/glm-4.7-free";
        permission = {
          edit = "allow";
          bash = "deny";
        };
      };
      multimodal-looker = {
        model = "opencode/glm-4.7-free";
        permission = {
          edit = "deny";
          bash = "deny";
        };
      };
    };
    disabled_mcps = [ "context7" "websearch" ];
  };
}
