1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-12-11 03:21:03 +01:00
nix/tests/functional/import-from-derivation.nix
Eelco Dolstra c080c4ca56 builtins.path: Propagate references from derivation outputs
This restores compatibility with Nix 2.18, which behaved this
way. Note that this doesn't scan for the actually visible references.

Unlike in Nix 2.18, we only do this for paths with context, i.e. it
applies to `builtins.storePath "/nix/store/bla..."` but not
`"/nix/store/bla..."`. We don't want the latter because it shouldn't
matter whether a source file happens to be in the Nix store.
2025-12-08 19:16:44 +01:00

69 lines
1.5 KiB
Nix

with import <config>;
rec {
bar = mkDerivation {
name = "bar";
builder = builtins.toFile "builder.sh" ''
echo 'builtins.add 123 456' > $out
'';
};
value =
# Test that pathExists can check the existence of /nix/store paths
assert builtins.pathExists bar;
import bar;
result = mkDerivation {
name = "foo";
builder = builtins.toFile "builder.sh" ''
echo -n FOO${toString value} > $out
'';
};
addPath = mkDerivation {
name = "add-path";
src = builtins.filterSource (path: type: true) result;
builder = builtins.toFile "builder.sh" ''
echo -n BLA$(cat $src) > $out
'';
};
step1 = mkDerivation {
name = "step1";
buildCommand = ''
mkdir -p $out
echo 'foo' > $out/bla
'';
};
addPathExpr = mkDerivation {
name = "add-path";
inherit step1;
buildCommand = ''
mkdir -p $out
echo "builtins.path { path = \"$step1\"; sha256 = \"7ptL+pnrZXnSa5hwwB+2SXTLkcSb5264WGGokN8OXto=\"; }" > $out/default.nix
'';
};
importAddPathExpr = import addPathExpr;
symlink = mkDerivation {
name = "symlink";
buildCommand = ''
mkdir $out
echo hello world > $out/text
ln -s $out/text $out/symlink
ln -s ${step1} $out/symlink2
'';
};
pathFromDerivation = builtins.path {
name = "path-from-derivation";
path = "${symlink}/";
};
pathFromDerivation2 = builtins.path {
name = "path-from-derivation";
path = "${symlink}/text";
};
}