|
1 | 1 | { |
2 | 2 | buildFHSEnv, |
3 | | - electron_24, |
| 3 | + electron_33, |
4 | 4 | fetchFromGitHub, |
5 | 5 | fetchYarnDeps, |
6 | 6 | fetchurl, |
7 | | - fixup-yarn-lock, |
8 | 7 | git, |
9 | 8 | lib, |
10 | 9 | makeDesktopItem, |
11 | | - nodejs_18, |
| 10 | + nodejs_20, |
12 | 11 | stdenvNoCC, |
13 | 12 | util-linux, |
14 | | - yarn, |
| 13 | + yarnBuildHook, |
| 14 | + yarnConfigHook, |
15 | 15 | zip, |
16 | 16 | }: |
17 | 17 |
|
18 | 18 | let |
19 | 19 | pname = "electron-fiddle"; |
20 | | - version = "0.32.6"; |
21 | | - electron = electron_24; |
22 | | - nodejs = nodejs_18; |
| 20 | + version = "0.36.5"; |
| 21 | + electron = electron_33; |
| 22 | + nodejs = nodejs_20; |
23 | 23 |
|
24 | 24 | src = fetchFromGitHub { |
25 | 25 | owner = "electron"; |
26 | 26 | repo = "fiddle"; |
27 | | - rev = "v${version}"; |
28 | | - hash = "sha256-Iuss2xwts1aWy2rKYG7J2EvFdH8Bbedn/uZG2bi9UHw="; |
| 27 | + tag = "v${version}"; |
| 28 | + hash = "sha256-Fo7rXnufJ26WijnplWswdeCGJitkvTDboOggUfrz1Hw="; |
29 | 29 | }; |
30 | 30 |
|
31 | 31 | # As of https://github.com/electron/fiddle/pull/1316 this is fetched |
|
36 | 36 | hash = "sha256-1sxd3eJ6/WjXS6XQbrgKUTNUmrhuc1dAvy+VAivGErg="; |
37 | 37 | }; |
38 | 38 |
|
39 | | - offlineCache = fetchYarnDeps { |
40 | | - yarnLock = "${src}/yarn.lock"; |
41 | | - hash = "sha256-dwhwUWwv6RYKEMdhRBvKVXvM8n1r+Qo0D3/uFsWIOpw="; |
42 | | - }; |
43 | | - |
44 | | - electronDummyMirror = "https://electron.invalid/"; |
45 | | - electronDummyDir = "nix"; |
46 | | - electronDummyFilename = builtins.baseNameOf (builtins.head (electron.src.urls)); |
47 | | - electronDummyHash = builtins.hashString "sha256" "${electronDummyMirror}${electronDummyDir}"; |
48 | | - |
49 | 39 | unwrapped = stdenvNoCC.mkDerivation { |
50 | 40 | pname = "${pname}-unwrapped"; |
51 | 41 | inherit version src; |
52 | 42 |
|
| 43 | + offlineCache = fetchYarnDeps { |
| 44 | + yarnLock = "${src}/yarn.lock"; |
| 45 | + hash = "sha256-eZ/g2cP6M0zWhF14go0sIC+UuzTo9Gl4KsPBGzJU3FQ="; |
| 46 | + }; |
| 47 | + |
53 | 48 | nativeBuildInputs = [ |
54 | | - fixup-yarn-lock |
55 | 49 | git |
56 | 50 | nodejs |
57 | 51 | util-linux |
58 | | - yarn |
| 52 | + yarnBuildHook |
| 53 | + yarnConfigHook |
59 | 54 | zip |
60 | 55 | ]; |
61 | 56 |
|
62 | | - configurePhase = '' |
63 | | - export HOME=$TMPDIR |
64 | | - fixup-yarn-lock yarn.lock |
65 | | - yarn config --offline set yarn-offline-mirror ${offlineCache} |
66 | | - yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive |
67 | | - patchShebangs node_modules |
| 57 | + preBuild = '' |
| 58 | + # electron files need to be writable on Darwin |
| 59 | + cp -r ${electron.dist} electron-dist |
| 60 | + chmod -R u+w electron-dist |
| 61 | +
|
| 62 | + pushd electron-dist |
| 63 | + zip -0Xqr ../electron.zip . |
| 64 | + popd |
68 | 65 |
|
69 | | - mkdir -p ~/.cache/electron/${electronDummyHash} |
70 | | - cp -ra '${electron.dist}' "$TMPDIR/electron" |
71 | | - chmod -R u+w "$TMPDIR/electron" |
72 | | - (cd "$TMPDIR/electron" && zip -0Xr ~/.cache/electron/${electronDummyHash}/${electronDummyFilename} .) |
| 66 | + rm -r electron-dist |
| 67 | +
|
| 68 | + # force @electron/packager to use our electron instead of downloading it, even if it is a different version |
| 69 | + substituteInPlace node_modules/@electron/packager/dist/packager.js \ |
| 70 | + --replace-fail 'await this.getElectronZipPath(downloadOpts)' '"electron.zip"' |
73 | 71 |
|
74 | 72 | ln -s ${releasesJson} static/releases.json |
75 | 73 | ''; |
76 | 74 |
|
77 | | - buildPhase = '' |
78 | | - ELECTRON_CUSTOM_VERSION='${electron.version}' \ |
79 | | - ELECTRON_MIRROR='${electronDummyMirror}' \ |
80 | | - ELECTRON_CUSTOM_DIR='${electronDummyDir}' \ |
81 | | - ELECTRON_CUSTOM_FILENAME='${electronDummyFilename}' \ |
82 | | - yarn --offline run package |
83 | | - ''; |
| 75 | + yarnBuildScript = "package"; |
84 | 76 |
|
85 | 77 | installPhase = '' |
| 78 | + runHook preInstall |
| 79 | +
|
86 | 80 | mkdir -p "$out/lib/electron-fiddle/resources" |
87 | 81 | cp "out/Electron Fiddle-"*/resources/app.asar "$out/lib/electron-fiddle/resources/" |
88 | 82 | mkdir -p "$out/share/icons/hicolor/scalable/apps" |
89 | 83 | cp assets/icons/fiddle.svg "$out/share/icons/hicolor/scalable/apps/electron-fiddle.svg" |
| 84 | +
|
| 85 | + runHook postInstall |
90 | 86 | ''; |
91 | 87 | }; |
92 | 88 |
|
@@ -135,6 +131,7 @@ buildFHSEnv { |
135 | 131 | glib |
136 | 132 | gtk3 |
137 | 133 | libdrm |
| 134 | + libglvnd |
138 | 135 | libnotify |
139 | 136 | libxkbcommon |
140 | 137 | libgbm |
@@ -181,7 +178,11 @@ buildFHSEnv { |
181 | 178 | description = "Easiest way to get started with Electron"; |
182 | 179 | homepage = "https://www.electronjs.org/fiddle"; |
183 | 180 | license = licenses.mit; |
184 | | - maintainers = with maintainers; [ andersk ]; |
| 181 | + mainProgram = "electron-fiddle"; |
| 182 | + maintainers = with maintainers; [ |
| 183 | + andersk |
| 184 | + tomasajt |
| 185 | + ]; |
185 | 186 | platforms = electron.meta.platforms; |
186 | 187 | }; |
187 | 188 | } |
0 commit comments