parent
64a92fe1b6
commit
9d875224a7
@ -0,0 +1,93 @@ |
||||
{ 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}-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 = "1.1"; |
||||
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 |
||||
''; |
||||
}; |
||||
} |
Loading…
Reference in new issue