Unverified Commit 6a1d52ea authored by Thomas Gerbet's avatar Thomas Gerbet Committed by GitHub
Browse files

microsoft-edge: re-init at 137.0.3296.68 (#411663)

parents 9cd0574e c02eb62c
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -13947,6 +13947,12 @@
    githubId = 567634;
    name = "Daniel Kuehn";
  };
  leleuvilela = {
    email = "viniciusvilela19@gmail.com";
    github = "leleuvilela";
    githubId = 19839085;
    name = "Vinicius Vilela";
  };
  lelgenio = {
    email = "lelgenio@lelgenio.com";
    github = "lelgenio";
@@ -14950,6 +14956,13 @@
    name = "Mæve";
    keys = [ { fingerprint = "96C9 D086 CC9D 7BD7 EF24  80E2 9168 796A 1CC3 AEA2"; } ];
  };
  maeve-oake = {
    email = "maeve@oa.ke";
    matrix = "@maeve:oa.ke";
    github = "maeve-oake";
    githubId = 38541651;
    name = "maeve";
  };
  mafo = {
    email = "Marc.Fontaine@gmx.de";
    github = "MarcFontaine";
+299 −0
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  fetchurl,
  makeWrapper,
  patchelf,
  dpkg,

  # Linked dynamic libraries.
  alsa-lib,
  at-spi2-atk,
  at-spi2-core,
  atk,
  cairo,
  cups,
  dbus,
  expat,
  fontconfig,
  freetype,
  gcc-unwrapped,
  gdk-pixbuf,
  glib,
  gtk3,
  gtk4,
  libdrm,
  libglvnd,
  libkrb5,
  libX11,
  libxcb,
  libXcomposite,
  libXcursor,
  libXdamage,
  libXext,
  libXfixes,
  libXi,
  libxkbcommon,
  libXrandr,
  libXrender,
  libXScrnSaver,
  libxshmfence,
  libXtst,
  libgbm,
  nspr,
  nss,
  pango,
  pipewire,
  vulkan-loader,
  wayland, # ozone/wayland

  # Command line programs
  coreutils,

  # command line arguments which are always set e.g "--disable-gpu"
  commandLineArgs ? "",

  # Will crash without.
  systemd,

  # Loaded at runtime.
  libexif,
  pciutils,

  # Additional dependencies according to other distros.
  ## Ubuntu
  curl,
  liberation_ttf,
  util-linux,
  wget,
  xdg-utils,
  ## Arch Linux.
  flac,
  harfbuzz,
  icu,
  libopus,
  libpng,
  snappy,
  speechd-minimal,
  ## Gentoo
  bzip2,
  libcap,

  # Necessary for USB audio devices.
  libpulseaudio,
  pulseSupport ? true,

  adwaita-icon-theme,
  gsettings-desktop-schemas,

  # For video acceleration via VA-API (--enable-features=VaapiVideoDecoder)
  libva,
  libvaSupport ? true,

  # For Vulkan support (--enable-features=Vulkan)
  addDriverRunpath,

  # For QT support
  qt6,

  # Edge AAD sync
  cacert,
  libsecret,

  # Edge Specific
  libuuid,
}:

let

  opusWithCustomModes = libopus.override { withCustomModes = true; };

  deps =
    [
      alsa-lib
      at-spi2-atk
      at-spi2-core
      atk
      bzip2
      cacert
      cairo
      coreutils
      cups
      curl
      dbus
      expat
      flac
      fontconfig
      freetype
      gcc-unwrapped.lib
      gdk-pixbuf
      glib
      harfbuzz
      icu
      libcap
      libdrm
      liberation_ttf
      libexif
      libglvnd
      libkrb5
      libpng
      libX11
      libxcb
      libXcomposite
      libXcursor
      libXdamage
      libXext
      libXfixes
      libXi
      libxkbcommon
      libXrandr
      libXrender
      libXScrnSaver
      libxshmfence
      libXtst
      libgbm
      nspr
      nss
      opusWithCustomModes
      pango
      pciutils
      pipewire
      snappy
      speechd-minimal
      systemd
      util-linux
      vulkan-loader
      wayland
      wget
      libsecret
      libuuid
      gtk3
      gtk4
      qt6.qtbase
      qt6.qtwayland
    ]
    ++ lib.optionals pulseSupport [ libpulseaudio ]
    ++ lib.optionals libvaSupport [ libva ];
