Files
nixos-config/profiles/opencode.nix
Christoph Schmatzler 2999325de9 up
Signed-off-by: Christoph Schmatzler <christoph@schmatzler.com>
2026-02-05 14:39:06 +00:00

96 lines
1.8 KiB
Nix

{
inputs,
pkgs,
...
}: {
home.sessionVariables = {
OPENCODE_ENABLE_EXA = 1;
OPENCODE_EXPERIMENTAL_LSP_TOOL = 1;
OPENCODE_EXPERIMENTAL_MARKDOWN = 1;
OPENCODE_EXPERIMENTAL_PLAN_MODE = 1;
OPENCODE_EXPERIMENTAL_FILE_WATCHER = 1;
};
programs.opencode = {
enable = true;
package = inputs.llm-agents.packages.${pkgs.stdenv.hostPlatform.system}.opencode;
settings = {
model = "anthropic/claude-opus-4-5";
small_model = "opencode/minimax-m2.1";
theme = "catppuccin";
plugin = ["opencode-anthropic-auth"];
keybinds = {
leader = "ctrl+o";
};
permission = {
read = {
"*" = "allow";
"*.env" = "deny";
"*.env.*" = "deny";
"*.envrc" = "deny";
"secrets/*" = "deny";
};
};
agent = {
plan = {
model = "anthropic/claude-opus-4-5";
};
explore = {
model = "opencode/minimax-m2.1";
};
};
instructions = [
"CLAUDE.md"
"AGENT.md"
"AGENTS.md"
];
formatter = {
mix = {
disabled = true;
};
};
mcp = {
context7 = {
enabled = true;
type = "remote";
url = "https://mcp.context7.com/mcp";
};
grep_app = {
enabled = true;
type = "remote";
url = "https://mcp.grep.app";
};
opensrc = {
enabled = true;
type = "local";
command = ["bunx" "opensrc-mcp"];
};
overseer = {
enabled = true;
type = "local";
command = ["${pkgs.overseer}/bin/os" "mcp"];
};
};
};
};
xdg.configFile = {
"opencode/agent" = {
source = ./opencode/agent;
recursive = true;
};
"opencode/command" = {
source = ./opencode/command;
recursive = true;
};
"opencode/skill" = {
source = ./opencode/skill;
recursive = true;
};
"opencode/tool" = {
source = ./opencode/tool;
recursive = true;
};
};
}