# 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. ## Install Save the content below to `.claude/skills/` or append to your `CLAUDE.md`: # Nix — Purely Functional Package Manager for Reproducible Builds ## Quick Use ```bash # Install Nix (multi-user) sh <(curl -L https://nixos.org/nix/install) --daemon # Run a package without installing nix run nixpkgs#hello # Start a dev shell with specific tools nix develop nixpkgs#python3 # Install a package into your profile nix profile install nixpkgs#ripgrep ``` ## 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/-`. 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 - https://github.com/NixOS/nix - https://nixos.org/manual/nix --- Source: https://tokrepo.com/en/workflows/nix-purely-functional-package-manager-reproducible-builds-377f4814 Author: Script Depot