Cette page est affichée en anglais. Une traduction française est en cours.
ScriptsMay 3, 2026·3 min de lecture

Nix — Purely Functional Package Manager for Reproducible Builds

A cross-platform package manager that uses a functional approach to guarantee reproducible, declarative, and reliable software environments.

Introduction

Nix is a package manager built on the idea that packages are pure functions of their inputs. Each package is stored in an isolated path derived from a cryptographic hash of all its dependencies, making builds reproducible across machines and eliminating dependency conflicts.

What Nix Does

  • Installs packages in isolated store paths, preventing version conflicts
  • Enables atomic upgrades and rollbacks for any package or system configuration
  • Provides nix develop shells for per-project reproducible dev environments
  • Builds from source or fetches pre-built binaries from a build cache
  • Powers NixOS, a full Linux distribution configured declaratively

Architecture Overview

Nix evaluates a lazy functional language (the Nix expression language) to produce build instructions called derivations. Each derivation is hashed and stored under /nix/store/<hash>-<name>. A build sandbox ensures no undeclared dependencies leak in. User environments are assembled by symlinking selected store paths into profiles.

Self-Hosting & Configuration

  • Single-user install for personal use or multi-user for shared machines
  • Configure channels or pin to specific nixpkgs commits for version control
  • Use flakes (flake.nix) for fully hermetic, lockfile-backed project definitions
  • Binary caches (cache.nixos.org or self-hosted) speed up builds by reusing artifacts
  • Integrate with CI systems via nix build for reproducible pipeline steps

Key Features

  • Deterministic builds: same inputs always produce the same output
  • Atomic operations: upgrades never leave the system in an inconsistent state
  • Rollbacks: switch back to any previous generation with one command
  • Multi-version coexistence: different projects can use different versions without conflict
  • Nixpkgs: one of the largest package repositories with over 100,000 packages

Comparison with Similar Tools

  • Homebrew — Simpler to use; not reproducible, no rollbacks, macOS-focused
  • asdf / mise — Version managers for runtimes; Nix manages entire dependency trees
  • Docker — Provides isolation via containers; Nix provides reproducibility without runtime overhead
  • Guix — Same functional model, uses Guile Scheme instead of the Nix language

FAQ

Q: Does Nix work on macOS? A: Yes. Nix runs on macOS and Linux. The nix-darwin project provides NixOS-style system configuration for macOS.

Q: What are Nix flakes? A: Flakes are an opt-in feature that adds a standard structure (flake.nix + flake.lock) for fully reproducible and composable Nix projects.

Q: Will Nix conflict with my existing package manager? A: No. Nix installs everything under /nix/store and does not modify system directories like /usr or /lib.

Q: Is Nix hard to learn? A: The Nix language has a learning curve, but basic usage (installing packages, creating dev shells) is straightforward. The community provides extensive tutorials and documentation.

Sources

Fil de discussion

Connectez-vous pour rejoindre la discussion.
Aucun commentaire pour l'instant. Soyez le premier à partager votre avis.

Actifs similaires