2 description = "Dev environment for opencode-android (Crux Rust core + Kotlin / Jetpack Compose shell)";
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 = "36";
14 buildToolsVersion = "36.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 includeEmulator = false;
30 includeSystemImages = false;
31 systemImageTypes = [ "google_apis" ];
32 abiVersions = [ "x86_64" ];
37 sdk = android.androidsdk;
38 sdkRoot = "${sdk}/libexec/android-sdk";
40 aapt2Path = "${sdkRoot}/build-tools/${buildToolsVersion}/aapt2";
42 devShells.default = pkgs.mkShell {
51 ANDROID_HOME = sdkRoot;
52 ANDROID_SDK_ROOT = sdkRoot;
53 JAVA_HOME = "${pkgs.jdk17}";
55 GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${aapt2Path}";
58 echo "opencode-android dev shell"
59 echo " JDK: $(java -version 2>&1 | head -1)"
60 echo " ANDROID_HOME: $ANDROID_HOME"
61 echo " aapt2: ${aapt2Path}"
62 echo " Rust: $(rustc --version)"
64 echo "Build: ./gradlew assembleDebug"
65 echo "Core: cd shared && cargo test"
66 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