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;
 | 
						|
  '';
 | 
						|
}
 |