x-plane updates
parent
0c87b9bcbb
commit
04b4442abb
|
@ -9,6 +9,7 @@ let
|
|||
xPlaneEnv = callPackage ./x-plane { xplanePathStr = "/home/games/xplane";
|
||||
addons = [ headshake beautifulRoads samBasic samGlobalTrees flyWithLua vividSky airportEnvHD betterLights extendedNightLights toLissA321 ]; };
|
||||
xPlaneSDK = callPackage ./x-plane/sdk.nix {};
|
||||
ortho4xp = callPackage ./ortho4xp.nix {};
|
||||
|
||||
airportEnvHD = callPackage ./x-plane/airport-env-hd.nix {};
|
||||
beautifulRoads = callPackage ./x-plane/beautiful-roads.nix {};
|
||||
|
|
11
flake.lock
11
flake.lock
|
@ -2,12 +2,11 @@
|
|||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1625176478,
|
||||
"narHash": "sha256-s1RTYNKw7ySyqrZjns9Cq+Nnjpp75ePgL06pgcbIpoA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "21b696caf392ad6fa513caf3327d0aa0430ffb72",
|
||||
"type": "github"
|
||||
"lastModified": 1649541905,
|
||||
"narHash": "sha256-e8uePwD302weU4saoLg5uhb0yI5ZbHl/L49ncKejh5o=",
|
||||
"path": "/nix/store/bzydgk2vb1lh6zkf1x77r4l0r0r99kd6-source",
|
||||
"rev": "db81927829becddb57db2b3b3e34301ed4af8d0a",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
|
|
|
@ -9,6 +9,6 @@
|
|||
outputs = { nixpkgs, ... }: rec {
|
||||
overlay = import ./default.nix;
|
||||
|
||||
legacyPackages."x86_64-linux" = import nixpkgs { system = "x86_64-linux"; overlays = [ overlay ]; };
|
||||
legacyPackages."x86_64-linux" = import nixpkgs { system = "x86_64-linux"; overlays = [ overlay ]; config.allowUnfree = true; };
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
{ lib, fetchFromGitHub
|
||||
, python3Packages, p7zip, nvidia-texture-tools, gdal, freeglut }:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "Ortho4XP";
|
||||
version = "1.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "e20f0f4d7a5cb976bfdca87add265034179c9b9f";
|
||||
hash = "sha256-WUlfhRBq4j1Eno+iMWKjjmtjpmUKvXaV2/5BOP5CoOU=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
requests pyproj numpy gdal shapely Rtree p7zip
|
||||
nvidia-texture-tools freeglut pillow-simd gdal tkinter ];
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
{ stdenv, mkXPlaneAddon
|
||||
{ stdenv, lib, mkXPlaneAddon
|
||||
, europeanNumbers ? false }:
|
||||
|
||||
mkXPlaneAddon {
|
||||
|
@ -13,7 +13,7 @@ mkXPlaneAddon {
|
|||
unzip $src
|
||||
cp -r "Part 1 "*/* $out/Resources/bitmaps/runways
|
||||
cp -r "Part 2"*/* "$out/Custom Scenery"
|
||||
'' + (stdenv.lib.optionalString europeanNumbers ''
|
||||
'' + (lib.optionalString europeanNumbers ''
|
||||
cp -r "Part 1.5"*/* $out/Resources/bitmaps/runways
|
||||
'');
|
||||
|
||||
|
|
|
@ -18,20 +18,36 @@
|
|||
# attribute set to null.
|
||||
|
||||
|
||||
{ stdenv, writeScript, buildFHSUserEnv
|
||||
, xplanePathStr
|
||||
{ stdenv, writeScript, buildFHSUserEnv, lib
|
||||
, xplanePathStr, unzip
|
||||
, addons ? []}:
|
||||
|
||||
let
|
||||
inherit (stdenv.lib) concatMapStrings optionalString unique;
|
||||
inherit (lib) concatMapStrings optionalString unique;
|
||||
runScript = writeScript "x-plane-script" ''
|
||||
#!${stdenv.shell}
|
||||
usage() {
|
||||
cat <<EOF >&2
|
||||
x-plane-env OPT
|
||||
X-Plane run X-Plane (default)
|
||||
Airfoil run Airfoil Maker
|
||||
Plane run Plane Maker
|
||||
Installer run Installer
|
||||
SHELL run bash inside FHS environment
|
||||
prepare prepare all currently activated addons
|
||||
revert [ADDON]... remove modifications from named addons
|
||||
navdata FILE [OLDCYCLE] update navigation DB
|
||||
/abs/path [ARG]... run /abs/path inside FHS environment
|
||||
rel/path [ARG]... run $XPLANEPATH/rel/path inside FHS environment
|
||||
EOF
|
||||
}
|
||||
sys=${stdenv.targetPlatform.system}
|
||||
sys=''${sys%-linux}
|
||||
bin=$1
|
||||
: ''${XPLANEPATH:=${xplanePathStr}}
|
||||
export XPLANEPATH
|
||||
case "$bin" in
|
||||
--help) usage; exit ;;
|
||||
X-Plane) exec "''${XPLANEPATH}/X-Plane-$sys" ;;
|
||||
Airfoil*) exec "''${XPLANEPATH}/Airfoil Maker-$sys" ;;
|
||||
Plane*) exec "''${XPLANEPATH}/Plane Maker-$sys" ;;
|
||||
|
@ -40,6 +56,7 @@ let
|
|||
SHELL) exec "bash" ;;
|
||||
prepare) exec ${prepareScript} ;;
|
||||
revert) shift; exec ${revertScript} "$@" ;;
|
||||
navdata) shift; exec ${navdbScript} "$@" ;;
|
||||
/*) exec "$@" ;;
|
||||
*) shift; exec "''${XPLANEPATH}/$bin" "$@" ;;
|
||||
esac
|
||||
|
@ -68,7 +85,7 @@ let
|
|||
${addon.passthru.prepare}
|
||||
'' + (if (addon.passthru ? revert) then ''
|
||||
cat <<'EOF' >"$XPLANEPATH/.addons/revert-${addon.pname}"
|
||||
#!${stdenv.shell}
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
${addon.passthru.revert}
|
||||
rm $0
|
||||
|
@ -98,6 +115,57 @@ let
|
|||
fi
|
||||
'';
|
||||
|
||||
navdbScript = writeScript "update-navdata" ''
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
: ''${XPLANEPATH:=${xplanePathStr}}
|
||||
|
||||
[ $# -ne 0 ] || {
|
||||
printf "usage: update-navdata FILE [OLDCYCLE]\n\nFILE xplane11_native_CYCL.zip file\nOLDCYCLE old cycle ID for backup (default auto detect)\n" >&2
|
||||
exit 1; }
|
||||
|
||||
if [ $# -ge 2 ]; then
|
||||
oldcycle=$2
|
||||
elif [ -e "$XPLANEPATH/Custom Data/cycle_info.txt" ]; then
|
||||
oldcycle=$(head -n1 "$XPLANEPATH/Custom Data/cycle_info.txt" | sed -E -n -e "s/^AIRAC cycle[ :]+([0-9]+)\r$/\1/p")
|
||||
[ -n "$oldcycle" ] || { printf "Unable to determine old AIRAC cycle\n" >&2; exit 1; }
|
||||
fi
|
||||
f=$1
|
||||
[ -e "$f" ] || { printf "No such file or directory\n" >&2; exit 1; }
|
||||
cycle=''${1##*_}
|
||||
cycle=''${cycle%.zip}
|
||||
newpath="$XPLANEPATH/Custom Data AIRAC$cycle"
|
||||
|
||||
if [ ! -h "$XPLANEPATH/Custom Data" ]; then
|
||||
mv "$XPLANEPATH/Custom Data" "$XPLANEPATH/Custom Data AIRAC$oldcycle"
|
||||
fi
|
||||
|
||||
if [ -d "$newpath" ]; then
|
||||
rm -rf "$newpath"
|
||||
fi
|
||||
|
||||
${lib.getBin unzip}/bin/unzip -d "$newpath" "$f"
|
||||
cat <<EOF >"$newpath/Readme.txt"
|
||||
Place newer navigational data for the global database in THIS folder.
|
||||
If you want to replace any of X-Plane's
|
||||
earth_nav.dat
|
||||
earth_awy.dat
|
||||
earth_fix.dat
|
||||
|
||||
CIFP/*
|
||||
with newer data, then place them HERE IN THIS FOLDER to avoid conflicts with the X-Plane updater.
|
||||
|
||||
Note that this database is also used by X-Plane’s GPS and previously needed files in other subfolders are now ignored.
|
||||
|
||||
|
||||
Also, you can place the FAACIFP18 file here, which you can get from the FAA website: https://www.faa.gov/air_traffic/flight_info/aeronav/digital_products/cifp/
|
||||
If the file FAACIFP18 is found in this folder, X-Plane will load instrument flight procedures from this file.
|
||||
EOF
|
||||
rm "$XPLANEPATH/Custom Data"
|
||||
ln -sf "$newpath" "$XPLANEPATH/Custom Data"
|
||||
'';
|
||||
|
||||
in buildFHSUserEnv rec {
|
||||
name = "x-plane-env";
|
||||
passthru = { inherit addons; };
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ stdenv, cmake, fetchurl, fetchFromGitHub, unzip, xPlaneSDK }:
|
||||
{ stdenv, lib, cmake, fetchurl, fetchFromGitHub, unzip, xPlaneSDK }:
|
||||
let
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "headshake";
|
||||
|
@ -38,7 +38,7 @@ in stdenv.mkDerivation rec {
|
|||
|
||||
meta = {
|
||||
description = "Headshake plugin for X-Plane 11";
|
||||
license = stdenv.lib.licenses.gpl3;
|
||||
maintainer = [ stdenv.lib.maintainers.spacefrogg ];
|
||||
license = lib.licenses.gpl3;
|
||||
maintainer = [ lib.maintainers.spacefrogg ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ stdenv, requireFile, openssl, qt5, p7zip, unzip }:
|
||||
{ stdenv, lib, requireFile, openssl, qt5, p7zip, unzip }:
|
||||
|
||||
let
|
||||
fname = "LINUX_-_SAM_Suite.zip";
|
||||
|
@ -22,7 +22,7 @@ in qt5.mkDerivation {
|
|||
nativeBuildInputs = [ unzip ];
|
||||
phases = [ "buildPhase" "patchPhase" "configurePhase" "fixupPhase" ];
|
||||
nativeBuildInptus = [ unzip ];
|
||||
libPath = stdenv.lib.makeLibraryPath [ qt5.qtbase p7zip openssl stdenv.cc.cc ];
|
||||
libPath = lib.makeLibraryPath [ qt5.qtbase p7zip openssl stdenv.cc.cc ];
|
||||
buildPhase = ''
|
||||
unzip $src others/samsuite.zip
|
||||
unzip others/samsuite.zip
|
||||
|
@ -31,6 +31,6 @@ in qt5.mkDerivation {
|
|||
cp usr/bin/SamSuite $out/bin
|
||||
cp -r usr/share $out
|
||||
patchelf --set-rpath "$libPath" --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $out/bin/SamSuite
|
||||
wrapProgram $out/bin/SamSuite --prefix PATH : ${stdenv.lib.getBin p7zip}/bin
|
||||
wrapProgram $out/bin/SamSuite --prefix PATH : ${lib.getBin p7zip}/bin
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{ stdenv, mkXPlaneAddon, xPlaneEnv }:
|
||||
{ stdenv, lib, mkXPlaneAddon, xPlaneEnv }:
|
||||
|
||||
let
|
||||
inherit (stdenv.lib) findFirst optionalString;
|
||||
inherit (lib) findFirst optionalString;
|
||||
inherit (builtins) isDerivation;
|
||||
globalTrees = findFirst (k: k.pname == "sam-global-trees") false xPlaneEnv.addons;
|
||||
|
||||
|
|
Loading…
Reference in New Issue