Nixpkgs is the largest, most comprehensive package repository for the Nix package manager and the NixOS Linux distribution. It contains over 140,000 package definitions spanning virtually every domain of software, along with the build infrastructure, standard environment, and NixOS system modules needed to build and configure a complete operating system declaratively. The repository is not a single application but a collection of Nix expressions, shell scripts, Python tools, and Rust utilities that together form a reproducible, source-based distribution framework. It provides a modular module system for declarative configuration, a generic build phase hook mechanism, extensive CI automation for PR review and package updates, and a sophisticated test driver for integration testing. The codebase is actively maintained with thousands of contributors, and its architecture emphasizes composability, reproducibility, and cross-platform support.
NUR (Nix User Repository) is a community package registry and distribution layer for Nix. In production it maintains a registry of several hundred user-contributed Nix repositories in repos.json, pins every entry to a specific revision in repos.json.lock, and exposes the aggregate as a Nix flake/overlay/package set. The Nix entry points (default.nix, flake.nix, lib/evalRepo.nix, lib/repoSource.nix) lazily translate locked registry entries into `nur.repos.<name>.<pkg>` attributes, including typed support for NixOS, Home Manager, Darwin, and flake-parts modules and overlays via flake-parts. The operational core is a small, typed Python CLI (`bin/nur` and `ci/nur/`) with subcommands for updating the lockfile, evaluating repos, formatting the manifest, generating a combined monorepo, and producing a search index. Updates run hourly via GitHub Actions: each repo is concurrently prefetched using either the Git smart HTTP protocol or GitHub/GitLab archive endpoints, evaluated in a sandboxed `nix-env` run to catch breakage, and then either locked to a new revision or pruned from the registry if deleted. A separate set of CI scripts publishes `nur-combined` and updates package search data. The architecture is cleanly split between Nix expression logic and Python automation, with careful handling of async concurrency, evaluation failures, and safety guards against accidental mass repository loss.