summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/make-desktopitem/default.nix38
1 files changed, 25 insertions, 13 deletions
diff --git a/pkgs/build-support/make-desktopitem/default.nix b/pkgs/build-support/make-desktopitem/default.nix
index f5b4e5af93a0..f8c31ed5c1d4 100644
--- a/pkgs/build-support/make-desktopitem/default.nix
+++ b/pkgs/build-support/make-desktopitem/default.nix
@@ -1,36 +1,48 @@
-{stdenv}:
+{stdenv, lib}:
 { name
 , type ? "Application"
 , exec
-, icon ? ""
-, comment ? ""
+, icon ? null
+, comment ? null
 , terminal ? "false"
 , desktopName
-, genericName
-, mimeType ? ""
+, genericName ? null
+, mimeType ? null
 , categories ? "Application;Other;"
 , startupNotify ? null
-, extraEntries ? ""
+, extraEntries ? null
 }:
 
 stdenv.mkDerivation {
   name = "${name}.desktop";
-  buildCommand = ''
+
+  buildCommand = let
+
+   optionalEntriesList = [{k="Icon";          v=icon;}
+                          {k="Comment";       v=comment;}
+                          {k="GenericName";   v=genericName;}
+                          {k="MimeType";      v=mimeType;}
+                          {k="StartupNotify"; v=startupNotify;}];
+
+   valueNotNull = {k, v}: v != null;
+   entriesToKeep = builtins.filter valueNotNull optionalEntriesList;
+
+   mkEntry = {k, v}:  k + "=" + v;
+   optionalEntriesString  = lib.concatMapStringsSep "\n" mkEntry entriesToKeep;
+
+  in
+  ''
     mkdir -p $out/share/applications
     cat > $out/share/applications/${name}.desktop <<EOF
     [Desktop Entry]
     Type=${type}
     Exec=${exec}
-    Icon=${icon}
-    Comment=${comment}
     Terminal=${terminal}
     Name=${desktopName}
-    GenericName=${genericName}
-    MimeType=${mimeType}
     Categories=${categories}
+    ${optionalEntriesString}
+    ${if extraEntries == null then ''EOF'' else ''
     ${extraEntries}
-    ${if startupNotify == null then ''EOF'' else ''
-    StartupNotify=${startupNotify}
     EOF''}
   '';
 }