From 6d2386a54806519a00ac260d0549ad2550a3b25b Mon Sep 17 00:00:00 2001 From: Christoph Hollizeck Date: Wed, 28 May 2025 09:15:20 +0200 Subject: [PATCH 1/6] microsoft-edge: re-init at 137.0.3296.68 --- pkgs/by-name/mi/microsoft-edge/package.nix | 293 +++++++++++++++++++++ pkgs/by-name/mi/microsoft-edge/update.py | 44 ++++ pkgs/top-level/aliases.nix | 1 - 3 files changed, 337 insertions(+), 1 deletion(-) create mode 100644 pkgs/by-name/mi/microsoft-edge/package.nix create mode 100644 pkgs/by-name/mi/microsoft-edge/update.py diff --git a/pkgs/by-name/mi/microsoft-edge/package.nix b/pkgs/by-name/mi/microsoft-edge/package.nix new file mode 100644 index 000000000000..4b45e18000ec --- /dev/null +++ b/pkgs/by-name/mi/microsoft-edge/package.nix @@ -0,0 +1,293 @@ +{ + fetchurl, + lib, + makeWrapper, + patchelf, + stdenv, + + # 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, + + # 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 + ] + ++ lib.optional pulseSupport libpulseaudio + ++ lib.optional libvaSupport libva + ++ [ + gtk3 + gtk4 + ]; +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 + ]; + + buildInputs = [ + # needed for XDG_ICON_DIRS + adwaita-icon-theme + glib + gtk3 + gtk4 + # needed for GSETTINGS_SCHEMAS_PATH + gsettings-desktop-schemas + ]; + + unpackPhase = '' + runHook preUnpack + ar x $src + tar xf data.tar.xz + runHook postUnpack + ''; + + 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 $out/share + cp -v -a opt/* $out/share + cp -v -a usr/share/* $out/share + + # 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/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 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}}" \ + --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 + ]; + platforms = [ "x86_64-linux" ]; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + }; +}) diff --git a/pkgs/by-name/mi/microsoft-edge/update.py b/pkgs/by-name/mi/microsoft-edge/update.py new file mode 100644 index 000000000000..e0d007c12f17 --- /dev/null +++ b/pkgs/by-name/mi/microsoft-edge/update.py @@ -0,0 +1,44 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i python3 -p python3Packages.packaging python3Packages.python-debian common-updater-scripts + +import base64 +import textwrap +import os +from urllib import request + +from collections import OrderedDict +from debian.deb822 import Packages +from debian.debian_support import Version +from os.path import abspath, dirname + +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() diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 01437fbd1043..5f360b6841aa 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1226,7 +1226,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 From 7671ffeeeedddae6c1a1d65adb317ac41c7596dd Mon Sep 17 00:00:00 2001 From: emaryn Date: Sat, 17 May 2025 23:41:38 +0800 Subject: [PATCH 2/6] microsoft-edge: refactor (cherry picked from commit 10b190b70a9969d73873b3c9fe0b86b1b9eb4f3c) --- pkgs/by-name/mi/microsoft-edge/package.nix | 40 ++++++++++++---------- pkgs/by-name/mi/microsoft-edge/update.py | 23 +++++++------ 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/pkgs/by-name/mi/microsoft-edge/package.nix b/pkgs/by-name/mi/microsoft-edge/package.nix index 4b45e18000ec..8b91f6440bf5 100644 --- a/pkgs/by-name/mi/microsoft-edge/package.nix +++ b/pkgs/by-name/mi/microsoft-edge/package.nix @@ -1,9 +1,10 @@ { - fetchurl, lib, + stdenv, + fetchurl, makeWrapper, patchelf, - stdenv, + dpkg, # Linked dynamic libraries. alsa-lib, @@ -92,6 +93,9 @@ # For Vulkan support (--enable-features=Vulkan) addDriverRunpath, + # For QT support + qt6, + # Edge AAD sync cacert, libsecret, @@ -163,13 +167,13 @@ let wget libsecret libuuid - ] - ++ lib.optional pulseSupport libpulseaudio - ++ lib.optional libvaSupport libva - ++ [ gtk3 gtk4 - ]; + qt6.qtbase + qt6.qtwayland + ] + ++ lib.optionals pulseSupport [ libpulseaudio ] + ++ lib.optionals libvaSupport [ libva ]; in stdenv.mkDerivation (finalAttrs: { @@ -188,6 +192,7 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ makeWrapper patchelf + dpkg ]; buildInputs = [ @@ -200,13 +205,6 @@ stdenv.mkDerivation (finalAttrs: { gsettings-desktop-schemas ]; - unpackPhase = '' - runHook preUnpack - ar x $src - tar xf data.tar.xz - runHook postUnpack - ''; - rpath = lib.makeLibraryPath deps + ":" + lib.makeSearchPathOutput "lib" "lib64" deps; binpath = lib.makeBinPath deps; @@ -218,9 +216,9 @@ stdenv.mkDerivation (finalAttrs: { exe=$out/bin/microsoft-edge - mkdir -p $out/bin $out/share - cp -v -a opt/* $out/share - cp -v -a usr/share/* $out/share + 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 @@ -230,6 +228,8 @@ stdenv.mkDerivation (finalAttrs: { --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 \ @@ -251,13 +251,16 @@ stdenv.mkDerivation (finalAttrs: { # "--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}}" \ + --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} @@ -286,6 +289,7 @@ stdenv.mkDerivation (finalAttrs: { maintainers = with lib.maintainers; [ cholli ulrikstrid + emaryn ]; platforms = [ "x86_64-linux" ]; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; diff --git a/pkgs/by-name/mi/microsoft-edge/update.py b/pkgs/by-name/mi/microsoft-edge/update.py index e0d007c12f17..e6c8b344d37b 100644 --- a/pkgs/by-name/mi/microsoft-edge/update.py +++ b/pkgs/by-name/mi/microsoft-edge/update.py @@ -1,20 +1,19 @@ #! /usr/bin/env nix-shell #! nix-shell -i python3 -p python3Packages.packaging python3Packages.python-debian common-updater-scripts -import base64 -import textwrap import os +from collections import OrderedDict +from os.path import abspath, dirname from urllib import request -from collections import OrderedDict from debian.deb822 import Packages from debian.debian_support import Version -from os.path import abspath, dirname -PIN_PATH = dirname(abspath(__file__)) + '/default.nix' +PIN_PATH = dirname(abspath(__file__)) + "/default.nix" + def packages(): - packages_url = 'https://packages.microsoft.com/repos/edge/dists/stable/main/binary-amd64/Packages' + packages_url = "https://packages.microsoft.com/repos/edge/dists/stable/main/binary-amd64/Packages" handle = request.urlopen(packages_url) return handle @@ -22,22 +21,24 @@ def packages(): 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'): + name: str = package["Package"] + if not name.startswith("microsoft-edge-stable"): continue - channel = name.replace('microsoft-edge-', '') + 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])) + 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') + version = Version.re_valid_version.match(latest["stable"]["Version"]).group( + "upstream_version" + ) os.system(f'update-source-version microsoft-edge "{version}"') From a43a45351f18d86c89065283ee4da0c40a7e600b Mon Sep 17 00:00:00 2001 From: maeve Date: Fri, 30 May 2025 11:02:07 +0100 Subject: [PATCH 3/6] maintainers: add maeve-oake --- maintainers/maintainer-list.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 38e63cf29d44..da7c8af8eb83 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -14907,6 +14907,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"; From b65bca35bd25210888388b295e9078c217ae3f2f Mon Sep 17 00:00:00 2001 From: maeve Date: Fri, 30 May 2025 11:02:17 +0100 Subject: [PATCH 4/6] microsoft-edge: add maintainer maeve-oake --- pkgs/by-name/mi/microsoft-edge/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/mi/microsoft-edge/package.nix b/pkgs/by-name/mi/microsoft-edge/package.nix index 8b91f6440bf5..05c8c8727a54 100644 --- a/pkgs/by-name/mi/microsoft-edge/package.nix +++ b/pkgs/by-name/mi/microsoft-edge/package.nix @@ -290,6 +290,7 @@ stdenv.mkDerivation (finalAttrs: { cholli ulrikstrid emaryn + maeve-oake ]; platforms = [ "x86_64-linux" ]; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; From b4a0df7e4dac0aba2d699aa719cf94f1cbc55a37 Mon Sep 17 00:00:00 2001 From: vinicius Date: Mon, 2 Jun 2025 12:38:01 +0100 Subject: [PATCH 5/6] maintainers: add leleuvilela --- maintainers/maintainer-list.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index da7c8af8eb83..d16e729d1ca0 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -13904,6 +13904,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"; From c02eb62cbf0778db8ab7901cd21f4e8cdafd2f0d Mon Sep 17 00:00:00 2001 From: vinicius Date: Mon, 2 Jun 2025 12:38:54 +0100 Subject: [PATCH 6/6] microsoft-edge: add maintainer leleuvilela --- pkgs/by-name/mi/microsoft-edge/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/mi/microsoft-edge/package.nix b/pkgs/by-name/mi/microsoft-edge/package.nix index 05c8c8727a54..ee4ade1c3ab9 100644 --- a/pkgs/by-name/mi/microsoft-edge/package.nix +++ b/pkgs/by-name/mi/microsoft-edge/package.nix @@ -291,6 +291,7 @@ stdenv.mkDerivation (finalAttrs: { ulrikstrid emaryn maeve-oake + leleuvilela ]; platforms = [ "x86_64-linux" ]; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];