Skip to content

determinate-nixd will not decrypt alternatively named "Nix Store" #1849

Description

@ryan77627

Hi folks, sorry if this is the incorrect place to file issues against determinate-nixd itself.

I'm currently evaluating what I may need to update in my nix configurations to update from Sonoma (15.7.7) to Tahoe (26.5.1). To do this, I installed Tahoe alongside my usual installation and installed determinate nix using the CLI installer. Specifically, I issued the command

curl -fsSL https://install.determinate.systems/nix | sh -s -- install macos --volume-label="Nix Tahoe"

to install nix. This worked fine. However, on boot, I am asked to decrypt both "Nix Store" (expected, this is the store for my default Sonoma installation) as well as "Nix Tahoe" (unexpected, the item exists in the System Keychain) as described in the source.

Running sudo ./determinate-nixd init gives the following output:

  2026-06-29T02:35:57.182450Z  INFO determinate_nixd::command::init: Updating Nix's trusted certificates from Keychain
    at src/command/init.rs:72
    in determinate_nixd::command::init::execute with args: InitArgs { stop_after: None, keep_mounted: false }, dissenter: Some(DiskArbitrationDissenter)
    in determinate_nixd::task_cmd

  2026-06-29T02:35:57.187940Z  INFO determinate_nixd::command::init: Unlocking and mounting /nix
    at src/command/init.rs:96
    in determinate_nixd::command::init::execute with args: InitArgs { stop_after: None, keep_mounted: false }, dissenter: Some(DiskArbitrationDissenter)
    in determinate_nixd::task_cmd

Error: Failed to unlock and mount

Caused by:
    Keychain error: Keychain error: Not found

Location:
    src/command/init.rs:100:22

However, editing the entry in the System's keychain such that the Account is named "Nix Store" causes the following different error when attempting to init (since it finds a keychain entry, attempts to unlock "Nix Store" (original store) using the PW generated for "Nix Tahoe"):

  2026-06-29T02:41:00.641596Z  INFO determinate_nixd::command::init: Updating Nix's trusted certificates from Keychain
    at src/command/init.rs:72
    in determinate_nixd::command::init::execute with args: InitArgs { stop_after: None, keep_mounted: false }, dissenter: Some(DiskArbitrationDissenter)
    in determinate_nixd::task_cmd

  2026-06-29T02:41:00.647421Z  INFO determinate_nixd::command::init: Unlocking and mounting /nix
    at src/command/init.rs:96
    in determinate_nixd::command::init::execute with args: InitArgs { stop_after: None, keep_mounted: false }, dissenter: Some(DiskArbitrationDissenter)
    in determinate_nixd::task_cmd

Unlocking any cryptographic user on APFS Volume disk3s7
Passphrase incorrect or user does not exist
  2026-06-29T02:41:01.204324Z ERROR determinate_nixd::unlock: diskutil failed, status: exit status: 1
    at src/unlock.rs:117
    in determinate_nixd::unlock::unlock_volume with self: Unlock { volume_name: "Nix Store", fs_id: "Nix Store", mount_point: "/nix" }, password: SecretBox<str>([REDACTED])
    in determinate_nixd::unlock::unlock_mount
    in determinate_nixd::command::init::execute with args: InitArgs { stop_after: None, keep_mounted: false }, dissenter: Some(DiskArbitrationDissenter)
    in determinate_nixd::task_cmd

  2026-06-29T02:41:01.204472Z  WARN determinate_nixd::unlock: Failed to unlock and mount the volume, trying to just mount it, e: Command failed with: exit status: 1
    at src/unlock.rs:54
    in determinate_nixd::unlock::unlock_mount
    in determinate_nixd::command::init::execute with args: InitArgs { stop_after: None, keep_mounted: false }, dissenter: Some(DiskArbitrationDissenter)
    in determinate_nixd::task_cmd

  2026-06-29T02:41:01.433316Z ERROR determinate_nixd::unlock: Running mount_apfs to mount the Nix Store, output.status: exit status: 77
    at src/unlock.rs:195
    in determinate_nixd::unlock::mount_only
    in determinate_nixd::unlock::unlock_mount
    in determinate_nixd::command::init::execute with args: InitArgs { stop_after: None, keep_mounted: false }, dissenter: Some(DiskArbitrationDissenter)
    in determinate_nixd::task_cmd

Error: Failed to unlock and mount

Caused by:
    Command failed with: exit status: 77

Location:
    src/command/init.rs:100:22

This leads me to believe the determinate daemon is looking for "Nix Store" in the keychain rather than my custom name, not finding it, and failing. Is there some special location it is supposed to read to resolve the proper APFS volume name/ID so it knows what volume to target? Otherwise, it seems this may be a bug. I could always add an extra item into my login keychain when it prompts me for the password, however this has the side effect of not allowing my launchd daemons to be accessible to launchd at the time login occurs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions