GuidesAdvanced installation

Advanced installation

This guide is intended for users who’d like to install Determinate on these platforms:

For instructions on installing Determinate on a fleet of machines using Mobile Device Management (MDM), see our dedicated MDM guide.

Install on NixOS

Determinate Systems offers both Amazon Machine Images (AMIs) and ISO images running NixOS with Determinate Nix pre-installed.

If you’re a NixOS user, you can set up Determinate using the nixosModules.default module output from the determinate flake. Here’s an example NixOS configuration:

flake.nix
{
  inputs.determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/*";
  inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0";
 
  outputs = { determinate, nixpkgs, ... }: {
    nixosConfigurations.my-workstation = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        # Load the Determinate module
        determinate.nixosModules.default
      ];
    };
  };
}

If you don’t yet have a NixOS configuration, we recommend creating one using one of Determinate Nix’s flake templates:

Generate a nix-darwin configuration using Nix
nix flake init --template "https://flakehub.com/f/DeterminateSystems/flake-templates/0#nixos"

Follow the instructions in the welcome text to get started.

Then pass two extra flags when you run nixos-rebuild for the initial configuration switchover:

sudo nixos-rebuild \
  --option extra-substituters https://install.determinate.systems \
  --option extra-trusted-public-keys cache.flakehub.com-3:hJuILl5sVK4iKm86JzgdXW12Y2Hwd5G07qKtHTOcDCM= \
  --flake ... \
  switch

These flags configure Nix to use install.determinate.systems as an additional binary cache for Nix so that you don’t have to build Determinate Nix yourself.

If you’re using a version of Determinate Nix older than version 3.6.0, you can pass --option extra-substituters https://install.determinate.systems to upgrade to v3.6.0 or after without building. Once you’re on Determinate Nix version 3.6.0 or later, however, you don’t need to configure any extra substituters to upgrade.