재현성을 향하여: Nixpkgs 고정하기

재현성을 향하여: Nixpkgs 고정하기#

다양한 Nix 예제에서 다음과 같은 코드를 자주 보게 됩니다.

1{ pkgs ? import <nixpkgs> {} }:
2
3...

참고

<nixpkgs>는 Nixpkgs의 특정 리비전이 있는 파일 시스템 경로를 가리킵니다. 조회 경로에 대한 자세한 정보는 Nix 언어 기초에서 확인하십시오.

이는 Nix 패키지를 가져와 Nix 표현식을 빠르게 시연하고 동작하게 만드는 편리한 방법입니다.

하지만 이렇게 만든 Nix 표현식은 완전히 재현 가능하지 않습니다.

Nix 표현식 안에서 URL로 패키지 고정하기#

완전히 재현 가능한 Nix 표현식을 만들려면 Nixpkgs의 정확한 버전을 고정하면 됩니다.

가장 간단한 방법은 필요한 Nixpkgs 버전을 해당 Git 커밋 해시로 지정한 tarball로 가져오는 것입니다.

1{ pkgs ? import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/06278c77b5d162e62df170fec307e83f1812d94b.tar.gz") {}
2}:
3
4...

커밋은 status.nixos.org에서 고를 수 있으며, 이 사이트에는 모든 릴리스와 모든 테스트를 통과한 최신 커밋이 나열되어 있습니다.

커밋을 고를 때는 다음 중 하나를 따르는 것을 권장합니다.

  • nixos-21.05처럼 특정 버전을 사용하여 최신 안정 NixOS 릴리스를 따르거나, 또는

  • nixos-unstable을 통해 최신 불안정 릴리스를 따릅니다.

다음 단계#