diff --git a/pkgs/build-support/trivial-builders/default.nix b/pkgs/build-support/trivial-builders/default.nix index 4c7a35e15bb6..33ff9598ed3b 100644 --- a/pkgs/build-support/trivial-builders/default.nix +++ b/pkgs/build-support/trivial-builders/default.nix @@ -559,7 +559,10 @@ rec { paths = mapPaths (path: "${path}${stripPrefix}") paths; buildCommand = '' mkdir -p $out - for i in $(cat $pathsPath); do + if [ -n "''${pathsPath:-}" ] && [ -f "$pathsPath" ]; then + mapfile -d " " -t paths < "$pathsPath" + fi + for i in "''${paths[@]}"; do ${optionalString (!failOnMissing) "if test -d $i; then "}${lndir}/bin/lndir -silent $i $out${ optionalString (!failOnMissing) "; fi" } diff --git a/pkgs/build-support/trivial-builders/test/symlink-join.nix b/pkgs/build-support/trivial-builders/test/symlink-join.nix index d50581d3f38a..4750d9680d4a 100644 --- a/pkgs/build-support/trivial-builders/test/symlink-join.nix +++ b/pkgs/build-support/trivial-builders/test/symlink-join.nix @@ -55,6 +55,24 @@ in ''; }; + symlinkJoin-structured-attrs = testEqualContents { + assertion = "symlinkJoin-structured-attrs"; + actual = symlinkJoin { + __structuredAttrs = true; + name = "symlinkJoin-structured-attrs"; + paths = [ + foo + bar + baz + ]; + }; + expected = runCommand "symlinkJoin-foo-bar-baz" { } '' + mkdir -p $out/{var/lib/arbitrary,etc/test.d} + ln -s {${foo},${bar}}/etc/test.d/* $out/etc/test.d + ln -s ${baz}/var/lib/arbitrary/baz $out/var/lib/arbitrary/ + ''; + }; + symlinkJoin-strip-paths = testEqualContents { assertion = "symlinkJoin-strip-paths"; actual = symlinkJoin {