in

stdenv.mkDerivation (finalAttrs: {
  pname = "microsoft-edge";
  version = "137.0.3296.68";

  src = fetchurl {
    url = "https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_${finalAttrs.version}-1_amd64.deb";
    hash = "sha256-dgmQF6zpd8dAYKoTSiidk8VU6dZ/ZWEDlYD91IPaDEE=";
  };

  # With strictDeps on, some shebangs were not being patched correctly
  # ie, $out/share/microsoft/msedge/microsoft-edge
  strictDeps = false;

  nativeBuildInputs = [
    makeWrapper
    patchelf
    dpkg
  ];

  buildInputs = [
    # needed for XDG_ICON_DIRS
    adwaita-icon-theme
    glib
    gtk3
    gtk4
    # needed for GSETTINGS_SCHEMAS_PATH
    gsettings-desktop-schemas
  ];

  rpath = lib.makeLibraryPath deps + ":" + lib.makeSearchPathOutput "lib" "lib64" deps;
  binpath = lib.makeBinPath deps;

  installPhase = ''
    runHook preInstall

    appname=msedge
    dist=stable

    exe=$out/bin/microsoft-edge

    mkdir -p $out/bin
    cp -v -a usr/share $out/share
    cp -v -a opt/microsoft $out/share/microsoft

    # replace bundled vulkan-loader
    rm -v $out/share/microsoft/$appname/libvulkan.so.1
    ln -v -s -t "$out/share/microsoft/$appname" "${lib.getLib vulkan-loader}/lib/libvulkan.so.1"

    substituteInPlace $out/share/microsoft/$appname/microsoft-edge \
      --replace-fail 'CHROME_WRAPPER' 'WRAPPER'
    substituteInPlace $out/share/applications/microsoft-edge.desktop \
      --replace-fail /usr/bin/microsoft-edge-$dist $exe
    substituteInPlace $out/share/applications/com.microsoft.Edge.desktop \
      --replace-fail /usr/bin/microsoft-edge-$dist $exe
    substituteInPlace $out/share/gnome-control-center/default-apps/microsoft-edge.xml \
      --replace-fail /opt/microsoft/msedge $exe
    substituteInPlace $out/share/menu/microsoft-edge.menu \
      --replace-fail /opt $out/share \
      --replace-fail $out/share/microsoft/$appname/microsoft-edge $exe

    for icon_file in $out/share/microsoft/msedge/product_logo_[0-9]*.png; do
      num_and_suffix="''${icon_file##*logo_}"
      if [ $dist = "stable" ]; then
        icon_size="''${num_and_suffix%.*}"
      else
        icon_size="''${num_and_suffix%_*}"
      fi
      logo_output_prefix="$out/share/icons/hicolor"
      logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps"
      mkdir -p "$logo_output_path"
      mv "$icon_file" "$logo_output_path/microsoft-edge.png"
    done

    # "--simulate-outdated-no-au" disables auto updates and browser outdated popup
    makeWrapper "$out/share/microsoft/$appname/microsoft-edge" "$exe" \
      --prefix QT_PLUGIN_PATH  : "${qt6.qtbase}/lib/qt-6/plugins" \
      --prefix QT_PLUGIN_PATH  : "${qt6.qtwayland}/lib/qt-6/plugins" \
      --prefix NIXPKGS_QT6_QML_IMPORT_PATH : "${qt6.qtwayland}/lib/qt-6/qml" \
      --prefix LD_LIBRARY_PATH : "$rpath" \
      --prefix PATH            : "$binpath" \
      --suffix PATH            : "${lib.makeBinPath [ xdg-utils ]}" \
      --prefix XDG_DATA_DIRS   : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:${addDriverRunpath.driverLink}/share" \
      --set SSL_CERT_FILE "${cacert}/etc/ssl/certs/ca-bundle.crt" \
      --set CHROME_WRAPPER  "microsoft-edge-$dist" \
      --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true --wayland-text-input-version=3}}" \
      --add-flags "--simulate-outdated-no-au='Tue, 31 Dec 2099 23:59:59 GMT'" \
      --add-flags ${lib.escapeShellArg commandLineArgs}

    # Make sure that libGL and libvulkan are found by ANGLE libGLESv2.so
    patchelf --set-rpath $rpath $out/share/microsoft/$appname/lib*GL*

    # Edge specific set liboneauth
    patchelf --set-rpath $rpath $out/share/microsoft/$appname/liboneauth.so

    for elf in $out/share/microsoft/$appname/{msedge,msedge-sandbox,msedge_crashpad_handler}; do
      patchelf --set-rpath $rpath $elf
      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $elf
    done

    runHook postInstall
  '';

  passthru.updateScript = ./update.py;

  meta = {
    changelog = "https://learn.microsoft.com/en-us/deployedge/microsoft-edge-relnote-stable-channel";
    description = "Web browser from Microsoft";
    homepage = "https://www.microsoft.com/en-us/edge";
    license = lib.licenses.unfree;
    mainProgram = "microsoft-edge";
    maintainers = with lib.maintainers; [
      cholli
      ulrikstrid
      emaryn
      maeve-oake
      leleuvilela
    ];
    platforms = [ "x86_64-linux" ];
    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
  };
})
+45 −0
Original line number Diff line number Diff line
#! /usr/bin/env nix-shell
#! nix-shell -i python3 -p python3Packages.packaging python3Packages.python-debian common-updater-scripts

