{ # The pkgs used for dependencies for the testing itself # Don't test properties of pkgs.lib, but rather the lib in the parent directory pkgs ? import ../.. {} // { lib = throw "pkgs.lib accessed, but the lib tests should use nixpkgs' lib path directly!"; }, nix ? pkgs.nix, nixVersions ? [ pkgs.nixVersions.minimum nix pkgs.nixVersions.unstable ], }: let testWithNix = nix: pkgs.runCommand "nixpkgs-lib-tests-nix-${nix.version}" { buildInputs = [ (import ./check-eval.nix) (import ./maintainers.nix { inherit pkgs; lib = import ../.; }) (import ./teams.nix { inherit pkgs; lib = import ../.; }) (import ../path/tests { inherit pkgs; }) ]; nativeBuildInputs = [ nix ]; strictDeps = true; } '' datadir="${nix}/share" export TEST_ROOT=$(pwd)/test-tmp export NIX_BUILD_HOOK= export NIX_CONF_DIR=$TEST_ROOT/etc 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_STORE_DIR=$TEST_ROOT/store export PAGER=cat cacheDir=$TEST_ROOT/binary-cache mkdir -p $NIX_CONF_DIR echo "experimental-features = nix-command" >> $NIX_CONF_DIR/nix.conf nix-store --init cp -r ${../.} lib echo "Running lib/tests/modules.sh" bash lib/tests/modules.sh echo "Running lib/tests/filesystem.sh" TEST_LIB=$PWD/lib bash lib/tests/filesystem.sh echo "Running lib/tests/sources.sh" TEST_LIB=$PWD/lib bash lib/tests/sources.sh echo "Running lib/tests/systems.nix" [[ $(nix-instantiate --eval --strict lib/tests/systems.nix | tee /dev/stderr) == '[ ]' ]]; mkdir $out echo success > $out/${nix.version} ''; in pkgs.symlinkJoin { name = "nixpkgs-lib-tests"; paths = map testWithNix nixVersions; }