lib/minfeatures: init from minver.nix (#433057)

This commit is contained in:
Wolfgang Walther
2025-08-22 18:08:57 +00:00
committed by GitHub
4 changed files with 26 additions and 7 deletions
+6 -4
View File
@@ -1,13 +1,15 @@
let
requiredVersion = import ./lib/minver.nix;
missingFeatures = map ({ description, ... }: description) (import ./lib/minfeatures.nix).missing;
in
if !builtins ? nixVersion || builtins.compareVersions requiredVersion builtins.nixVersion == 1 then
if missingFeatures != [ ] then
abort ''
This version of Nixpkgs requires Nix >= ${requiredVersion} but it is being
evaluated with Nix ${builtins.nixVersion or "(too old to know)"}, please upgrade:
This version of Nixpkgs requires an implementation of Nix with the following features:
- ${builtins.concatStringsSep "\n- " missingFeatures}
Your are evaluating with Nix ${builtins.nixVersion or "(too old to know)"}, please upgrade:
- If you are running NixOS, `nixos-rebuild' can be used to upgrade your system.
+1 -1
View File
@@ -19,7 +19,7 @@ This file evaluates to an attribute set containing two separate kinds of attribu
Example: `lib.take` is an alias for `lib.lists.take`.
Most files in this directory are definitions of sub-libraries, but there are a few others:
- [`minver.nix`](minver.nix): A string of the minimum version of Nix that is required to evaluate Nixpkgs.
- [`minfeatures.nix`](minfeatures.nix): A list of conditions for the used Nix version to match that are required to evaluate Nixpkgs.
- [`tests`](tests): Tests, see [Running tests](#running-tests)
- [`release.nix`](tests/release.nix): A derivation aggregating all tests
- [`misc.nix`](tests/misc.nix): Evaluation unit tests for most sub-libraries
+19
View File
@@ -0,0 +1,19 @@
let
features = [
{
description = "the `nixVersion` builtin";
condition = builtins ? nixVersion;
}
{
description = "`builtins.nixVersion` reports at least 2.18";
condition = builtins ? nixVersion && builtins.compareVersions "2.18" builtins.nixVersion != 1;
}
];
evaluated = builtins.partition ({ condition, ... }: condition) features;
in
{
all = features;
supported = evaluated.right;
missing = evaluated.wrong;
}
-2
View File
@@ -1,2 +0,0 @@
# Expose the minimum required version for evaluating Nixpkgs
"2.18"