nix-config/users/sid/home/hyprland/opencode.nix

82 lines
1.8 KiB
Nix

{
config,
lib,
pkgs,
...
}:
let
inherit (lib) getExe;
in
{
programs.opencode = {
enable = true;
package = pkgs.unstable.opencode;
enableMcpIntegration = config.programs.mcp.enable;
settings = {
autoshare = false;
autoupdate = false;
model = "requesty/deepseek/deepseek-v4-flash";
provider.requesty = {
name = "Requesty";
npm = "@ai-sdk/openai-compatible";
options = {
baseURL = "https://router.requesty.ai/v1";
apiKey = "{env:REQUESTY_API_KEY}";
};
models = {
"deepseek/deepseek-v4-flash" = {
name = "DeepSeek V4 Flash";
tool_call = true;
};
};
};
};
};
programs.mcp = {
enable = true;
servers = {
fetcher = {
command = getExe pkgs.synix.fetcher-mcp;
};
nixos = {
command = getExe pkgs.nix;
args = [
"run"
"github:utensils/mcp-nixos"
"--"
];
};
forgejo = {
command = getExe pkgs.unstable.forgejo-mcp;
args = [
"--transport"
"stdio"
"--url"
"https://git.sid.ovh"
];
env = {
FORGEJO_USER_AGENT = "forgejo-mcp/1.0.0";
};
envFile = config.sops.templates.forgejo-mcp-env-file.path;
};
};
};
programs.zsh.initContent = ''
source ${config.sops.templates.requesty-env.path}
'';
sops = {
secrets.requesty-api-key = { };
templates.requesty-env.content = ''
export REQUESTY_API_KEY=${config.sops.placeholder.requesty-api-key}
'';
secrets.forgejo-mcp-access-token = { };
templates.forgejo-mcp-env-file.content = ''
FORGEJO_ACCESS_TOKEN=${config.sops.placeholder.forgejo-mcp-access-token}
'';
};
}