From 4910bf15877f16aa3db7140c748920ee63aa3ad6 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Wed, 13 Nov 2024 19:49:14 -0800 Subject: [PATCH] widevine-cdm: add aarch64-linux --- .../by-name/wi/widevine-cdm/aarch64-linux.nix | 49 +++++++++++++++++++ pkgs/by-name/wi/widevine-cdm/meta.nix | 12 +++++ pkgs/by-name/wi/widevine-cdm/package.nix | 36 +------------- pkgs/by-name/wi/widevine-cdm/x86_64-linux.nix | 28 +++++++++++ 4 files changed, 91 insertions(+), 34 deletions(-) create mode 100644 pkgs/by-name/wi/widevine-cdm/aarch64-linux.nix create mode 100644 pkgs/by-name/wi/widevine-cdm/meta.nix create mode 100644 pkgs/by-name/wi/widevine-cdm/x86_64-linux.nix diff --git a/pkgs/by-name/wi/widevine-cdm/aarch64-linux.nix b/pkgs/by-name/wi/widevine-cdm/aarch64-linux.nix new file mode 100644 index 000000000000..f8ce102acdda --- /dev/null +++ b/pkgs/by-name/wi/widevine-cdm/aarch64-linux.nix @@ -0,0 +1,49 @@ +{ + lib, + stdenv, + fetchurl, + fetchFromGitHub, + squashfsTools, + python3, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "widevine-cdm"; + version = "${finalAttrs.lacrosVersion}-${builtins.substring 0 7 finalAttrs.widevineInstaller.rev}"; + lacrosVersion = "120.0.6098.0"; + + widevineInstaller = fetchFromGitHub { + owner = "AsahiLinux"; + repo = "widevine-installer"; + rev = "7a3928fe1342fb07d96f61c2b094e3287588958b"; + sha256 = "sha256-XI1y4pVNpXS+jqFs0KyVMrxcULOJ5rADsgvwfLF6e0Y="; + }; + + src = fetchurl { + url = "https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/chromeos-lacros-arm64-squash-zstd-${finalAttrs.lacrosVersion}"; + hash = "sha256-OKV8w5da9oZ1oSGbADVPCIkP9Y0MVLaQ3PXS3ZBLFXY="; + }; + + nativeBuildInputs = [ + squashfsTools + python3 + ]; + + unpackPhase = '' + unsquashfs -q $src 'WidevineCdm/*' + 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 + ''; + + # Accoring to widevine-installer: "Hack because Chromium hardcodes a check for this right now..." + postInstall = '' + 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_arm64/libwidevinecdm.so" + mkdir -p "$out/share/google/chrome/WidevineCdm/_platform_specific/linux_x64" + touch "$out/share/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so" + ''; + + meta = import ./meta.nix lib; +}) diff --git a/pkgs/by-name/wi/widevine-cdm/meta.nix b/pkgs/by-name/wi/widevine-cdm/meta.nix new file mode 100644 index 000000000000..0361d3ee1da5 --- /dev/null +++ b/pkgs/by-name/wi/widevine-cdm/meta.nix @@ -0,0 +1,12 @@ +lib: { + description = "Widevine CDM"; + homepage = "https://www.widevine.com"; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.unfree; + maintainers = with lib.maintainers; [ jlamur ]; + platforms = lib.map (lib.removeSuffix ".nix") ( + lib.filter (name: name != "meta.nix" && name != "package.nix") ( + builtins.attrNames (builtins.readDir ./.) + ) + ); +} diff --git a/pkgs/by-name/wi/widevine-cdm/package.nix b/pkgs/by-name/wi/widevine-cdm/package.nix index a5e7bc2f1b40..f4e0d12fbe49 100644 --- a/pkgs/by-name/wi/widevine-cdm/package.nix +++ b/pkgs/by-name/wi/widevine-cdm/package.nix @@ -1,35 +1,3 @@ -{ - lib, - stdenv, - fetchzip, -}: +{ stdenv, callPackage }: -stdenv.mkDerivation rec { - pname = "widevine-cdm"; - version = "4.10.2830.0"; - - src = fetchzip { - url = "https://dl.google.com/widevine-cdm/${version}-linux-x64.zip"; - hash = "sha256-XDnsan1ulnIK87Owedb2s9XWLzk1K2viGGQe9LN/kcE="; - stripRoot = false; - }; - - 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 - - runHook postInstall - ''; - - 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" ]; - }; -} +callPackage (./. + "/${stdenv.hostPlatform.system}.nix") { inherit stdenv; } diff --git a/pkgs/by-name/wi/widevine-cdm/x86_64-linux.nix b/pkgs/by-name/wi/widevine-cdm/x86_64-linux.nix new file mode 100644 index 000000000000..07432c73527f --- /dev/null +++ b/pkgs/by-name/wi/widevine-cdm/x86_64-linux.nix @@ -0,0 +1,28 @@ +{ + lib, + stdenv, + fetchzip, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "widevine-cdm"; + version = "4.10.2830.0"; + + src = fetchzip { + url = "https://dl.google.com/widevine-cdm/${finalAttrs.version}-linux-x64.zip"; + hash = "sha256-XDnsan1ulnIK87Owedb2s9XWLzk1K2viGGQe9LN/kcE="; + stripRoot = false; + }; + + 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 + + runHook postInstall + ''; + + meta = import ./meta.nix lib; +})