summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/applications/networking/browsers/firefox-wrapper/default.nix15
-rw-r--r--pkgs/build-support/make-desktopitem/default.nix33
-rw-r--r--pkgs/top-level/all-packages.nix6
3 files changed, 52 insertions, 2 deletions
diff --git a/pkgs/applications/networking/browsers/firefox-wrapper/default.nix b/pkgs/applications/networking/browsers/firefox-wrapper/default.nix
index c201d30e13f..f68f0f92e28 100644
--- a/pkgs/applications/networking/browsers/firefox-wrapper/default.nix
+++ b/pkgs/applications/networking/browsers/firefox-wrapper/default.nix
@@ -1,8 +1,18 @@
-{stdenv, browser, browserName ? "firefox", nameSuffix ? "", makeWrapper, plugins}:
+{stdenv, browser, browserName ? "firefox", nameSuffix ? "", makeDesktopItem, makeWrapper, plugins}:
 
 stdenv.mkDerivation {
   name = browser.name + "-with-plugins";
 
+  desktopItem = makeDesktopItem {
+    name = browserName;
+    exec = browserName;
+    icon = "${browser}/lib/${browser.name}/icons/mozicon128.png";
+    comment = "";
+    desktopName = browserName;
+    genericName = "Web Browser";
+    categories = "Application;Network;";
+  };
+
   buildInputs = [makeWrapper];
 
   buildCommand = ''
@@ -16,6 +26,9 @@ stdenv.mkDerivation {
         "$out/bin/${browserName}${nameSuffix}" \
         --suffix-each MOZ_PLUGIN_PATH ':' "$plugins" \
         --suffix-contents PATH ':' "$(filterExisting $(addSuffix /extra-bin-path $plugins))"
+
+    ensureDir $out/share/applications
+    cp $desktopItem/share/applications/* $out/share/applications
   '';
 
   # Let each plugin tell us (through its `mozillaPlugin') attribute
diff --git a/pkgs/build-support/make-desktopitem/default.nix b/pkgs/build-support/make-desktopitem/default.nix
new file mode 100644
index 00000000000..7f3b97a33b7
--- /dev/null
+++ b/pkgs/build-support/make-desktopitem/default.nix
@@ -0,0 +1,33 @@
+{stdenv}:
+{ name
+, type ? "Application"
+, exec
+, icon ? ""
+, comment ? ""
+, terminal ? "false"
+, desktopName
+, genericName
+, mimeType ? ""
+, categories ? "Application;Other;"
+, encoding ? "UTF-8"
+}:
+
+stdenv.mkDerivation {
+  inherit name;
+  buildCommand = ''
+    ensureDir $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}
+    Encoding=${encoding}
+    EOF
+  '';
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 810babff1fd..2854e8cb531 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -284,6 +284,10 @@ let
     inherit url;
   };
 
+  makeDesktopItem = import ../build-support/make-desktopitem {
+    inherit stdenv;
+  };
+  
   makeInitrd = {contents}: import ../build-support/kernel/make-initrd.nix {
     inherit stdenv perl cpio contents;
   };
@@ -6948,7 +6952,7 @@ let
   };
 
   wrapFirefox = browser: browserName: nameSuffix: import ../applications/networking/browsers/firefox-wrapper {
-    inherit stdenv nameSuffix makeWrapper browser browserName;
+    inherit stdenv nameSuffix makeWrapper makeDesktopItem browser browserName;
     plugins =
       let enableAdobeFlash = getConfig [ browserName "enableAdobeFlash" ] true;
       in