import os
from collections import OrderedDict
from os.path import abspath, dirname
from urllib import request

from debian.deb822 import Packages
from debian.debian_support import Version

PIN_PATH = dirname(abspath(__file__)) + "/default.nix"


def packages():
    packages_url = "https://packages.microsoft.com/repos/edge/dists/stable/main/binary-amd64/Packages"
    handle = request.urlopen(packages_url)
    return handle


def latest_packages(packages: bytes):
    latest_packages: OrderedDict[str, Packages] = {}
    for package in Packages.iter_paragraphs(packages, use_apt_pkg=False):
        name: str = package["Package"]
        if not name.startswith("microsoft-edge-stable"):
            continue
        channel = name.replace("microsoft-edge-", "")
        if channel not in latest_packages:
            latest_packages[channel] = package
        else:
            old_package = latest_packages[channel]
            if old_package.get_version() < package.get_version():  # type: ignore
                latest_packages[channel] = package
    return OrderedDict(sorted(latest_packages.items(), key=lambda x: x[0]))


def write_expression():
    latest = latest_packages(packages())
    version = Version.re_valid_version.match(latest["stable"]["Version"]).group(
        "upstream_version"
    )
    os.system(f'update-source-version microsoft-edge "{version}"')


write_expression()
+0 −1
Original line number Diff line number Diff line
@@ -1245,7 +1245,6 @@ mapAliases {
  microcodeAmd = microcode-amd; # Added 2024-09-08
  microcodeIntel = microcode-intel; # Added 2024-09-08
  micropad = throw "micropad has been removed, since it was unmaintained and blocked the Electron 27 removal."; # Added 2025-02-24
  microsoft-edge = throw "microsoft-edge has been removed due to lack of maintenance in nixpkgs"; # Added 2025-05-19
  microsoft_gsl = microsoft-gsl; # Added 2023-05-26
  midori = throw "'midori' original project has been abandonned upstream and the package was broken for a while in nixpkgs"; # Added 2025-05-19
  midori-unwrapped = midori; # Added 2025-05-19