{ pkgs, ... }: let androidComposition = pkgs.unstable.androidenv.composeAndroidPackages { platformToolsVersion = "35.0.2"; buildToolsVersions = [ "33.0.2" "34.0.0" "35.0.1" ]; includeEmulator = true; emulatorVersion = "35.3.10"; platformVersions = [ "29" "33" "34" ]; includeSources = false; includeSystemImages = true; systemImageTypes = [ "google_apis_playstore" ]; abiVersions = [ "armeabi-v7a" "arm64-v8a" ]; cmakeVersions = [ "3.10.2" ]; includeNDK = true; ndkVersions = [ "27.0.12077973" ]; useGoogleAPIs = false; useGoogleTVAddOns = false; includeExtras = [ "extras;google;gcm" ]; }; in { # TODO: try to remove this. nixpkgs.config.allowUnfree = true; local.nix.allowUnfreePackages = [ "android-sdk-cmdline-tools" ]; programs.adb.enable = true; programs.java = { enable = true; package = pkgs.jdk17; }; nixpkgs.config.android_sdk.accept_license = true; environment.systemPackages = [ pkgs.unstable.androidenv.androidPkgs.platform-tools (pkgs.unstable.android-studio.withSdk androidComposition.androidsdk) ]; environment.variables = rec { ANDROID_SDK_ROOT = "${androidComposition.androidsdk}/libexec/android-sdk"; ANDROID_NDK_ROOT = "${ANDROID_SDK_ROOT}/ndk-bundle"; # Use the same buildToolsVersion here # GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/${buildToolsVersion}/aapt2"; # JAVA_HOME = pkgs.jdk17.home; }; services.udev.extraRules = '' SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev" ''; }