forked from mirrors/nixpkgs
a5992ad61b
This modification add a way to re-evaluate the module system with a different version of NixOS, or with a different set of arguments.
58 lines
1.7 KiB
Nix
58 lines
1.7 KiB
Nix
{ system ? builtins.currentSystem }:
|
|
|
|
with import ../lib/testing.nix { inherit system; };
|
|
let
|
|
in
|
|
|
|
pkgs.stdenv.mkDerivation rec {
|
|
name = "nixos-pin-version";
|
|
src = ../..;
|
|
buildInputs = with pkgs; [ nix gnugrep ];
|
|
|
|
withoutPath = pkgs.writeText "configuration.nix" ''
|
|
{
|
|
nixos.extraModules = [ ({lib, ...}: { system.nixosRevision = lib.mkForce "ABCDEF"; }) ];
|
|
}
|
|
'';
|
|
|
|
withPath = pkgs.writeText "configuration.nix" ''
|
|
{
|
|
nixos.path = ${src}/nixos ;
|
|
nixos.extraModules = [ ({lib, ...}: { system.nixosRevision = lib.mkForce "ABCDEF"; }) ];
|
|
}
|
|
'';
|
|
|
|
phases = "buildPhase";
|
|
buildPhase = ''
|
|
datadir="${pkgs.nix}/share"
|
|
export TEST_ROOT=$(pwd)/test-tmp
|
|
export NIX_STORE_DIR=$TEST_ROOT/store
|
|
export NIX_LOCALSTATE_DIR=$TEST_ROOT/var
|
|
export NIX_LOG_DIR=$TEST_ROOT/var/log/nix
|
|
export NIX_STATE_DIR=$TEST_ROOT/var/nix
|
|
export NIX_DB_DIR=$TEST_ROOT/db
|
|
export NIX_CONF_DIR=$TEST_ROOT/etc
|
|
export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests
|
|
export NIX_BUILD_HOOK=
|
|
export PAGER=cat
|
|
cacheDir=$TEST_ROOT/binary-cache
|
|
nix-store --init
|
|
|
|
export NIX_PATH="nixpkgs=$src:nixos=$src/nixos:nixos-config=${withoutPath}" ;
|
|
if test $(nix-instantiate $src/nixos -A config.system.nixosRevision --eval-only) != '"ABCDEF"' ; then :;
|
|
else
|
|
echo "Unexpected re-entry without the nixos.path option defined.";
|
|
exit 1;
|
|
fi;
|
|
|
|
export NIX_PATH="nixpkgs=$src:nixos=$src/nixos:nixos-config=${withPath}" ;
|
|
if test $(nix-instantiate $src/nixos -A config.system.nixosRevision --eval-only) = '"ABCDEF"' ; then :;
|
|
else
|
|
echo "Expected a re-entry when the nixos.path option is defined.";
|
|
exit 1;
|
|
fi;
|
|
|
|
touch $out;
|
|
'';
|
|
}
|