{ lib, apple-sdk, buildPackages, mkAppleDerivation, unifdef, }: let inherit (buildPackages) gnused python3; xnu = apple-sdk.sourceRelease "xnu"; in mkAppleDerivation (finalAttrs: { releaseName = "AvailabilityVersions"; patches = [ # Add support for setting an upper bound, which is needed by the `gen-headers` script. # It avoids having pre-process the DSL to remove unwanted versions. ./patches/0001-Support-setting-an-upper-bound-on-versions.patch ]; noCC = true; nativeBuildInputs = [ unifdef ]; buildPhase = '' runHook preBuild declare -a unifdef_sources=( os_availability.modulemap os_availability_private.modulemap ) unifdef -x2 -UBUILD_FOR_DRIVERKIT -m $(for x in "''${unifdef_sources[@]}"; do echo templates/$x; done) runHook postBuild ''; installPhase = '' runHook preInstall mkdir -p "$out/bin" "$out/libexec" "$out/share/availability" cp -r availability.dsl templates "$out/share/availability/" substitute availability "$out/libexec/availability" \ --replace-fail '/usr/bin/env python3' '${lib.getExe python3}' \ --replace-fail 'f"{os.path.abspath(os.path.dirname(sys.argv[0]))}/' "\"$out/share/availability/" chmod a+x "$out/libexec/availability" substitute ${xnu}/bsd/sys/make_symbol_aliasing.sh "$out/libexec/make_symbol_aliasing.sh" \ ${ if lib.versionOlder (lib.getVersion xnu) "6153.11.26" then ''--replace-fail "\''${SDKROOT}/usr/local/libexec/availability.pl" "$out/libexec/availability" \'' else ''--replace-fail "\''${SDKROOT}/\''${DRIVERKITROOT}/usr/local/libexec/availability.pl" "$out/libexec/availability" \'' } --replace-fail '--macosx' '--macosx --threshold $SDKROOT' chmod a+x "$out/libexec/make_symbol_aliasing.sh" cat <