From 0ef71c71fa5c0ded04646b254905fae8f43b47fe Mon Sep 17 00:00:00 2001 From: Dovydas Kersys Date: Sun, 25 Aug 2024 16:48:29 +0300 Subject: [PATCH 1/3] widevine-cdm: add aarch64 support --- .../networking/browsers/misc/widevine-cdm.nix | 48 +++++++++++++++++-- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/networking/browsers/misc/widevine-cdm.nix b/pkgs/applications/networking/browsers/misc/widevine-cdm.nix index 0c8d8fb24edd..e388c134260a 100644 --- a/pkgs/applications/networking/browsers/misc/widevine-cdm.nix +++ b/pkgs/applications/networking/browsers/misc/widevine-cdm.nix @@ -1,34 +1,74 @@ { lib , stdenv , fetchzip +, fetchurl +, fetchFromGitHub +, squashfsTools +, curl +, python3 }: stdenv.mkDerivation rec { pname = "widevine-cdm"; version = "4.10.2710.0"; + lacrosVersion = "120.0.6098.0"; - src = fetchzip { + widevine-installer = if stdenv.isAarch64 then stdenv.mkDerivation rec { + name = "widevine-installer"; + src = fetchFromGitHub { + owner = "AsahiLinux"; + repo = "${name}"; + rev = "7a3928fe1342fb07d96f61c2b094e3287588958b"; + sha256 = "sha256-XI1y4pVNpXS+jqFs0KyVMrxcULOJ5rADsgvwfLF6e0Y="; + }; + + installPhase = '' + mkdir -p "$out/bin/" + cp widevine_fixup.py "$out/bin/" + ''; + } else null; + + src = if stdenv.isAarch64 then fetchurl { + url = "https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/chromeos-lacros-arm64-squash-zstd-${lacrosVersion}"; + hash = "sha256-OKV8w5da9oZ1oSGbADVPCIkP9Y0MVLaQ3PXS3ZBLFXY="; + } else fetchzip { url = "https://dl.google.com/widevine-cdm/${version}-linux-x64.zip"; hash = "sha256-lGTrSzUk5FluH1o4E/9atLIabEpco3C3gZw+y6H6LJo="; stripRoot = false; }; + buildInputs = [ squashfsTools curl python3]; + + unpackPhase = if stdenv.isAarch64 then '' + curl -# -o lacros.squashfs "file://$src" + unsquashfs -q lacros.squashfs 'WidevineCdm/*' + python3 ${widevine-installer}/bin/widevine_fixup.py squashfs-root/WidevineCdm/_platform_specific/cros_arm64/libwidevinecdm.so libwidevinecdm.so + cp squashfs-root/WidevineCdm/manifest.json . + cp squashfs-root/WidevineCdm/LICENSE LICENSE.txt + '' else null; + installPhase = '' runHook preInstall install -vD manifest.json $out/share/google/chrome/WidevineCdm/manifest.json install -vD LICENSE.txt $out/share/google/chrome/WidevineCdm/LICENSE.txt - install -vD libwidevinecdm.so $out/share/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so + install -vD libwidevinecdm.so $out/share/google/chrome/WidevineCdm/_platform_specific/linux_${ if stdenv.isAarch64 then "arm64" else "x64" }/libwidevinecdm.so runHook postInstall ''; +# Accoring to widevine-installer: "Hack because Chromium hardcodes a check for this right now..." + postInstall = if stdenv.isAarch64 then '' + mkdir -p "$out/share/google/chrome/WidevineCdm/_platform_specific/linux_x64" + touch "$out/share/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so" + '' else null; + meta = with lib; { description = "Widevine CDM"; homepage = "https://www.widevine.com"; sourceProvenance = with sourceTypes; [ binaryNativeCode ]; license = licenses.unfree; - maintainers = with maintainers; [ jlamur ]; - platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ jlamur dxwil ]; + platforms = [ "x86_64-linux" "aarch64-linux" ]; }; } From db9091437e73199a7d3e1d3c58ad072ad33a9983 Mon Sep 17 00:00:00 2001 From: Dovydas Kersys Date: Sun, 25 Aug 2024 16:48:29 +0300 Subject: [PATCH 2/3] widevine-cdm: add aarch64 support --- maintainers/maintainer-list.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 25802a260cff..ee1265076892 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -5630,6 +5630,12 @@ githubId = 6689924; name = "David Terry"; }; + dxwil = { + email = "dovydas@kersys.lt"; + github = "dxwil"; + githubId = 90563298; + name = "Dovydas Kersys"; + }; dylan-gonzalez = { email = "dylcg10@gmail.com"; github = "dylan-gonzalez"; From e332e2cfb9d5a98c9872a8b2ef845f860f8977d1 Mon Sep 17 00:00:00 2001 From: Dovydas Kersys Date: Tue, 27 Aug 2024 10:39:47 +0300 Subject: [PATCH 3/3] widevine-cdm: add aarch64 support --- .../networking/browsers/misc/widevine-cdm.nix | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/pkgs/applications/networking/browsers/misc/widevine-cdm.nix b/pkgs/applications/networking/browsers/misc/widevine-cdm.nix index e388c134260a..bd5813ddcccc 100644 --- a/pkgs/applications/networking/browsers/misc/widevine-cdm.nix +++ b/pkgs/applications/networking/browsers/misc/widevine-cdm.nix @@ -1,7 +1,7 @@ { lib , stdenv -, fetchzip , fetchurl +, fetchzip , fetchFromGitHub , squashfsTools , curl @@ -13,20 +13,12 @@ stdenv.mkDerivation rec { version = "4.10.2710.0"; lacrosVersion = "120.0.6098.0"; - widevine-installer = if stdenv.isAarch64 then stdenv.mkDerivation rec { - name = "widevine-installer"; - src = fetchFromGitHub { + widevineInstaller = if stdenv.isAarch64 then fetchFromGitHub { owner = "AsahiLinux"; - repo = "${name}"; + repo = "widevine-installer"; rev = "7a3928fe1342fb07d96f61c2b094e3287588958b"; sha256 = "sha256-XI1y4pVNpXS+jqFs0KyVMrxcULOJ5rADsgvwfLF6e0Y="; - }; - - installPhase = '' - mkdir -p "$out/bin/" - cp widevine_fixup.py "$out/bin/" - ''; - } else null; + } else null; src = if stdenv.isAarch64 then fetchurl { url = "https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/chromeos-lacros-arm64-squash-zstd-${lacrosVersion}"; @@ -37,12 +29,12 @@ stdenv.mkDerivation rec { stripRoot = false; }; - buildInputs = [ squashfsTools curl python3]; + buildInputs = [ squashfsTools curl python3 ]; unpackPhase = if stdenv.isAarch64 then '' curl -# -o lacros.squashfs "file://$src" unsquashfs -q lacros.squashfs 'WidevineCdm/*' - python3 ${widevine-installer}/bin/widevine_fixup.py squashfs-root/WidevineCdm/_platform_specific/cros_arm64/libwidevinecdm.so libwidevinecdm.so + python3 ${widevineInstaller}/widevine_fixup.py squashfs-root/WidevineCdm/_platform_specific/cros_arm64/libwidevinecdm.so libwidevinecdm.so cp squashfs-root/WidevineCdm/manifest.json . cp squashfs-root/WidevineCdm/LICENSE LICENSE.txt '' else null; @@ -52,16 +44,20 @@ stdenv.mkDerivation rec { install -vD manifest.json $out/share/google/chrome/WidevineCdm/manifest.json install -vD LICENSE.txt $out/share/google/chrome/WidevineCdm/LICENSE.txt - install -vD libwidevinecdm.so $out/share/google/chrome/WidevineCdm/_platform_specific/linux_${ if stdenv.isAarch64 then "arm64" else "x64" }/libwidevinecdm.so + install -vD libwidevinecdm.so $out/share/google/chrome/WidevineCdm/_platform_specific/linux_${ + if stdenv.targetPlatform.isAarch64 then "arm64" + else if stdenv.targetPlatform.isx86_64 then "x64" + else throw "Unsupported platform ${stdenv.targetPlatform.config}" + }/libwidevinecdm.so runHook postInstall ''; # Accoring to widevine-installer: "Hack because Chromium hardcodes a check for this right now..." - postInstall = if stdenv.isAarch64 then '' + postInstall = lib.optionalString stdenv.isAarch64 '' mkdir -p "$out/share/google/chrome/WidevineCdm/_platform_specific/linux_x64" touch "$out/share/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so" - '' else null; + ''; meta = with lib; { description = "Widevine CDM";