Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 104 lines 2.9 kB view raw
1{ 2 lib, 3 stdenv, 4 buildNpmPackage, 5 fetchFromGitHub, 6 makeWrapper, 7 imagemagick, 8 copyDesktopItems, 9 makeDesktopItem, 10 electron, 11}: 12 13buildNpmPackage rec { 14 pname = "blockbench"; 15 version = "4.12.5"; 16 17 src = fetchFromGitHub { 18 owner = "JannisX11"; 19 repo = "blockbench"; 20 tag = "v${version}"; 21 hash = "sha256-u8NjwEsy3vimcvwtsUANckEx0Uz4vJLAiuUmN5lm5eQ="; 22 }; 23 24 nativeBuildInputs = [ 25 makeWrapper 26 ] 27 ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ 28 imagemagick # for icon resizing 29 copyDesktopItems 30 ]; 31 32 npmDepsHash = "sha256-WiBQpd8Qlw5QTXh3kB2dG4dGZ1zfpYst5MgfHoK8UU4="; 33 34 env.ELECTRON_SKIP_BINARY_DOWNLOAD = 1; 35 36 # disable code signing on Darwin 37 postConfigure = lib.optionalString stdenv.hostPlatform.isDarwin '' 38 export CSC_IDENTITY_AUTO_DISCOVERY=false 39 sed -i "/afterSign/d" package.json 40 ''; 41 42 npmBuildScript = "bundle"; 43 44 postBuild = '' 45 # electronDist needs to be modifiable on Darwin 46 cp -r ${electron.dist} electron-dist 47 chmod -R u+w electron-dist 48 49 npm exec electron-builder -- \ 50 --dir \ 51 -c.electronDist=electron-dist \ 52 -c.electronVersion=${electron.version} 53 ''; 54 55 installPhase = '' 56 runHook preInstall 57 58 ${lib.optionalString stdenv.hostPlatform.isDarwin '' 59 mkdir -p $out/Applications 60 cp -r dist/mac*/Blockbench.app $out/Applications 61 makeWrapper $out/Applications/Blockbench.app/Contents/MacOS/Blockbench $out/bin/blockbench 62 ''} 63 64 ${lib.optionalString (!stdenv.hostPlatform.isDarwin) '' 65 mkdir -p $out/share/blockbench 66 cp -r dist/*-unpacked/{locales,resources{,.pak}} $out/share/blockbench 67 68 for size in 16 32 48 64 128 256 512; do 69 mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps 70 magick icon.png -resize "$size"x"$size" $out/share/icons/hicolor/"$size"x"$size"/apps/blockbench.png 71 done 72 73 makeWrapper ${lib.getExe electron} $out/bin/blockbench \ 74 --add-flags $out/share/blockbench/resources/app.asar \ 75 --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ 76 --inherit-argv0 77 ''} 78 79 runHook postInstall 80 ''; 81 82 # based on desktop file found in the published AppImage archive 83 desktopItems = [ 84 (makeDesktopItem { 85 name = "blockbench"; 86 exec = "blockbench %U"; 87 icon = "blockbench"; 88 desktopName = "Blockbench"; 89 comment = meta.description; 90 categories = [ "3DGraphics" ]; 91 startupWMClass = "Blockbench"; 92 terminal = false; 93 }) 94 ]; 95 96 meta = { 97 changelog = "https://github.com/JannisX11/blockbench/releases/tag/v${version}"; 98 description = "Low-poly 3D modeling and animation software"; 99 homepage = "https://blockbench.net/"; 100 license = lib.licenses.gpl3Only; 101 mainProgram = "blockbench"; 102 maintainers = with lib.maintainers; [ tomasajt ]; 103 }; 104}