mirror of
https://github.com/NixOS/nix.dev.git
synced 2024-10-18 14:32:43 -04:00
1.3 KiB
1.3 KiB
(pinning-nixpkgs)=
Towards reproducibility: pinning Nixpkgs
In various Nix examples, you'll often see references to <nixpkgs>, as follows.
{ pkgs ? import <nixpkgs> {} }:
...
This is a convenient way to quickly demonstrate a Nix expression and get it working by importing Nix packages.
However, the resulting Nix expression is not fully reproducible.
Pinning packages with URLs inside a Nix expression
To create fully reproducible Nix expressions, we can pin an exact version of Nixpkgs.
The simplest way to do this is to fetch the required Nixpkgs version as a tarball specified via the relevant Git commit hash:
{ pkgs ? import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/06278c77b5d162e62df170fec307e83f1812d94b.tar.gz") {}
}:
...
Picking the commit can be done via status.nixos.org, which lists all the releases and the latest commit that has passed all tests.
When choosing a commit, it is recommended to follow either
- the latest stable NixOS release by using a specific version, such as
nixos-21.05
, or - the latest unstable release via
nixos-unstable
.