Unverified Commit 85e36143 authored by Marcus Ramberg's avatar Marcus Ramberg Committed by GitHub
Browse files

vivaldi: re-init at 7.4.3684.43 (#412571)

parents 06e2a109 6dae4461
Loading
Loading
Loading
Loading
+242 −0
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  coreutils,
  fetchurl,
  zlib,
  libX11,
  libXext,
  libSM,
  libICE,
  libxkbcommon,
  libxshmfence,
  libXfixes,
  libXt,
  libXi,
  libXcursor,
  libXScrnSaver,
  libXcomposite,
  libXdamage,
  libXtst,
  libXrandr,
  alsa-lib,
  dbus,
  cups,
  libexif,
  ffmpeg,
  systemd,
  libva,
  libGL,
  freetype,
  fontconfig,
  libXft,
  libXrender,
  libxcb,
  expat,
  libuuid,
  libxml2,
  glib,
  gtk3,
  pango,
  gdk-pixbuf,
  cairo,
  atk,
  at-spi2-atk,
  at-spi2-core,
  qt6,
  libdrm,
  libgbm,
  vulkan-loader,
  nss,
  nspr,
  patchelf,
  makeWrapper,
  wayland,
  pipewire,
  proprietaryCodecs ? false,
  vivaldi-ffmpeg-codecs ? null,
  enableWidevine ? false,
  widevine-cdm ? null,
  commandLineArgs ? "",
  pulseSupport ? stdenv.hostPlatform.isLinux,
  libpulseaudio,
  kerberosSupport ? true,
  libkrb5,
}:

