51 lines
1.8 KiB
Nix
51 lines
1.8 KiB
Nix
{
|
|
perSystem =
|
|
{ pkgs, lib, ... }:
|
|
{
|
|
legacyPackages = {
|
|
setupNixInNix = ''
|
|
set -xeu -o pipefail
|
|
export HOME=$TMPDIR
|
|
export NIX_STATE_DIR=$TMPDIR/nix
|
|
export NIX_CONF_DIR=$TMPDIR/etc
|
|
export IN_NIX_SANDBOX=1
|
|
export CLAN_TEST_STORE=$TMPDIR/store
|
|
# required to prevent concurrent 'nix flake lock' operations
|
|
export LOCK_NIX=$TMPDIR/nix_lock
|
|
mkdir -p "$CLAN_TEST_STORE/nix/store"
|
|
mkdir -p "$CLAN_TEST_STORE/nix/var/nix/gcroots"
|
|
if [[ -n "''${closureInfo-}" ]]; then
|
|
${pkgs.findutils}/bin/xargs -r -P"$(nproc)" ${pkgs.coreutils}/bin/cp --recursive --no-dereference --reflink=auto --target-directory "$CLAN_TEST_STORE/nix/store" < "$closureInfo/store-paths"
|
|
${pkgs.nix}/bin/nix-store --load-db --store "$CLAN_TEST_STORE" < "$closureInfo/registration"
|
|
fi
|
|
'';
|
|
|
|
# NixOS test library combining port utils and clan VM test utilities
|
|
nixosTestLib = pkgs.python3Packages.buildPythonPackage {
|
|
pname = "nixos-test-lib";
|
|
version = "1.0.0";
|
|
format = "pyproject";
|
|
src = lib.fileset.toSource {
|
|
root = ./.;
|
|
fileset = lib.fileset.unions [
|
|
./pyproject.toml
|
|
./nixos_test_lib
|
|
];
|
|
};
|
|
nativeBuildInputs = with pkgs.python3Packages; [
|
|
setuptools
|
|
wheel
|
|
];
|
|
postPatch = ''
|
|
substituteInPlace nixos_test_lib/nix_setup.py \
|
|
--replace '@cp@' '${pkgs.coreutils}/bin/cp' \
|
|
--replace '@nix-store@' '${pkgs.nix}/bin/nix-store' \
|
|
--replace '@xargs@' '${pkgs.findutils}/bin/xargs'
|
|
'';
|
|
doCheck = false;
|
|
};
|
|
|
|
};
|
|
};
|
|
}
|