btrbk: add mainProgram (#356350)
[NixPkgs.git] / pkgs / by-name / bl / blockbench / package.nix
blob0b247296bfbef6cb4322f0d49ef0d48553fa24e6
2   lib,
3   stdenv,
4   buildNpmPackage,
5   fetchFromGitHub,
6   makeWrapper,
7   imagemagick,
8   copyDesktopItems,
9   makeDesktopItem,
10   electron,
13 buildNpmPackage rec {
14   pname = "blockbench";
15   version = "4.11.1";
17   src = fetchFromGitHub {
18     owner = "JannisX11";
19     repo = "blockbench";
20     rev = "v${version}";
21     hash = "sha256-a+55seE5tFxTmdTn4qDFWWW6C6FzO8Vgjvfow/tBqf0=";
22   };
24   nativeBuildInputs =
25     [ makeWrapper ]
26     ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
27       imagemagick # for icon resizing
28       copyDesktopItems
29     ];
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
39   '';
41   npmBuildScript = "bundle";
43   postBuild = ''
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 -- \
49         --dir \
50         -c.electronDist=electron-dist \
51         -c.electronVersion=${electron.version}
52   '';
54   installPhase = ''
55     runHook preInstall
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
61     ''}
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
70       done
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}}" \
75           --inherit-argv0
76     ''}
78     runHook postInstall
79   '';
81   # based on desktop file found in the published AppImage archive
82   desktopItems = [
83     (makeDesktopItem {
84       name = "blockbench";
85       exec = "blockbench %U";
86       icon = "blockbench";
87       desktopName = "Blockbench";
88       comment = meta.description;
89       categories = [ "3DGraphics" ];
90       startupWMClass = "Blockbench";
91       terminal = false;
92     })
93   ];
95   meta = {
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 ];
102   };