{ pkgs ? import { config.allowUnfree = true; }, }: let androidSdk = pkgs.androidenv.composeAndroidPackages { buildToolsVersions = [ "35.0.0" ]; platformVersions = [ "35" ]; abiVersions = [ "x86_64" ]; includeEmulator = false; includeSystemImages = false; includeNDK = false; }; in pkgs.mkShell { buildInputs = with pkgs; [ jdk21 kotlin gradle androidSdk.androidsdk android-tools libGL libX11 libXcursor libXext libXi libXrender fontconfig libxkbcommon ]; shellHook = '' ln -sfn ${pkgs.jdk21}/lib/openjdk .jdk export ANDROID_HOME="${androidSdk.androidsdk}/libexec/android-sdk" export ANDROID_SDK_ROOT="${androidSdk.androidsdk}/libexec/android-sdk" export GRADLE_OPTS="-Dorg.gradle.java.installations.paths=${pkgs.jdk21}/lib/openjdk" export PATH="$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools/bin:$JAVA_HOME/bin:$PATH" export LD_LIBRARY_PATH=${ pkgs.lib.makeLibraryPath [ pkgs.libGL pkgs.libX11 pkgs.libXcursor pkgs.libXext pkgs.libXi pkgs.libXrender pkgs.fontconfig pkgs.libxkbcommon ] } echo "sdk.dir=$ANDROID_HOME" > local.properties echo "=== UNO KMP Dev Shell ===" echo "JDK: $(java -version 2>&1 | head -1)" echo "Kotlin: $(kotlin -version 2>&1 | head -1)" echo "Gradle: $(gradle --version 2>&1 | grep 'Gradle')" echo "Android: $ANDROID_HOME" echo "========================" ''; }