From 3a6f91205beebf808da321d758af6e346700ece7 Mon Sep 17 00:00:00 2001 From: Misaka13514 Date: Sun, 18 Jan 2026 17:56:53 +0800 Subject: [PATCH] charles: fix desktop icons and mime integration This addresses icon and mimetype issues for different versions: - For Charles 5+: - Update desktop entry to use 'charles-proxy5'. - Install the upstream provided shared-mime-info XML. This correctly maps mime types to the upstream icon names (e.g. charles-proxy5-har). - For Charles 4: Install the upstream provided shared-mime-info XML. - For Charles 3: Fix icon installation paths (upstream tarball has non-standard layout). No mime icons are available for this version. --- .../networking/charles/default.nix | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/networking/charles/default.nix b/pkgs/applications/networking/charles/default.nix index 20b7886b74d5..39d066451db5 100644 --- a/pkgs/applications/networking/charles/default.nix +++ b/pkgs/applications/networking/charles/default.nix @@ -31,7 +31,7 @@ let desktopName = "Charles"; exec = "charles %F"; genericName = "Web Debugging Proxy"; - icon = "charles-proxy"; + icon = "charles-proxy" + lib.optionalString (lib.versionAtLeast version "5.0") "5"; mimeTypes = [ "application/x-charles-savedsession" "application/x-charles-savedsession+xml" @@ -73,8 +73,24 @@ let mkdir -p $out/share/applications ln -s ${desktopItem}/share/applications/* $out/share/applications/ - mkdir -p $out/share/icons - cp -r icon $out/share/icons/hicolor + ${ + if lib.versionOlder version "4.0" then + '' + for size in 16 32 48 64 128 256 512; do + install -Dm644 icon/charles_icon$size.png $out/share/icons/hicolor/''${size}x''${size}/apps/charles-proxy.png + done + install -Dm644 icon/charles_icon.svg $out/share/icons/hicolor/scalable/apps/charles-proxy.svg + '' + else + '' + mkdir -p $out/share/icons + cp -r icon $out/share/icons/hicolor + if [ -d "etc/mime" ]; then + mkdir -p $out/share/mime/packages + cp etc/mime/*.xml $out/share/mime/packages/ + fi + '' + } runHook postInstall '';