main
sh 46 lines 1.79 KB
Raw
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