2 description = "Dev environment for crush-android (Kotlin / Jetpack Compose client for the crush server API)";
5 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6 flake-utils.url = "github:numtide/flake-utils";
9 outputs = { self, nixpkgs, flake-utils }:
10 flake-utils.lib.eachDefaultSystem (system:
12 # Versions kept in sync with the Gradle project (compileSdk / build-tools).
13 platformVersion = "37";
14 buildToolsVersion = "37.0.0";
16 pkgs = import nixpkgs {
19 allowUnfree = true; # Android SDK is unfree
20 android_sdk.accept_license = true;
24 android = pkgs.androidenv.composeAndroidPackages {
25 platformVersions = [ platformVersion ];
26 buildToolsVersions = [ buildToolsVersion ];
27 cmdLineToolsVersion = "latest";
29 # Flip these on if the host has /dev/kvm and you want an AVD.
30 includeEmulator = false;
31 includeSystemImages = false;
32 systemImageTypes = [ "google_apis" ];
33 abiVersions = [ "x86_64" ];
38 sdk = android.androidsdk;
39 sdkRoot = "${sdk}/libexec/android-sdk";
41 # Gradle's bundled aapt2 binary is dynamically linked against a loader
42 # path that does not exist on NixOS, so it segfaults. Point Gradle and
43 # Android Studio at the Nix-built aapt2 instead.
44 aapt2Path = "${sdkRoot}/build-tools/${buildToolsVersion}/aapt2";
46 devShells.default = pkgs.mkShell {
53 ANDROID_HOME = sdkRoot;
54 ANDROID_SDK_ROOT = sdkRoot;
55 JAVA_HOME = "${pkgs.jdk17}";
57 # Override Gradle's bundled aapt2 (see note above).
58 GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${aapt2Path}";
61 echo "crush-android dev shell"
62 echo " JDK: $(java -version 2>&1 | head -1)"
63 echo " ANDROID_HOME: $ANDROID_HOME"
64 echo " aapt2: ${aapt2Path}"
66 echo "Build: ./gradlew assembleDebug"
67 echo "Device: adb devices"
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list