summaryrefslogtreecommitdiffstats
path: root/pkgs/applications
diff options
context:
space:
mode:
authorJosé Ribeiro <work@jlbribeiro.com>2024-04-18 19:13:18 +0100
committerWeijia Wang <9713184+wegank@users.noreply.github.com>2024-04-30 15:55:17 +0200
commitcb7144e21d446e401aeeebcb29241226f27f1ea8 (patch)
tree2f2feb9efd8fdf3a4b81d258c7fcdceb25745a8c /pkgs/applications
parent1e1dc66fe68972a76679644a5577828b6a7e8be4 (diff)
feishin: fix darwin builds
Addresses the comment https://github.com/NixOS/nixpkgs/pull/303638#issuecomment-2052463043 following #303638.
Diffstat (limited to 'pkgs/applications')
-rw-r--r--pkgs/applications/audio/feishin/default.nix118
1 files changed, 73 insertions, 45 deletions
diff --git a/pkgs/applications/audio/feishin/default.nix b/pkgs/applications/audio/feishin/default.nix
index 5168d084af72..84bfc59362f2 100644
--- a/pkgs/applications/audio/feishin/default.nix
+++ b/pkgs/applications/audio/feishin/default.nix
@@ -1,8 +1,10 @@
{
lib,
+ stdenv,
buildNpmPackage,
fetchFromGitHub,
electron_27,
+ darwin,
copyDesktopItems,
makeDesktopItem,
...
@@ -21,8 +23,7 @@ let
electron = electron_27;
in
buildNpmPackage {
- pname = "feishin";
- inherit version;
+ inherit pname version;
inherit src;
npmDepsHash = "sha256-+pr9fWg/9kxkYMmthtqhjgF6MOomSQxVCO5V8tHHRdE=";
@@ -32,17 +33,25 @@ buildNpmPackage {
env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
- nativeBuildInputs = [ copyDesktopItems ];
+ nativeBuildInputs =
+ lib.optionals (stdenv.isLinux) [ copyDesktopItems ]
+ ++ lib.optionals stdenv.isDarwin [ darwin.autoSignDarwinBinariesHook ];
- postPatch = ''
- # release/app dependencies are installed on preConfigure
- substituteInPlace package.json \
- --replace-fail "electron-builder install-app-deps &&" ""
+ postPatch =
+ ''
+ # release/app dependencies are installed on preConfigure
+ substituteInPlace package.json \
+ --replace-fail "electron-builder install-app-deps &&" ""
- # https://github.com/electron/electron/issues/31121
- substituteInPlace src/main/main.ts \
- --replace-fail "process.resourcesPath" "'$out/share/feishin/resources'"
- '';
+ # Don't check for updates.
+ substituteInPlace src/main/main.ts \
+ --replace-fail "autoUpdater.checkForUpdatesAndNotify();" ""
+ ''
+ + lib.optionalString stdenv.isLinux ''
+ # https://github.com/electron/electron/issues/31121
+ substituteInPlace src/main/main.ts \
+ --replace-fail "process.resourcesPath" "'$out/share/feishin/resources'"
+ '';
preConfigure =
let
@@ -67,40 +76,59 @@ buildNpmPackage {
done
'';
- postBuild = ''
- npm exec electron-builder -- \
- --dir \
- -c.electronDist=${electron}/libexec/electron \
- -c.electronVersion=${electron.version} \
- -c.npmRebuild=false
- '';
-
- installPhase = ''
- runHook preInstall
-
- mkdir -p $out/share/feishin
- pushd release/build/*/
- cp -r locales resources{,.pak} $out/share/feishin
- popd
-
- # Code relies on checking app.isPackaged, which returns false if the executable is electron.
- # Set ELECTRON_FORCE_IS_PACKAGED=1.
- # https://github.com/electron/electron/issues/35153#issuecomment-1202718531
- makeWrapper ${lib.getExe electron} $out/bin/feishin \
- --add-flags $out/share/feishin/resources/app.asar \
- --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
- --set ELECTRON_FORCE_IS_PACKAGED=1 \
- --inherit-argv0
-
- for size in 32 64 128 256 512 1024; do
- mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
- ln -s \
- $out/share/feishin/resources/assets/icons/"$size"x"$size".png \
- $out/share/icons/hicolor/"$size"x"$size"/apps/${pname}.png
- done
-
- runHook postInstall
- '';
+ postBuild =
+ lib.optionalString stdenv.isDarwin ''
+ # electron-builder appears to build directly on top of Electron.app, by overwriting the files in the bundle.
+ cp -r ${electron}/Applications/Electron.app ./
+ find ./Electron.app -name 'Info.plist' | xargs -d '\n' chmod +rw
+
+ # Disable code signing during build on macOS.
+ # https://github.com/electron-userland/electron-builder/blob/fa6fc16/docs/code-signing.md#how-to-disable-code-signing-during-the-build-process-on-macos
+ export CSC_IDENTITY_AUTO_DISCOVERY=false
+ sed -i "/afterSign/d" package.json
+ ''
+ + ''
+ npm exec electron-builder -- \
+ --dir \
+ -c.electronDist=${if stdenv.isDarwin then "./" else "${electron}/libexec/electron"} \
+ -c.electronVersion=${electron.version} \
+ -c.npmRebuild=false
+ '';
+
+ installPhase =
+ ''
+ runHook preInstall
+ ''
+ + lib.optionalString stdenv.isDarwin ''
+ mkdir -p $out/{Applications,bin}
+ cp -r release/build/**/Feishin.app $out/Applications/
+ makeWrapper $out/Applications/Feishin.app/Contents/MacOS/Feishin $out/bin/feishin
+ ''
+ + lib.optionalString stdenv.isLinux ''
+ mkdir -p $out/share/feishin
+ pushd release/build/*/
+ cp -r locales resources{,.pak} $out/share/feishin
+ popd
+
+ # Code relies on checking app.isPackaged, which returns false if the executable is electron.
+ # Set ELECTRON_FORCE_IS_PACKAGED=1.
+ # https://github.com/electron/electron/issues/35153#issuecomment-1202718531
+ makeWrapper ${lib.getExe electron} $out/bin/feishin \
+ --add-flags $out/share/feishin/resources/app.asar \
+ --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
+ --set ELECTRON_FORCE_IS_PACKAGED=1 \
+ --inherit-argv0
+
+ for size in 32 64 128 256 512 1024; do
+ mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
+ ln -s \
+ $out/share/feishin/resources/assets/icons/"$size"x"$size".png \
+ $out/share/icons/hicolor/"$size"x"$size"/apps/${pname}.png
+ done
+ ''
+ + ''
+ runHook postInstall
+ '';
desktopItems = [
(makeDesktopItem {