From c993742d9de3af88609ffaf4b4e35547efbe20bf Mon Sep 17 00:00:00 2001 From: emilylange Date: Sun, 18 Jan 2026 22:45:25 +0100 Subject: [PATCH] chromium: fix unsubstituted placeholders in `.desktop` like `@@EXTRA_DESKTOP_ENTRIES@@` and `@@URI_SCHEME@@` and add a simple check to prevent this from happening again. --- .../networking/browsers/chromium/browser.nix | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix index 99d0f4bd1a68..2c88fd184cfa 100644 --- a/pkgs/applications/networking/browsers/chromium/browser.nix +++ b/pkgs/applications/networking/browsers/chromium/browser.nix @@ -62,19 +62,20 @@ mkChromiumDerivation (base: rec { $out/share/applications/chromium-browser.desktop substituteInPlace $out/share/applications/chromium-browser.desktop \ - --replace "@@MENUNAME@@" "Chromium" \ - --replace "@@PACKAGE@@" "chromium" \ - --replace "Exec=/usr/bin/@@USR_BIN_SYMLINK_NAME@@" "Exec=chromium" - - # Append more mime types to the end - sed -i '/^MimeType=/ s,$,x-scheme-handler/webcal;x-scheme-handler/mailto;x-scheme-handler/about;x-scheme-handler/unknown,' \ - $out/share/applications/chromium-browser.desktop + --replace-fail "@@MENUNAME@@" "Chromium" \ + --replace-fail "@@PACKAGE@@" "chromium" \ + --replace-fail "/usr/bin/@@USR_BIN_SYMLINK_NAME@@" "chromium" \ + --replace-fail "@@URI_SCHEME@@" "x-scheme-handler/chromium;" \ + --replace-fail "@@EXTRA_DESKTOP_ENTRIES@@" "" # See https://github.com/NixOS/nixpkgs/issues/12433 - sed -i \ - -e '/\[Desktop Entry\]/a\' \ - -e 'StartupWMClass=chromium-browser' \ - $out/share/applications/chromium-browser.desktop + substituteInPlace $out/share/applications/chromium-browser.desktop \ + --replace-fail "[Desktop Entry]" "[Desktop Entry]''\nStartupWMClass=chromium-browser" + + if grep -F '@@' $out/share/applications/chromium-browser.desktop ; then + echo "error: chromium-browser.desktop contains unsubstituted placeholders" >&2 + exit 1 + fi ''; passthru = { inherit sandboxExecutableName; };