| 1 | #! /usr/bin/env bash |
| 2 | |
| 3 | set -e |
| 4 | |
| 5 | if [[ $(id -u) != 0 ]]; then |
| 6 | echo "$0: please run this script as root" |
| 7 | exit 1 |
| 8 | fi |
| 9 | |
| 10 | export HOME=/var/root |
| 11 | |
| 12 | if ! dscl . read /Groups/nixbld >/dev/null 2>&1; then |
| 13 | dseditgroup -o create nixbld -q |
| 14 | fi |
| 15 | |
| 16 | gid=$(dscl . -read /Groups/nixbld | awk '($1 == "PrimaryGroupID:") {print $2 }') |
| 17 | |
| 18 | echo "created nixbld group with gid $gid" |
| 19 | |
| 20 | for i in $(seq 1 10); do |
| 21 | user=/Users/nixbld$i |
| 22 | uid="$((30000 + i))" |
| 23 | dscl . -create "$user" |
| 24 | dscl . -create "$user" RealName "Nix build user $i" |
| 25 | dscl . -create "$user" PrimaryGroupID "$gid" |
| 26 | dscl . -create "$user" UserShell /usr/bin/false |
| 27 | dscl . -create "$user" NFSHomeDirectory /var/empty |
| 28 | dscl . -create "$user" UniqueID "$uid" |
| 29 | dseditgroup -o edit -a "nixbld$i" -t user nixbld |
| 30 | echo "created nixbld$i user with uid $uid" |
| 31 | done |
| 32 | |
| 33 | curl https://nixos.org/nix/install | sh |
| 34 | |
| 35 | mkdir -p /var/root/.ssh |
| 36 | touch /var/root/.ssh/authorized_keys |
| 37 | grep -v "hydra-queue-runner@chef" /var/root/.ssh/authorized_keys >/var/root/.ssh/authorized_keys.tmp || true |
| 38 | echo 'command="/nix/var/nix/profiles/default/bin/nix-store --serve --write" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyM48VC5fpjJssLI8uolFscP4/iEoMHfkPoT9R3iE3OEjadmwa1XCAiXUoa7HSshw79SgPKF2KbGBPEVCascdAcErZKGHeHUzxj7v3IsNjObouUOBbJfpN4DR7RQT28PZRsh3TvTWjWnA9vIrSY/BvAK1uezFRuObvatqAPMrw4c0DK+JuGuCNkKDGHLXNSxYBc5Pmr1oSU7/BDiHVjjyLIsAMIc20+q8SjWswKqL1mY193mN7FpUMBtZrd0Za9fMFRII9AofEIDTOayvOZM6+/1dwRWZXM6jhE6kaPPF++yromHvDPBnd6FfwODKLvSF9BkA3pO5CqrD8zs7ETmrV hydra-queue-runner@chef' >>/var/root/.ssh/authorized_keys.tmp |
| 39 | mv /var/root/.ssh/authorized_keys.tmp /var/root/.ssh/authorized_keys |
| 40 | |
| 41 | service_plist=/Library/LaunchDaemons/org.nixos.nix-daemon.plist |
| 42 | |
| 43 | ln -sfn /nix/var/nix/profiles/default$service_plist $service_plist |
| 44 | launchctl unload $service_plist || true |
| 45 | launchctl load $service_plist |
| 46 | launchctl start $service_plist |