stdenv.mkDerivation rec {
  pname = "vivaldi";
  version = "7.4.3684.43";

  suffix =
    {
      aarch64-linux = "arm64";
      x86_64-linux = "amd64";
    }
    .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");

  src = fetchurl {
    url = "https://downloads.vivaldi.com/stable/vivaldi-stable_${version}-1_${suffix}.deb";
    hash =
      {
        aarch64-linux = "sha256-/Zmxwm65HjIL/JdWJtvcgxk4Bj4VcTXr/px6eCJHy0I=";
        x86_64-linux = "sha256-tDGoew5jEOqoHIHSvoOsBcuEzq817YT0pFSO3Li48OU=";
      }
      .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
  };

  unpackPhase = ''
    runHook preUnpack
    ar vx $src
    tar -xvf data.tar.xz
    runHook postUnpack
  '';

  nativeBuildInputs = [
    patchelf
    makeWrapper
    qt6.wrapQtAppsHook
  ];

  dontWrapQtApps = true;

  buildInputs =
    [
      stdenv.cc.cc
      stdenv.cc.libc
      zlib
      libX11
      libXt
      libXext
      libSM
      libICE
      libxcb
      libxkbcommon
      libxshmfence
      libXi
      libXft
      libXcursor
      libXfixes
      libXScrnSaver
      libXcomposite
      libXdamage
      libXtst
      libXrandr
      atk
      at-spi2-atk
      at-spi2-core
      alsa-lib
      dbus
      cups
      gtk3
      gdk-pixbuf
      libexif
      ffmpeg
      systemd
      libva
      qt6.qtbase
      qt6.qtwayland
      freetype
      fontconfig
      libXrender
      libuuid
      expat
      glib
      nss
      nspr
      libGL
      libxml2
      pango
      cairo
      libdrm
      libgbm
      vulkan-loader
      wayland
      pipewire
    ]
    ++ lib.optional proprietaryCodecs vivaldi-ffmpeg-codecs
    ++ lib.optional pulseSupport libpulseaudio
    ++ lib.optional kerberosSupport libkrb5;

  libPath =
    lib.makeLibraryPath buildInputs
    + lib.optionalString (stdenv.hostPlatform.is64bit) (
      ":" + lib.makeSearchPathOutput "lib" "lib64" buildInputs
    )
    + ":$out/opt/vivaldi/lib";

  buildPhase =
    ''
      runHook preBuild
      echo "Patching Vivaldi binaries"
      for f in chrome_crashpad_handler vivaldi-bin vivaldi-sandbox ; do
        patchelf \
          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
          --set-rpath "${libPath}" \
          opt/vivaldi/$f
      done

      for f in libGLESv2.so libqt5_shim.so libqt6_shim.so; do
        patchelf --set-rpath "${libPath}" opt/vivaldi/$f
      done
    ''
    + lib.optionalString proprietaryCodecs ''
      ln -s ${vivaldi-ffmpeg-codecs}/lib/libffmpeg.so opt/vivaldi/libffmpeg.so.''${version%\.*\.*}
    ''
    + ''
      echo "Finished patching Vivaldi binaries"
      runHook postBuild
    '';

  dontPatchELF = true;
  dontStrip = true;

  installPhase =
    ''
      runHook preInstall
      mkdir -p "$out"
      cp -r opt "$out"
      mkdir "$out/bin"
      ln -s "$out/opt/vivaldi/vivaldi" "$out/bin/vivaldi"
      mkdir -p "$out/share"
      cp -r usr/share/{applications,xfce4} "$out"/share
      substituteInPlace "$out"/share/applications/*.desktop \
        --replace-fail /usr/bin/vivaldi "$out"/bin/vivaldi
      substituteInPlace "$out"/share/applications/*.desktop \
        --replace-fail vivaldi-stable vivaldi
      local d
      for d in 16 22 24 32 48 64 128 256; do
        mkdir -p "$out"/share/icons/hicolor/''${d}x''${d}/apps
        ln -s \
          "$out"/opt/vivaldi/product_logo_''${d}.png \
          "$out"/share/icons/hicolor/''${d}x''${d}/apps/vivaldi.png
      done
      wrapProgram "$out/bin/vivaldi" \
        --add-flags ${lib.escapeShellArg commandLineArgs} \
        --prefix XDG_DATA_DIRS : ${gtk3}/share/gsettings-schemas/${gtk3.name}/ \
        --prefix LD_LIBRARY_PATH : ${libPath} \
        --prefix PATH : ${coreutils}/bin \
        ''${qtWrapperArgs[@]}
    ''
    + lib.optionalString enableWidevine ''
      ln -sf ${widevine-cdm}/share/google/chrome/WidevineCdm $out/opt/vivaldi/WidevineCdm
    ''
    + ''
      runHook postInstall
    '';

  passthru.updateScript = ./update-vivaldi.sh;

  meta = {
    description = "Browser for our Friends, powerful and personal";
    homepage = "https://vivaldi.com";
    license = lib.licenses.unfree;
    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
    mainProgram = "vivaldi";
    maintainers = with lib.maintainers; [ rewine ];
    platforms = [
      "x86_64-linux"
      "aarch64-linux"
    ];
  };
}
+15 −0
Original line number Diff line number Diff line
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl common-updater-scripts

set -eu -o pipefail

version=$(curl -sS https://vivaldi.com/download/ | sed -rne 's/.*vivaldi-stable_([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)-1_amd64\.deb.*/\1/p')

update_hash() {
    url="https://downloads.vivaldi.com/stable/vivaldi-stable_$version-1_$2.deb"
    hash=$(nix hash to-sri --type sha256 $(nix-prefetch-url --type sha256 "$url"))
    update-source-version vivaldi "$version" "$hash" --system=$1 --ignore-same-version
}

update_hash aarch64-linux arm64
update_hash x86_64-linux amd64
+0 −1
Original line number Diff line number Diff line
@@ -2007,7 +2007,6 @@ mapAliases {
  vistafonts = vista-fonts; # Added 2025-02-03
  vistafonts-chs = vista-fonts-chs; # Added 2025-02-03
  vistafonts-cht = vista-fonts-cht; # Added 2025-02-03
  vivaldi = throw "'vivaldi' has been removed due to lack of maintenance in nixpkgs"; # Added 2025-05-29
  vkBasalt = vkbasalt; # Added 2022-11-22
  vkdt-wayland = vkdt; # Added 2024-04-19
  vocal = throw "'vocal' has been archived upstream. Consider using 'gnome-podcasts' or 'kasts' instead."; # Added 2025-04-12