Files
Morgan Jones 9c2f0302bf androidenv: ANDROID_SDK_ROOT -> ANDROID_HOME
Change the 'primary' env var to ANDROID_HOME.
Always export ANDROID_SDK_ROOT for compatibility.
2026-04-19 17:32:01 -07:00

56 lines
1.4 KiB
Nix

{
deployAndroidPackage,
lib,
package,
autoPatchelfHook,
makeWrapper,
os,
arch,
pkgs,
stdenv,
postInstall,
meta,
}:
deployAndroidPackage {
name = "androidsdk";
inherit package os arch;
nativeBuildInputs = [
makeWrapper
]
++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
patchInstructions = ''
${lib.optionalString (os == "linux") ''
# Auto patch all binaries
autoPatchelf .
''}
# Strip double dots from the root path
export ANDROID_HOME="$out/libexec/android-sdk"
# Wrap all scripts that require JAVA_HOME.
# Use ANDROID_SDK_ROOT as legacy compatibility but the "correct" way is ANDROID_HOME nowadays (2026+).
find "$ANDROID_HOME/${package.path}/bin" -maxdepth 1 -type f -executable | while read program; do
if grep -q "JAVA_HOME" "$program"; then
wrapProgram "$program" --prefix PATH : ${pkgs.jdk17}/bin \
--prefix ANDROID_HOME : "$ANDROID_HOME" \
--prefix ANDROID_SDK_ROOT : "$ANDROID_HOME"
fi
done
# Wrap sdkmanager script
wrapProgram "$ANDROID_HOME/${package.path}/bin/sdkmanager" \
--prefix PATH : ${lib.makeBinPath [ pkgs.jdk17 ]} \
--add-flags "--sdk_root=$ANDROID_HOME"
# Patch all script shebangs
patchShebangs "$ANDROID_HOME/${package.path}/bin"
cd "$ANDROID_HOME"
${postInstall}
'';
inherit meta;
}