git.iko.soy/opencode-android
on bc9e479 help sign in
opencode-android/flake.nix
70 lines 2.2 kB history raw
1{
2 description = "Dev environment for opencode-android (Crux Rust core + Kotlin / Jetpack Compose shell)";
4 inputs = {
5 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6 flake-utils.url = "github:numtide/flake-utils";
7 };
9 outputs = { self, nixpkgs, flake-utils }:
10 flake-utils.lib.eachDefaultSystem (system:
11 let
12 # Versions kept in sync with the Gradle project (compileSdk / build-tools).
13 platformVersion = "36";
14 buildToolsVersion = "36.0.0";
16 pkgs = import nixpkgs {
17 inherit system;
18 config = {
19 allowUnfree = true; # Android SDK is unfree
20 android_sdk.accept_license = true;
21 };
22 };
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" ];
34 includeNDK = false;
35 };
37 sdk = android.androidsdk;
38 sdkRoot = "${sdk}/libexec/android-sdk";
40 aapt2Path = "${sdkRoot}/build-tools/${buildToolsVersion}/aapt2";
41 in {
42 devShells.default = pkgs.mkShell {
43 buildInputs = [
44 pkgs.jdk17
45 pkgs.gradle
46 pkgs.rustc
47 pkgs.cargo
48 sdk
49 ];
51 ANDROID_HOME = sdkRoot;
52 ANDROID_SDK_ROOT = sdkRoot;
53 JAVA_HOME = "${pkgs.jdk17}";
55 GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${aapt2Path}";
57 shellHook = ''
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)"
63 echo ""
64 echo "Build: ./gradlew assembleDebug"
65 echo "Core: cd shared && cargo test"
66 echo "Device: adb devices"
67 '';
68 };
69 });