{ pkgs, config, lib, ... }: let
pi-coding-agent = pkgs.pkgsu.pi-coding-agent.overrideAttrs (final: prev: {
# pi-coding-agent will check the version in check phase. The prefix "v" should be removed.
# E.g.: "v0.67.3" => "0.67.3"
version = pkgs.lib.removePrefix "v" final.src.version;
src = pkgs.npinsed.ai.pi-mono;
npmDepsHash = "sha256-3xFxY0iKiwjM0psijzdSqed5UOjIAOyWPwQ15fqfc4I=";
npmDeps = pkgs.fetchNpmDeps {
src = final.src;
name = "pi-mono-${final.version}-npm-deps";
hash = final.npmDepsHash;
};
});
in {
imports = [ ./extensions ];
home.packages = [
pi-coding-agent
(pkgs.callPackage ./pi-acp.nix {})
];
cachix_packages = [pi-coding-agent];
home.file = let
gen-home-file-entry = args: {
name = "pi-${args.catwalk-provider.id}";
value = {
target = ".pi/agent/extensions/${args.catwalk-provider.id}.ts";
source = pkgs.callPackage ./provider.ts args;
};
};
in lib.listToAttrs [
(gen-home-file-entry {catwalk-provider=config.ai.minimax-china; api="anthropic-messages";})
(gen-home-file-entry {catwalk-provider=config.ai.kimi; api="anthropic-messages";})
(gen-home-file-entry {catwalk-provider=config.ai.aliyun; api="openai-completions"; model-extra.compat.supportsDeveloperRole=false;})
(gen-home-file-entry {catwalk-provider=config.ai.deepseek; api="openai-completions";})
(gen-home-file-entry {catwalk-provider=config.ai.ollama; api="openai-completions";})
];
yq-merge.".pi/agent/settings.json" = { generator = builtins.toJSON; expr = {
defaultProvider = config.ai.minimax-china.id;
defaultModel = config.ai.minimax-china.default_large_model_id;
};};
}