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
parent 5e59fe27d9
commit 71f48ed456
No known key found for this signature in database
GPG key ID: 290FCF081AEDB3EC

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
'';
}));