{ description = "Android dev environment."; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; }; outputs = { self, nixpkgs } @inputs: let buildTools = "31.0.0"; jdk = pkgs.jdk11; lib = nixpkgs.lib; system = "x86_64-linux"; androidSdk = androidComposition.androidsdk; pkgs = import nixpkgs { system = system; config = { allowUnfree = true; android_sdk.accept_license = true; }; }; androidComposition = pkgs.androidenv.composeAndroidPackages { cmdLineToolsVersion = "8.0"; includeEmulator = false; includeNDK = false; includeSources = false; includeSystemImages = false; platformToolsVersion = "34.0.5"; toolsVersion = "26.1.1"; useGoogleAPIs = false; useGoogleTVAddOns = false; abiVersions = [ "arm64-v8a" "armeabi-v7a" ]; buildToolsVersions = [ buildTools ]; platformVersions = [ "31" ]; # cmakeVersions = [ "3.10.2" ]; # emulatorVersion = "30.3.4"; # includeExtras = [ "extras;google;gcm" ]; # ndkVersions = ["22.0.7026061"]; # systemImageTypes = [ "google_apis_playstore" ]; }; in { devShells.${system} = { default = pkgs.mkShell rec { nativeBuildInputs = with pkgs; [ android-tools androidSdk glibc gnumake jdk ]; buildInputs = with pkgs; [ ]; ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk/"; GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride = ${androidSdk}/libexec/android-sdk/build-tools/${buildTools}/aapt2"; JAVA_HOME = "${jdk}"; LD_LIBRARY_PATH = "${lib.makeLibraryPath buildInputs}"; SOURCE_DATE_EPOCH = "${toString self.lastModified}"; }; }; }; }