Unverified Commit aef40b0b authored by Wolfgang Walther's avatar Wolfgang Walther Committed by GitHub
Browse files

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

parents 2f0df06f ab4281e9
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
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
Original line number Diff line number Diff line
@@ -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

lib/minfeatures.nix

0 → 100644
+19 −0
Original line number Diff line number Diff line
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;
}

lib/minver.nix

deleted100644 → 0
+0 −2
Original line number Diff line number Diff line
# Expose the minimum required version for evaluating Nixpkgs
"2.18"