mirror of
https://github.com/nix-community/nix-on-droid-app.git
synced 2025-11-08 11:36:11 +01:00
122 lines
3.8 KiB
Nix
122 lines
3.8 KiB
Nix
{
|
|
description = "A flake to build nix-on-droid apk";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
|
|
# gradle2nix only for buildGradlePackage
|
|
# lockFile generation in nix/deps-scripts.nix
|
|
gradle2nix.url = "github:tadfisher/gradle2nix/v2";
|
|
# android-nixpkgs.url = "github:tadfisher/android-nixpkgs/stable";
|
|
# android-nixpkgs.inputs.nixpkgs.follows = "nixpkgs";
|
|
# can't get it to work with ndk, hit https://github.com/tadfisher/android-nixpkgs/issues/113
|
|
};
|
|
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs,
|
|
gradle2nix,
|
|
...
|
|
}:
|
|
let
|
|
system = "x86_64-linux"; # TODO iter attrs over [ aarch64-darwin x86_64-darwin x86_64-linux]
|
|
inherit (nixpkgs) lib;
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
config.android_sdk.accept_license = true;
|
|
config.allowUnfree = true;
|
|
};
|
|
buildToolsVersion = "30.0.3";
|
|
aapt2buildToolsVersion = "33.0.2"; # fixes ERROR:AAPT: unknown option '--source-path'.
|
|
android = pkgs.androidenv.composeAndroidPackages {
|
|
includeNDK = true;
|
|
ndkVersions = [
|
|
"22.1.7171670"
|
|
"23.1.7779620"
|
|
# "21.1.6352462" # jitpack_ndk_version ?
|
|
];
|
|
platformVersions = [
|
|
"28"
|
|
"30"
|
|
];
|
|
buildToolsVersions = [
|
|
buildToolsVersion
|
|
aapt2buildToolsVersion
|
|
];
|
|
includeEmulator = false;
|
|
includeSystemImages = false;
|
|
};
|
|
jdk = pkgs.jdk11_headless;
|
|
# gradle = pkgs.gradle_7.unwrapped;
|
|
gradle = pkgs.callPackage (pkgs.gradleGen {
|
|
version = "7.5";
|
|
hash = "sha256-y4fyIsVYW9RoOK1Nt4RjpcXz0zbl4rmNx8DFhlJzUcI=";
|
|
defaultJava = jdk;
|
|
}) { };
|
|
|
|
# https://github.com/Cliquets/scrcpy/blob/main/flake.nix
|
|
extraGradleFlags = [
|
|
"--offline"
|
|
"--no-daemon"
|
|
# override aapt2
|
|
"-Dorg.gradle.project.android.aapt2FromMavenOverride=${android.androidsdk}/libexec/android-sdk/build-tools/${aapt2buildToolsVersion}/aapt2"
|
|
];
|
|
overrideGradleFlags =
|
|
drv:
|
|
drv.overrideAttrs (prev: {
|
|
gradleFlags = (prev.gradleFlags or [ ]) ++ extraGradleFlags;
|
|
});
|
|
buildGradlePackage =
|
|
args: overrideGradleFlags (gradle2nix.builders.${system}.buildGradlePackage args);
|
|
|
|
# TODO use newScope or overlays like status-im app does
|
|
scripts = pkgs.callPackage ./nix/deps-scripts.nix {
|
|
inherit gradle;
|
|
go-maven-resolver = self.packages.${system}.go-maven-resolver;
|
|
};
|
|
in
|
|
{
|
|
packages.${system} = {
|
|
default = buildGradlePackage {
|
|
pname = "nix-on-droid-app";
|
|
version = "0.118.3";
|
|
src = lib.cleanSource ./.;
|
|
lockFile = ./nix/gradle.lock;
|
|
|
|
inherit gradle;
|
|
buildJdk = jdk;
|
|
|
|
ANDROID_SDK_ROOT = "${android.androidsdk}/libexec/android-sdk";
|
|
ANDROID_NDK_ROOT = "${android.androidsdk}/ndk-bundle";
|
|
nativeBuildInputs = [ android.androidsdk ];
|
|
gradleBuildFlags = [ "assembleRelease" ];
|
|
|
|
installPhase = ''
|
|
mkdir $out
|
|
cp -r app/build/outputs/* $out
|
|
'';
|
|
};
|
|
go-maven-resolver = pkgs.callPackage ./nix/go-maven-resolver.nix { };
|
|
};
|
|
devShells.${system}.default = pkgs.mkShellNoCC {
|
|
JAVA_HOME = jdk.home;
|
|
ANDROID_SDK_ROOT = "${android.androidsdk}/libexec/android-sdk";
|
|
ANDROID_NDK_ROOT = "${android.androidsdk}/ndk-bundle";
|
|
packages = [
|
|
jdk
|
|
gradle
|
|
android.androidsdk
|
|
android.platform-tools
|
|
|
|
scripts.resolve-gradle-deps
|
|
scripts.regen-lock
|
|
scripts.build-apk
|
|
|
|
scripts.url2json
|
|
scripts.gen-deps-lock
|
|
self.packages.${system}.go-maven-resolver
|
|
];
|
|
};
|
|
};
|
|
}
|