add flake support
This commit is contained in:
parent
7ec1c5cc5a
commit
6256e13159
3 changed files with 258 additions and 0 deletions
1
.envrc
Normal file
1
.envrc
Normal file
|
|
@ -0,0 +1 @@
|
|||
use flake
|
||||
61
flake.lock
generated
Normal file
61
flake.lock
generated
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1745804731,
|
||||
"narHash": "sha256-v/sK3AS0QKu/Tu5sHIfddiEHCvrbNYPv8X10Fpux68g=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "29335f23bea5e34228349ea739f31ee79e267b88",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
196
flake.nix
Normal file
196
flake.nix
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
{
|
||||
description = "Flutter 3.13.x";
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
outputs = { self, nixpkgs, flake-utils }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
config = {
|
||||
android_sdk.accept_license = true;
|
||||
allowUnfree = true;
|
||||
};
|
||||
};
|
||||
buildToolsVersion = "34.0.0";
|
||||
androidComposition = pkgs.androidenv.composeAndroidPackages {
|
||||
buildToolsVersions = [ buildToolsVersion "30.0.3" ];
|
||||
platformVersions = [ "29" "30" "31" "32" "33" "34" "35" "28" ];
|
||||
abiVersions = [ "armeabi-v7a" "arm64-v8a" ];
|
||||
# toolsVersion = "26.1.1";
|
||||
# platformToolsVersion = "33.0.3";
|
||||
# # buildToolsVersions = [ buildToolsVersionForAapt2 ];
|
||||
includeEmulator = true;
|
||||
emulatorVersion = "34.1.19";
|
||||
# platformVersions = [ "28" "29" "30" "31" ];
|
||||
# includeSources = false;
|
||||
# includeSystemImages = false;
|
||||
# systemImageTypes = [ "google_apis_playstore" ];
|
||||
# abiVersions = [ "armeabi-v7a" "arm64-v8a" ];
|
||||
# cmakeVersions = [ "3.10.2" ];
|
||||
includeNDK = true;
|
||||
ndkVersions = [ "22.0.7026061" ];
|
||||
# useGoogleAPIs = false;
|
||||
useGoogleTVAddOns = false;
|
||||
|
||||
extraLicenses = [
|
||||
"android-googletv-license"
|
||||
"android-sdk-arm-dbt-license"
|
||||
"android-sdk-license"
|
||||
"android-sdk-preview-license"
|
||||
"google-gdk-license"
|
||||
"intel-android-extra-license"
|
||||
"intel-android-sysimage-license"
|
||||
"mips-android-sysimage-license"
|
||||
];
|
||||
};
|
||||
androidSdk = androidComposition.androidsdk;
|
||||
# pubspecLock = pkgs.lib.importJSON ./pubspec.lock.json;
|
||||
|
||||
gradleZip = pkgs.fetchurl {
|
||||
url = builtins.readFile (
|
||||
pkgs.runCommandLocal "distributionUrl"
|
||||
{
|
||||
nativeBuildInputs = with pkgs; [ coreutils ripgrep sd ];
|
||||
}
|
||||
''
|
||||
rg -o --replace '$1' 'distributionUrl=(.+)' ${./android/gradle/wrapper/gradle-wrapper.properties} \
|
||||
| sd --fixed-strings '\:' ':' \
|
||||
| tr -d '\n' \
|
||||
> $out
|
||||
cat $out
|
||||
''
|
||||
);
|
||||
hash = "sha256-uwmYL99ScY5MeyUCPRDfbTWl//lphgvfWlvSejqyep4=";
|
||||
};
|
||||
jdk = pkgs.lib.trivial.throwIfNot (pkgs.lib.versions.major pkgs.jdk.version == "21")
|
||||
"jdk updated to ${pkgs.lib.versions.major pkgs.jdk.version}, sync android/app/build.gradle versions"
|
||||
pkgs.jdk;
|
||||
in
|
||||
{
|
||||
devShell = pkgs.mkShell rec {
|
||||
ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk";
|
||||
CHROME_EXECUTABLE = "${pkgs.ungoogled-chromium}/bin/chromium";
|
||||
JAVA_HOME = "${pkgs.jdk.home}";
|
||||
|
||||
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${androidSdk}/libexec/android-sdk/build-tools/34.0.0/aapt2";
|
||||
buildInputs = with pkgs; [
|
||||
flutter
|
||||
androidSdk
|
||||
jdk17
|
||||
ungoogled-chromium
|
||||
android-studio-full
|
||||
];
|
||||
};
|
||||
packages.default = pkgs.stdenv.mkDerivation {
|
||||
pname = "aifred-apk";
|
||||
version = "1.0.0";
|
||||
src = ./.;
|
||||
buildInputs = [
|
||||
pkgs.flutter
|
||||
androidSdk
|
||||
];
|
||||
|
||||
ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk";
|
||||
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${androidSdk}/libexec/android-sdk/build-tools/34.0.0/aapt2";
|
||||
FLUTTER_SDK = "${pkgs.flutter}";
|
||||
|
||||
buildPhase = ''
|
||||
echo hello
|
||||
echo $GRADLE_OPTS
|
||||
echo $ANDROID_SDK_ROOT
|
||||
echo NIX_BUILD_TOP
|
||||
echo $NIX_BUILD_TOP
|
||||
|
||||
echo current folder
|
||||
pwd
|
||||
echo $HOME
|
||||
|
||||
mkdir .pub-cache
|
||||
|
||||
export PUB_CACHE="$(pwd)/.pub-cache"
|
||||
echo $PUB_CACHE
|
||||
|
||||
flutter doctor -v
|
||||
'';
|
||||
};
|
||||
packages.apk-flutter = pkgs.flutter327.buildFlutterApplication rec {
|
||||
pname = "aifred-apk";
|
||||
version = "1.0.0";
|
||||
src = ./.;
|
||||
targetFlutterPlatform = "universal";
|
||||
autoPubspecLock = src + "/pubspec.lock";
|
||||
ANDROID_HOME = "${androidSdk}/libexec/android-sdk";
|
||||
ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk";
|
||||
ANDROID_NDK_ROOT = "${ANDROID_HOME}/ndk-bundle";
|
||||
JAVA_HOME = jdk.home;
|
||||
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_HOME}/build-tools/${buildToolsVersion}/aapt2";
|
||||
gradleFlags = [ GRADLE_OPTS ];
|
||||
|
||||
|
||||
preBuild = ''
|
||||
set -x
|
||||
|
||||
export HOME=$TMPDIR
|
||||
|
||||
touch env.sh
|
||||
|
||||
|
||||
# Substitute the gradle-all zip URL by a local file to prevent downloads from happening while building an Android app
|
||||
${pkgs.lib.getExe pkgs.sd} 'distributionUrl=.+' 'distributionUrl=file\://${gradleZip}' android/gradle/wrapper/gradle-wrapper.properties
|
||||
cat android/gradle/wrapper/gradle-wrapper.properties
|
||||
|
||||
# sets up gradlew wrapper
|
||||
flutter build apk -v --config-only
|
||||
|
||||
# add nix flags to gradlew
|
||||
local flagsArray=()
|
||||
concatTo flagsArray gradleFlags gradleFlagsArray
|
||||
|
||||
local wrapperFlagsArray=()
|
||||
for flag in "''${flagsArray[@]}"; do
|
||||
wrapperFlagsArray+=("--add-flags" "$flag")
|
||||
done
|
||||
|
||||
gradlewPath="$PWD/android/gradlew"
|
||||
wrapProgram "$gradlewPath" \
|
||||
--run 'set -x' \
|
||||
--add-flags '--info' \
|
||||
--add-flags '--debug' \
|
||||
"''${wrapperFlagsArray[@]}"
|
||||
|
||||
gradle() {
|
||||
command "$gradlewPath" "$@"
|
||||
}
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
mkdir -p build/flutter_assets/fonts
|
||||
|
||||
flutter build apk -v --split-debug-info="$debug" $flutterBuildFlags
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
cp -v ./build/app/outputs/flutter-apk/app-release.apk $out
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
};
|
||||
packages.web = pkgs.flutter327.buildFlutterApplication rec {
|
||||
pname = "aifred-web";
|
||||
version = "1.0.0";
|
||||
src = ./.;
|
||||
targetFlutterPlatform = "web";
|
||||
# inherit pubspecLock;
|
||||
autoPubspecLock = src + "/pubspec.lock";
|
||||
};
|
||||
});
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue