#!/usr/bin/env bash set -euo pipefail if [ "$#" -ne 1 ]; then echo "usage: $0 OUTPUT_ENV_FILE" >&2 exit 2 fi output=$1 pcdir=/tangled/workspace/.pc mkdir -p "$pcdir" # Nixery installs only outputsToInstall (typically out/bin), not dev # outputs. The dev outputs contain the .pc files that pkg-config needs. # Generate minimal .pc files pointing at the shared objects that are present # in the Nix store so Cargo can resolve Bevy's Linux system dependencies. gen_pc() { local pc_name="$1" lib_name="${2:-$1}" local dir for dir in /nix/store/*/lib; do if [ -f "$dir/lib${lib_name}.so" ]; then printf 'Name: %s\nDescription: %s\nVersion: 1.0\nLibs: -L%s -l%s\n' \ "$pc_name" "$pc_name" "$dir" "$lib_name" > "$pcdir/${pc_name}.pc" echo "generated ${pc_name}.pc -> $dir" return fi done echo "WARNING: lib${lib_name}.so not found in nix store" >&2 } gen_pc wayland-client gen_pc wayland-server gen_pc wayland-cursor gen_pc xkbcommon gen_pc alsa asound gen_pc libudev udev pkg_config_path=$pcdir for dir in /nix/store/*/lib/pkgconfig /nix/store/*/share/pkgconfig; do [ -d "$dir" ] && pkg_config_path="$pkg_config_path:$dir" done printf 'export PKG_CONFIG_PATH="%s"\n' "$pkg_config_path" > "$output" echo "pkg-config setup complete"