nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 143 lines 4.6 kB view raw
1{ 2 useNixpkgsEngine ? false, 3 callPackage, 4 fetchzip, 5 fetchFromGitHub, 6 dart, 7 lib, 8 stdenv, 9 runCommand, 10}: 11let 12 mkCustomFlutter = args: callPackage ./flutter.nix args; 13 wrapFlutter = flutter: callPackage ./wrapper.nix { inherit flutter; }; 14 getPatches = 15 dir: 16 let 17 files = builtins.attrNames (builtins.readDir dir); 18 in 19 if (builtins.pathExists dir) then map (f: dir + ("/" + f)) files else [ ]; 20 mkFlutter = 21 { 22 version, 23 engineVersion, 24 engineSwiftShaderHash, 25 engineSwiftShaderRev, 26 engineHashes, 27 enginePatches, 28 dartVersion, 29 flutterHash, 30 dartHash, 31 patches, 32 pubspecLock, 33 artifactHashes, 34 channel, 35 }: 36 let 37 args = { 38 inherit 39 version 40 engineVersion 41 engineSwiftShaderRev 42 engineSwiftShaderHash 43 engineHashes 44 enginePatches 45 patches 46 pubspecLock 47 artifactHashes 48 useNixpkgsEngine 49 channel 50 ; 51 52 dart = 53 let 54 dartChannel = if lib.strings.hasSuffix ".beta" dartVersion then "beta" else "stable"; 55 in 56 dart.override { 57 version = dartVersion; 58 sources = { 59 "${dartVersion}-x86_64-linux" = fetchzip { 60 url = "https://storage.googleapis.com/dart-archive/channels/${dartChannel}/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; 61 hash = dartHash.x86_64-linux; 62 }; 63 "${dartVersion}-aarch64-linux" = fetchzip { 64 url = "https://storage.googleapis.com/dart-archive/channels/${dartChannel}/release/${dartVersion}/sdk/dartsdk-linux-arm64-release.zip"; 65 hash = dartHash.aarch64-linux; 66 }; 67 "${dartVersion}-x86_64-darwin" = fetchzip { 68 url = "https://storage.googleapis.com/dart-archive/channels/${dartChannel}/release/${dartVersion}/sdk/dartsdk-macos-x64-release.zip"; 69 hash = dartHash.x86_64-darwin; 70 }; 71 "${dartVersion}-aarch64-darwin" = fetchzip { 72 url = "https://storage.googleapis.com/dart-archive/channels/${dartChannel}/release/${dartVersion}/sdk/dartsdk-macos-arm64-release.zip"; 73 hash = dartHash.aarch64-darwin; 74 }; 75 }; 76 }; 77 src = 78 let 79 source = fetchFromGitHub { 80 owner = "flutter"; 81 repo = "flutter"; 82 tag = version; 83 hash = flutterHash; 84 }; 85 in 86 ( 87 if lib.versionAtLeast version "3.32" then 88 # # Could not determine engine revision 89 (runCommand source.name { } '' 90 cp --recursive ${source} $out 91 chmod +w $out/bin 92 mkdir $out/bin/cache 93 cp $out/bin/internal/engine.version $out/bin/cache/engine.stamp 94 touch $out/bin/cache/engine.realm 95 '') 96 else 97 source 98 ); 99 }; 100 in 101 (mkCustomFlutter args).overrideAttrs ( 102 prev: next: { 103 passthru = next.passthru // { 104 inherit wrapFlutter mkCustomFlutter mkFlutter; 105 buildFlutterApplication = callPackage ./build-support/build-flutter-application.nix { 106 flutter = wrapFlutter (mkCustomFlutter args); 107 }; 108 }; 109 } 110 ); 111 112 flutterVersions = lib.mapAttrs' ( 113 version: _: 114 let 115 versionDir = ./versions + "/${version}"; 116 data = lib.importJSON (versionDir + "/data.json"); 117 in 118 lib.nameValuePair "v${version}" ( 119 wrapFlutter ( 120 mkFlutter ( 121 { 122 patches = (getPatches ./patches) ++ (getPatches (versionDir + "/patches")); 123 enginePatches = (getPatches ./engine/patches) ++ (getPatches (versionDir + "/engine/patches")); 124 } 125 // data 126 ) 127 ) 128 ) 129 ) (builtins.readDir ./versions); 130 131 stableFlutterVersions = lib.attrsets.filterAttrs (_: v: v.channel == "stable") flutterVersions; 132 betaFlutterVersions = lib.attrsets.filterAttrs (_: v: v.channel == "beta") flutterVersions; 133in 134flutterVersions 135// { 136 inherit wrapFlutter mkFlutter; 137} 138// lib.optionalAttrs (betaFlutterVersions != { }) { 139 beta = flutterVersions.${lib.last (lib.naturalSort (builtins.attrNames betaFlutterVersions))}; 140} 141// lib.optionalAttrs (stableFlutterVersions != { }) { 142 stable = flutterVersions.${lib.last (lib.naturalSort (builtins.attrNames stableFlutterVersions))}; 143}