mrkeyoor.com_
Thu 01 Oct 19:39 UTC
Dev Toolsevaluationupdated 26 Aug 2026

nixpkgs review

Nixpkgs is the package collection behind the Nix package manager and the module base used to build NixOS. It describes how software and whole systems are assembled reproducibly, while Hydra builds accepted expressions and publishes successful artifacts to the shared binary cache.

+40stars / 7d
Verdict

Our check of ci/github-script/ took 11 seconds, installed 0 packages, and found 5 known vulnerabilities, but it did not build Nixpkgs or run NixOS tests. Use Nixpkgs when reproducible packages and declarative systems justify learning Nix and pinning a moving collection. Do not mistake the small Node helper result for health evidence about more than that one CI subdirectory.

We ran it

Lab card: what happened when we ran nixpkgsScreenshot of nixpkgs (github.com/NixOS/nixpkgs)
Install✓ · 11s0 packages · 1 MB
Buildn/ano build script
Testsn/ano test script
Known vulns50 critical · 2 high · 3 moderate · 0 low (npm audit)
Repo53986 files~132,211 lines of source · 194.8 MB · 17 CI workflows

Answers from our run

Does nixpkgs build from source?

Dependencies installed in 11 seconds (0 packages), and the project has no separate build step. We cloned commit 4817efd into a clean Debian container with 3 CPUs and no project-specific setup.

Does nixpkgs have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does nixpkgs have known vulnerabilities in its dependencies?

npm audit flagged 5 known advisories in the dependency tree at the time of our run.

Who should not use nixpkgs?

Users who want a conventional mutable Linux setup and do not want to learn Nix expressions: the README describes NixOS as purely functional and points to three separate manuals.

What are the alternatives to nixpkgs?

Homebrew Core, Spack, Gentoo repository. Our check of ci/github-script/ took 11 seconds, installed 0 packages, and found 5 known vulnerabilities, but it did not build Nixpkgs or run NixOS tests.

Setup2/5The measured helper is simple; real Nixpkgs use has a steep model
Docs5/5Separate Nix, Nixpkgs, and NixOS manuals cover the full system
Community5/525,949 stars and same-day activity across a huge package queue
Maturity5/5Hydra, release branches, channels, and a binary cache are established

Discussed on

  1. hnThe Nixpkgs core team has disbanded406 points
  2. hn“Please don't add any of my stuff to this project”280 points
  3. hnAbusing SHA-1 collisions for Chromium updates183 points
  4. hnYou can't build tcc from Nixpkgs if you are in the UK169 points
  5. hnRelease 22.11 · NixOS/Nixpkgs12 points

Who it’s for

Nix and NixOS users who need the main package set, operating-system modules, and binary cache path.
Developers packaging software for reproducible local, CI, or server environments.
Infrastructure teams willing to express system configuration in Nix and review changes through channels or pinned revisions.
Contributors prepared to work in a very large, fast-moving monorepo with package-specific maintainers and checks.

Who it’s NOT for

Users who want a conventional mutable Linux setup and do not want to learn Nix expressions: the README describes NixOS as purely functional and points to three separate manuals.
Teams treating one repository license as permission for every packaged program: the README says MIT covers repository files, while built packages and some patches keep their own licenses.
Buyers expecting our lab result to validate Nixpkgs or NixOS: we only exercised the Node project under ci/github-script/, not package builds or system tests.
Security-sensitive teams unwilling to own CI-helper dependencies: npm audit reported 2 high and 3 moderate known vulnerabilities in the measured subproject.
Contributors wanting a small checkout and quick global test command: our commit had 53,986 files and 194.8 MB before any Nix store artifacts.

Setup reality

Our sandbox entered ci/github-script/ and completed npm install in 11 seconds. It installed 0 packages and used 1 MB on disk. That subproject exposed no build or test script, so both steps were skipped. Npm audit reported 5 known vulnerabilities: 2 high and 3 moderate.

This was not a Nixpkgs build. Real use requires Nix, a selected channel or pinned revision, and enough disk for the Nix store and downloaded or locally built packages. NixOS work adds system configuration, evaluation, activation, and rollback decisions. Hydra and cache.nixos.org supply artifacts that passed upstream criteria.

The checkout alone contained 53,986 files and occupied 194.8 MB. Our scan found 17 CI workflow files, no Dockerfile, and no top-level tests directory. Nixpkgs validation is distributed across package checks, NixOS tests, review tooling, and Hydra rather than one repository-wide npm target.

Nixpkgs describes more than 140,000 package builds

The README defines Nixpkgs as a collection of more than 140,000 software packages for the Nix package manager. The same repository implements NixOS through modules and system definitions. Unlike a catalog that only stores download metadata, each Nix expression can describe sources, dependencies, build steps, patches, configuration, and outputs. Users can install an individual tool, construct a development shell, or evaluate an operating-system configuration from the same package universe.

That common model is the reason to adopt Nixpkgs. A pinned revision gives a project a precise package set instead of whatever a machine's mutable package database contains today. NixOS carries the idea to services, users, filesystems, boot settings, and other host configuration. The tradeoff is a language and evaluation model that new users must learn. The README links separate manuals for Nix, Nixpkgs, and NixOS because each layer has its own concepts.

