{ pkgs ? import { config.allowUnfree = true; } }: let androidSdk = pkgs.androidenv.composeAndroidPackages { buildToolsVersions = [ "35.0.0" "36.0.0" ]; platformVersions = [ "35" "36" ]; abiVersions = [ "x86_64" ]; includeEmulator = true; includeSystemImages = true; systemImageTypes = [ "google_apis_playstore" ]; includeNDK = false; }; in pkgs.mkShell { buildInputs = with pkgs; [ # --- Java --- # jetbrains.jdk jdk21 # --- Kotlin --- kotlin gradle # kotlin-language-server # --- Android --- androidSdk.androidsdk android-tools # yarn # --- Web --- # yarn # nodejs_24 libGL xorg.libX11 xorg.libXcursor xorg.libXext xorg.libXi xorg.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 JAVA_HOME=${pkgs.jdk21} export JDK_PATH=${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.yarn # pkgs.nodejs_24 pkgs.libGL pkgs.xorg.libX11 pkgs.xorg.libXcursor pkgs.xorg.libXext pkgs.xorg.libXi pkgs.xorg.libXrender pkgs.fontconfig pkgs.libxkbcommon ]} echo "sdk.dir=$ANDROID_HOME" > local.properties echo "Kotlin Multiplatform Dev Environment Loaded!" ''; }