1{
2 callPackage,
3 dartSdkVersion,
4 flutterVersion,
5 swiftshaderHash,
6 swiftshaderRev,
7 version,
8 hashes,
9 url,
10 patches,
11 runtimeModes,
12 isOptimized ? null,
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 ;
37 isOptimized = args.isOptimized or runtimeMode != "debug";
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 mkdir -p $out/out
63 ''
64 + lib.concatMapStrings (
65 runtimeMode:
66 let
67 runtimeModeBuild = runtimeModesBuilds.${runtimeMode};
68 runtimeModeOut = runtimeModeBuild.outName;
69 in
70 ''
71 ln -sf ${runtimeModeBuild}/out/${runtimeModeOut} $out/out/${runtimeModeOut}
72 ''
73 ) runtimeModes;
74 }
75 // runtimeModesBuilds
76)