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.
This commit is contained in:
Misaka13514
2026-01-18 17:56:53 +08:00
parent 50baa830af
commit 3a6f91205b
@@ -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
'';