1{ 2 deployAndroidPackage, 3 lib, 4 package, 5 autoPatchelfHook, 6 makeWrapper, 7 os, 8 arch, 9 pkgs, 10 stdenv, 11 postInstall, 12 meta, 13}: 14 15deployAndroidPackage { 16 name = "androidsdk"; 17 inherit package os arch; 18 nativeBuildInputs = [ 19 makeWrapper 20 ] 21 ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]; 22 23 patchInstructions = '' 24 ${lib.optionalString (os == "linux") '' 25 # Auto patch all binaries 26 autoPatchelf . 27 ''} 28 29 # Strip double dots from the root path 30 export ANDROID_SDK_ROOT="$out/libexec/android-sdk" 31 32 # Wrap all scripts that require JAVA_HOME 33 find $ANDROID_SDK_ROOT/${package.path}/bin -maxdepth 1 -type f -executable | while read program; do 34 if grep -q "JAVA_HOME" $program; then 35 wrapProgram $program --prefix PATH : ${pkgs.jdk17}/bin \ 36 --prefix ANDROID_SDK_ROOT : $ANDROID_SDK_ROOT 37 fi 38 done 39 40 # Wrap sdkmanager script 41 wrapProgram $ANDROID_SDK_ROOT/${package.path}/bin/sdkmanager \ 42 --prefix PATH : ${lib.makeBinPath [ pkgs.jdk17 ]} \ 43 --add-flags "--sdk_root=$ANDROID_SDK_ROOT" 44 45 # Patch all script shebangs 46 patchShebangs $ANDROID_SDK_ROOT/${package.path}/bin 47 48 cd $ANDROID_SDK_ROOT 49 ${postInstall} 50 ''; 51 52 inherit meta; 53}