{ pkgs, ... }:


let
  buildToolsVersion = "33.0.2";
  androidComposition = pkgs.unstable.androidenv.composeAndroidPackages {
    platformToolsVersion = "34.0.5";
    buildToolsVersions = [ buildToolsVersion ];
    includeEmulator = false;
    emulatorVersion = "34.1.9";
    platformVersions = [ "29" "30" "33" ];
    includeSources = false;
    includeSystemImages = false;
    systemImageTypes = [ "google_apis_playstore" ];
    abiVersions = [ "armeabi-v7a" "arm64-v8a" ];
    cmakeVersions = [ "3.10.2" ];
    includeNDK = true;
    ndkVersions = [ "23.2.8568313" ];
    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.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"
  '';
}