macOS 15 Sequoia update clobbers _nixbld1-4 users

Apple released macOS 15 Sequoia today–and beta users previously reported that this update breaks existing Nix installs by clobbering _nixbld1-4 (because macOS now includes system daemons that use the same UIDs).

On existing installs, this should manifest as an error when you run some Nix commands:

error: the user '_nixbld1' in the group 'nixbld' does not exist

We have a migration script to fix existing installs (before or after updating):

curl --proto '=https' --tlsv1.2 -sSf -L https://github.com/NixOS/nix/raw/master/scripts/sequoia-nixbld-user-migration.sh | bash -

I’m also keeping the first comment in the issue below up to date as a linkable resource:

14 Likes

An update has been put out that tries to fix the solution for existing nix you should now get a warning in nix when you update saying you need to migrate. But yet it’s not yet fixed in nix install: Installing on MacOS fails when user UID is already in use · Issue #2242 · NixOS/nix · GitHub

My solution: curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix/tag/v0.26.0 | sh -s -- repair sequoia --move-existing-users

3 Likes

That only works if one is willing to use the installer from determinate systems, which not everyone is.

2 Likes

It worked for my existing installation

The repair tool works for any Nix installation afaik. You can also use the repair tool provided by Lix, which too is compatible with the current official Nix installer:

curl -sSf -L https://install.lix.systems/lix | sh -s -- repair sequoia

For anyone following along, the ~official command picks up the migration script directly from the master branch of the Nix repo so that people get ongoing bugfixes to the migration procedure (if any are necessary) as soon as they’re merged.

It’s also fine to run the repair command implemented in the DetSys installer and/or Lix’s fork of the DetSys installer if you prefer (these roughly follow what we’ve learned about the problem in upstream Nix), though I don’t recommend using a command that hardcodes a version since it may lack future fixes (if any are necessary).

1 Like