{ pkgs, hosts, groups }: with pkgs.lib; ( mapAttrs (name: hosts: pkgs.writeScript "deploy-group-${name}" '' #!${pkgs.runtimeShell} export PATH= ${concatMapStrings (host: '' echo "deploying ${host.config.networking.hostName}..." ${host.config.system.build.deployScript} $1 & PID_LIST+=" $!" '') hosts} # FIXME: remove jobs from PIDLIST once they finish trap "kill $PID_LIST" SIGINT wait $PID_LIST '') groups ) // ( mapAttrs (name: host: host.config.system.build.deployScript) (filterAttrs (_: host: host.config.hexchen.deploy.enable) hosts) )