57aa0ab57b
AGP 8.7.3 reads android.aapt2FromMavenOverride via providers.gradleProperty() which only reads gradle.properties files, not JVM system properties set via GRADLE_OPTS -D. The shellHook rewrites the sentinel value on every nix develop so the correct nix store path is always present before gradle runs.
70 lines
2.3 KiB
Nix
70 lines
2.3 KiB
Nix
{
|
|
# android-webview-kiosk — Android TV fullscreen WebView kiosk showing a
|
|
# hardcoded Grafana dashboard, remote-launched via Sony Bravia IP control.
|
|
#
|
|
# Deviation from lab Go template: this flake provides a DEV SHELL ONLY.
|
|
# Gradle fetches Maven deps from the network, so the APK is built impurely:
|
|
# nix develop --command gradle :app:assembleRelease
|
|
# There is no `nix build` output and no container/push pipeline.
|
|
description = "Android TV fullscreen WebView kiosk for the Grafana house dashboard";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/release-25.11";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
};
|
|
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs,
|
|
flake-utils,
|
|
}:
|
|
flake-utils.lib.eachDefaultSystem (
|
|
system:
|
|
let
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
config = {
|
|
allowUnfree = true; # Android SDK
|
|
android_sdk.accept_license = true;
|
|
};
|
|
};
|
|
|
|
buildToolsVersion = "34.0.0";
|
|
|
|
androidComposition = pkgs.androidenv.composeAndroidPackages {
|
|
platformVersions = [ "34" ];
|
|
buildToolsVersions = [ buildToolsVersion ];
|
|
includeEmulator = false;
|
|
includeSystemImages = false;
|
|
includeNDK = false;
|
|
};
|
|
androidSdk = androidComposition.androidsdk;
|
|
sdkRoot = "${androidSdk}/libexec/android-sdk";
|
|
in
|
|
{
|
|
devShells.default = pkgs.mkShell {
|
|
packages = [
|
|
androidSdk
|
|
pkgs.jdk17
|
|
pkgs.gradle
|
|
pkgs.imagemagick # banner/icon generation
|
|
pkgs.android-tools # adb for sideloading
|
|
];
|
|
|
|
ANDROID_HOME = sdkRoot;
|
|
ANDROID_SDK_ROOT = sdkRoot;
|
|
|
|
# NixOS gotcha: AGP downloads a dynamically-linked aapt2 from Maven
|
|
# that can't run on NixOS. AGP reads the override from gradle.properties
|
|
# as a project property (not a JVM system property), so GRADLE_OPTS -D
|
|
# flags don't work. The shellHook writes the correct nix store path
|
|
# directly into gradle.properties so providers.gradleProperty() finds it.
|
|
shellHook = ''
|
|
sed -i "s|android.aapt2FromMavenOverride=.*|android.aapt2FromMavenOverride=${sdkRoot}/build-tools/${buildToolsVersion}/aapt2|" gradle.properties
|
|
'';
|
|
};
|
|
}
|
|
);
|
|
}
|