nixgl: make desktop files point to wrapped exe

Some desktop files will refer to the absolute path of the original
derivation, which would bypass nixGL wrapping. So we need to replace the
path with the path to the wrapper derivation to ensure the wrapped
version is always launched.
This commit is contained in:
Mel Bourgeois 2024-06-19 18:25:56 -05:00 committed by Robert Helgesson
parent 446293584f
commit bbd4254d00
Failed to generate hash of commit

View file

@ -57,6 +57,17 @@ in {
echo "exec -a \"\$0\" ${cfg.prefix} $file \"\$@\"" >> "$out/bin/$(basename $file)"
chmod +x "$out/bin/$(basename $file)"
done
# If .desktop files refer to the old package, replace the references
for dsk in "$out/share/applications"/*.desktop ; do
if ! grep "${pkg.out}" "$dsk" > /dev/null; then
continue
fi
src="$(readlink "$dsk")"
rm "$dsk"
sed "s|${pkg.out}|$out|g" "$src" > "$dsk"
done
shopt -u nullglob # Revert nullglob back to its normal default state
'';
}));