Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at 23.05 90 lines 3.5 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, hash, 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 }; 25 }; 26 src = fetchzip { 27 url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${version}-stable.tar.xz"; 28 sha256 = hash; 29 }; 30 }; 31 in 32 (mkCustomFlutter args).overrideAttrs (prev: next: { 33 passthru = next.passthru // rec { 34 inherit wrapFlutter mkCustomFlutter mkFlutter; 35 buildFlutterApplication = callPackage ../../../build-support/flutter { 36 # Package a minimal version of Flutter that only uses Linux desktop release artifacts. 37 flutter = wrapFlutter 38 (mkCustomFlutter (args // { 39 includedEngineArtifacts = { 40 common = [ "flutter_patched_sdk_product" ]; 41 platform.linux = lib.optionals stdenv.hostPlatform.isLinux 42 (lib.genAttrs ((lib.optional stdenv.hostPlatform.isx86_64 "x64") ++ (lib.optional stdenv.hostPlatform.isAarch64 "arm64")) 43 (architecture: [ "release" ])); 44 }; 45 })); 46 }; 47 }; 48 }); 49 50 flutter2Patches = getPatches ./patches/flutter2; 51 flutter3Patches = getPatches ./patches/flutter3; 52in 53{ 54 inherit wrapFlutter; 55 stable = mkFlutter { 56 version = "3.10.0"; 57 engineVersion = "d44b5a94c976fbb65815374f61ab5392a220b084"; 58 dartVersion = "3.0.0"; 59 hash = "sha256-3cRVPNrph9QUUnAdQhd5TOp2i1zFRxJ+OhqxXrJ+ncU="; 60 dartHash = { 61 x86_64-linux = "sha256-AhvAt2c0URzL+MSIXlwbkuWNuhKbWvUpoyiYf1vXfcc="; 62 aarch64-linux = "sha256-bo4kZtNpj91JaCW8+GD4bQ60oOWQ7daj4C7cAHwLMtw="; 63 }; 64 patches = flutter3Patches; 65 }; 66 67 v37 = mkFlutter { 68 version = "3.7.12"; 69 engineVersion = "1a65d409c7a1438a34d21b60bf30a6fd5db59314"; 70 dartVersion = "2.19.6"; 71 hash = "sha256-5ExDBQXIpoZ5NwS66seY3m9/V8xDiyq/RdzldAyHdEE="; 72 dartHash = { 73 x86_64-linux = "sha256-4ezRuwhQHVCxZg5WbzU/tBUDvZVpfCo6coDE4K0UzXo="; 74 aarch64-linux = "sha256-pYmClIqOo0sRPOkrcF4xQbo0mHlrr1TkhT1fnNyYNck="; 75 }; 76 patches = flutter3Patches; 77 }; 78 79 v2 = mkFlutter { 80 version = "2.10.5"; 81 engineVersion = "57d3bac3dd5cb5b0e464ab70e7bc8a0d8cf083ab"; 82 dartVersion = "2.16.2"; 83 hash = "sha256-MxaWvlcCfXN8gsC116UMzqb4LgixHL3YjrGWy7WYgW4="; 84 dartHash = { 85 x86_64-linux = "sha256-vxKxysg6e3Qxtlp4dLxOZaBtgHGtl7XYd73zFZd9yJc="; 86 aarch64-linux = "sha256-ZfpR6fj/a9Bsgrg31Z/uIJaCHIWtcQH3VTTVkDJKkwA="; 87 }; 88 patches = flutter2Patches; 89 }; 90}