dev: Use relocated store in Nix-packaged tests

(cherry picked from commit 3bb16f6745cc2eb6f1474b73947d0fe2c20788e2)
This commit is contained in:
Robert Hensing 2024-03-19 18:01:05 +01:00
parent 9021f55a53
commit 38aab588fd

View file

@ -13,6 +13,31 @@
nativeBuildInputs = [
pkgs.pkg-config
];
# Prepare the environment for Nix to work.
# Nix does not provide a suitable environment for running itself in
# the sandbox - not by default. We configure it to use a relocated store.
preCheck = ''
# nix needs a home directory
export HOME="$(mktemp -d $TMPDIR/home.XXXXXX)"
# configure a relocated store
store_data=$(mktemp -d $TMPDIR/store-data.XXXXXX)
export NIX_REMOTE="$store_data"
export NIX_BUILD_HOOK=
export NIX_CONF_DIR=$store_data/etc
export NIX_LOCALSTATE_DIR=$store_data/nix/var
export NIX_LOG_DIR=$store_data/nix/var/log/nix
export NIX_STATE_DIR=$store_data/nix/var/nix
echo "Configuring relocated store at $NIX_REMOTE..."
# Init ahead of time, because concurrent initialization is flaky
${# Not using nativeBuildInputs because this should (hopefully) be
# the only place where we need a nix binary. Let's stay in control.
pkgs.buildPackages.nix}/bin/nix-store --init
echo "Store initialized."
'';
};
# NOTE: duplicated in flake.nix devShell
env = {