From 513dffc134b2293f68068e15fd0e9bc4c44f448b Mon Sep 17 00:00:00 2001 From: Sarah Clark Date: Thu, 10 Apr 2025 14:02:51 -0700 Subject: [PATCH 1/4] vivaldi-ffmpeg-codecs: move to /pkgs/by-name --- .../vi/vivaldi-ffmpeg-codecs/package.nix} | 0 pkgs/top-level/all-packages.nix | 4 ---- 2 files changed, 4 deletions(-) rename pkgs/{applications/networking/browsers/vivaldi/ffmpeg-codecs.nix => by-name/vi/vivaldi-ffmpeg-codecs/package.nix} (100%) diff --git a/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix b/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix similarity index 100% rename from pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix rename to pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3ed4554f61ac..5cd6ba016b09 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15714,10 +15714,6 @@ with pkgs; vivaldi = callPackage ../applications/networking/browsers/vivaldi { }; - vivaldi-ffmpeg-codecs = - callPackage ../applications/networking/browsers/vivaldi/ffmpeg-codecs.nix - { }; - openrazer-daemon = python3Packages.toPythonApplication python3Packages.openrazer-daemon; orpie = callPackage ../applications/misc/orpie { From 4f5034f3129622029fa70eba43470f4554cf149c Mon Sep 17 00:00:00 2001 From: Sarah Clark Date: Thu, 10 Apr 2025 16:27:17 -0700 Subject: [PATCH 2/4] vivaldi-ffmpeg-codecs: add sarahec as maintainer --- pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix b/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix index 0872fd859b20..c5ee55008acc 100644 --- a/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix +++ b/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix @@ -35,6 +35,7 @@ stdenv.mkDerivation rec { betaboon cawilliamson fptje + sarahec ]; platforms = [ "x86_64-linux" ]; }; From 051e4e6df5f1bf691562dac8470a7c1dde1a132d Mon Sep 17 00:00:00 2001 From: Sarah Clark Date: Thu, 10 Apr 2025 14:15:23 -0700 Subject: [PATCH 3/4] vivaldi-ffmpeg-codecs: 115541 -> 119239; add aarch64-linux --- .../vi/vivaldi-ffmpeg-codecs/package.nix | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix b/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix index c5ee55008acc..771e15f847c3 100644 --- a/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix +++ b/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix @@ -1,20 +1,32 @@ { - squashfsTools, fetchurl, lib, + squashfsTools, stdenv, }: # This derivation roughly follows the update-ffmpeg script that ships with the official Vivaldi # downloads at https://vivaldi.com/download/ -stdenv.mkDerivation rec { - pname = "chromium-codecs-ffmpeg-extra"; - version = "115541"; - src = fetchurl { - url = "https://api.snapcraft.io/api/v1/snaps/download/XXzVIXswXKHqlUATPqGCj2w2l7BxosS8_41.snap"; - hash = "sha256-a1peHhku+OaGvPyChvLdh6/7zT+v8OHNwt60QUq7VvU="; +let + sources = { + x86_64-linux = fetchurl { + url = "https://api.snapcraft.io/api/v1/snaps/download/XXzVIXswXKHqlUATPqGCj2w2l7BxosS8_73.snap"; + hash = "sha256-YsAYQ/fKlrvu7IbIxLO0oVhWOtZZzUmA00lrU+z/0+s="; + }; + aarch64-linux = fetchurl { + url = "https://api.snapcraft.io/api/v1/snaps/download/XXzVIXswXKHqlUATPqGCj2w2l7BxosS8_74.snap"; + hash = "sha256-zwCbaFeVmeHQLEp7nmD8VlEjSY9PqSVt6CdW4wPtw9o="; + }; }; +in +stdenv.mkDerivation rec { + + pname = "chromium-codecs-ffmpeg-extra"; + + version = "119293"; + + src = sources."${stdenv.hostPlatform.system}"; buildInputs = [ squashfsTools ]; @@ -27,7 +39,7 @@ stdenv.mkDerivation rec { ''; meta = with lib; { - description = "Additional support for proprietary codecs for Vivaldi"; + description = "Additional support for proprietary codecs for Vivaldi and other chromium based tools"; homepage = "https://ffmpeg.org/"; sourceProvenance = with sourceTypes; [ binaryNativeCode ]; license = licenses.lgpl21; @@ -37,6 +49,9 @@ stdenv.mkDerivation rec { fptje sarahec ]; - platforms = [ "x86_64-linux" ]; + platforms = [ + "x86_64-linux" + "aarch64-linux" + ]; }; } From 05dbf8a13097dc65d8e20ebf3767c4c49413cd6a Mon Sep 17 00:00:00 2001 From: Sarah Clark Date: Thu, 10 Apr 2025 14:58:48 -0700 Subject: [PATCH 4/4] vivaldi-ffmpeg-codecs: add update script --- .../vi/vivaldi-ffmpeg-codecs/package.nix | 7 ++- .../vi/vivaldi-ffmpeg-codecs/update.sh | 44 +++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100755 pkgs/by-name/vi/vivaldi-ffmpeg-codecs/update.sh diff --git a/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix b/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix index 771e15f847c3..896adad9f151 100644 --- a/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix +++ b/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/package.nix @@ -21,7 +21,7 @@ let }; in stdenv.mkDerivation rec { - + pname = "chromium-codecs-ffmpeg-extra"; version = "119293"; @@ -38,6 +38,11 @@ stdenv.mkDerivation rec { install -vD chromium-ffmpeg-${version}/chromium-ffmpeg/libffmpeg.so $out/lib/libffmpeg.so ''; + passthru = { + inherit sources; + updateScript = ./update.sh; + }; + meta = with lib; { description = "Additional support for proprietary codecs for Vivaldi and other chromium based tools"; homepage = "https://ffmpeg.org/"; diff --git a/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/update.sh b/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/update.sh new file mode 100755 index 000000000000..fb6f3d47daf7 --- /dev/null +++ b/pkgs/by-name/vi/vivaldi-ffmpeg-codecs/update.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p common-updater-scripts coreutils grep jq squashfsTools + +set -eu -o pipefail + +RELEASES=$(curl -H 'Snap-Device-Series: 16' http://api.snapcraft.io/v2/snaps/info/chromium-ffmpeg) +STABLE_RELEASES=$(echo $RELEASES | jq '."channel-map" | .[] | select(.channel.risk=="stable")') + +function max_version() { + local versions=$(echo $1 | jq -r '.version') + echo "$(echo $versions | grep -E -o '^[0-9]+')" +} + +function update_source() { + local platform=$1 + local selectedRelease=$2 + local version=$3 + local url=$(echo $selectedRelease | jq -r '.download.url') + source="$(nix-prefetch-url "$url")" + hash=$(nix-hash --to-sri --type sha256 "$source") + update-source-version vivaldi-ffmpeg-codecs "$version" "$hash" "$url" --ignore-same-version --system=$platform --source-key="sources.$platform" +} + +x86Release="$(echo $STABLE_RELEASES | jq 'select(.channel.architecture=="amd64")')" +x86CodecVersion=$(max_version "$x86Release") +arm64Release="$(echo $STABLE_RELEASES | jq -r 'select(.channel.architecture=="arm64")')" +arm64CodecVersion=$(max_version "$arm64Release") + +currentVersion=$(nix-instantiate --eval -E "with import ./. {}; vivaldi-ffmpeg-codecs.version or (lib.getVersion vivaldi-ffmpeg-codecs)" | tr -d '"') + +if [[ "$currentVersion" == "$x86CodecVersion" ]]; then + exit 0 +fi + +# If this fails too often, consider finding the max common version between the two architectures +if [[ "$x86CodecVersion" != "$arm64CodecVersion" ]]; then + >&2 echo "Multiple chromium versions found: $x86CodecVersion (intel) and $arm64CodecVersion (arm); no update" + exit 1 +fi + + + +update_source "x86_64-linux" "$x86Release" "$x86CodecVersion" +update_source "aarch64-linux" "$arm64Release" "$arm64CodecVersion"