2024-05-28 19:43:04 +03:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2020-07-17 22:50:53 +03:00
|
|
|
source common.sh
|
|
|
|
|
2024-06-04 22:23:17 +03:00
|
|
|
echo example > "$TEST_ROOT"/example.txt
|
|
|
|
mkdir -p "$TEST_ROOT/x"
|
2020-07-17 22:50:53 +03:00
|
|
|
|
2024-03-29 14:19:36 +02:00
|
|
|
export NIX_STORE_DIR=/nix2/store
|
2020-07-17 22:50:53 +03:00
|
|
|
|
2024-06-04 22:23:17 +03:00
|
|
|
CORRECT_PATH=$(cd "$TEST_ROOT" && nix-store --store ./x --add example.txt)
|
2020-07-17 22:50:53 +03:00
|
|
|
|
2024-03-29 14:19:36 +02:00
|
|
|
[[ $CORRECT_PATH =~ ^/nix2/store/.*-example.txt$ ]]
|
2020-07-17 22:50:53 +03:00
|
|
|
|
2024-06-04 22:23:17 +03:00
|
|
|
PATH1=$(cd "$TEST_ROOT" && nix path-info --store ./x "$CORRECT_PATH")
|
|
|
|
[ "$CORRECT_PATH" == "$PATH1" ]
|
2020-07-17 22:50:53 +03:00
|
|
|
|
2024-06-04 22:23:17 +03:00
|
|
|
PATH2=$(nix path-info --store "$TEST_ROOT/x" "$CORRECT_PATH")
|
|
|
|
[ "$CORRECT_PATH" == "$PATH2" ]
|
2020-07-17 22:50:53 +03:00
|
|
|
|
2024-06-04 22:23:17 +03:00
|
|
|
PATH3=$(nix path-info --store "local?root=$TEST_ROOT/x" "$CORRECT_PATH")
|
|
|
|
[ "$CORRECT_PATH" == "$PATH3" ]
|
2022-12-26 22:21:08 +02:00
|
|
|
|
2023-10-17 21:44:11 +03:00
|
|
|
# Ensure store info trusted works with local store
|
2024-06-04 22:23:17 +03:00
|
|
|
nix --store "$TEST_ROOT/x" store info --json | jq -e '.trusted'
|
2024-03-29 14:19:36 +02:00
|
|
|
|
|
|
|
# Test building in a chroot store.
|
|
|
|
if canUseSandbox; then
|
|
|
|
|
|
|
|
flakeDir=$TEST_ROOT/flake
|
2024-06-04 22:23:17 +03:00
|
|
|
mkdir -p "$flakeDir"
|
2024-03-29 14:19:36 +02:00
|
|
|
|
2024-06-04 22:23:17 +03:00
|
|
|
cat > "$flakeDir"/flake.nix <<EOF
|
2024-03-29 14:19:36 +02:00
|
|
|
{
|
|
|
|
outputs = inputs: rec {
|
|
|
|
packages.$system.default = import ./simple.nix;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
|
2024-11-01 15:56:50 +02:00
|
|
|
cp simple.nix shell.nix simple.builder.sh "${config_nix}" "$flakeDir/"
|
|
|
|
|
2024-11-07 14:46:37 +02:00
|
|
|
# `config.nix` cannot be gotten via build dir / env var (runs afoul pure eval). Instead get from flake.
|
|
|
|
removeBuildDirRef "$flakeDir"/*.nix
|
|
|
|
|
2024-06-16 13:51:46 +03:00
|
|
|
TODO_NixOS
|
|
|
|
|
2024-06-04 22:23:17 +03:00
|
|
|
outPath=$(nix build --print-out-paths --no-link --sandbox-paths '/nix? /bin? /lib? /lib64? /usr?' --store "$TEST_ROOT/x" path:"$flakeDir")
|
2024-03-29 14:19:36 +02:00
|
|
|
|
|
|
|
[[ $outPath =~ ^/nix2/store/.*-simple$ ]]
|
|
|
|
|
2024-06-04 22:23:17 +03:00
|
|
|
base=$(basename "$outPath")
|
|
|
|
[[ $(cat "$TEST_ROOT"/x/nix/store/"$base"/hello) = 'Hello World!' ]]
|
2024-03-29 14:19:36 +02:00
|
|
|
fi
|