Compare commits

...

10 Commits

Author SHA1 Message Date
nixpkgs-ci[bot]
d51c455eef [Backport release-26.05] blackfire: 2026.9.0 -> 2026.9.1 (#567854) 2026-09-29 07:39:21 +00:00
nixpkgs-ci[bot]
d1e40b6809 [Backport release-26.05] phpExtensions.blackfire: 2026.9.0 -> 2026.9.2 (#567851) 2026-09-29 07:39:20 +00:00
Ulrik Strid
b04bfda2b2 [Backport release-26.05] microsoft-edge, msedgedriver: refactor, add darwin support (#568025) 2026-09-29 07:02:20 +00:00
Yohann Boniface
53cdf9f164 [Backport release-26.05] rustormy: init at 0.5.2 (#567716) 2026-09-29 06:17:04 +00:00
Rafael Ieda
9f09524e2c microsoft-edge: refactor, add darwin support
(cherry picked from commit 143592c313)
2026-09-28 18:47:40 -03:00
Rafael Ieda
964766c315 msedgedriver: refactor, add darwin support
(cherry picked from commit 670ddeed25)
2026-09-28 17:58:45 -03:00
R. Ryantm
2885d378fe blackfire: 2026.9.0 -> 2026.9.1
(cherry picked from commit 833acbe176)
2026-09-28 12:18:00 +00:00
R. Ryantm
f3baa3f684 phpExtensions.blackfire: 2026.9.0 -> 2026.9.2
(cherry picked from commit fb9f61bf1d)
2026-09-28 12:17:36 +00:00
Jose Garcia
f7fd04296d rustormy: init at 0.5.2
(cherry picked from commit 44c43afccc)
2026-09-28 01:42:18 +00:00
Jose Garcia
2aba6ffa6a maintainers: add joseg313
(cherry picked from commit e08a226805)
2026-09-28 01:42:17 +00:00
8 changed files with 562 additions and 200 deletions

View File

@@ -13361,6 +13361,12 @@
github = "jooooscha";
githubId = 57965027;
};
joseg313 = {
name = "Jose Garcia";
email = "501jag3@gmail.com";
github = "joseg313";
githubId = 215610619;
};
josephschmitt = {
name = "Joseph Schmitt";
email = "dev@joe.sh";

View File

@@ -11,7 +11,7 @@
stdenv.mkDerivation rec {
pname = "blackfire";
version = "2026.9.0";
version = "2026.9.1";
src =
passthru.sources.${stdenv.hostPlatform.system}
@@ -60,19 +60,19 @@ stdenv.mkDerivation rec {
sources = {
"x86_64-linux" = fetchurl {
url = "https://packages.blackfire.io/debian/pool/any/main/b/blackfire/blackfire_${version}_amd64.deb";
hash = "sha256-mm93TmfrSMP5+hVtWQ2CkUqmDqYraL4H7NVLXZ7xDqs=";
hash = "sha256-ElktV5SSt4zhvVnQS8qljbPDGH0qM85i7WztyoDyvcM=";
};
"i686-linux" = fetchurl {
url = "https://packages.blackfire.io/debian/pool/any/main/b/blackfire/blackfire_${version}_i386.deb";
hash = "sha256-nz0YYTdH0Rcs4f0aJu8Bkg/NwLNxiFwSq8kkRoa+VEA=";
hash = "sha256-vl6PvMsqc3GyIsrYl1WpV1psxuuszSfN1TdRH5FW9qE=";
};
"aarch64-linux" = fetchurl {
url = "https://packages.blackfire.io/debian/pool/any/main/b/blackfire/blackfire_${version}_arm64.deb";
hash = "sha256-RTTNU3c9gJQRh8vjrCnhPh/mKWKs9jHUd3gund3UZWM=";
hash = "sha256-fjcp+gOHna7grTl972jslY8hYdjWhfxbA4ncHfCAkGw=";
};
"aarch64-darwin" = fetchurl {
url = "https://packages.blackfire.io/blackfire/${version}/blackfire-darwin_arm64.pkg.tar.gz";
hash = "sha256-xa9lqDOVS0uPLeAyQ3fvkp3SNN8Hhv66gitjgKk/p6M=";
hash = "sha256-xNn78U4jdABzWrSKMSSZXE5tuf/SRK8OwdhldKBBKk0=";
};
"x86_64-darwin" = fetchurl {
url = "https://packages.blackfire.io/blackfire/${version}/blackfire-darwin_amd64.pkg.tar.gz";

View File

@@ -16,47 +16,47 @@ let
phpMajor = lib.versions.majorMinor php.version;
inherit (stdenv.hostPlatform) system;
version = "2026.9.0";
version = "2026.9.2";
hashes = {
"x86_64-linux" = {
system = "amd64";
hash = {
"8.1" = "sha256-0AAgiBdiIQOxSSttD2ERzSTqPM1rLwlQFHZ6ARRSgmI=";
"8.2" = "sha256-usSNoM1XeVWKuHLlSMvONAucVa1ZEAb3+I66oOnzGB0=";
"8.3" = "sha256-65GoEhgFsQbQleSVuRnHPSZAiCfEUmyVWWhnybnrgaA=";
"8.4" = "sha256-0if1fQa7b41TjC3d1ck65cJP7lKdoL670V9t+PLL+qk=";
"8.5" = "sha256-3k5jQ+vbxLGp78MRzjiw7uP+tCcEs5gAYM2MEoiYdtk=";
"8.1" = "sha256-Rh26CehFWvZbri+wE+NOit6Mc6LB55IVZ0FT63/GBew=";
"8.2" = "sha256-HoaC8XAGxqPvQPkpsqTjBxd6Z8FnB/cjk5uC9ogNMAs=";
"8.3" = "sha256-nRwvQYootheK0qEWbEJoC82butcJRFz65zhxey56/Bk=";
"8.4" = "sha256-rqo9U0S2Cuhy+CiILeXo2DW22y9xb/7QB3l7Et0IbTM=";
"8.5" = "sha256-hf/pe+Go8qhHxqAodbLyn60t1FJGZtQ965pMFCJ4t0M=";
};
};
"i686-linux" = {
system = "i386";
hash = {
"8.1" = "sha256-fmmbY4ecnE05XNxGKq11HcYhs9z7SggLx9iXICHE6DQ=";
"8.2" = "sha256-9WP+FpULl0PQJ+0qxxZfm5xJS/A6N137yGk9gv4cYvI=";
"8.3" = "sha256-Io2gGAhXLAVdHoaKwKvJWA1N71IJAKeJkudLs8DZUl8=";
"8.4" = "sha256-JoGiB8ew3D/qSi7Pg/q67mXLsUy4UDVsazgxgb5BJTM=";
"8.5" = "sha256-bSfbhFHV8Zs4cpOfDnKItNlF9++0opUtosTpnosacdU=";
"8.1" = "sha256-BgOAsLqMqsyXfEIgx/Buaz4jjU1TN8lxVPTSvQzCn7M=";
"8.2" = "sha256-D1FiwfYF8tRM1uMEWPauY+SzQNyL9kszVb5pD5vOBwA=";
"8.3" = "sha256-SZ9KFC+ISp5LgElLeQTOInlgoSqWV9+oRdC6yJ5P3WA=";
"8.4" = "sha256-x4ZTJs1VLipdEEAhjb+pG4Q25a2czBkEPtucHGdZINw=";
"8.5" = "sha256-zzSZsGu2POr97O5fwKRCwJqs6+lO1HqfG6o5HKL4zVQ=";
};
};
"aarch64-linux" = {
system = "arm64";
hash = {
"8.1" = "sha256-7/2Q9Kx3ZEpI0Inj88CfTDzr0sjVpws3DH8KTP26PR0=";
"8.2" = "sha256-suFGyE94wY4xHfPk77OXzkqU+Ulb+f42drDZY/M9ZNs=";
"8.3" = "sha256-z5IfXX7DElerdRTnq3R95t8IvG0Hl9EKXBw1QbRlDkY=";
"8.4" = "sha256-ceTjQ6gtiWJEte5WuVuyc+eTEb3khobYoCWNGP+Vkeo=";
"8.5" = "sha256-1jX564B/tLBgb7jN6MB5DfpRgYy0xxmtAaAv768FQqo=";
"8.1" = "sha256-QGe/XJt2N7UFpW0ahKo+hCZO7X80L31hAp0D6oreGt4=";
"8.2" = "sha256-QyhbXXlhBdoNUYJcPOt4w4sA45ELtY4IERD8GUS3I4c=";
"8.3" = "sha256-+l9RGCmhQsdtqntfUk22d1zVIcAxuLw4mHpe4WcfGr8=";
"8.4" = "sha256-hUI/z+PNAj7gl9UCGes/TnhV6zK82LMfhEfi72gsy7c=";
"8.5" = "sha256-MaqGbXacLeDUPlskuETtzv1cXZTO0/EF0IW49N6eZMY=";
};
};
"aarch64-darwin" = {
system = "arm64";
hash = {
"8.1" = "sha256-JQZKX8qChvBS3S8cqtxmooZMsFlFqfffnQbNldYNR+M=";
"8.2" = "sha256-nGQdweskEw9tiK51IGcu7cGKJJwtmNBL9fZLMUCuiB8=";
"8.3" = "sha256-sHQOg6QC+Mm5KwQVwKmeOVR3fUkN2NH9utHs667Oipw=";
"8.4" = "sha256-Btrz+U9ejW/Jl1cWBRt5XGV1IzjxK+FJaQwXIgYR/NI=";
"8.5" = "sha256-zSQeBioU/3c7HrqEz+9z8vam3EHkR0KbC80/mIuTAFE=";
"8.1" = "sha256-oG7Doie9hoieBM649S1XlagBaYAWAjJu2PrzYSDLKL0=";
"8.2" = "sha256-MJi0cve8+eItBcC6UkuxYTzclB3OMC+Hhlmd++xD1MU=";
"8.3" = "sha256-3oJtMuVKGUgpduMp7snSdGE/BH764EA7yz+N70+qFNg=";
"8.4" = "sha256-0HOCBB9dgU9Vq5/F0iKCzumjwT81qxHElPsLGKgVhr0=";
"8.5" = "sha256-Hi9bC/CigkA3VWFTqfE7JzBcGGJAhUwnmMndHgbFIW4=";
};
};
"x86_64-darwin" = {

View File

@@ -1,11 +1,13 @@
{
lib,
stdenvNoCC,
bintools,
fetchurl,
lib,
makeWrapper,
patchelf,
bintools,
stdenvNoCC,
testers,
dpkg,
# Linked dynamic libraries
alsa-lib,
at-spi2-atk,
@@ -46,15 +48,20 @@
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,
@@ -73,27 +80,38 @@
## 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
undmg,
# Enables Edge's "Use QT" appearance to introspect the user's Plasma theme
plasmaSupport ? false,
qt6,
# Edge AAD sync
kdePackages,
# Edge Specific and AAD sync
cacert,
libsecret,
# Edge Specific
libuuid,
# Create a symlink at $out/bin/microsoft-edge-stable
withSymlink ? true,
}:
let
pname = "microsoft-edge";
opusWithCustomModes = libopus.override { withCustomModes = true; };
deps = [
@@ -115,15 +133,20 @@ let
gcc-unwrapped.lib
gdk-pixbuf
glib
gtk3
gtk4
harfbuzz
icu
libcap
libdrm
liberation_ttf
libexif
libgbm
libglvnd
libkrb5
libpng
libsecret
libuuid
libx11
libxcb
libxcomposite
@@ -138,7 +161,6 @@ let
libxscrnsaver
libxshmfence
libxtst
libgbm
nspr
nss
opusWithCustomModes
@@ -152,124 +174,178 @@ let
vulkan-loader
wayland
wget
libsecret
libuuid
gtk3
gtk4
]
++ lib.optional pulseSupport libpulseaudio
++ lib.optional libvaSupport libva
++ lib.optionals plasmaSupport [
qt6.qtbase
qt6.qtwayland
]
++ lib.optionals pulseSupport [ libpulseaudio ]
++ lib.optionals libvaSupport [ libva ];
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "microsoft-edge";
version = "154.0.4258.37";
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-xvopdHM5kTIbRsQGS3hc3sWhTYzd0YK8X9oFfjfnYD0=";
};
# With strictDeps on, some shebangs were not being patched correctly
# ie, $out/share/microsoft/msedge/microsoft-edge
strictDeps = false;
nativeBuildInputs = [
makeWrapper
patchelf
dpkg
kdePackages.plasma-integration
kdePackages.breeze
];
buildInputs = [
# needed for XDG_ICON_DIRS
adwaita-icon-theme
glib
gtk3
gtk4
# needed for GSETTINGS_SCHEMAS_PATH
gsettings-desktop-schemas
];
linux = stdenvNoCC.mkDerivation (finalAttrs: {
inherit pname meta;
version = "154.0.4258.37";
rpath = lib.makeLibraryPath deps + ":" + lib.makeSearchPathOutput "lib" "lib64" deps;
binpath = lib.makeBinPath deps;
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-xvopdHM5kTIbRsQGS3hc3sWhTYzd0YK8X9oFfjfnYD0=";
};
installPhase = ''
runHook preInstall
# With strictDeps on, some shebangs were not being patched correctly
# ie, $out/share/microsoft/msedge/microsoft-edge
strictDeps = false;
appname=msedge
dist=stable
nativeBuildInputs = [
makeWrapper
patchelf
dpkg
];
exe=$out/bin/microsoft-edge
buildInputs = [
# needed for XDG_ICON_DIRS
adwaita-icon-theme
glib
gtk3
gtk4
# needed for GSETTINGS_SCHEMAS_PATH
gsettings-desktop-schemas
];
mkdir -p $out/bin
cp -v -a usr/share $out/share
cp -v -a opt/microsoft $out/share/microsoft
rpath = lib.makeLibraryPath deps + ":" + lib.makeSearchPathOutput "lib" "lib64" deps;
binpath = lib.makeBinPath deps;
# 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"
installPhase = ''
runHook preInstall
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
appname=msedge
dist=stable
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
exe=$out/bin/microsoft-edge-$dist
# "--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}
mkdir -p $out/bin $out/share
cp -v -a opt/* $out/share
cp -v -a usr/share/* $out/share
# Edge specific set liboneauth
patchelf --set-rpath $rpath $out/share/microsoft/$appname/liboneauth.so
# 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"
for elf in $out/share/microsoft/$appname/{msedge,msedge-sandbox,msedge_crashpad_handler}; do
patchelf --set-rpath $rpath $elf
patchelf --set-interpreter ${bintools.dynamicLinker} $elf
done
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/$appname $exe
${lib.optionalString withSymlink ''
ln -s $out/bin/microsoft-edge $out/bin/microsoft-edge-stable
''}
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
runHook postInstall
'';
# "--simulate-outdated-no-au" disables auto updates and browser outdated popup
makeWrapper "$out/share/microsoft/$appname/microsoft-edge" "$exe" \
${lib.optionalString plasmaSupport ''
--prefix QT_PLUGIN_PATH : "${qt6.qtbase}/lib/qt-6/plugins" \
--prefix QT_PLUGIN_PATH : "${qt6.qtwayland}/lib/qt-6/plugins" \
--prefix QT_PLUGIN_PATH : "${kdePackages.plasma-integration}/lib/qt-6/plugins" \
--prefix QT_PLUGIN_PATH : "${kdePackages.breeze}/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}
passthru.updateScript = ./update.py;
# 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 ${bintools.dynamicLinker} $elf
done
runHook postInstall
'';
postInstall = lib.optionalString withSymlink ''
ln -s $out/bin/microsoft-edge-stable $out/bin/microsoft-edge
'';
passthru = {
updateScript = ./update.sh;
tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
};
});
darwin = stdenvNoCC.mkDerivation (finalAttrs: {
inherit pname meta;
version = "154.0.4258.37";
uuid = "f7dec597-801d-4c4b-ae51-c8a53c78925c";
src = fetchurl {
url = "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/${finalAttrs.uuid}/MicrosoftEdge-${finalAttrs.version}.dmg";
hash = "sha256-R385aGFby0WK64wxHGCbKnDymsUIG+lzTpQfVO2NBgA=";
};
dontPatch = true;
dontConfigure = true;
dontBuild = true;
dontFixup = true;
nativeBuildInputs = [
makeWrapper
undmg
];
sourceRoot = ".";
installPhase = ''
runHook preInstall
mkdir -p $out/Applications
cp -r *.app $out/Applications
mkdir -p $out/bin
# "--simulate-outdated-no-au" disables auto updates and browser outdated popup
makeWrapper $out/Applications/Microsoft\ Edge.app/Contents/MacOS/Microsoft\ Edge $out/bin/microsoft-edge-stable \
--add-flags "--simulate-outdated-no-au='Tue, 31 Dec 2099 23:59:59 GMT'" \
--add-flags ${lib.escapeShellArg commandLineArgs}
runHook postInstall
'';
postInstall = lib.optionalString withSymlink ''
ln -s $out/bin/microsoft-edge-stable $out/bin/microsoft-edge
'';
passthru = {
updateScript = ./update.sh;
tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
};
});
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";
changelog = "https://learn.microsoft.com/en-us/deployedge/microsoft-edge-relnote-stable-channel";
license = lib.licenses.unfree;
mainProgram = "microsoft-edge";
maintainers = with lib.maintainers; [
cholli
ulrikstrid
@@ -278,7 +354,17 @@ stdenvNoCC.mkDerivation (finalAttrs: {
jonhermansen
iedame
];
platforms = [ "x86_64-linux" ];
platforms = lib.platforms.darwin ++ [
"x86_64-linux"
];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
mainProgram = "microsoft-edge-stable";
};
})
in
if stdenvNoCC.hostPlatform.isDarwin then
darwin
else if stdenvNoCC.hostPlatform.isLinux then
linux
else
throw "Unsupported platform ${stdenvNoCC.hostPlatform.system}"

View File

@@ -1,46 +0,0 @@
#! /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}"')
os.system(f'update-source-version msedgedriver "{version}"')
write_expression()

View File

@@ -0,0 +1,258 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=./. -i bash -p curl gawk nix common-updater-scripts python3Packages.python-debian
# shellcheck shell=bash
set -euo pipefail
DEFAULT_NIX="$(realpath "./pkgs/by-name/mi/microsoft-edge/package.nix")"
DRIVER_NIX="$(realpath "./pkgs/by-name/ms/msedgedriver/package.nix")"
get_linux_version_info() {
local packages_url
local response
local version
local current_version
local download_url
packages_url="https://packages.microsoft.com/repos/edge/dists/stable/main/binary-amd64/Packages"
response="$(curl --silent --fail "$packages_url")"
read -r version download_url <<< "$(
python3 -c '
import sys
from debian.deb822 import Packages
from debian.debian_support import Version
latest = None
for package in Packages.iter_paragraphs(sys.stdin, use_apt_pkg=False):
if package["Package"] != "microsoft-edge-stable":
continue
if latest is None or latest.get_version() < package.get_version():
latest = package
if latest is None:
raise SystemExit("microsoft-edge-stable not found")
version = Version.re_valid_version.match(
latest["Version"]
).group("upstream_version")
url = (
"https://packages.microsoft.com/repos/edge/"
+ latest["Filename"]
)
print(version, url)
' <<< "$response"
)"
current_version="$(
awk '
/^ linux = stdenvNoCC.mkDerivation/ { in_block=1 }
in_block && /version = "/ {
match($0, /version = "([^"]+)"/, arr)
print arr[1]
exit
}
in_block && /^ \};/ { exit }
' "$DEFAULT_NIX"
)"
echo "$version" "$current_version" "$download_url"
}
get_darwin_version_info() {
local redirect_url
local final_url
local version
local current_version
local uuid
redirect_url="https://go.microsoft.com/fwlink/?linkid=2192091"
final_url="$(
curl \
--silent \
--show-error \
--fail \
--location \
--output /dev/null \
--write-out '%{url_effective}' \
"$redirect_url"
)"
if [[ "$final_url" =~ /files/([^/]+)/MicrosoftEdge-([0-9.]+)\.dmg$ ]]; then
uuid="${BASH_REMATCH[1]}"
version="${BASH_REMATCH[2]}"
else
echo "Could not parse Darwin URL: $final_url" >&2
exit 1
fi
current_version="$(
awk '
/^ darwin = stdenvNoCC.mkDerivation/ { in_block=1 }
in_block && /version = "/ {
match($0, /version = "([^"]+)"/, arr)
print arr[1]
exit
}
in_block && /^ \};/ { exit }
' "$DEFAULT_NIX"
)"
echo "$version" "$current_version" "$uuid" "$final_url"
}
update_linux() {
local version_info
local version
local current_version
local download_url
local new_hash
read -ra version_info <<< "$(get_linux_version_info)"
version="${version_info[0]}"
current_version="${version_info[1]}"
download_url="${version_info[2]}"
if [[ "$current_version" = "$version" ]]; then
echo "[Nix] Linux microsoft-edge: same version"
return 0
fi
new_hash="$(
nix --extra-experimental-features nix-command \
hash convert \
--hash-algo sha256 \
--to sri \
"$(nix-prefetch-url "$download_url" 2>/dev/null)"
)"
sed -i \
"/^ linux = stdenvNoCC.mkDerivation/,/^ });/s/version = \".*\"/version = \"$version\"/" \
"$DEFAULT_NIX"
sed -i \
"/^ linux = stdenvNoCC.mkDerivation/,/^ });/s|hash = \".*\"|hash = \"$new_hash\"|" \
"$DEFAULT_NIX"
echo "[Nix] Linux microsoft-edge: $current_version -> $version with hash $new_hash"
}
update_darwin() {
local version_info
local version
local current_version
local uuid
local url
local new_hash
read -ra version_info <<< "$(get_darwin_version_info)"
version="${version_info[0]}"
current_version="${version_info[1]}"
uuid="${version_info[2]}"
url="${version_info[3]}"
if [[ "$current_version" = "$version" ]]; then
echo "[Nix] Darwin microsoft-edge: same version"
return 0
fi
new_hash="$(
nix --extra-experimental-features nix-command \
hash convert \
--hash-algo sha256 \
--to sri \
"$(nix-prefetch-url "$url" 2>/dev/null)"
)"
sed -i \
"/^ darwin = stdenvNoCC.mkDerivation/,/^ });/s/version = \".*\"/version = \"$version\"/" \
"$DEFAULT_NIX"
sed -i \
"/^ darwin = stdenvNoCC.mkDerivation/,/^ });/s|uuid = \".*\"|uuid = \"$uuid\"|" \
"$DEFAULT_NIX"
sed -i \
"/^ darwin = stdenvNoCC.mkDerivation/,/^ });/s|hash = \".*\"|hash = \"$new_hash\"|" \
"$DEFAULT_NIX"
echo "[Nix] Darwin microsoft-edge: $current_version -> $version with hash $new_hash"
}
update_msedgedriver() {
local version="$1"
local current_version
local new_hash
local driver_arch
local url
current_version="$(
awk '
/pname = "msedgedriver";/ { in_block=1 }
in_block && /version = "/ {
match($0, /version = "([^"]+)"/, arr)
print arr[1]
exit
}
' "$DRIVER_NIX"
)"
if [[ "$current_version" = "$version" ]]; then
echo "[Nix] msedgedriver: same version"
return 0
fi
# All supported driver archives use the Linux Edge version.
# The archive names correspond to the driverArch mapping in
# msedgedriver/package.nix
declare -A hashes=(
[mac64_m1]=""
[mac64]=""
[linux64]=""
)
for driver_arch in mac64_m1 mac64 linux64; do
url="https://msedgedriver.microsoft.com/${version}/edgedriver_${driver_arch}.zip"
new_hash="$(
nix --extra-experimental-features nix-command \
hash convert \
--hash-algo sha256 \
--to sri \
"$(nix-prefetch-url --unpack "$url" 2>/dev/null)"
)"
hashes["$driver_arch"]="$new_hash"
echo "[Nix] msedgedriver ${driver_arch}: $new_hash"
done
sed -i \
"/pname = \"msedgedriver\";/,/^ meta = {/s/version = \".*\"/version = \"$version\"/" \
"$DRIVER_NIX"
for driver_arch in mac64_m1 mac64 linux64; do
sed -i \
"/pname = \"msedgedriver\";/,/^ meta = {/s|${driver_arch} = \".*\"|${driver_arch} = \"${hashes[$driver_arch]}\"|" \
"$DRIVER_NIX"
done
echo "[Nix] msedgedriver: $current_version -> $version"
}
update_linux
update_darwin
# Linux is the canonical platform for the shared msedgedriver version
linux_version_info="$(get_linux_version_info)"
read -r linux_version _ _ <<< "$linux_version_info"
update_msedgedriver "$linux_version"

View File

@@ -14,39 +14,46 @@ stdenvNoCC.mkDerivation (finalAttrs: {
pname = "msedgedriver";
version = "154.0.4258.37";
src = fetchzip {
url = "https://msedgedriver.microsoft.com/${finalAttrs.version}/edgedriver_linux64.zip";
hash = "sha256-XbOQl9FyckF3Qybb+40474ImJDKahBkekPoydf/TxV0=";
stripRoot = false;
};
src =
let
driverArch =
{
aarch64-darwin = "mac64_m1";
x86_64-darwin = "mac64";
x86_64-linux = "linux64";
}
.${stdenvNoCC.hostPlatform.system};
in
fetchzip {
url = "https://msedgedriver.microsoft.com/${finalAttrs.version}/edgedriver_${driverArch}.zip";
hash =
{
mac64_m1 = "sha256-6nwe/vRPh5MkQLTiZNXepfFsLtILwoK925mgLCUUVNg=";
mac64 = "sha256-p/cnNKQub6sSEWPz2fJ+FoU7rgzeoZQMkv3PphvvHLw=";
linux64 = "sha256-XbOQl9FyckF3Qybb+40474ImJDKahBkekPoydf/TxV0=";
}
.${driverArch};
stripRoot = false;
};
buildInputs = [
buildInputs = lib.optionals stdenvNoCC.hostPlatform.isLinux [
glib
libxcb
nspr
nss
];
nativeBuildInputs = [ autoPatchelfHook ];
nativeBuildInputs = lib.optionals stdenvNoCC.hostPlatform.isLinux [
autoPatchelfHook
];
installPhase =
if stdenvNoCC.hostPlatform.isDarwin then
''
runHook preInstall
installPhase = ''
runHook preInstall
mkdir -p $out/{Applications/msedgedriver,bin}
cp -R . $out/Applications/msedgedriver
install -D msedgedriver $out/bin/msedgedriver
runHook postInstall
''
else
''
runHook preInstall
install -m777 -D "msedgedriver" $out/bin/msedgedriver
runHook postInstall
'';
runHook postInstall
'';
meta = {
homepage = "https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver";
@@ -54,7 +61,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
maintainers = microsoft-edge.meta.maintainers;
platforms = [
platforms = lib.platforms.darwin ++ [
"x86_64-linux"
];
mainProgram = "msedgedriver";

View File

@@ -0,0 +1,51 @@
{
lib,
rustPlatform,
fetchFromGitHub,
versionCheckHook,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "rustormy";
version = "0.5.2";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "tairesh";
repo = "rustormy";
tag = "v${finalAttrs.version}";
hash = "sha256-LC6hHxCG9TnXcRIxg2jAt6+r8Rm6Iu/TiX/neW5d4fk=";
};
cargoHash = "sha256-cvL+OAiGidQEltM/cgjzjeEFbM7IZvhIG5Q3Nxybb1w=";
checkFlags = [
"--skip=tests::test_different_units"
"--skip=tests::test_empty_city"
"--skip=tests::test_no_location_provided"
"--skip=tests::test_nonexistent_city"
"--skip=tests::test_valid_city_lookup"
"--skip=tests::test_valid_coordinates"
"--skip=weather::enrich::tests::does_not_overwrite_false_is_day_when_set"
"--skip=weather::enrich::tests::does_not_overwrite_true_is_day_when_set"
"--skip=weather::enrich::tests::does_not_overwrite_uv_when_set"
"--skip=weather::enrich::tests::fills_is_day_when_none"
"--skip=weather::enrich::tests::openuv_failure_does_not_break_enrich"
"--skip=weather::enrich::tests::skips_uv_when_openuv_key_empty"
];
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
meta = {
description = "Minimal neofetch-like weather CLI";
homepage = "https://github.com/tairesh/rustormy";
license = lib.licenses.mit;
mainProgram = "rustormy";
maintainers = with lib.maintainers; [ joseg313 ];
};
})