When `max-jobs = 0` and no remote builders are available, Nix reported "required system or feature not available" even though the system and features matched fine. The `canBuildLocally` lambda returned a plain `bool`, conflating a configuration knob (`max-jobs = 0`) with actual incompatibility (wrong platform, missing features). It also short-circuited on the first failing check, so a user with both a platform mismatch and missing features would only see one of the two. This commit replaces the bool with a `LocalBuildRejection` struct whose `WrongLocalStore` variant collects all applicable failures into `badPlatform`, `missingFeatures`, and an orthogonal `maxJobsZero` flag. Platform mismatch and missing features now produce separate error paragraphs, and all applicable reasons appear in a single message. The local-build capability check also now returns `std::variant<LocalBuildCapability, LocalBuildRejection>`, bundling the `LocalStore &` and optional `ExternalBuilder *` together.
Nix
Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible. Please refer to the Nix manual for more details.
Installation and first steps
Visit nix.dev for installation instructions and beginner tutorials.
Full reference documentation can be found in the Nix manual.
Building and developing
Follow instructions in the Nix reference manual to set up a development environment and build Nix from source.
Contributing
Check the contributing guide if you want to get involved with developing Nix.
Additional resources
Nix was created by Eelco Dolstra and developed as the subject of his PhD thesis The Purely Functional Software Deployment Model, published 2006. Today, a world-wide developer community contributes to Nix and the ecosystem that has grown around it.
- The Nix, Nixpkgs, NixOS Community on nixos.org
- Official documentation on nix.dev
- Nixpkgs is the largest, most up-to-date free software repository in the world
- NixOS is a Linux distribution that can be configured fully declaratively
- Discourse
- Matrix: #users:nixos.org for user support and #nix-dev:nixos.org for development
License
Nix is released under the LGPL v2.1.