tuicam: init at 0.0.2 (#377825)
[NixPkgs.git] / pkgs / by-name / bl / blockbench / package.nix
blobd5236efdea7778487aadd694c22d1116eb2007ed
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.12.2";
17   src = fetchFromGitHub {
18     owner = "JannisX11";
19     repo = "blockbench";
20     tag = "v${version}";
21     hash = "sha256-/OdSV/wTrs6roiPiSQCqCLrlWtkB11gm3DM7r7B4HUU=";
22   };
24   nativeBuildInputs =
25     [ makeWrapper ]
26     ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
27       imagemagick # for icon resizing
28       copyDesktopItems
29     ];
31   npmDepsHash = "sha256-ZM3hFMHuKl5BW1+10czESDknc9jIZ024mUSUdNHF3EM=";
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 --enable-wayland-ime=true}}" \
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/v${version}";
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   };