diff options
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/flutter/flutter-tools.nix')
-rw-r--r-- | nixpkgs/pkgs/development/compilers/flutter/flutter-tools.nix | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/flutter/flutter-tools.nix b/nixpkgs/pkgs/development/compilers/flutter/flutter-tools.nix new file mode 100644 index 000000000000..6f8d1b3c1a8f --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/flutter/flutter-tools.nix @@ -0,0 +1,60 @@ +{ lib +, stdenv +, systemPlatform +, buildDartApplication +, git +, which +, dart +, version +, flutterSrc +, patches ? [ ] +, pubspecLock +, darwin +}: + +buildDartApplication.override { inherit dart; } rec { + pname = "flutter-tools"; + inherit version; + dartOutputType = "jit-snapshot"; + + src = flutterSrc; + sourceRoot = "source/packages/flutter_tools"; + postUnpack = ''chmod -R u+w "$NIX_BUILD_TOP/source"''; + + inherit patches; + # The given patches are made for the entire SDK source tree. + prePatch = ''pushd "$NIX_BUILD_TOP/source"''; + postPatch = '' + popd + '' + # Remove impure references to `arch` and use arm64 instead of arm64e. + + lib.optionalString stdenv.isDarwin '' + substituteInPlace lib/src/ios/xcodeproj.dart \ + --replace-fail /usr/bin/arch '${darwin.adv_cmds}/bin/arch' \ + --replace-fail arm64e arm64 + ''; + + # When the JIT snapshot is being built, the application needs to run. + # It attempts to generate configuration files, and relies on a few external + # tools. + nativeBuildInputs = [ git which ]; + preConfigure = '' + export HOME=. + export FLUTTER_ROOT="$NIX_BUILD_TOP/source" + mkdir -p "$FLUTTER_ROOT/bin/cache" + ln -s '${dart}' "$FLUTTER_ROOT/bin/cache/dart-sdk" + ''; + + dartEntryPoints."flutter_tools.snapshot" = "bin/flutter_tools.dart"; + dartCompileFlags = [ "--define=NIX_FLUTTER_HOST_PLATFORM=${systemPlatform}" ]; + + # The Dart wrapper launchers are useless for the Flutter tool - it is designed + # to be launched from a snapshot by the SDK. + postInstall = '' + pushd "$out" + rm ${builtins.concatStringsSep " " (builtins.attrNames dartEntryPoints)} + popd + ''; + + inherit pubspecLock; +} |