1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-24 22:11:15 +02:00

sequoia-nixbld-user-migration: Try to recreate all missing users instead of just first contiguous set

This script mostly worked for me, but the nixbld6 and nixbld7 accounts for me were still missing. Looking at the script, it seems it's because of the `until` loop in step 2. It assumes only the first contiguous set of users would have disappeared. So 6 and 7 were never restored. This just runs through all 32 users and ensures they exist.

From: https://github.com/NixOS/nix/issues/10892#issuecomment-2820010714
This commit is contained in:
goodspark 2025-04-21 21:14:55 -07:00 committed by GitHub
parent 155411397d
commit accf197261
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -79,18 +79,20 @@ change_nixbld_uids(){
local existing_gid name next_id user_n
((next_id=NEW_NIX_FIRST_BUILD_UID))
((user_n=1))
name="$(nix_user_n "$user_n")"
existing_gid="$(dsclattr "/Groups/nixbld" "PrimaryGroupID")"
# we know that we have *some* nixbld users, but macOS may have
# already clobbered the first few users if this system has been
# upgraded
# upgraded. just try to recreate any missing ones.
echo ""
echo "Step 2: re-create missing early _nixbld# users."
echo "Step 2: re-create missing _nixbld# users."
until dscl . read "/Users/$name" &>/dev/null; do
for user_n in $(seq 1 32); do
name="$(nix_user_n "$user_n")"
if dscl . read "/Users/$name" &>/dev/null; then
continue
fi
# iterate for a clean ID
while id_unavailable "$next_id"; do
((next_id++))