Determinate is Nix for the enterprise. It provides an end-to-end experience around using Nix, from installation to collaboration to deployment. Determinate has two core components:
- Determinate Nix is Determinate Systems' validated and secure downstream Nix distribution. It comes bundled with Determinate Nixd, a helpful daemon that automates some otherwise-unpleasant aspects of using Nix, such as garbage collection and providing Nix with Keychain-provided certificates on macOS.
- FlakeHub is a platform for publishing and discovering Nix flakes, providing semantic versioning (SemVer) for flakes and automated flake publishing from GitHub Actions and GitLab CI.
You can get started with Determinate in one of two ways:
Situation | How to install |
---|---|
Linux but not using NixOS | Determinate Nix Installer |
macOS but not using nix-darwin | Determinate Nix Installer |
Linux and using NixOS | The NixOS module provided by this flake |
macOS and using nix-darwin | The nix-darwin module provided by this flake |
If you use...
- macOS (not nix-darwin) or
- Linux (not NixOS)
...you can install Determinate using the Determinate Nix Installer with the --determinate
flag:
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | \
sh -s -- install --determinate
If you use nix-darwin or NixOS you can install Determinate using this Nix flake.
To add the determinate
flake as a flake input:
{
inputs.determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/0.1";
}
We recommend not using a
follows
directive for Nixpkgs (inputs.nixpkgs.follows = "nixpkgs"
) in conjunction with the Determinate flake, as it leads to cache misses for artifacts otherwise available from FlakeHub Cache.
If you're a NixOS user, you can quickly set up Determinate using the nixosModules.default
module output from this flake.
Here's an example NixOS configuration:
{
inputs.determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/0.1";
inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.2405.0";
outputs = { determinate, nixpkgs, ... }: {
nixosConfigurations.my-workstation = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
# Load the Determinate module
determinate.nixosModules.default
];
};
};
}
If you're a nix-darwin user on macOS, you can quickly set up Determinate using the darwinModules.default
module output from this flake.
Here's an example nix-darwin configuration:
{
inputs.determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/0.1";
inputs.nix-darwin.url = "github:LnL7/nix-darwin";
outputs = { determinate, nix-darwin, ... }: {
darwinConfigurations.my-workstation-aarch64-darwin = nix-darwin.lib.darwinSystem {
system = "aarch64-darwin";
modules = [
# Load the Determinate module
determinate.darwinModules.default
];
};
};
}