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:
- Parallel evaluation
- Lazy trees
- Native Linux Builder for macOS
- Support for WebAssembly in expressions
- A
nix pscommand that gives you a live view of every build in flight - OpenTelemetry tracing that exports traces of evaluations, builds, cache substitutions, and more to any OTLP-compatible backend(OpenTelemetry Protocol)
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:
extra-experimental-features = provenance
flake-registry = /etc/nix/flake-registry.json
system-features = benchmark big-parallel kvm nixos-testIt’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:
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:
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.
