17 src = fetchFromGitHub {
21 hash = "sha256-a+55seE5tFxTmdTn4qDFWWW6C6FzO8Vgjvfow/tBqf0=";
26 ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
27 imagemagick # for icon resizing
31 npmDepsHash = "sha256-0hS+AjfYvkdxyM6CtXYgvjt49GmcCvyAdEFWfK8uaHc=";
33 env.ELECTRON_SKIP_BINARY_DOWNLOAD = 1;
35 # disable code signing on Darwin
36 postConfigure = lib.optionalString stdenv.hostPlatform.isDarwin ''
37 export CSC_IDENTITY_AUTO_DISCOVERY=false
38 sed -i "/afterSign/d" package.json
41 npmBuildScript = "bundle";
44 # electronDist needs to be modifiable on Darwin
45 cp -r ${electron.dist} electron-dist
46 chmod -R u+w electron-dist
48 npm exec electron-builder -- \
50 -c.electronDist=electron-dist \
51 -c.electronVersion=${electron.version}
57 ${lib.optionalString stdenv.hostPlatform.isDarwin ''
58 mkdir -p $out/Applications
59 cp -r dist/mac*/Blockbench.app $out/Applications
60 makeWrapper $out/Applications/Blockbench.app/Contents/MacOS/Blockbench $out/bin/blockbench
63 ${lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
64 mkdir -p $out/share/blockbench
65 cp -r dist/*-unpacked/{locales,resources{,.pak}} $out/share/blockbench
67 for size in 16 32 48 64 128 256 512; do
68 mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
69 magick convert -resize "$size"x"$size" icon.png $out/share/icons/hicolor/"$size"x"$size"/apps/blockbench.png
72 makeWrapper ${lib.getExe electron} $out/bin/blockbench \
73 --add-flags $out/share/blockbench/resources/app.asar \
74 --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
81 # based on desktop file found in the published AppImage archive
85 exec = "blockbench %U";
87 desktopName = "Blockbench";
88 comment = meta.description;
89 categories = [ "3DGraphics" ];
90 startupWMClass = "Blockbench";
96 changelog = "https://github.com/JannisX11/blockbench/releases/tag/${src.rev}";
97 description = "Low-poly 3D modeling and animation software";
98 homepage = "https://blockbench.net/";
99 license = lib.licenses.gpl3Only;
100 mainProgram = "blockbench";
101 maintainers = with lib.maintainers; [ tomasajt ];