about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/xfce4-13
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-01-07 02:18:36 +0000
committerAlyssa Ross <hi@alyssa.is>2019-01-07 02:18:47 +0000
commit36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2 (patch)
treeb3faaf573407b32aa645237a4d16b82778a39a92 /nixpkgs/pkgs/desktops/xfce4-13
parent4e31070265257dc67d120c27e0f75c2344fdfa9a (diff)
parentabf060725d7614bd3b9f96764262dfbc2f9c2199 (diff)
downloadnixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.gz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.bz2
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.lz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.xz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.zst
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.zip
Add 'nixpkgs/' from commit 'abf060725d7614bd3b9f96764262dfbc2f9c2199'
git-subtree-dir: nixpkgs
git-subtree-mainline: 4e31070265257dc67d120c27e0f75c2344fdfa9a
git-subtree-split: abf060725d7614bd3b9f96764262dfbc2f9c2199
Diffstat (limited to 'nixpkgs/pkgs/desktops/xfce4-13')
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/automakeAddFlags.sh7
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/default.nix115
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/exo/default.nix23
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/exo/gtk3-only.patch28
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/garcon/12700.patch37
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/garcon/13785.patch75
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/garcon/default.nix12
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/gigolo/default.nix11
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/libxfce4ui/default.nix18
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/libxfce4util/default.nix16
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/mkXfceDerivation.nix40
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/mousepad/default.nix12
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/orage/default.nix35
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/parole/default.nix36
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/ristretto/default.nix18
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/thunar-volman/default.nix11
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/thunar/default.nix30
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/tumbler/default.nix14
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfburn/default.nix18
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-appfinder/default.nix12
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-battery-plugin/default.nix11
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-clipman-plugin/default.nix11
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-cpufreq-plugin/default.nix10
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/default.nix32
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/setup-hook.sh12
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/configure-gio.patch11
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/default.nix19
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-mixer/default.nix32
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-netload-plugin/default.nix11
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-notifyd/default.nix12
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-panel/default.nix36
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-power-manager/default.nix19
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-pulseaudio-plugin/default.nix19
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-screenshooter/default.nix12
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-session/default.nix27
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-settings/default.nix38
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-taskmanager/default.nix18
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-terminal/default.nix16
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-volumed-pulse/default.nix15
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-whiskermenu-plugin/default.nix18
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfce4-xkb-plugin/default.nix11
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfconf/default.nix11
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfdesktop/default.nix22
-rw-r--r--nixpkgs/pkgs/desktops/xfce4-13/xfwm4/default.nix26
44 files changed, 1017 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/automakeAddFlags.sh b/nixpkgs/pkgs/desktops/xfce4-13/automakeAddFlags.sh
new file mode 100644
index 000000000000..92d5659d05ca
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/automakeAddFlags.sh
@@ -0,0 +1,7 @@
+automakeAddFlags() {
+    local file="$1"
+    local target="$2"
+    local source="$3"
+
+    sed "/$target/a\$($source) \\\\" -i $file
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/default.nix
new file mode 100644
index 000000000000..4809cec839ad
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/default.nix
@@ -0,0 +1,115 @@
+{ lib, makeSetupHook, newScope, gnome3, gst_all_1 }:
+
+let
+  inherit (lib) makeScope;
+in
+
+makeScope newScope (self: with self; {
+  mkXfceDerivation = callPackage ./mkXfceDerivation.nix { };
+
+  automakeAddFlags = makeSetupHook { } ./automakeAddFlags.sh;
+
+  exo = callPackage ./exo { };
+
+  garcon = callPackage ./garcon { };
+
+  gigolo = callPackage ./gigolo { };
+
+  libxfce4util = callPackage ./libxfce4util { };
+
+  libxfce4ui = callPackage ./libxfce4ui { };
+
+  mousepad = callPackage ./mousepad { };
+
+  orage = callPackage ./orage { };
+
+  parole = callPackage ./parole {
+    inherit (gst_all_1) gst-plugins-bad gst-plugins-base gst-plugins-good;
+    gst-plugins-ugly = null;
+  };
+
+  ristretto = callPackage ./ristretto { };
+
+  thunar = callPackage ./thunar { };
+
+  thunar-volman = callPackage ./thunar-volman { };
+
+  tumbler = callPackage ./tumbler { };
+
+  xfburn = callPackage ./xfburn { };
+
+  xfconf = callPackage ./xfconf { };
+
+  xfdesktop = callPackage ./xfdesktop { };
+
+  xfce4-appfinder = callPackage ./xfce4-appfinder { };
+
+  xfce4-battery-plugin = callPackage ./xfce4-battery-plugin { };
+
+  xfce4-cpufreq-plugin = callPackage ./xfce4-cpufreq-plugin { };
+
+  xfce4-clipman-plugin = callPackage ./xfce4-clipman-plugin { };
+
+  xfce4-dev-tools = callPackage ./xfce4-dev-tools {
+    mkXfceDerivation = mkXfceDerivation.override {
+      xfce4-dev-tools = null;
+    };
+  };
+
+  xfce4-dict = callPackage ./xfce4-dict { };
+
+  xfce4-mixer = callPackage ./xfce4-mixer { };
+
+  xfce4-netload-plugin = callPackage ./xfce4-netload-plugin { };
+
+  xfce4-notifyd = callPackage ./xfce4-notifyd { };
+
+  xfce4-panel = callPackage ./xfce4-panel { };
+
+  xfce4-power-manager = callPackage ./xfce4-power-manager { };
+
+  xfce4-pulseaudio-plugin = callPackage ./xfce4-pulseaudio-plugin { };
+
+  xfce4-screenshooter = callPackage ./xfce4-screenshooter {
+    inherit (gnome3) libsoup;
+  };
+
+  xfce4-session = callPackage ./xfce4-session { };
+  xinitrc = "${xfce4-session}/etc/xdg/xfce4/xinitrc";
+
+  xfce4-settings = callPackage ./xfce4-settings { };
+
+  xfce4-taskmanager = callPackage ./xfce4-taskmanager { };
+
+  xfce4-terminal = callPackage ./xfce4-terminal {
+    inherit (gnome3) vte;
+  };
+
+  xfce4-volumed-pulse = callPackage ./xfce4-volumed-pulse { };
+
+  xfce4-whiskermenu-plugin = callPackage ./xfce4-whiskermenu-plugin { };
+
+  xfce4-xkb-plugin = callPackage ./xfce4-xkb-plugin { };
+
+  xfwm4 = callPackage ./xfwm4 { };
+
+  ## COMMON PARTS WITH XFCE 4.12
+
+  gtk-xfce-engine = callPackage ../xfce/core/gtk-xfce-engine.nix { withGtk3 = false; };
+
+  xfce4-icon-theme = callPackage ../xfce/art/xfce4-icon-theme.nix { };
+
+  xfwm4-themes = callPackage ../xfce/art/xfwm4-themes.nix { };
+
+  xfce4-embed-plugin = callPackage ../xfce/panel-plugins/xfce4-embed-plugin.nix { };
+
+  xfce4-hardware-monitor-plugin = callPackage ../xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix { };
+
+  ## THIRD PARTY PLIGINS
+
+  xfce4-dockbarx-plugin = callPackage ../xfce/panel-plugins/xfce4-dockbarx-plugin.nix { };
+
+  xfce4-namebar-plugin = callPackage ../xfce/panel-plugins/xfce4-namebar-plugin.nix { };
+
+  xfce4-windowck-plugin = callPackage ../xfce/panel-plugins/xfce4-windowck-plugin.nix { };
+})
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/exo/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/exo/default.nix
new file mode 100644
index 000000000000..1096996ee6d5
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/exo/default.nix
@@ -0,0 +1,23 @@
+{ mkXfceDerivation, docbook_xsl, libxslt, perlPackages, gtk2, gtk3
+, libxfce4ui, libxfce4util }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "exo";
+  version = "0.12.2";
+
+  sha256 = "1b4hl9yxvf8b8akqf2zngq3m93yqnqcmxqqds1dwzm9vm5sqydgh";
+
+  nativeBuildInputs = [ libxslt perlPackages.URI ];
+  buildInputs = [ gtk2 gtk3 libxfce4ui libxfce4util ];
+
+  postPatch = ''
+    substituteInPlace docs/reference/Makefile.am \
+      --replace http://docbook.sourceforge.net/release/xsl/current \
+                ${docbook_xsl}/share/xml/docbook-xsl
+  '';
+
+  meta = {
+    description = "Application library for Xfce";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/exo/gtk3-only.patch b/nixpkgs/pkgs/desktops/xfce4-13/exo/gtk3-only.patch
new file mode 100644
index 000000000000..74e6f812e3c7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/exo/gtk3-only.patch
@@ -0,0 +1,28 @@
+diff -urNZ a/configure.ac.in b/configure.ac.in
+--- a/configure.ac.in	2017-11-20 02:57:40.476664918 +0000
++++ b/configure.ac.in	2017-11-20 03:07:18.999128370 +0000
+@@ -165,11 +165,9 @@
+ dnl ***********************************
+ XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.42.0])
+ XDT_CHECK_PACKAGE([GIO], [gio-2.0], [2.42.0])
+-XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.24.0])
+ XDT_CHECK_PACKAGE([GTK3], [gtk+-3.0], [3.20.0])
+ XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.42.0])
+ XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.10.0])
+-XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-1], [4.12.0])
+ XDT_CHECK_PACKAGE([LIBXFCE4UI2], [libxfce4ui-2], [4.12.0])
+ XDT_CHECK_OPTIONAL_PACKAGE([GIO_UNIX], [gio-unix-2.0], [2.42.0], [gio-unix], [GIO-Unix features])
+ 
+diff -urNZ a/exo/Makefile.am b/exo/Makefile.am
+--- a/exo/Makefile.am	2017-11-20 02:57:34.444785202 +0000
++++ b/exo/Makefile.am	2017-11-20 03:00:49.402897465 +0000
+@@ -117,7 +117,7 @@
+ 
+ libexo_2_includedir = $(includedir)/exo-2/exo
+ 
+-lib_LTLIBRARIES += libexo-2.la
++lib_LTLIBRARIES = libexo-2.la
+ 
+ libexo_2_include_HEADERS =						\
+ 	exo.h								\
+Binary files a/.git/index and b/.git/index differ
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/garcon/12700.patch b/nixpkgs/pkgs/desktops/xfce4-13/garcon/12700.patch
new file mode 100644
index 000000000000..fda36d696510
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/garcon/12700.patch
@@ -0,0 +1,37 @@
+From: Yegor Timoshenko <yegortimoshenko@gmail.com>
+Date: Thu, 14 Dec 2017 21:13:02 +0000
+Subject: [PATCH] Decrement allocation counter on item unref (#12700)
+
+diff --git a/garcon/garcon-menu-item-pool.c b/garcon/garcon-menu-item-pool.c
+index 2017180..355e520 100644
+--- a/garcon/garcon-menu-item-pool.c
++++ b/garcon/garcon-menu-item-pool.c
+@@ -191,7 +191,12 @@ garcon_menu_item_pool_filter_exclude (const gchar    *desktop_id,
+   g_return_val_if_fail (GARCON_IS_MENU_ITEM (item), FALSE);
+   g_return_val_if_fail (node != NULL, FALSE);
+
+-  return garcon_menu_node_tree_rule_matches (node, item);
++  gboolean matches = garcon_menu_node_tree_rule_matches (node, item);
++
++  if (matches)
++    garcon_menu_item_increment_allocated (item);
++
++  return matches;
+ }
+
+
+diff --git a/garcon/garcon-menu-item.c b/garcon/garcon-menu-item.c
+index ca8cb63..b44acfe 100644
+--- a/garcon/garcon-menu-item.c
++++ b/garcon/garcon-menu-item.c
+@@ -1908,6 +1908,8 @@ garcon_menu_item_unref (GarconMenuItem *item)
+ {
+   g_return_if_fail (GARCON_IS_MENU_ITEM (item));
+
++  garcon_menu_item_decrement_allocated (item);
++
+   /* Decrement the reference counter */
+   g_object_unref (G_OBJECT (item));
+ }
+--
+2.15.1
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/garcon/13785.patch b/nixpkgs/pkgs/desktops/xfce4-13/garcon/13785.patch
new file mode 100644
index 000000000000..1b723d21d60a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/garcon/13785.patch
@@ -0,0 +1,75 @@
+From 4387496fe332a50945e7db76bc2196b419656fe3 Mon Sep 17 00:00:00 2001
+From: Stefan Berzl <stefanberzl@gmail.com>
+Date: Mon, 21 Aug 2017 18:39:07 +0300
+Subject: [PATCH] fix: some menu icons are too big (Bug #13785)
+
+Some packages only provide icons in sizes much bigger than the standard
+GTK menu size of 16px.
+
+The clipboard manager qlipper for example provides the following icon:
+/usr/share/icons/hicolor/128x128/apps/qlipper.png
+
+In GTK 3.22.18 the function gtk_image_new_from_icon_name when given
+GTK_ICON_SIZE_MENU as second argument still returns an image with 128x128.
+
+The patch I have supplied uses existing code to scale such an image.
+
+Signed-off-by: Eric Koegel <eric.koegel@gmail.com>
+---
+ garcon-gtk/garcon-gtk-menu.c | 33 +++++++++++++++++++--------------
+ 1 file changed, 19 insertions(+), 14 deletions(-)
+
+diff --git a/garcon-gtk/garcon-gtk-menu.c b/garcon-gtk/garcon-gtk-menu.c
+index 41990f2..f31a1ed 100644
+--- a/garcon-gtk/garcon-gtk-menu.c
++++ b/garcon-gtk/garcon-gtk-menu.c
+@@ -650,7 +650,11 @@ garcon_gtk_menu_load_icon (const gchar *icon_name)
+   gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &w, &h);
+   size = MIN (w, h);
+ 
+-  if (! gtk_icon_theme_has_icon (icon_theme, icon_name))
++  if (gtk_icon_theme_has_icon (icon_theme, icon_name))
++    {
++	  pixbuf = gtk_icon_theme_load_icon (icon_theme, icon_name, size, 0, NULL);;
++    }
++  else
+     {
+       if (g_path_is_absolute (icon_name))
+         {
+@@ -684,22 +688,23 @@ garcon_gtk_menu_load_icon (const gchar *icon_name)
+               g_free (name);
+             }
+         }
++    }
+ 
+-      /* Turn the pixbuf into a gtk_image */
+-      if (G_LIKELY (pixbuf))
+-        {
+-          /* scale the pixbuf down if it needs it */
+-          GdkPixbuf *tmp = gdk_pixbuf_scale_simple (pixbuf, w, h, GDK_INTERP_BILINEAR);
+-          g_object_unref (pixbuf);
+-          pixbuf = tmp;
++  /* Turn the pixbuf into a gtk_image */
++  if (G_LIKELY (pixbuf))
++    {
++      /* scale the pixbuf down if it needs it */
++      GdkPixbuf *pixbuf_scaled = gdk_pixbuf_scale_simple (pixbuf, w, h, GDK_INTERP_BILINEAR);
++      g_object_unref (G_OBJECT (pixbuf));
+ 
+-          image = gtk_image_new_from_pixbuf (pixbuf);
+-          g_object_unref (G_OBJECT (pixbuf));
+-        }
++      image = gtk_image_new_from_pixbuf (pixbuf_scaled);
++      g_object_unref (G_OBJECT (pixbuf_scaled));
++    }
++  else
++    {
++	  /* display the placeholder at least */
++	  image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU);
+     }
+-
+-  if (image == NULL)
+-    image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU);
+ 
+   return image;
+ }
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/garcon/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/garcon/default.nix
new file mode 100644
index 000000000000..a88d64702a1a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/garcon/default.nix
@@ -0,0 +1,12 @@
+{ mkXfceDerivation, gtk2 ? null, gtk3, libxfce4ui, libxfce4util }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "garcon";
+  version = "0.6.1";
+
+  sha256 = "19k8bwn29x7hkg882pxv5xxmrbfagdqgkxg166pwz2k0prab6hl8";
+
+  patches = [ ./12700.patch ./13785.patch ];
+  buildInputs = [ gtk2 gtk3 libxfce4ui libxfce4util ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/gigolo/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/gigolo/default.nix
new file mode 100644
index 000000000000..0d7b2210b12c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/gigolo/default.nix
@@ -0,0 +1,11 @@
+{ mkXfceDerivation, gtk2, libX11 }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "gigolo";
+  version = "0.4.2";
+
+  sha256 = "0qd2jkf3zsvfyd9jn8bfnljja1xfj3ph4wjh3fx10dcwcd791al1";
+
+  buildInputs = [ gtk2 libX11 ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/libxfce4ui/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/libxfce4ui/default.nix
new file mode 100644
index 000000000000..f6997551262e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/libxfce4ui/default.nix
@@ -0,0 +1,18 @@
+{ lib, mkXfceDerivation, gobject-introspection, gtk2, gtk3, libICE, libSM
+, libstartup_notification ? null, libxfce4util, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "libxfce4ui";
+  version = "4.13.4";
+
+  sha256 = "0m9h3kvkk2nx8pxxmsg9sjnyp6ajwjrz9djjxxvranjsdw3ilydy";
+
+  buildInputs =  [ gobject-introspection gtk2 gtk3 libstartup_notification xfconf ];
+  propagatedBuildInputs = [ libxfce4util libICE libSM ];
+
+  meta = with lib; {
+    description = "Widgets library for Xfce";
+    license = licenses.lgpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/libxfce4util/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/libxfce4util/default.nix
new file mode 100644
index 000000000000..6a3b633cd09d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/libxfce4util/default.nix
@@ -0,0 +1,16 @@
+{ lib, mkXfceDerivation, gobject-introspection }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "libxfce4util";
+  version = "4.13.2";
+
+  sha256 = "0sb6pzhmh0qzfdhixj1ard56zi68318k86z3a1h3f2fhqy7gyf98";
+
+  buildInputs = [ gobject-introspection ];
+
+  meta = with lib; {
+    description = "Extension library for Xfce";
+    license = licenses.lgpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/mkXfceDerivation.nix b/nixpkgs/pkgs/desktops/xfce4-13/mkXfceDerivation.nix
new file mode 100644
index 000000000000..da7179c46462
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/mkXfceDerivation.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchgit, pkgconfig, xfce4-dev-tools, hicolor-icon-theme }:
+
+{ category, pname, version, rev ? "${pname}-${version}", sha256, ... } @ args:
+
+let
+  inherit (builtins) filter getAttr head isList;
+  inherit (stdenv.lib) attrNames concatLists recursiveUpdate zipAttrsWithNames;
+
+  filterAttrNames = f: attrs:
+    filter (n: f (getAttr n attrs)) (attrNames attrs);
+
+  concatAttrLists = attrsets:
+    zipAttrsWithNames (filterAttrNames isList (head attrsets)) (_: concatLists) attrsets;
+
+  template = rec {
+    name = "${pname}-${version}";
+
+    nativeBuildInputs = [ pkgconfig xfce4-dev-tools ];
+    buildInputs = [ hicolor-icon-theme ];
+    configureFlags = [ "--enable-maintainer-mode" ];
+
+    src = fetchgit {
+      url = "git://git.xfce.org/${category}/${pname}";
+      inherit rev sha256;
+    };
+
+    enableParallelBuilding = true;
+    outputs = [ "out" "dev" ];
+
+    meta = with stdenv.lib; {
+      homepage = "https://git.xfce.org/${category}/${pname}/about";
+      license = licenses.gpl2; # some libraries are under LGPLv2+
+      platforms = platforms.linux;
+    };
+  };
+
+  publicArgs = removeAttrs args [ "category" "pname" "sha256" ];
+in
+
+stdenv.mkDerivation (recursiveUpdate template publicArgs // concatAttrLists [ template args ])
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/mousepad/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/mousepad/default.nix
new file mode 100644
index 000000000000..b5fd3a19d060
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/mousepad/default.nix
@@ -0,0 +1,12 @@
+{ mkXfceDerivation, exo, wrapGAppsHook, dbus-glib, gtk3, gtksourceview3 }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "mousepad";
+  version = "0.4.1";
+
+  sha256 = "0pr1w9n0qq2raxhy78982i9g17x0ya02q7vdrn0wb2bpk74hlki5";
+
+  nativeBuildInputs = [ exo wrapGAppsHook ];
+  buildInputs = [ dbus-glib gtk3 gtksourceview3 ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/orage/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/orage/default.nix
new file mode 100644
index 000000000000..3c8395a49088
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/orage/default.nix
@@ -0,0 +1,35 @@
+{ lib, fetchpatch, mkXfceDerivation, dbus-glib, gtk2, libical, libnotify, tzdata
+, popt, libxfce4ui ? null, xfce4-panel ? null, withPanelPlugin ? true }:
+
+assert withPanelPlugin -> libxfce4ui != null && xfce4-panel != null;
+
+let
+  inherit (lib) optionals;
+in
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "orage";
+  version = "4.12.1";
+
+  sha256 = "04z6y1vfaz1im1zq1zr7cf8pjibjhj9zkyanbp7vn30q520yxa0m";
+  buildInputs = [ dbus-glib gtk2 libical libnotify popt ]
+    ++ optionals withPanelPlugin [ libxfce4ui xfce4-panel ];
+
+  postPatch = ''
+    substituteInPlace src/parameters.c        --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo"
+    substituteInPlace src/tz_zoneinfo_read.c  --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo"
+    substituteInPlace tz_convert/tz_convert.c --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo"
+  '';
+
+  postConfigure = "rm -rf libical"; # ensure pkgs.libical is used instead of one included in the orage sources
+
+  patches = [
+    # Fix build with libical 3.0
+    (fetchpatch {
+      name = "fix-libical3.patch";
+      url = https://git.archlinux.org/svntogit/packages.git/plain/trunk/libical3.patch?h=packages/orage&id=7b1b06c42dda034d538977b9f3550b28e370057f;
+      sha256 = "1l8s106mcidmbx2p8c2pi8v9ngbv2x3fsgv36j8qk8wyd4qd1jbf";
+    })
+  ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/parole/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/parole/default.nix
new file mode 100644
index 000000000000..e720791f1c47
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/parole/default.nix
@@ -0,0 +1,36 @@
+{ mkXfceDerivation, makeWrapper, wrapGAppsHook, dbus, dbus-glib
+, gst-plugins-bad ? null, gst-plugins-base, gst-plugins-good
+, gst-plugins-ugly ? null, gtk3, libnotify, libxfce4ui, libxfce4util
+, taglib ? null, xfconf }:
+
+# Doesn't seem to find H.264 codec even though built with gst-plugins-bad.
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "parole";
+  version = "1.0.1";
+
+  sha256 = "0zq1imbjqmwfk3yrsha2s7lclzbh8xgggz0rbksa51siqk73swbb";
+
+  postPatch = ''
+    substituteInPlace src/plugins/mpris2/Makefile.am \
+      --replace GST_BASE_CFLAGS GST_VIDEO_CFLAGS
+  '';
+
+  nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
+
+  buildInputs = [
+    dbus
+    dbus-glib
+    gst-plugins-bad
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-ugly
+    gtk3
+    libnotify
+    libxfce4ui
+    libxfce4util
+    taglib
+    xfconf
+  ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/ristretto/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/ristretto/default.nix
new file mode 100644
index 000000000000..b4b0778e9824
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/ristretto/default.nix
@@ -0,0 +1,18 @@
+{ mkXfceDerivation, automakeAddFlags, exo, dbus-glib, gtk2, libexif
+, libxfce4ui, libxfce4util, xfconf }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "ristretto";
+  version = "0.8.3";
+
+  postPatch = ''
+    automakeAddFlags src/Makefile.am ristretto_CFLAGS DBUS_GLIB_CFLAGS
+    automakeAddFlags src/Makefile.am ristretto_LDADD DBUS_GLIB_LIBS
+  '';
+
+  nativeBuildInputs = [ automakeAddFlags exo ];
+  buildInputs = [ dbus-glib gtk2 libexif libxfce4ui libxfce4util xfconf ];
+
+  sha256 = "02i61ddzpv0qjwahkksnzla57zdmkywyg1qrqs57z4bzj6l4nmkx";
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/thunar-volman/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/thunar-volman/default.nix
new file mode 100644
index 000000000000..0055d0d82179
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/thunar-volman/default.nix
@@ -0,0 +1,11 @@
+{ mkXfceDerivation, exo, gtk3, libgudev, libxfce4ui, libxfce4util, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "thunar-volman";
+  version = "0.9.0";
+
+  buildInputs = [ exo gtk3 libgudev libxfce4ui libxfce4util xfconf ];
+
+  sha256 = "08aqbp3i0z6frj7z3laz9nj641iakrcr7vh2dxb057ky24gj61i7";
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/thunar/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/thunar/default.nix
new file mode 100644
index 000000000000..dbeb80ac9bd2
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/thunar/default.nix
@@ -0,0 +1,30 @@
+{ mkXfceDerivation, docbook_xsl, exo, gdk_pixbuf, gtk3, libgudev ? null
+, libnotify ? null, libX11, libxfce4ui, libxfce4util, libxslt, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "thunar";
+  version = "1.8.1";
+
+  sha256 = "00n5iinhg3xgzj2rcy7zl6g9449i59x2l09cnlkhyrjzghb4k5ha";
+
+  postPatch = ''
+    substituteInPlace docs/Makefile.am \
+      --replace http://docbook.sourceforge.net/release/xsl/current \
+                ${docbook_xsl}/share/xml/docbook-xsl
+  '';
+
+  nativeBuildInputs = [ libxslt ];
+
+  buildInputs = [
+    exo
+    gdk_pixbuf
+    gtk3
+    libgudev
+    libnotify
+    libX11
+    libxfce4ui
+    libxfce4util
+    xfconf
+  ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/tumbler/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/tumbler/default.nix
new file mode 100644
index 000000000000..15b41f090af5
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/tumbler/default.nix
@@ -0,0 +1,14 @@
+{ mkXfceDerivation, gdk_pixbuf ? null, ffmpegthumbnailer ? null, libgsf ? null
+, poppler ? null }:
+
+# TODO: add libopenraw
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "tumbler";
+  version = "0.2.1";
+
+  sha256 = "0vgk3s6jnsrs8bawrfc11s8nwsm4jvcl3aidbaznk52g97xiyxz0";
+
+  buildInputs = [ gdk_pixbuf ffmpegthumbnailer libgsf poppler ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfburn/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfburn/default.nix
new file mode 100644
index 000000000000..b8a61f6cf90c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfburn/default.nix
@@ -0,0 +1,18 @@
+{ mkXfceDerivation, docbook_xsl, exo, gtk2, libburn, libisofs, libxfce4ui, libxslt }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfburn";
+  version = "0.5.5";
+
+  postPatch = ''
+    substituteInPlace docs/Makefile.am \
+      --replace http://docbook.sourceforge.net/release/xsl/current \
+                ${docbook_xsl}/share/xml/docbook-xsl
+  '';
+
+  sha256 = "1lmv48vqrlap1a2ha72g16vqly18zvcwj8y3f3f00l10pmn52bkp";
+
+  nativeBuildInputs = [ libxslt ];
+  buildInputs = [ exo gtk2 libburn libisofs libxfce4ui ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-appfinder/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-appfinder/default.nix
new file mode 100644
index 000000000000..65941fee4c4a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-appfinder/default.nix
@@ -0,0 +1,12 @@
+{ mkXfceDerivation, exo, garcon, gtk3, libxfce4util, libxfce4ui, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfce4-appfinder";
+  version = "4.13.0";
+
+  sha256 = "13xsshzw04gx5rhalx4r0khjb0dbq26fv6n20biyiai1ykznyryy";
+
+  nativeBuildInputs = [ exo ];
+  buildInputs = [ garcon gtk3 libxfce4ui libxfce4util xfconf ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-battery-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-battery-plugin/default.nix
new file mode 100644
index 000000000000..b4b5ff7b7148
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-battery-plugin/default.nix
@@ -0,0 +1,11 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-battery-plugin";
+  version = "1.1.0";
+  rev = version;
+  sha256 = "0mz0lj3wjrsj9n4wcqrvv08430g38nkjbdimxdy8316n6bqgngfn";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-clipman-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-clipman-plugin/default.nix
new file mode 100644
index 000000000000..28f63a6769d7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-clipman-plugin/default.nix
@@ -0,0 +1,11 @@
+{ mkXfceDerivation, gtk3, libXtst, libxfce4ui, libxfce4util, xfce4-panel, xfconf, exo }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-clipman-plugin";
+  version = "1.4.2";
+  rev = version;
+  sha256 = "1c2h1cs7pycf1rhpirmvb0l0dfvlacb7xgm31q9rxmhihnycd2na";
+
+  buildInputs = [ exo gtk3 libXtst libxfce4ui libxfce4util xfce4-panel xfconf ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-cpufreq-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-cpufreq-plugin/default.nix
new file mode 100644
index 000000000000..e17204c0cd55
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-cpufreq-plugin/default.nix
@@ -0,0 +1,10 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-cpufreq-plugin";
+  version = "1.2.0";
+  sha256 = "0zhs7b7py1njczmpnib4532fwpnd3vnpqfhss2r136cfgy72kp6g";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/default.nix
new file mode 100644
index 000000000000..9dedb8674dc2
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/default.nix
@@ -0,0 +1,32 @@
+{ mkXfceDerivation, autoreconfHook, autoconf, automake
+, glib, gtk-doc, intltool, libtool }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfce4-dev-tools";
+  version = "4.12.0";
+
+  sha256 = "0bbmlmw2dpm10q2wv3vy592i0vx7b5h1qnd35j0fdzxqb8x2hbw2";
+
+  nativeBuildInputs = [ autoreconfHook ];
+
+  propagatedBuildInputs = [
+    autoconf
+    automake
+    glib
+    gtk-doc
+    intltool
+    libtool
+  ];
+
+  preAutoreconf = ''
+    substitute configure.ac.in configure.ac \
+      --subst-var-by REVISION UNKNOWN
+  '';
+
+  setupHook = ./setup-hook.sh;
+
+  meta = {
+    description = "Autoconf macros and scripts to augment app build systems";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/setup-hook.sh b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/setup-hook.sh
new file mode 100644
index 000000000000..600bf47fd872
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dev-tools/setup-hook.sh
@@ -0,0 +1,12 @@
+xdtEnvHook() {
+    addToSearchPath ACLOCAL_PATH $1/share/xfce4/dev-tools/m4macros
+}
+
+envHooks+=(xdtEnvHook)
+
+xdtAutogenPhase() {
+    mkdir -p m4
+    NOCONFIGURE=1 xdt-autogen
+}
+
+preConfigurePhases+=(xdtAutogenPhase)
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/configure-gio.patch b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/configure-gio.patch
new file mode 100644
index 000000000000..787b63511a23
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/configure-gio.patch
@@ -0,0 +1,11 @@
+diff -urNZ a/configure.ac.in b/configure.ac.in
+--- a/configure.ac.in	2017-12-16 19:46:13.784914017 +0000
++++ b/configure.ac.in	2017-12-16 19:46:38.612477052 +0000
+@@ -53,6 +53,7 @@
+ dnl ***********************************
+ dnl *** Check for required packages ***
+ dnl ***********************************
++XDT_CHECK_PACKAGE([GIO], [gio-unix-2.0], [2.32.0])
+ XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.24.0])
+ XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [3.20.0])
+ XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2], [4.12.0])
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/default.nix
new file mode 100644
index 000000000000..1236b60175d0
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-dict/default.nix
@@ -0,0 +1,19 @@
+{ mkXfceDerivation, automakeAddFlags, gtk3, libxfce4ui, libxfce4util, xfce4-panel }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfce4-dict";
+  version = "0.8.1";
+
+  sha256 = "0kxirzqmpp7qlr8220i8kipz4bgzkam7h1lpx7yzld5xf7wdzvaf";
+
+  patches = [ ./configure-gio.patch ];
+
+  nativeBuildInputs = [ automakeAddFlags ];
+
+  postPatch = ''
+    automakeAddFlags lib/Makefile.am libdict_la_CFLAGS GIO_CFLAGS
+  '';
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-mixer/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-mixer/default.nix
new file mode 100644
index 000000000000..a4bc0a3eaddb
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-mixer/default.nix
@@ -0,0 +1,32 @@
+{ mkXfceDerivation, automakeAddFlags, dbus-glib, gtk2, libxfce4ui, libxfce4util, xfce4-panel, xfconf, gst-plugins-base, libunique }:
+
+let
+  gst_plugins_minimal = gst-plugins-base.override {
+    minimalDeps = true;
+  };
+in
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfce4-mixer";
+  version = "4.11.0";
+
+  sha256 = "1kiz5ysn4rqkjfzz4dvbsfj64kqqayg7bqakcys3rw28g2q5qyys";
+
+  nativeBuildInputs = [ automakeAddFlags ];
+
+  postPatch = ''
+    automakeAddFlags panel-plugin/Makefile.am libmixer_la_CFLAGS DBUS_GLIB_CFLAGS
+    automakeAddFlags xfce4-mixer/Makefile.am xfce4_mixer_CFLAGS DBUS_GLIB_CFLAGS
+  '';
+
+  buildInputs = [
+    dbus-glib
+    gst_plugins_minimal
+    gtk2
+    libunique
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    xfconf
+  ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-netload-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-netload-plugin/default.nix
new file mode 100644
index 000000000000..d9f517981d3e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-netload-plugin/default.nix
@@ -0,0 +1,11 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-netload-plugin";
+  version = "1.3.1";
+  rev = "version-${version}";
+  sha256 = "0nm8advafw4jpc9p1qszyfqa56194sz51z216rdh4c6ilcrrpy1h";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-notifyd/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-notifyd/default.nix
new file mode 100644
index 000000000000..bac258785079
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-notifyd/default.nix
@@ -0,0 +1,12 @@
+{ mkXfceDerivation, dbus-glib, exo, gtk3, libnotify, libxfce4ui, libxfce4util
+, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfce4-notifyd";
+  version = "0.4.2";
+
+  sha256 = "1zxwzigrhms74crasbqpnzidmq2mnyxpmc9pqr4p4qj14yw4sam9";
+
+  buildInputs = [ dbus-glib exo gtk3 libnotify libxfce4ui libxfce4util xfce4-panel xfconf ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-panel/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-panel/default.nix
new file mode 100644
index 000000000000..2b52b515c04e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-panel/default.nix
@@ -0,0 +1,36 @@
+{ mkXfceDerivation, makeWrapper, tzdata, exo, garcon, gtk2, gtk3, gettext, glib-networking, libxfce4ui, libxfce4util, libwnck3, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfce4-panel";
+  version = "4.13.3";
+
+  sha256 = "00b2b16wqwzdbh1vsnpl2kasa7f9i1hr1wkkjmvzmy2v7bmkygr0";
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ exo garcon gtk2 gtk3 libxfce4ui libxfce4util libwnck3 xfconf ];
+
+  patches = [ ../../xfce/core/xfce4-panel-datadir.patch ];
+  patchFlags = "-p1";
+
+  postPatch = ''
+    for f in $(find . -name \*.sh); do
+      substituteInPlace $f --replace gettext ${gettext}/bin/gettext
+    done
+    substituteInPlace plugins/clock/clock.c \
+       --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" \
+       --replace "if (!g_file_test (filename, G_FILE_TEST_IS_SYMLINK))" ""
+  '';
+
+  configureFlags = [ "--enable-gtk3" ];
+
+  postInstall = ''
+    wrapProgram "$out/bin/xfce4-panel" \
+      --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" \
+      --prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules"
+  '';
+
+  meta =  {
+    description = "Xfce's panel";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-power-manager/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-power-manager/default.nix
new file mode 100644
index 000000000000..5389af668820
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-power-manager/default.nix
@@ -0,0 +1,19 @@
+{ mkXfceDerivation, automakeAddFlags, exo, gtk3, libnotify
+, libxfce4ui, libxfce4util, upower, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfce4-power-manager";
+  version = "1.6.1";
+
+  sha256 = "0b32m46v3dv1ln3xwlpqbnpflknm4gyfk2w6gn7xjx1k7igcjym3";
+
+  nativeBuildInputs = [ automakeAddFlags exo ];
+  buildInputs = [ gtk3 libnotify libxfce4ui libxfce4util upower xfconf ];
+
+  postPatch = ''
+    substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0
+    automakeAddFlags src/Makefile.am xfce4_power_manager_CFLAGS GIO_CFLAGS
+    automakeAddFlags settings/Makefile.am xfce4_power_manager_settings_CFLAGS GIO_CFLAGS
+  '';
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-pulseaudio-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-pulseaudio-plugin/default.nix
new file mode 100644
index 000000000000..185494c25439
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-pulseaudio-plugin/default.nix
@@ -0,0 +1,19 @@
+{ mkXfceDerivation, automakeAddFlags, dbus-glib, dbus, gtk3, libpulseaudio
+, libnotify, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-pulseaudio-plugin";
+  version = "0.4.1";
+  sha256 = "1c8krpg3l6ki00ldd9hifc4bddysdm0w3x5w43fkr31j0zrscvfp";
+
+  nativeBuildInputs = [ automakeAddFlags ];
+
+  NIX_CFLAGS_COMPILE = [ "-I${dbus-glib.dev}/include/dbus-1.0" "-I${dbus.dev}/include/dbus-1.0" ];
+
+  postPatch = ''
+    substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0
+  '';
+
+  buildInputs = [ gtk3 libnotify libpulseaudio libxfce4ui libxfce4util xfce4-panel xfconf ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-screenshooter/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-screenshooter/default.nix
new file mode 100644
index 000000000000..0dfad21d07ba
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-screenshooter/default.nix
@@ -0,0 +1,12 @@
+{ mkXfceDerivation, exo, gtk3, libsoup, libxfce4ui, libxfce4util, xfce4-panel, wrapGAppsHook, glib-networking }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfce4-screenshooter";
+  version = "1.9.2";
+
+  sha256 = "1zl16xcmgrb1s6rsrn37mpl5w522i1i9s7x167xf2d092x333yx2";
+
+  nativeBuildInputs = [ wrapGAppsHook ]; # fix "No GSettings schemas are installed on the system"
+  buildInputs = [ exo gtk3 libsoup libxfce4ui libxfce4util xfce4-panel glib-networking ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-session/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-session/default.nix
new file mode 100644
index 000000000000..ecf1f6ac505e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-session/default.nix
@@ -0,0 +1,27 @@
+{ mkXfceDerivation, polkit, exo, libxfce4util, libxfce4ui, xfconf, dbus-glib, dbus, iceauth, gtk3, libwnck3, xorg }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfce4-session";
+  version = "4.13.0";
+
+  sha256 = "0d6h1kgqq6g084jrxx4jxw98h5g0vwsxqrvk0bmapyxh2sbrg07y";
+
+  buildInputs = [ exo dbus-glib dbus gtk3 libxfce4ui libxfce4util libwnck3 xfconf polkit iceauth ];
+
+  configureFlags = [ "--with-xsession-prefix=$(out)" ];
+
+  NIX_CFLAGS_COMPILE = [ "-I${dbus-glib.dev}/include/dbus-1.0"
+                         "-I${dbus.dev}/include/dbus-1.0"
+                         "-I${dbus.lib}/lib/dbus-1.0/include"
+                       ];
+
+  postPatch = ''
+    substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0
+    substituteInPlace scripts/xflock4 --replace PATH=/bin:/usr/bin "PATH=\$PATH:$out/bin:${xorg.xset}/bin"
+  '';
+
+  meta =  {
+    description = "Session manager for Xfce";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-settings/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-settings/default.nix
new file mode 100644
index 000000000000..6eb917fd76fd
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-settings/default.nix
@@ -0,0 +1,38 @@
+{ mkXfceDerivation, automakeAddFlags, exo, garcon, gtk3
+, libnotify ? null, libxfce4ui, libxfce4util, libxklavier ? null
+, upower ? null, xfconf, xf86inputlibinput ? null }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfce4-settings";
+  version = "4.13.4";
+
+  sha256 = "0qnnpvcs2hpfq3n4byjwq343p95i9xw96rq7ym4md4mahnk176dy";
+
+  postPatch = ''
+    automakeAddFlags xfce4-settings-editor/Makefile.am xfce4_settings_editor_CFLAGS DBUS_GLIB_CFLAGS
+    for f in $(find . -name \*.c); do
+      substituteInPlace $f --replace \"libinput-properties.h\" '<xorg/libinput-properties.h>'
+    done
+  '';
+
+  nativeBuildInputs = [ automakeAddFlags ];
+
+  buildInputs = [
+    exo
+    garcon
+    gtk3
+    libnotify
+    libxfce4ui
+    libxfce4util
+    libxklavier
+    upower
+    xfconf
+    xf86inputlibinput
+  ];
+
+  configureFlags = [
+    "--enable-pluggable-dialogs"
+    "--enable-sound-settings"
+  ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-taskmanager/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-taskmanager/default.nix
new file mode 100644
index 000000000000..d9a5991598bc
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-taskmanager/default.nix
@@ -0,0 +1,18 @@
+{ lib, mkXfceDerivation, exo, gtk2, gtk3 ? null, libwnck3 ? null, libXmu }:
+
+let
+  inherit (lib) enableFeature;
+in
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfce4-taskmanager";
+  version = "1.2.1";
+
+  sha256 = "1p0496r1fb5zqvn6c41kb6rjqwlqghqahgg6hkzw0gjy911im99w";
+
+  nativeBuildInputs = [ exo ];
+  buildInputs = [ gtk2 gtk3 libwnck3 libXmu ];
+
+  configureFlags = [ (enableFeature (gtk3 != null) "gtk3") ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-terminal/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-terminal/default.nix
new file mode 100644
index 000000000000..6bc88ee76611
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-terminal/default.nix
@@ -0,0 +1,16 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, wrapGAppsHook, vte }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfce4-terminal";
+  version = "0.8.7.4";
+
+  sha256 = "1s1dq560icg602jjb2ja58x7hxg4ikp3jrrf74v3qgi0ir950k2y";
+
+  buildInputs = [ gtk3 libxfce4ui vte ];
+  nativeBuildInputs = [ wrapGAppsHook ];
+
+  meta = {
+    description = "A modern terminal emulator";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-volumed-pulse/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-volumed-pulse/default.nix
new file mode 100644
index 000000000000..626451c70d63
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-volumed-pulse/default.nix
@@ -0,0 +1,15 @@
+{ lib, mkXfceDerivation, gtk3, libnotify ? null, libpulseaudio, keybinder3, xfconf }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfce4-volumed-pulse";
+  version = "0.2.3";
+
+  sha256 = "1rsjng9qmq7vzrx5bfxq76h63y501cfl1mksrxkf1x39by9r628j";
+
+  buildInputs = [ gtk3 libnotify libpulseaudio keybinder3 xfconf ];
+
+  meta = with lib; {
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-whiskermenu-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-whiskermenu-plugin/default.nix
new file mode 100644
index 000000000000..41a1ef82932b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-whiskermenu-plugin/default.nix
@@ -0,0 +1,18 @@
+{ mkXfceDerivation, dbus-glib, gtk3, cmake, exo, garcon, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-whiskermenu-plugin";
+  version = "2.2.0";
+  rev = "v${version}";
+  sha256 = "1d35xxkdzw8pl3d5ps226mmrrjk0hqczsbvl5smh7l7jbwfambjm";
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ dbus-glib exo garcon gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+
+  postInstall = ''
+    substituteInPlace $out/bin/xfce4-popup-whiskermenu \
+      --replace $out/bin/xfce4-panel ${xfce4-panel.out}/bin/xfce4-panel
+  '';
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfce4-xkb-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-xkb-plugin/default.nix
new file mode 100644
index 000000000000..a024d3a88ba0
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfce4-xkb-plugin/default.nix
@@ -0,0 +1,11 @@
+{ mkXfceDerivation, gtk3, librsvg, libwnck3, libxklavier, garcon, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-xkb-plugin";
+  version = "0.8.1";
+  rev = version;
+  sha256 = "1gyky4raynp2ggdnq0g96c6646fjm679fzipcsmf1q0aymr8d5ky";
+
+  buildInputs = [ garcon gtk3 librsvg libxfce4ui libxfce4util libxklavier libwnck3 xfce4-panel xfconf ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfconf/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfconf/default.nix
new file mode 100644
index 000000000000..def60bcfe21c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfconf/default.nix
@@ -0,0 +1,11 @@
+{ mkXfceDerivation, libxfce4util }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfconf";
+  version = "4.13.5";
+
+  sha256 = "0xpnwb04yw5qdn0bj8b740a7rmiy316vhja5pp8p6sdiqm32yi8a";
+
+  buildInputs = [ libxfce4util ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfdesktop/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfdesktop/default.nix
new file mode 100644
index 000000000000..0209b7913602
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfdesktop/default.nix
@@ -0,0 +1,22 @@
+{ mkXfceDerivation, exo, gtk3, libxfce4ui, libxfce4util, libwnck3, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfdesktop";
+  version = "4.13.2";
+
+  sha256 = "0v6dlhraqh9v20qciyj03cbjmg3jb6gvmf0hqzavxqi2di3mv5fl";
+
+  buildInputs = [
+    exo
+    gtk3
+    libxfce4ui
+    libxfce4util
+    libwnck3
+    xfconf
+  ];
+
+  meta = {
+    description = "Xfce's desktop manager";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce4-13/xfwm4/default.nix b/nixpkgs/pkgs/desktops/xfce4-13/xfwm4/default.nix
new file mode 100644
index 000000000000..97d414d66932
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce4-13/xfwm4/default.nix
@@ -0,0 +1,26 @@
+{ mkXfceDerivation, exo, dbus-glib, epoxy, gtk2, libXdamage
+, libstartup_notification, libxfce4ui, libxfce4util, libwnck
+, libXpresent, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfwm4";
+  version = "4.13.0";
+
+  sha256 = "19ikyls4xawsbz07qdz60g5yl2jbvpb90sfy5zql7ghypd69cgn9";
+
+  nativeBuildInputs = [ exo ];
+
+  buildInputs = [
+    dbus-glib
+    epoxy
+    gtk2
+    libXdamage
+    libstartup_notification
+    libxfce4ui
+    libxfce4util
+    libwnck
+    libXpresent
+    xfconf
+  ];
+}