Skip to Content
Determinate Nix

Determinate Nix

Determinate Nix is Determinate Systems’ validated and secure downstream distribution of NixOS/nix designed for enterprise use cases. You can get started by installing it on your preferred platform:

Get Determinate for macOS

As a downstream distribution, Determinate Nix is fully compatible with and includes everything in upstream Nix but also special features like:

Determinate Nix makes your workflows faster, your CI/CD runs smoother, and your experience of using Nix consistent across all environments.

Every Determinate Nix release is validated on SOC 2 Type II infrastructure and backed by a defined Common Vulnerabilities and Exposures (CVE) process, providing the security, scale, and stability that organizations need across developer workstations, CI/CD, and the cloud.

Determinate Nix has two core components:

  • Our downstream distribution of the Nix CLI.
  • Determinate Nixd, a daemon that makes your experience of installing and using Nix dramatically more smooth.

Determinate Nixd

Determinate Nixd is a daemon for both Linux and macOS that makes your experience of installing and using Nix dramatically more smooth. You can read more in the Determinate Nixd documentation.

Configuring Determinate Nix

Determinate Nix generally handles configuration for you, and one of its core virtues is that it enables you to confidently use Nix while making fewer decisions about it—including configuration decisions. When you install Determinate Nix, the installer writes a nix.conf configuration file to /etc/nix/nix.conf with carefully chosen values.

If you need to provide custom configuration beyond this, however, you can write that additional configuration to a /etc/nix/nix.custom.conf file. Here’s an example:

/etc/nix/nix.custom.conf
extra-experimental-features = provenance flake-registry = /etc/nix/flake-registry.json system-features = benchmark big-parallel kvm nixos-test

It’s important that you not change the values generated by Determinate Nix in /etc/nix/nix.conf. If you do need to supply custom configuration, nix.custom.conf is the only supported way to do so in Determinate Nix.

On NixOS

If you’re on NixOS and installed Determinate using the determinate NixOS module, you don’t need to write nix.custom.conf yourself. Use the standard nix.settings option and the module writes your settings to /etc/nix/nix.custom.conf for you:

configuration.nix
nix.settings = { extra-experimental-features = [ "provenance" ]; flake-registry = "/etc/nix/flake-registry.json"; system-features = [ "benchmark" "big-parallel" "kvm" "nixos-test" ]; };

On macOS with nix-darwin

If you manage your macOS system with nix-darwin and use our determinate nix-darwin module to configure Determinate Nix, set your custom configuration using the determinateNix.customSettings attribute, which the module writes to /etc/nix/nix.custom.conf:

flake.nix
determinateNix = { enable = true; customSettings = { extra-experimental-features = [ "provenance" ]; flake-registry = "/etc/nix/flake-registry.json"; system-features = [ "benchmark" "big-parallel" "kvm" "nixos-test" ]; }; };

The module rejects the handful of settings that Determinate Nix manages for you, namely bash-prompt-prefix, external-builders, extra-nix-path, netrc-file, ssl-cert-file, and upgrade-nix-store-path-url. If you set one of those, your build fails with an assertion telling you which one.

Determinate Nix 3.0 Reference Manual

For in-depth information about Determinate Nix 3.0, consult our work-in-progress reference manual.

The version of the reference manual corresponds to the specific Nix version on which Determinate Nix is based. It’s lightly edited to adjust to our published best practices but it may still contain some outdated suggestions regarding best practices. You may find scattered references to, for example, Nix channels, nix-* commands, and installation, uninstallation, and bug reporting procedures that don’t apply to Determinate Nix.

Our primary maintained documentation is here at docs.determinate.systems. Consider manual.determinate.systems as a deep technical reference and not an authoritative source about Determinate-Systems-recommended best practices or approaches.

Last updated on