mirror of
https://github.com/NixOS/nix.git
synced 2025-12-11 03:21:03 +01:00
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.
69 lines
1.5 KiB
Nix
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";
|
|
};
|
|
}
|