diff --git a/nix/templates/agent-base.nix b/nix/templates/agent-base.nix index 17262a7..4683023 100644 --- a/nix/templates/agent-base.nix +++ b/nix/templates/agent-base.nix @@ -7,9 +7,12 @@ environment.systemPackages = with pkgs; [ hyperhive claude-code + bashInteractive git coreutils-full ]; + # claude's Bash tool refuses to run without a POSIX shell + $SHELL set. + environment.variables.SHELL = "${pkgs.bashInteractive}/bin/bash"; systemd.services.hive-ag3nt = { description = "hive-ag3nt harness"; @@ -18,7 +21,12 @@ # The harness shells out to `claude` (turn loop + login flow). systemd # units get a minimal PATH by default, so we have to put claude-code on # it explicitly even though it's in environment.systemPackages above. - path = [ pkgs.claude-code ]; + # bash is on PATH so claude's Bash tool can spawn `$SHELL`. + path = [ + pkgs.claude-code + pkgs.bashInteractive + ]; + environment.SHELL = "${pkgs.bashInteractive}/bin/bash"; serviceConfig = { ExecStart = "${pkgs.hyperhive}/bin/hive-ag3nt serve"; Restart = "on-failure"; diff --git a/nix/templates/manager.nix b/nix/templates/manager.nix index 13ad191..0859e0b 100644 --- a/nix/templates/manager.nix +++ b/nix/templates/manager.nix @@ -7,9 +7,12 @@ environment.systemPackages = with pkgs; [ hyperhive claude-code + bashInteractive git coreutils-full ]; + # claude's Bash tool refuses to run without a POSIX shell + $SHELL set. + environment.variables.SHELL = "${pkgs.bashInteractive}/bin/bash"; environment.etc."gitconfig".text = '' [user] @@ -27,9 +30,13 @@ HIVE_PORT = "8000"; HIVE_LABEL = "hm1nd"; }; - # See note in agent-base.nix — `claude` has to be on the service PATH - # explicitly for the harness to shell out to it. - path = [ pkgs.claude-code ]; + # See note in agent-base.nix — `claude` and a POSIX shell have to be on + # the service PATH explicitly for the harness + claude's Bash tool. + path = [ + pkgs.claude-code + pkgs.bashInteractive + ]; + environment.SHELL = "${pkgs.bashInteractive}/bin/bash"; serviceConfig = { ExecStart = "${pkgs.hyperhive}/bin/hive-m1nd serve"; Restart = "on-failure";