Reproducible pi config repo with:
- Nix flake (authoritative pinning)
- Home Manager module (
programs.pi.*) - Standalone mode (Node/npm provided by user)
- Nix:
flake.lock+flake.nixpackage pinning - Standalone:
package-lock.jsonfor npm resolution - Current pi CLI pin:
0.74.0
nix run .nix run . is isolated from your normal Pi packages and local resources.
- It passes the repo's pinned extensions, skills, and prompts explicitly on the command line.
- It disables normal discovery of extensions, skills, prompts, themes, and context files.
- It does not generate or mutate
settings.jsonat runtime. - It still allows ordinary global settings such as model/provider selection.
{
imports = [ inputs.pifiles.homeManagerModules.default ];
programs.pi = {
enable = true;
# Optional (defaults to this flake's pinned package)
# package = inputs.pifiles.packages.${pkgs.system}.pi;
# Add extra pi packages (Nix derivations only)
extraPackages = [
# inputs.some-pi-packages.packages.${pkgs.system}.default
];
# Optional settings merged into ~/.pi/agent/settings.json
settings = {
# model = "...";
};
};
}For programs.pi.extraPackages, each package should expose a pi package root at:
$out/share/pi-packages/<name>
or define:
passthru.piPackagePath = "/share/pi-packages/<name>"
./scripts/install-standalone.shThis will:
npm ci- patch
pi-memoryfor current@earendil-works/*package names - add this repo's default local pi packages to
~/.pi/agent/settings.json - install local
qmdat./node_modules/.bin/qmd
Then run:
npx piDefault pi package lives at:
pi/packages/default
It includes starter examples for:
- extensions (verify with
/pifiles-ping) - skills (example command:
/skill:pifiles-example) - prompts (example command:
/pifiles-review)
nix run .is intentionally isolated from global/project package discovery and does not merge in global extensions, skills, prompts, themes, or context files.- Home Manager mode is different: it manages
~/.pi/agent/settings.jsonon purpose. - Precedence is defaults first, then
programs.pi.extraPackages(extra packages win). - In Home Manager / settings-managed Nix mode, built-in defaults include flake-pinned local copies of:
nicobailon/pi-subagentsnicobailon/pi-intercomnicobailon/pi-mcp-adapternicobailon/pi-custom-compactionnicobailon/pi-rewind-hooknicobailon/pi-boomerangjayzeng/pi-memory(import-rewritten for current@earendil-works/*package names)@juicesharp/rpiv-ask-user-question(import-rewritten for current@earendil-works/*package names)qmd(@tobilu/qmd, available on PATH forpi-memorysearch) (no runtime clone/install).
- Standalone mode also pins
pi-memoryandqmdinpackage-lock.json;npx piinherits the localqmdbinary fromnode_modules/.bin. - Standalone mode edits
~/.pi/agent/settings.json;nix run .does not. - The
nix run .wrapper defaultsPI_OFFLINE=1to avoid startup network activity unless you explicitly override it. - Because
nix run .loads resources explicitly instead of installing packages into settings,pi listreflects your normal configured packages, not the repo-pinnednix runresource set.