Files
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

180 lines
4.1 KiB
Nix

{
buildFHSEnv,
electron_36,
fetchFromGitHub,
fetchYarnDeps,
git,
lib,
makeDesktopItem,
nodejs,
stdenvNoCC,
util-linux,
yarnBuildHook,
yarnConfigHook,
zip,
}:
let
pname = "electron-fiddle";
version = "0.37.2";
src = fetchFromGitHub {
owner = "electron";
repo = "fiddle";
tag = "v${version}";
hash = "sha256-e9PLgkqWBNLBw7uuNpPluOQ6+aGLYQLyTzcLa+LMOzs=";
};
electron = electron_36;
unwrapped = stdenvNoCC.mkDerivation {
pname = "${pname}-unwrapped";
inherit version src;
patches = [ ./dont-use-initial-releases-json.patch ];
offlineCache = fetchYarnDeps {
inherit src;
hash = "sha256-mB8WG6tX204u6AJ8qLbWrA+pSN3oDihHqj0t3bWcuAI=";
};
nativeBuildInputs = [
git
nodejs
util-linux
yarnBuildHook
yarnConfigHook
zip
];
preBuild = ''
# electron files need to be writable on Darwin
cp -r ${electron.dist} electron-dist
chmod -R u+w electron-dist
pushd electron-dist
zip -0Xqr ../electron.zip .
popd
rm -r electron-dist
# force @electron/packager to use our electron instead of downloading it, even if it is a different version
substituteInPlace node_modules/@electron/packager/dist/packager.js \
--replace-fail 'await this.getElectronZipPath(downloadOpts)' '"electron.zip"'
'';
yarnBuildScript = "package";
installPhase = ''
runHook preInstall
mkdir -p "$out/lib/electron-fiddle/resources"
cp "out/Electron Fiddle-"*/resources/app.asar "$out/lib/electron-fiddle/resources/"
mkdir -p "$out/share/icons/hicolor/scalable/apps"
cp assets/icons/fiddle.svg "$out/share/icons/hicolor/scalable/apps/electron-fiddle.svg"
runHook postInstall
'';
};
desktopItem = makeDesktopItem {
name = "electron-fiddle";
desktopName = "Electron Fiddle";
comment = "The easiest way to get started with Electron";
genericName = "Electron Fiddle";
exec = "electron-fiddle %U";
icon = "electron-fiddle";
startupNotify = true;
categories = [
"GNOME"
"GTK"
"Utility"
];
mimeTypes = [ "x-scheme-handler/electron-fiddle" ];
};
in
buildFHSEnv {
inherit pname version;
runScript = "${lib.getExe electron} ${unwrapped}/lib/electron-fiddle/resources/app.asar";
extraInstallCommands = ''
mkdir -p "$out/share/icons/hicolor/scalable/apps"
ln -s "${unwrapped}/share/icons/hicolor/scalable/apps/electron-fiddle.svg" "$out/share/icons/hicolor/scalable/apps/"
mkdir -p "$out/share/applications"
cp "${desktopItem}/share/applications"/*.desktop "$out/share/applications/"
'';
targetPkgs =
pkgs:
with pkgs;
map lib.getLib [
# for electron-fiddle itself
udev
# for running Electron 22.0.0 inside
alsa-lib
atk
cairo
cups
dbus
expat
glib
gtk3
libdrm
libglvnd
libnotify
libxkbcommon
libgbm
nspr
nss
pango
xorg.libX11
xorg.libXcomposite
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXrandr
xorg.libxcb
# for running Electron before 18.3.5/19.0.5/20.0.0 inside
gdk-pixbuf
# for running Electron before 16.0.0 inside
xorg.libxshmfence
# for running Electron before 11.0.0 inside
xorg.libXcursor
xorg.libXi
xorg.libXrender
xorg.libXtst
# for running Electron before 10.0.0 inside
xorg.libXScrnSaver
# for running Electron before 8.0.0 inside
libuuid
# for running Electron before 4.0.0 inside
fontconfig
# for running Electron before 3.0.0 inside
gnome2.GConf
# Electron 2.0.8 is the earliest working version, due to
# https://github.com/electron/electron/issues/13972
];
meta = with lib; {
description = "Easiest way to get started with Electron";
homepage = "https://www.electronjs.org/fiddle";
license = licenses.mit;
mainProgram = "electron-fiddle";
maintainers = with maintainers; [
andersk
tomasajt
];
platforms = electron.meta.platforms;
};
}