at 24.11-pre 72 lines 2.8 kB view raw
1{ callPackage, fetchzip, fetchFromGitHub, 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 if (builtins.pathExists dir) then map (f: dir + ("/" + f)) files else [ ]; 8 mkFlutter = 9 { version 10 , engineVersion 11 , dartVersion 12 , flutterHash 13 , dartHash 14 , patches 15 , pubspecLock 16 , artifactHashes 17 }: 18 let 19 args = { 20 inherit version engineVersion patches pubspecLock artifactHashes; 21 22 dart = dart.override { 23 version = dartVersion; 24 sources = { 25 "${dartVersion}-x86_64-linux" = fetchzip { 26 url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; 27 sha256 = dartHash.x86_64-linux; 28 }; 29 "${dartVersion}-aarch64-linux" = fetchzip { 30 url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-linux-arm64-release.zip"; 31 sha256 = dartHash.aarch64-linux; 32 }; 33 "${dartVersion}-x86_64-darwin" = fetchzip { 34 url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-macos-x64-release.zip"; 35 sha256 = dartHash.x86_64-darwin; 36 }; 37 "${dartVersion}-aarch64-darwin" = fetchzip { 38 url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-macos-arm64-release.zip"; 39 sha256 = dartHash.aarch64-darwin; 40 }; 41 }; 42 }; 43 src = fetchFromGitHub { 44 owner = "flutter"; 45 repo = "flutter"; 46 rev = version; 47 hash = flutterHash; 48 }; 49 }; 50 in 51 (mkCustomFlutter args).overrideAttrs (prev: next: { 52 passthru = next.passthru // rec { 53 inherit wrapFlutter mkCustomFlutter mkFlutter; 54 buildFlutterApplication = callPackage ../../../build-support/flutter { flutter = wrapFlutter (mkCustomFlutter args); }; 55 }; 56 }); 57 58 flutterVersions = lib.mapAttrs' 59 (version: _: 60 let 61 versionDir = ./versions + "/${version}"; 62 data = lib.importJSON (versionDir + "/data.json"); 63 in 64 lib.nameValuePair "v${version}" (wrapFlutter (mkFlutter ({ 65 patches = (getPatches ./patches) ++ (getPatches (versionDir + "/patches")); 66 } // data)))) 67 (builtins.readDir ./versions); 68in 69flutterVersions // { 70 stable = flutterVersions.${lib.last (lib.naturalSort (builtins.attrNames flutterVersions))}; 71 inherit wrapFlutter mkFlutter; 72}