1{ callPackage, fetchurl, dart }:
2let
3 mkFlutter = opts: callPackage (import ./flutter.nix opts) { };
4 getPatches = dir:
5 let files = builtins.attrNames (builtins.readDir dir);
6 in map (f: dir + ("/" + f)) files;
7 flutterDrv = { version, pname, dartVersion, hash, dartHash, patches }: mkFlutter {
8 inherit version pname patches;
9 dart = dart.override {
10 version = dartVersion;
11 sources = {
12 "${dartVersion}-x86_64-linux" = fetchurl {
13 url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip";
14 sha256 = dartHash.x86_64-linux;
15 };
16 "${dartVersion}-aarch64-linux" = fetchurl {
17 url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-linux-arm64-release.zip";
18 sha256 = dartHash.aarch64-linux;
19 };
20 };
21 };
22 src = fetchurl {
23 url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${version}-stable.tar.xz";
24 sha256 = hash;
25 };
26 };
27in
28{
29 inherit mkFlutter;
30 stable = flutterDrv {
31 pname = "flutter";
32 version = "3.3.8";
33 dartVersion = "2.18.4";
34 hash = "sha256-QH+10F6a0XYEvBetiAi45Sfy7WTdVZ1i8VOO4JuSI24=";
35 dartHash = {
36 x86_64-linux = "sha256-lFw+KaxzhuAMnu6ypczINqywzpiD+8Kd+C/UHJDrO9Y=";
37 aarch64-linux = "sha256-snlFTY4oJ4ALGLc210USbI2Z///cx1IVYUWm7Vo5z2I=";
38 };
39 patches = getPatches ./patches/flutter3;
40 };
41
42 v2 = flutterDrv {
43 pname = "flutter";
44 version = "2.10.5";
45 dartVersion = "2.16.2";
46 hash = "sha256-DTZwxlMUYk8NS1SaWUJolXjD+JnRW73Ps5CdRHDGnt0=";
47 dartHash = {
48 x86_64-linux = "sha256-egrYd7B4XhkBiHPIFE2zopxKtQ58GqlogAKA/UeiXnI=";
49 aarch64-linux = "sha256-vmerjXkUAUnI8FjK+62qLqgETmA+BLPEZXFxwYpI+KY=";
50 };
51 patches = getPatches ./patches/flutter2;
52 };
53}