about summary refs log tree commit diff
path: root/pkgs/applications/audio
diff options
context:
space:
mode:
authorWeijia Wang <9713184+wegank@users.noreply.github.com>2023-12-20 14:57:25 +0100
committerGitHub <noreply@github.com>2023-12-20 14:57:25 +0100
commita037b62e8069d4a02d2bc1a9a5e50ee6773d7a6c (patch)
tree52c08da293fb2951a638101fef9b7884b251d9f1 /pkgs/applications/audio
parenteff16d8bcff5cc91b18930811c5fbe53514026fe (diff)
parentc747c62364360316242dc87309e04f7cacbd1ba6 (diff)
Merge pull request #274079 from aacebedo/aacebedo/update_yt_music_3.1.0
youtube-music: 2.1.0 -> 3.1.0
Diffstat (limited to 'pkgs/applications/audio')
-rw-r--r--pkgs/applications/audio/youtube-music/default.nix76
1 files changed, 60 insertions, 16 deletions
diff --git a/pkgs/applications/audio/youtube-music/default.nix b/pkgs/applications/audio/youtube-music/default.nix
index 18e6ba9e5c12a..fc135c199bd1f 100644
--- a/pkgs/applications/audio/youtube-music/default.nix
+++ b/pkgs/applications/audio/youtube-music/default.nix
@@ -2,45 +2,89 @@
 , fetchFromGitHub
 , buildNpmPackage
 , makeWrapper
-, electron_25
+, electron
 , python3
 , stdenv
+, stdenvNoCC
 , copyDesktopItems
+, moreutils
+, cacert
+, jq
+, nodePackages
 , makeDesktopItem
 }:
 
 let
   pname = "youtube-music";
-  version = "2.1.0";
+  version = "3.1.0";
 
   src = fetchFromGitHub {
     owner = "th-ch";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-aYEEUv+dybzcH0aNJlZ19XF++8cswFunrU0H+ZaKm4Y=";
+    hash = "sha256-6ZiftpdCwxCkJzcHryVrUKzM+mM1eQpdLNFl0Dja59Q=";
   };
 
-  electron = electron_25;
-
 in
-buildNpmPackage {
+stdenv.mkDerivation (finalAttrs: {
   inherit pname version src;
 
-  nativeBuildInputs = [ makeWrapper python3 ]
-    ++ lib.optionals (!stdenv.isDarwin) [ copyDesktopItems ];
+  pnpmDeps = stdenvNoCC.mkDerivation {
+    pname = "${finalAttrs.pname}-pnpm-deps";
+    inherit (finalAttrs) src version ELECTRON_SKIP_BINARY_DOWNLOAD;
+
+    nativeBuildInputs = [ jq moreutils nodePackages.pnpm cacert ];
+
+    installPhase = ''
+      export HOME=$(mktemp -d)
 
-  npmDepsHash = "sha256-XGV0mTywYYxpMitojzIILB/Eu/8dfk/aCvUxIkx4SDQ=";
-  makeCacheWritable = true;
+      pnpm config set store-dir $out
+      pnpm install --frozen-lockfile --ignore-script
 
-  env = {
-    ELECTRON_SKIP_BINARY_DOWNLOAD = 1;
+      rm -rf $out/v3/tmp
+      for f in $(find $out -name "*.json"); do
+        sed -i -E -e 's/"checkedAt":[0-9]+,//g' $f
+        jq --sort-keys . $f | sponge $f
+      done
+    '';
+
+    dontBuild = true;
+    dontFixup = true;
+    outputHashMode = "recursive";
+    outputHashAlgo = "sha256";
+    outputHash = {
+      x86_64-linux = "sha256-Oy11V7FXfVhLUR9gX0sjQEFuVPFpbaVdT518oOSLcvA=";
+      aarch64-linux = "sha256-6nXemaGiQjp2stjjKItPJ62VcH5Q5pRf63qKtl2haXI=";
+      x86_64-darwin = "sha256-jSMAw+AMD63vqPckZjblw4EDngA4E8h0WlsZu3hUShY=";
+      aarch64-darwin = "sha256-zujXURpIcw7IOw63AW167h6cywYXydhHZMzA2apGZAs=";
+    }.${stdenv.system} or (throw "Unsupported platform");
   };
 
+  nativeBuildInputs =
+    [ makeWrapper python3 nodePackages.pnpm nodePackages.nodejs ]
+    ++ lib.optionals (!stdenv.isDarwin) [ copyDesktopItems ];
+
+
+  ELECTRON_SKIP_BINARY_DOWNLOAD = 1;
+
+  preBuild = ''
+    export HOME=$(mktemp -d)
+    export STORE_PATH=$(mktemp -d)
+
+    cp -Tr "$pnpmDeps" "$STORE_PATH"
+    chmod -R +w "$STORE_PATH"
+
+    pnpm config set store-dir "$STORE_PATH"
+    pnpm install --offline --frozen-lockfile --ignore-script
+    patchShebangs node_modules/{*,.*}
+  '';
+
   postBuild = lib.optionalString stdenv.isDarwin ''
     cp -R ${electron}/Applications/Electron.app Electron.app
     chmod -R u+w Electron.app
   '' + ''
-    npm exec electron-builder -- \
+    pnpm build
+    ./node_modules/.bin/electron-builder \
       --dir \
       -c.electronDist=${if stdenv.isDarwin then "." else "${electron}/libexec/electron"} \
       -c.electronVersion=${electron.version}
@@ -83,7 +127,7 @@ buildNpmPackage {
       icon = "youtube-music";
       desktopName = "Youtube Music";
       startupWMClass = "Youtube Music";
-      categories = ["AudioVideo"];
+      categories = [ "AudioVideo" ];
     })
   ];
 
@@ -93,6 +137,6 @@ buildNpmPackage {
     license = licenses.mit;
     maintainers = [ maintainers.aacebedo ];
     mainProgram = "youtube-music";
-    platforms = platforms.all;
+    platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
   };
-}
+})