{ description = "project-orchestrator — a project that uses the agent-orchestrator harness to manage a fleet of projects"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/50ab793786d9de88ee30ec4e4c24fb4236fc2674"; }; outputs = { self, nixpkgs }: let systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f nixpkgs.legacyPackages.${system}); in { # Reproducible devShell for the PO. Everything the PO needs to run itself + drive the fleet: # - python311 : stdlib tomllib (>=3.11) — engine/agents.py and scripts/fleet.py import it # - tmux : the harness runs every agent/watchdog in tmux # - git : the engine submodule + create/update flows need git (incl. submodule support) # The agent CLI the PO agent uses (claude) is an external, non-Nix tool — install it per its # own docs and put it on PATH before `engine/agents.py up`. devShells = forAllSystems (pkgs: { default = pkgs.mkShell { packages = [ pkgs.python311 # tomllib (>=3.11) pkgs.tmux # harness sessions + watchdog pkgs.git # engine submodule + project create/update flows pkgs.coreutils pkgs.bash ]; shellHook = '' echo "project-orchestrator devShell — $(python3 --version), $(tmux -V), $(git --version)" echo "try: python3 engine/agents.py status | python3 scripts/fleet.py status" ''; }; }); # `nix flake check` evaluates this — a cheap smoke that the devShell builds. checks = forAllSystems (pkgs: { devshell-builds = self.devShells.${pkgs.system}.default; }); }; }