matrix-android/flake.nix

60 lines
1.8 KiB
Nix

{
description = "Nix dev shell for building matrix-android from the CLI";
inputs = {
flake-utils.url = "github:numtide/flake-utils";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = { self, flake-utils, nixpkgs }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
config.android_sdk.accept_license = true;
};
androidComposition = pkgs.androidenv.composeAndroidPackages {
platformVersions = [ "31" "35" ];
buildToolsVersions = [ "30.0.2" "34.0.0" "35.0.0" ];
includeEmulator = false;
includeNDK = true;
includeSources = false;
includeSystemImages = false;
};
androidSdk = androidComposition.androidsdk;
androidSdkRoot = "${androidSdk}/libexec/android-sdk";
in
{
devShells.default = pkgs.mkShell {
packages = [
pkgs.gradle
pkgs.jdk17
androidSdk
];
ANDROID_HOME = androidSdkRoot;
ANDROID_SDK_ROOT = androidSdkRoot;
JAVA_HOME = pkgs.jdk17.home;
shellHook = ''
export ANDROID_USER_HOME="$PWD/.android"
export GRADLE_USER_HOME="$PWD/.gradle"
export PATH="$ANDROID_SDK_ROOT/platform-tools:$PATH"
export GRADLE_OPTS="-Dorg.gradle.project.android.aapt2FromMavenOverride=$ANDROID_SDK_ROOT/build-tools/35.0.0/aapt2"
cat > local.properties <<EOF
# Generated by nix develop.
sdk.dir=$ANDROID_SDK_ROOT
EOF
echo "matrix-android dev shell"
echo " JAVA_HOME=$JAVA_HOME"
echo " ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT"
echo " Build with: gradle assembleDebug"
'';
};
});
}