diff options
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix')
-rw-r--r-- | nixpkgs/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/nixpkgs/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix b/nixpkgs/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix index e0c1440a604f..0e1ce6e678cb 100644 --- a/nixpkgs/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix +++ b/nixpkgs/pkgs/development/compilers/flutter/artifacts/fetch-artifacts.nix @@ -1,16 +1,22 @@ +# Schema: +# ${flutterVersion}.${targetPlatform}.${hostPlatform} +# +# aarch64-darwin as a host is not yet supported. +# https://github.com/flutter/flutter/issues/60118 { lib , runCommand , xorg , cacert , unzip -, platform +, flutterPlatform +, systemPlatform , flutter , hash }: let - platforms = [ + flutterPlatforms = [ "android" "ios" "web" @@ -24,21 +30,34 @@ let flutter' = flutter.override { # Use a version of Flutter with just enough capabilities to download # artifacts. - supportedTargetPlatforms = [ ]; + supportedTargetFlutterPlatforms = [ ]; + + # Modify flutter-tool's system platform in order to get the desired platform's hashes. + flutter = flutter.unwrapped.override { + flutterTools = flutter.unwrapped.tools.override { + inherit systemPlatform; + }; + }; }; in -runCommand "flutter-artifacts-${platform}" +runCommand "flutter-artifacts-${flutterPlatform}-${systemPlatform}" { nativeBuildInputs = [ xorg.lndir flutter' unzip ]; NIX_FLUTTER_TOOLS_VM_OPTIONS = "--root-certs-file=${cacert}/etc/ssl/certs/ca-bundle.crt"; + NIX_FLUTTER_OPERATING_SYSTEM = { + "x86_64-linux" = "linux"; + "aarch64-linux" = "linux"; + "x86_64-darwin" = "macos"; + "aarch64-darwin" = "macos"; + }.${systemPlatform}; outputHash = hash; outputHashMode = "recursive"; outputHashAlgo = "sha256"; passthru = { - inherit platform; + inherit flutterPlatform; }; } '' export FLUTTER_ROOT="$NIX_BUILD_TOP" @@ -46,7 +65,7 @@ runCommand "flutter-artifacts-${platform}" rm -rf "$FLUTTER_ROOT/bin/cache" mkdir "$FLUTTER_ROOT/bin/cache" - HOME="$(mktemp -d)" flutter precache -v '--${platform}' ${builtins.concatStringsSep " " (map (p: "'--no-${p}'") (lib.remove platform platforms))} + HOME="$(mktemp -d)" flutter precache -v '--${flutterPlatform}' ${builtins.concatStringsSep " " (map (p: "'--no-${p}'") (lib.remove flutterPlatform flutterPlatforms))} rm -rf "$FLUTTER_ROOT/bin/cache/lockfile" find "$FLUTTER_ROOT" -type l -lname '${flutter'}/*' -delete |