diff options
Diffstat (limited to 'pkgs/applications/audio/feishin/default.nix')
-rw-r--r-- | pkgs/applications/audio/feishin/default.nix | 131 |
1 files changed, 81 insertions, 50 deletions
diff --git a/pkgs/applications/audio/feishin/default.nix b/pkgs/applications/audio/feishin/default.nix index 5168d084af72a..90561314fec90 100644 --- a/pkgs/applications/audio/feishin/default.nix +++ b/pkgs/applications/audio/feishin/default.nix @@ -1,48 +1,57 @@ { lib, + stdenv, buildNpmPackage, fetchFromGitHub, electron_27, + darwin, copyDesktopItems, makeDesktopItem, ... }: let pname = "feishin"; - version = "0.6.1"; + version = "0.7.1"; src = fetchFromGitHub { owner = "jeffvli"; repo = pname; rev = "v${version}"; - hash = "sha256-Nj8GwrH49ph14xvJldj5GQR4mlt9unCPEcgLrsH/sx8="; + hash = "sha256-eNGHrSF/MgRHh0CVc0l8denZIbAnPXwFCZJZcvF+Xtc="; }; electron = electron_27; in buildNpmPackage { - pname = "feishin"; - inherit version; + inherit pname version; inherit src; - npmDepsHash = "sha256-+pr9fWg/9kxkYMmthtqhjgF6MOomSQxVCO5V8tHHRdE="; + npmDepsHash = "sha256-7oh5bl5APAvzb/TxHMUP/saRWLwuP9xqGvn7/RDhFk8="; npmFlags = [ "--legacy-peer-deps" ]; makeCacheWritable = true; 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 @@ -51,7 +60,7 @@ buildNpmPackage { inherit version; src = "${src}/release/app"; - npmDepsHash = "sha256-MRwKxe1hoFs5bPXT6K/UspSDs9XBdcRJGvxGlTKExp4="; + npmDepsHash = "sha256-NgWPr3mctn7f6X2JFsbdNNHkN84RRlLAywqfbyahCQw="; npmFlags = [ "--ignore-scripts" ]; dontNpmBuild = true; @@ -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 { @@ -125,6 +153,9 @@ buildNpmPackage { license = licenses.gpl3Plus; platforms = platforms.unix; mainProgram = "feishin"; - maintainers = with maintainers; [ onny ]; + maintainers = with maintainers; [ + onny + jlbribeiro + ]; }; } |