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 version = "2.5.1";
8 channel = "stable";
9 filename = "flutter_linux_${version}-${channel}.tar.xz";
10
11 # Decouples flutter derivation from dart derivation,
12 # use specific dart version to not need to bump dart derivation when bumping flutter.
13 dartVersion = "2.14.2";
14 dartSourceBase = "https://storage.googleapis.com/dart-archive/channels";
15 dartForFlutter = dart.override {
16 version = dartVersion;
17 sources = {
18 "${dartVersion}-x86_64-linux" = fetchurl {
19 url = "${dartSourceBase}/stable/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip";
20 sha256 = "1gr2dr683kz0a0k6rcn4jcbxf9fr2xlzi5fcgn1lzrrxvys2lddx";
21 };
22 };
23 };
24in {
25 mkFlutter = mkFlutter;
26 stable = mkFlutter rec {
27 inherit version;
28 dart = dartForFlutter;
29 pname = "flutter";
30 src = fetchurl {
31 url = "https://storage.googleapis.com/flutter_infra_release/releases/${channel}/linux/${filename}";
32 sha256 = "12ycz7iasrc9p9c6zr95l6llyji3za43gsx8cmr2kjfiv23bcrv2";
33 };
34 patches = getPatches ./patches;
35 };
36}