background grid image
Image for post changelog-determinate-nix-3152
Jan 28, 2026 by Luc Perkins

Changelog: a more powerful nix-darwin module and more

Determinate Nix version 3.15.2, based on upstream Nix 2.33.1, is now out and ready to rock your world with things like an improved nix-darwin module, a version of nix-eval-jobs that’s compatible with Determinate Nix, a performance improvement for handling large numbers of dependencies, and, as always, some smaller fixes.

More options in the determinate nix-darwin module

The nix-darwin module for Determinate now offers more options for declaratively configuring Determinate Nix. Previously, you could set custom configuration for the Determinate Nix CLI in the nix.custom.conf file. Here’s an example:

Configure the Determinate CLI using nix-darwin
{
determinateNix = {
enable = true;
# These settings go in /etc/nix/nix.custom.conf
customSettings = {
# Provide your own flake registry as JSON
flake-registry = "/etc/nix/flake-registry.json";
};
};
}

Now, you can also configure Determinate Nixd using the module. Here’s an example:

Configure Determinate Nixd using nix-darwin
{
determinateNix = {
enable = true;
determinateNixd = {
# Disable garbage collection
garbageCollector.strategy = "disabled";
# Add a netrc file
authentication.additionalNetrcSources = [
"/path/to/custom/netrc"
];
};
};
}

A small ergonomic change worth noting is that if you set determinateNix.enable = true, you no longer need to set nix.enable = false.

nix-eval-jobs comes to Determinate Nix

nix-eval-jobs is a powerful and widely used tool for parallelizing the evaluation of Nix attribute sets across multiple processors and streaming JSON output from those evaluations. The community version of the tool at nix-community/nix-eval-jobs is compatible with upstream Nix but not with Determinate Nix.

To fill this gap, in Determinate Nix 3.15.2 we’re introducing a variant of nix-eval-jobs that is compatible with Determinate Nix. The code is available via our fork of the upstream project at DeterminateSystems/nix-eval-jobs on GitHub and the flake is available on FlakeHub at DeterminateSystems/nix-eval-jobs.

Here’s an example command that runs our Determinate-Nix-compatible variant against a flake:

Run Determinate-Nix-compatible nix-eval-jobs
nix run "https://flakehub.com/f/DeterminateSystems/nix-eval-jobs/3" -- \
--flake "github:NixOS/patchelf"

Our nix-eval-jobs variant will be updated as part of our Determinate Nix release process.

Improved performance for users with many dependencies

If you ever had some reason to query your binary cache for over 110,000 store paths simultaneously, you may have found that operation to be rather slow. That’s because Nix would enqueue all of the downloads at once, which triggers quadratic behavior in curl.

Determinate Nix now enqueues a much more reasonable number of substitutions at a time, which avoids triggering that problematic behavior. We also fixed a performance issue in the progress bar when there are many dependencies.

Relevant pull request

Lazy trees update: path inputs are now lazy

Previously inputs like path:///path/to/a/dependency were eagerly fetched when lazy-trees is enabled. In Determinate Nix 3.15.2, path input types are also fetched lazily. This change saves time and improves performance for users with path inputs.

nix repl now reports the Determinate version

A small change, but now nix repl correctly reports the Determinate Nix version when you enter the REPL:

Terminal window
Nix (Determinate Nix 3.15.2) 2.33.1
Type :? for help.
nix-repl>

Relevant pull request

How to get Determinate Nix

If you already have Determinate Nix installed, you can upgrade to 3.15.2 with one Determinate Nixd command:

Upgrade command for version 3.15.2
sudo determinate-nixd upgrade

If you don’t yet have Determinate Nix installed, you can upgrade or migrate to Determinate Nix on macOS using our graphical installer:

Logo for graphical installer

Install Determinate Nix on macOS now 🍎

With support for Apple Silicon (aarch64-darwin)

On Linux:

Install Determinate Nix on Linux
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | \
sh -s -- install --determinate

On NixOS, we recommend using our dedicated NixOS module or our NixOS ISO (NixOS installer for x86_64, NixOS installer for ARM) with Determinate Nix pre-installed.

On GitHub Actions:

.github/workflows/nix-ci.yaml
on:
pull_request:
workflow_dispatch:
push:
branches:
- main
jobs:
nix-ci:
runs-on: ubuntu-latest
# Include this block to log in to FlakeHub and access private flakes
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v5
- uses: DeterminateSystems/flake-checker-action@main
- uses: DeterminateSystems/determinate-nix-action@v3
- uses: DeterminateSystems/flakehub-cache-action@main
- run: nix flake check

In Amazon Web Services:

aws.tf
data "aws_ami" "detsys_nixos" {
most_recent = true
owners = ["535002876703"]
filter {
name = "name"
values = ["determinate/nixos/epoch-1/*"]
}
filter {
name = "architecture"
values = ["x86_64"]
}
}

Share
Avatar for Luc Perkins
Written by Luc Perkins

Luc is a technical writer, software engineer, and Nix advocate who's always on the lookout for qualitatively better ways of building software. He originally hails from the Pacific Northwest but has recently taken to living abroad.