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:
{ 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:
{ 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
Here’s an example command that runs our Determinate-Nix-compatible variant against a flake:
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.
Relevant pull requests
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:
Nix (Determinate Nix 3.15.2) 2.33.1Type :? 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:
sudo determinate-nixd upgradeIf you don’t yet have Determinate Nix installed, you can upgrade or migrate to Determinate Nix on macOS using our graphical installer:
Install Determinate Nix on macOS now 🍎
With support for Apple Silicon (aarch64-darwin)
On Linux:
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | \ sh -s -- install --determinateOn 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:
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 checkIn Amazon Web Services:
data "aws_ami" "detsys_nixos" { most_recent = true owners = ["535002876703"]
filter { name = "name" values = ["determinate/nixos/epoch-1/*"] }
filter { name = "architecture" values = ["x86_64"] }}