{ stdenv , lib , mkXPlaneAddon , impureSrcPath ? "/home/games/xplane-scenery/simHeaven_X-World_Asia" # Disable to improve frame rate , enableDetails ? true # dito , enableExtras ? true # Replace scenery objects with null-objects that are covered by ortho scenery , useOrtho ? true # Replace default tiles for regions with poor OSM data quality (e.g. remote forests not showing) # example: [ "+38+001" "+71-009" ] , replaceTiles ? [ ] }: let inherit (lib) concatStringsSep optional; dirName = "simHeaven_X-World_Asia"; linkDirs = concatStringsSep " " ([ #"${dirName}-0-exclusions" "${dirName}-1-vfr" "${dirName}-2-regions" "${dirName}-5-footprints" "${dirName}-6-scenery" "${dirName}-7-forests" "${dirName}-8-network" ] ++ optional enableDetails "${dirName}-3-details" ++ optional enableExtras "${dirName}-4-extras"); tiles = concatStringsSep " " replaceTiles; in mkXPlaneAddon { pname = "x-world-asia"; version = "2.1-fix"; src = ""; buildCommand = '' mkdir -p "$out" touch "$out/installed" ''; passthru = { build = ""; prepare = '' test -d "${impureSrcPath}" for f in ${linkDirs} ; do mkdir "$XPLANEPATH/Custom Scenery/$f" for j in "${impureSrcPath}/$f"/* ; do ln -s "$j" "$XPLANEPATH/Custom Scenery/$f/$(basename "$j")" done done if [ "${toString useOrtho}" = 1 ]; then f="$XPLANEPATH/Custom Scenery/${dirName}-6-scenery/library.txt" rm "$f" ln -s "${impureSrcPath}/${dirName}-6-scenery/library - orthos.txt" "$f" fi # In case we want to replace some tiles, link every tile indivdually if [ -n "${tiles}" ]; then rm "$XPLANEPATH/Custom Scenery/${dirName}-7-forests/Earth nav data" for f in "${impureSrcPath}/${dirName}-7-forests/Earth nav data"/* ; do mkdir -p "$XPLANEPATH/Custom Scenery/${dirName}-7-forests/Earth nav data/$(basename "$f")" for k in "$f"/* ; do ln -s "$k" "$XPLANEPATH/Custom Scenery/${dirName}-7-forests/Earth nav data/$(basename "$f")" done done for f in ${tiles} ; do # bash-ism, transform +HH+LLL -> +H0+LL0 d=''${f:0:2}0''${f:3:3}0 s="${impureSrcPath}/${dirName}-7-forests/Earth nav data - osm+autogen/$d/$f.dsf" t="$XPLANEPATH/Custom Scenery/${dirName}-7-forests/Earth nav data/$d/$f.dsf" if [ -e "$s" ]; then rm "$t" ln -s "$s" "$t" else printf "Warning: Replacement tile not found %s\n" "$f" >&2 fi done fi # Update scenery_packs.ini ( cd "$XPLANEPATH" k= sed -i -e '/^SCENERY_PACK Custom Scenery\/${dirName}-.*$/d' 'Custom Scenery/scenery_packs.ini' sed -i -e "/^SCENERY_PACK Custom Scenery\/simHeaven_X-World_Vegetation_Library/i\ $(for f in ${linkDirs} ; do printf "''${k}SCENERY_PACK Custom Scenery/%s/" "$f" k='\\n' done)" 'Custom Scenery/scenery_packs.ini' ) ''; revert = '' for f in ${linkDirs} ; do rm -r "$XPLANEPATH/Custom Scenery/$f" done ''; }; }