Hydra builds packages that reach cache.nixos.org

Nixpkgs does not rely on GitHub Actions alone for its main distribution path. Hydra continuously evaluates and builds unstable master plus release branches. Successful artifacts are published to cache.nixos.org, allowing users to download binaries rather than rebuild every dependency. The README links current jobs for unstable and NixOS 26.05, along with their system-test sets. That infrastructure is part of the product, even though it lives outside the checkout we measured.

A cache hit and a local build have different operational costs, so pinning matters. An expression can evaluate successfully while a chosen platform lacks a cached artifact, leaving the local machine to compile it. Teams should choose an update cadence, retain known-good revisions, monitor store growth, and test garbage collection and rollback. Reproducibility reduces hidden machine drift; it does not remove storage, compute, upstream source availability, or package-maintainer decisions.

What happened when we ran it

Our sandbox measured only the Node project in ci/github-script/ at commit 4817efd. Npm install completed in 11 seconds, added 0 packages, and used 1 MB on disk. The subproject had no build script or target and no test script or target, so we skipped both steps. Npm audit reported 5 known vulnerabilities: 2 high, 3 moderate, 0 critical, and 0 low.

Those results say nothing about whether 140,000-plus Nix packages build. We did not install Nix, evaluate NixOS, invoke Hydra, build a package derivation, fetch from the binary cache, or boot a system test. The lab targeted a small CI helper because it was the detected npm project. The correct finding is narrow: that helper installed quickly without adding dependencies, lacked build and test targets, and produced a non-clean audit report.

The checkout itself was substantial: 53,986 files, about 132,211 source lines by our scanner, and 194.8 MB. We found 17 CI workflow files, no Dockerfile, and no top-level tests directory. Nixpkgs checks live across package expressions, maintainer workflows, NixOS tests, and Hydra jobs rather than one conventional root suite. Contributors should run the checks named for the package or module they change and inspect Hydra results before merging.

Five helper vulnerabilities need a scoped reading

The npm audit result belongs to ci/github-script/, not to every binary distributed by Nixpkgs. It should neither be inflated into a NixOS security verdict nor dismissed because the helper installed 0 new packages. Two high-severity and 3 moderate advisories existed in the dependency state we measured. Maintainers should identify the affected dependency paths and whether the GitHub workflow can reach vulnerable behavior, then update or mitigate them.

Package security is a much wider system. Nixpkgs carries thousands of upstream projects with independent disclosure and patch cycles. An August 26 pull request, for example, removed a stale known-vulnerability warning while backporting to release 26.05. That sort of activity shows security metadata is maintained at package level. It does not guarantee that every package is current or appropriate for a given threat model. Users still need advisories and package-specific review.

MIT covers expressions, not every packaged program

The repository is MIT licensed, but the README immediately narrows that statement. MIT applies to Nix expressions, build scripts, NixOS modules, and similar repository files. Software built by those expressions retains its own license. Included patches may also carry terms derived from the upstream package. A compliance process therefore needs per-package license information and cannot stop after reading COPYING at the repository root.

This distinction matters when a team builds container images, appliances, developer workstations, or redistributed systems from Nixpkgs. The collection makes package selection reproducible, which can improve license inventory, but it does not make incompatible terms disappear. Record the exact revision and closure used for each shipped output, then review the licenses inside that closure rather than assuming one MIT umbrella.

Same-minute pull requests show scale and review pressure

GitHub showed 25,949 stars, 20,860 combined issues and pull requests, and a last push on August 26, 2026. Several new and updated package pull requests appeared within the same minute of our fetch. GitHub returned no latest release because Nixpkgs distributes through branches, channels, Hydra, and caches rather than GitHub Releases. The huge open count reflects the collection's size and is not a count of broken packages.

Nixpkgs is the default choice when the organization has committed to Nix or NixOS. Its package breadth, binary cache, release branches, and active maintenance are hard to reproduce internally. The cost is learning Nix, managing revisions and stores, and qualifying the particular package closure you deploy. Our 11-second helper install is useful evidence about one workflow directory only; the upstream Hydra result and your own targeted evaluation should decide whether a system revision ships.

Alternatives

ProjectWhat it isPick it when
Homebrew CoreThe main formula collection for Homebrew packages on macOS and Linux.pick this instead when installing developer tools is the goal and declarative whole-system configuration is unnecessary.
SpackA package manager focused on scientific software and many build variants.pick this instead when HPC dependency variants and compiler matrices matter more than NixOS modules.
Gentoo repositoryGentoo's source package repository with USE flags and ebuilds.pick this instead when source-based Linux customization within Gentoo is the desired operating model.

What people are saying

  1. [velocity-scout] NixOS/nixpkgs
  2. [lobsters] nixpkgs-multiverse: fast mode
  3. [lobsters] nixpkgs-multiverse: every version that ever existed
  4. [hackernews] The Nixpkgs core team has disbanded

Sources

  1. Nixpkgs README
  2. Nixpkgs manual
  3. NixOS manual
  4. Nixpkgs Hydra jobs
  5. Nixpkgs repository license note

More dev tools reviews

nyaterm · yoinks · tilelang · vintage-latex · NavierStokesAndEuler · UMR · the whole board →