about summary refs log tree commit diff
path: root/pkgs/by-name/bl
diff options
context:
space:
mode:
authorTomaSajt <62384384+TomaSajt@users.noreply.github.com>2024-05-20 20:17:40 +0200
committerTomaSajt <62384384+TomaSajt@users.noreply.github.com>2024-05-20 20:44:22 +0200
commitc88cecc37acc32ea0982da9f286290b076d47c70 (patch)
tree81dfc0d7262be9a1d1702374ac979eefad0c970d /pkgs/by-name/bl
parent9f7053ffc1bd0baff9a792fd47b568dd3f4582a5 (diff)
blockbench: fix darwin build
Diffstat (limited to 'pkgs/by-name/bl')
-rw-r--r--pkgs/by-name/bl/blockbench/package.nix77
1 files changed, 50 insertions, 27 deletions
diff --git a/pkgs/by-name/bl/blockbench/package.nix b/pkgs/by-name/bl/blockbench/package.nix
index e7f019244e19f..093727fe0d137 100644
--- a/pkgs/by-name/bl/blockbench/package.nix
+++ b/pkgs/by-name/bl/blockbench/package.nix
@@ -1,16 +1,18 @@
-{ lib
-, stdenv
-, buildNpmPackage
-, fetchFromGitHub
-, imagemagick
-, makeWrapper
-, makeDesktopItem
-, copyDesktopItems
-, electron_28
+{
+  lib,
+  stdenv,
+  buildNpmPackage,
+  fetchFromGitHub,
+  makeWrapper,
+  imagemagick,
+  copyDesktopItems,
+  makeDesktopItem,
+  electron_28,
 }:
 
 let
   electron = electron_28;
+  electronDist = "${electron}/${if stdenv.isDarwin then "Applications" else "libexec/electron"}";
 in
 buildNpmPackage rec {
   pname = "blockbench";
@@ -23,40 +25,59 @@ buildNpmPackage rec {
     hash = "sha256-pycRC+ZpN2P5Z66/aGA4gykLF7IwdeToRadaJSA1L9w=";
   };
 
-  nativeBuildInputs = [
-    imagemagick # for icon resizing
-    makeWrapper
-    copyDesktopItems
-  ];
+  nativeBuildInputs =
+    [ makeWrapper ]
+    ++ lib.optionals (!stdenv.isDarwin) [
+      imagemagick # for icon resizing
+      copyDesktopItems
+    ];
 
   npmDepsHash = "sha256-CHZdCiewkmToDHhTTvOqQfWrphOw1oGLgwSRRH3YFWE=";
 
   env.ELECTRON_SKIP_BINARY_DOWNLOAD = 1;
 
+  # disable code signing on Darwin
+  postConfigure = lib.optionalString stdenv.isDarwin ''
+    export CSC_IDENTITY_AUTO_DISCOVERY=false
+    sed -i "/afterSign/d" package.json
+  '';
+
   npmBuildScript = "bundle";
 
   postBuild = ''
+    # electronDist needs to be modifiable on Darwin
+    cp -r ${electronDist} electron-dist
+    chmod -R u+w electron-dist
+
     npm exec electron-builder -- \
         --dir \
-        -c.electronDist=${electron}/libexec/electron \
+        -c.electronDist=electron-dist \
         -c.electronVersion=${electron.version}
   '';
 
   installPhase = ''
     runHook preInstall
 
-    mkdir -p $out/share/blockbench
-    cp -r dist/*-unpacked/{locales,resources{,.pak}} $out/share/blockbench
+    ${lib.optionalString stdenv.isDarwin ''
+      mkdir -p $out/Applications
+      cp -r dist/mac*/Blockbench.app $out/Applications
+      makeWrapper $out/Applications/Blockbench.app/Contents/MacOS/Blockbench $out/bin/blockbench
+    ''}
+
+    ${lib.optionalString (!stdenv.isDarwin) ''
+      mkdir -p $out/share/blockbench
+      cp -r dist/*-unpacked/{locales,resources{,.pak}} $out/share/blockbench
 
-    for size in 16 32 48 64 128 256 512; do
-      mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
-      convert -resize "$size"x"$size" icon.png $out/share/icons/hicolor/"$size"x"$size"/apps/blockbench.png
-    done
+      for size in 16 32 48 64 128 256 512; do
+        mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
+        convert -resize "$size"x"$size" icon.png $out/share/icons/hicolor/"$size"x"$size"/apps/blockbench.png
+      done
 
-    makeWrapper ${lib.getExe electron} $out/bin/blockbench \
-        --add-flags $out/share/blockbench/resources/app.asar \
-        --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
-        --inherit-argv0
+      makeWrapper ${lib.getExe electron} $out/bin/blockbench \
+          --add-flags $out/share/blockbench/resources/app.asar \
+          --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
+          --inherit-argv0
+    ''}
 
     runHook postInstall
   '';
@@ -81,7 +102,9 @@ buildNpmPackage rec {
     homepage = "https://blockbench.net/";
     license = lib.licenses.gpl3Only;
     mainProgram = "blockbench";
-    maintainers = with lib.maintainers; [ ckie tomasajt ];
-    broken = stdenv.isDarwin;
+    maintainers = with lib.maintainers; [
+      ckie
+      tomasajt
+    ];
   };
 }