makeDesktopItem: add desktop file validation

This uses desktop-file-validate in desktop-file-utils.
It can be turned off if wanted.
This commit is contained in:
worldofpeace
2019-12-15 19:04:10 -05:00
parent be13df6c76
commit 9665977f4c
@@ -1,4 +1,5 @@
{ lib, runCommandLocal }: { lib, runCommandLocal, desktop-file-utils }:
{ name { name
, type ? "Application" , type ? "Application"
, exec , exec
@@ -11,6 +12,7 @@
, categories ? "Application;Other;" , categories ? "Application;Other;"
, startupNotify ? null , startupNotify ? null
, extraEntries ? null , extraEntries ? null
, fileValidation ? true # whether to validate resulting desktop file.
}: }:
let let
@@ -28,8 +30,8 @@ let
in in
runCommandLocal "${name}.desktop" {} runCommandLocal "${name}.desktop" {}
'' ''
mkdir -p $out/share/applications mkdir -p "$out/share/applications"
cat > $out/share/applications/${name}.desktop <<EOF cat > "$out/share/applications/${name}.desktop" <<EOF
[Desktop Entry] [Desktop Entry]
Type=${type} Type=${type}
Exec=${exec} Exec=${exec}
@@ -40,4 +42,9 @@ runCommandLocal "${name}.desktop" {}
${if extraEntries == null then ''EOF'' else '' ${if extraEntries == null then ''EOF'' else ''
${extraEntries} ${extraEntries}
EOF''} EOF''}
${lib.optionalString fileValidation ''
echo "Running desktop-file validation"
${desktop-file-utils}/bin/desktop-file-validate "$out/share/applications/${name}.desktop"
''}
'' ''