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}