diff --git a/bin/sf-from-source b/bin/sf-from-source index f60ba2d46..1e71b81cd 100755 --- a/bin/sf-from-source +++ b/bin/sf-from-source @@ -21,4 +21,17 @@ SF_SOURCE_ROOT=$(cd -- "$SCRIPT_DIR/.." &>/dev/null && pwd) export SF_BIN_PATH="$SCRIPT_DIR/sf-from-source" +# Native addon (forge_engine.node) links against libz / libstdc++ that are +# resolved automatically when run under node, but bun's loader doesn't +# inherit the same library search path under Nix. Prepend a Nix-store zlib +# (and stdc++ where present) so require('forge_engine.linux-x64.node') +# succeeds. No-op outside Nix (find returns nothing → empty prefix). +if [ -d /nix/store ]; then + _sf_libz_dir=$(find /nix/store -maxdepth 4 -path '*-zlib-*/lib/libz.so.1' -printf '%h\n' 2>/dev/null | head -1) + if [ -n "${_sf_libz_dir:-}" ]; then + export LD_LIBRARY_PATH="${_sf_libz_dir}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + fi + unset _sf_libz_dir +fi + exec bun run "$SF_SOURCE_ROOT/src/loader.ts" "$@"