at 23.11-beta 94 lines 4.3 kB view raw
1{ callPackage, fetchzip, dart, lib, stdenv }: 2let 3 mkCustomFlutter = args: callPackage ./flutter.nix args; 4 wrapFlutter = flutter: callPackage ./wrapper.nix { inherit flutter; }; 5 getPatches = dir: 6 let files = builtins.attrNames (builtins.readDir dir); 7 in map (f: dir + ("/" + f)) files; 8 mkFlutter = { version, engineVersion, dartVersion, flutterHash, dartHash, patches }: 9 let 10 args = { 11 inherit version engineVersion patches; 12 13 dart = dart.override { 14 version = dartVersion; 15 sources = { 16 "${dartVersion}-x86_64-linux" = fetchzip { 17 url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; 18 sha256 = dartHash.x86_64-linux; 19 }; 20 "${dartVersion}-aarch64-linux" = fetchzip { 21 url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-linux-arm64-release.zip"; 22 sha256 = dartHash.aarch64-linux; 23 }; 24 "${dartVersion}-x86_64-darwin" = fetchzip { 25 url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-macos-x64-release.zip"; 26 sha256 = dartHash.x86_64-darwin; 27 }; 28 "${dartVersion}-aarch64-darwin" = fetchzip { 29 url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-macos-arm64-release.zip"; 30 sha256 = dartHash.aarch64-darwin; 31 }; 32 }; 33 }; 34 src = { 35 x86_64-linux = fetchzip { 36 url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${version}-stable.tar.xz"; 37 sha256 = flutterHash.x86_64-linux; 38 }; 39 aarch64-linux = fetchzip { 40 url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${version}-stable.tar.xz"; 41 sha256 = flutterHash.aarch64-linux; 42 }; 43 x86_64-darwin = fetchzip { 44 url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_${version}-stable.zip"; 45 sha256 = flutterHash.x86_64-darwin; 46 }; 47 aarch64-darwin = fetchzip { 48 url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_arm64_${version}-stable.zip"; 49 sha256 = flutterHash.aarch64-darwin; 50 }; 51 }.${stdenv.hostPlatform.system}; 52 }; 53 in 54 (mkCustomFlutter args).overrideAttrs (prev: next: { 55 passthru = next.passthru // rec { 56 inherit wrapFlutter mkCustomFlutter mkFlutter; 57 buildFlutterApplication = callPackage ../../../build-support/flutter { 58 # Package a minimal version of Flutter that only uses Linux desktop release artifacts. 59 flutter = (wrapFlutter (mkCustomFlutter args)).override { 60 supportsAndroid = false; 61 includedEngineArtifacts = { 62 common = [ "flutter_patched_sdk_product" ]; 63 platform.linux = lib.optionals stdenv.hostPlatform.isLinux 64 (lib.genAttrs ((lib.optional stdenv.hostPlatform.isx86_64 "x64") ++ (lib.optional stdenv.hostPlatform.isAarch64 "arm64")) 65 (architecture: [ "release" ])); 66 }; 67 }; 68 }; 69 }; 70 }); 71 72 flutter3Patches = getPatches ./patches/flutter3; 73in 74{ 75 inherit wrapFlutter; 76 stable = mkFlutter { 77 version = "3.13.8"; 78 engineVersion = "767d8c75e898091b925519803830fc2721658d07"; 79 dartVersion = "3.1.4"; 80 dartHash = { 81 x86_64-linux = "sha256-42wrqzjRcFDWw2aEY6+/faX+QE9PA8FmRWP4M/NkgBE="; 82 aarch64-linux = "sha256-/tWWWwTOgXHbwzotc7ZDDZa8+cbX6NODGYrjLK9gPPg="; 83 x86_64-darwin = "sha256-BchKowKd6BscVuk/dXibcQzdFkW9//GDfll77mHEI4M="; 84 aarch64-darwin = "sha256-9yrx09vYrOTmdqkfJI7mfh7DI1/rg67tPlf82m5+iKI="; 85 }; 86 flutterHash = rec { 87 x86_64-linux = "sha256-ouI1gjcynSQfPTnfTVXQ4r/NEDdhmzUsKdcALLRiCbg="; 88 aarch64-linux = x86_64-linux; 89 x86_64-darwin = "sha256-k6KNazP/I71zG5mbx3iEtXBJ8EZi9Qq+7PgL/HAJrgE="; 90 aarch64-darwin = "sha256-Duvw8EqrGb3PmBHBH/prZjyij2xJd9sLkNfPRYpC0pQ="; 91 }; 92 patches = flutter3Patches; 93 }; 94}