buildFlutterApplication: use the engine

This commit is contained in:
Tristan Ross 2024-06-10 20:03:32 -07:00
parent a54e49b360
commit 4a59129384
No known key found for this signature in database
GPG Key ID: B09C422035669AF8

View File

@ -14,16 +14,28 @@
# absolutely no mac support for now # absolutely no mac support for now
{ pubGetScript ? "flutter pub get" { pubGetScript ? null
, flutterBuildFlags ? [ ] , flutterBuildFlags ? [ ]
, targetFlutterPlatform ? "linux" , targetFlutterPlatform ? "linux"
, extraWrapProgramArgs ? "" , extraWrapProgramArgs ? ""
, flutterMode ? null
, ... , ...
}@args: }@args:
let let
hasEngine = flutter ? engine && flutter.engine != null && flutter.engine.meta.available;
flutterMode = args.flutterMode or (if hasEngine then flutter.engine.runtimeMode else "release");
flutterFlags = lib.optional hasEngine "--local-engine host_${flutterMode}${lib.optionalString (!flutter.engine.isOptimized) "_unopt"}";
flutterBuildFlags = [
"--${flutterMode}"
] ++ (args.flutterBuildFlags or []) ++ flutterFlags;
builderArgs = rec { builderArgs = rec {
universal = args // { universal = args // {
inherit flutterMode flutterFlags flutterBuildFlags;
sdkSetupScript = '' sdkSetupScript = ''
# Pub needs SSL certificates. Dart normally looks in a hardcoded path. # Pub needs SSL certificates. Dart normally looks in a hardcoded path.
# https://github.com/dart-lang/sdk/blob/3.1.0/runtime/bin/security_context_linux.cc#L48 # https://github.com/dart-lang/sdk/blob/3.1.0/runtime/bin/security_context_linux.cc#L48
@ -46,11 +58,11 @@ let
''}/bin/dart" ''}/bin/dart"
export HOME="$NIX_BUILD_TOP" export HOME="$NIX_BUILD_TOP"
flutter config --no-analytics &>/dev/null # mute first-run flutter config $flutterFlags --no-analytics &>/dev/null # mute first-run
flutter config --enable-linux-desktop >/dev/null flutter config $flutterFlags --enable-linux-desktop >/dev/null
''; '';
inherit pubGetScript; pubGetScript = args.pubGetScript or "flutter${lib.optionalString hasEngine " --local-engine $flutterMode"} pub get";
sdkSourceBuilders = { sdkSourceBuilders = {
# https://github.com/dart-lang/pub/blob/68dc2f547d0a264955c1fa551fa0a0e158046494/lib/src/sdk/flutter.dart#L81 # https://github.com/dart-lang/pub/blob/68dc2f547d0a264955c1fa551fa0a0e158046494/lib/src/sdk/flutter.dart#L81
@ -122,7 +134,7 @@ let
mkdir -p build/flutter_assets/fonts mkdir -p build/flutter_assets/fonts
flutter build linux -v --release --split-debug-info="$debug" ${builtins.concatStringsSep " " (map (flag: "\"${flag}\"") flutterBuildFlags)} flutter build linux -v --split-debug-info="$debug" $flutterBuildFlags
runHook postBuild runHook postBuild
''; '';
@ -131,7 +143,7 @@ let
installPhase = universal.installPhase or '' installPhase = universal.installPhase or ''
runHook preInstall runHook preInstall
built=build/linux/*/release/bundle built=build/linux/*/$flutterMode/bundle
mkdir -p $out/bin mkdir -p $out/bin
mv $built $out/app mv $built $out/app
@ -173,7 +185,7 @@ let
mkdir -p build/flutter_assets/fonts mkdir -p build/flutter_assets/fonts
flutter build web -v --release ${builtins.concatStringsSep " " (map (flag: "\"${flag}\"") flutterBuildFlags)} flutter build web -v $flutterBuildFlags
runHook postBuild runHook postBuild
''; '';