Files

87 lines
2.6 KiB
Nix

{
description = "Gadgetbridge Android development environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
android-nixpkgs = {
url = "github:tadfisher/android-nixpkgs";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
self,
nixpkgs,
android-nixpkgs,
}:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
android-composition = android-nixpkgs.sdk.${system} (
sdkPkgs: with sdkPkgs; [
cmdline-tools-latest
build-tools-36-0-0
platform-tools
platforms-android-36
]
);
in
{
devShells.${system} = {
# Main development environment - simple shell with Android tools
default = pkgs.mkShell {
buildInputs = with pkgs; [
jdk21
android-composition
adb-sync
scrcpy
];
shellHook = ''
echo "🤖 Gadgetbridge development environment"
# Set JAVA_HOME for Gradle
export JAVA_HOME=${pkgs.jdk21}/lib/openjdk
# Set Android SDK path
export ANDROID_SDK_ROOT=${android-composition}/share/android-sdk
export ANDROID_HOME=$ANDROID_SDK_ROOT
# Add Android tools to PATH
export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools
export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_SDK_ROOT/build-tools/36.0.0
# Gradle configuration
export GRADLE_OPTS="-Dorg.gradle.daemon=false -Dorg.gradle.project.android.aapt2FromMavenOverride=$ANDROID_SDK_ROOT/build-tools/36.0.0/aapt2"
echo "Java version: $(java -version 2>&1 | head -n1)"
# Remove sdk.dir from local.properties if present, otherwise aidl
# will fail to run
if [ -f local.properties ]; then
sed -i -E '/^sdk\.dir=/d' local.properties
fi
echo "✅ Environment ready!"
echo "• JAVA_HOME: $JAVA_HOME"
echo "• ANDROID_SDK_ROOT: $ANDROID_SDK_ROOT"
echo "• Available commands: ./gradlew (alias), adb, aapt2"
echo ""
echo "🚀 Quick start:"
echo " ./gradlew assembleMainlineDebug # Build debug APK"
echo " ./gradlew installMainlineDebug # Install to connected device"
echo " ./gradlew test # Run tests"
echo " ./gradlew lint # Run lint checks"
'';
};
};
};
}