1{
2 callPackage,
3 dartSdkVersion,
4 flutterVersion,
5 swiftshaderHash,
6 swiftshaderRev,
7 version,
8 hashes,
9 url,
10 patches,
11 runtimeModes,
12 isOptimized ? true,
13 lib,
14 stdenv,
15 dart,
16 mainRuntimeMode ? null,
17 altRuntimeMode ? null,
18}@args:
19let
20 mainRuntimeMode = args.mainRuntimeMode or builtins.elemAt runtimeModes 0;
21 altRuntimeMode = args.altRuntimeMode or builtins.elemAt runtimeModes 1;
22
23 runtimeModesBuilds = lib.genAttrs runtimeModes (
24 runtimeMode:
25 callPackage ./package.nix {
26 inherit
27 dartSdkVersion
28 flutterVersion
29 swiftshaderHash
30 swiftshaderRev
31 version
32 hashes
33 url
34 patches
35 runtimeMode
36 isOptimized
37 ;
38 }
39 );
40in
41stdenv.mkDerivation (
42 {
43 pname = "flutter-engine";
44 inherit url runtimeModes;
45 inherit (runtimeModesBuilds.${mainRuntimeMode})
46 meta
47 src
48 version
49 dartSdkVersion
50 isOptimized
51 runtimeMode
52 outName
53 dart
54 swiftshader
55 ;
56 inherit altRuntimeMode;
57
58 dontUnpack = true;
59 dontBuild = true;
60
61 installPhase =
62 ''
63 mkdir -p $out/out
64 ''
65 + lib.concatMapStrings (
66 runtimeMode:
67 let
68 runtimeModeBuild = runtimeModesBuilds.${runtimeMode};
69 runtimeModeOut = runtimeModeBuild.outName;
70 in
71 ''
72 ln -sf ${runtimeModeBuild}/out/${runtimeModeOut} $out/out/${runtimeModeOut}
73 ''
74 ) runtimeModes;
75 }
76 // runtimeModesBuilds
77)