Commit cb7144e2 authored by José Ribeiro's avatar José Ribeiro Committed by Weijia Wang
Browse files

feishin: fix darwin builds

parent 1e1dc66f
Loading
Loading
Loading
Loading
+73 −45
Original line number Diff line number Diff line
{
  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,13 +33,21 @@ buildNpmPackage {

  env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";

  nativeBuildInputs = [ copyDesktopItems ];
  nativeBuildInputs =
    lib.optionals (stdenv.isLinux) [ copyDesktopItems ]
    ++ lib.optionals stdenv.isDarwin [ darwin.autoSignDarwinBinariesHook ];

  postPatch = ''
  postPatch =
    ''
      # release/app dependencies are installed on preConfigure
      substituteInPlace package.json \
        --replace-fail "electron-builder install-app-deps &&" ""

      # 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'"
@@ -67,17 +76,35 @@ buildNpmPackage {
      done
    '';

  postBuild = ''
  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=${electron}/libexec/electron \
        -c.electronDist=${if stdenv.isDarwin then "./" else "${electron}/libexec/electron"} \
        -c.electronVersion=${electron.version} \
        -c.npmRebuild=false
    '';

  installPhase = ''
  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
@@ -98,7 +125,8 @@ buildNpmPackage {
          $out/share/feishin/resources/assets/icons/"$size"x"$size".png \
          $out/share/icons/hicolor/"$size"x"$size"/apps/${pname}.png
      done

    ''
    + ''
      runHook postInstall
    '';