# nix/devShell.nix — Dev shell that delegates setup to each package # # Each package in inputsFrom exposes passthru.devShellHook — a bash snippet # with stamp-checked setup logic. This file collects and runs them all. { inputs, ... }: { perSystem = { pkgs, system, ... }: let hermes-agent = inputs.self.packages.${system}.default; hermes-tui = inputs.self.packages.${system}.tui; hermes-web = inputs.self.packages.${system}.web; packages = [ hermes-agent hermes-tui hermes-web ]; in { devShells.default = pkgs.mkShell { inputsFrom = packages; packages = with pkgs; [ python312 uv nodejs_22 ripgrep git openssh ffmpeg ]; shellHook = let hooks = map (p: p.passthru.devShellHook or "") packages; combined = pkgs.lib.concatStringsSep "\n" (builtins.filter (h: h != "") hooks); in '' echo "Hermes Agent dev shell" ${combined} echo "Ready. Run 'hermes' to start." ''; }; }; }