summary refs log tree commit diff
path: root/pkgs/desktops/xfce
diff options
context:
space:
mode:
authorworldofpeace <worldofpeace@protonmail.ch>2019-11-04 16:27:22 -0500
committerworldofpeace <worldofpeace@protonmail.ch>2019-11-19 18:47:02 -0500
commitac70cd728cab343e446ede905e0dbd94fd78ca77 (patch)
tree855c6f1e2711cf8fedb1e6bd5edf187cdf057796 /pkgs/desktops/xfce
parent041d35a08afc1de270e31ae951fc5141e69cb52a (diff)
downloadnixpkgs-ac70cd728cab343e446ede905e0dbd94fd78ca77.tar
nixpkgs-ac70cd728cab343e446ede905e0dbd94fd78ca77.tar.gz
nixpkgs-ac70cd728cab343e446ede905e0dbd94fd78ca77.tar.bz2
nixpkgs-ac70cd728cab343e446ede905e0dbd94fd78ca77.tar.lz
nixpkgs-ac70cd728cab343e446ede905e0dbd94fd78ca77.tar.xz
nixpkgs-ac70cd728cab343e446ede905e0dbd94fd78ca77.tar.zst
nixpkgs-ac70cd728cab343e446ede905e0dbd94fd78ca77.zip
xfce4-14: move to xfce and have only one version of xfce
All code that was at xfce4-14 has been moved to xfce/*.
Old expressions that aren't rewritten might be abandoned or broken.

Additonally I've ported the xfce4-14 thunar expression to support
thunarPlugins. We can now support this interface in the Xfce module
again, although I'm not sure if we have any plugins packaged that support
latest thunar.
Diffstat (limited to 'pkgs/desktops/xfce')
-rw-r--r--pkgs/desktops/xfce/applications/gigolo.nix22
-rw-r--r--pkgs/desktops/xfce/applications/gigolo/default.nix16
-rw-r--r--pkgs/desktops/xfce/applications/mousepad-12134.patch90
-rw-r--r--pkgs/desktops/xfce/applications/mousepad.nix38
-rw-r--r--pkgs/desktops/xfce/applications/mousepad/default.nix19
-rw-r--r--pkgs/desktops/xfce/applications/orage/default.nix (renamed from pkgs/desktops/xfce/applications/orage.nix)53
-rw-r--r--pkgs/desktops/xfce/applications/parole.nix38
-rw-r--r--pkgs/desktops/xfce/applications/parole/default.nix37
-rw-r--r--pkgs/desktops/xfce/applications/ristretto.nix34
-rw-r--r--pkgs/desktops/xfce/applications/ristretto/default.nix17
-rw-r--r--pkgs/desktops/xfce/applications/terminal.nix25
-rw-r--r--pkgs/desktops/xfce/applications/xfburn/default.nix13
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-dict/configure-gio.patch11
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-dict/default.nix23
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-mixer.nix51
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-notifyd.nix32
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-notifyd/default.nix16
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-screenshooter.nix29
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix15
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-taskmanager.nix22
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-taskmanager/default.nix16
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-terminal/default.nix15
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-volumed-pulse.nix31
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-volumed-pulse/default.nix17
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-volumed/default.nix (renamed from pkgs/desktops/xfce/applications/xfce4-volumed.nix)0
-rw-r--r--pkgs/desktops/xfce/applications/xfdashboard/default.nix44
-rw-r--r--pkgs/desktops/xfce/automakeAddFlags.sh7
-rw-r--r--pkgs/desktops/xfce/core/exo.nix27
-rw-r--r--pkgs/desktops/xfce/core/exo/default.nix20
-rw-r--r--pkgs/desktops/xfce/core/garcon-10967.patch14
-rw-r--r--pkgs/desktops/xfce/core/garcon-12700.patch44
-rw-r--r--pkgs/desktops/xfce/core/garcon.nix27
-rw-r--r--pkgs/desktops/xfce/core/garcon/default.nix15
-rw-r--r--pkgs/desktops/xfce/core/gtk-xfce-engine.nix31
-rw-r--r--pkgs/desktops/xfce/core/libxfce4ui.nix41
-rw-r--r--pkgs/desktops/xfce/core/libxfce4ui/default.nix23
-rw-r--r--pkgs/desktops/xfce/core/libxfce4util.nix26
-rw-r--r--pkgs/desktops/xfce/core/libxfce4util/default.nix16
-rw-r--r--pkgs/desktops/xfce/core/libxfcegui4.nix37
-rw-r--r--pkgs/desktops/xfce/core/thunar-build.nix42
-rw-r--r--pkgs/desktops/xfce/core/thunar-volman.nix30
-rw-r--r--pkgs/desktops/xfce/core/thunar-volman/default.nix15
-rw-r--r--pkgs/desktops/xfce/core/thunar.nix68
-rw-r--r--pkgs/desktops/xfce/core/thunar/default.nix70
-rw-r--r--pkgs/desktops/xfce/core/thunar/thunarx_plugins_directory.patch (renamed from pkgs/desktops/xfce/core/thunarx_plugins_directory.patch)10
-rw-r--r--pkgs/desktops/xfce/core/thunar/wrapper.nix34
-rw-r--r--pkgs/desktops/xfce/core/tumbler.nix42
-rw-r--r--pkgs/desktops/xfce/core/tumbler/default.nix39
-rw-r--r--pkgs/desktops/xfce/core/xfce4-appfinder.nix29
-rw-r--r--pkgs/desktops/xfce/core/xfce4-appfinder/default.nix16
-rw-r--r--pkgs/desktops/xfce/core/xfce4-dev-tools.nix28
-rw-r--r--pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix32
-rw-r--r--pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh12
-rw-r--r--pkgs/desktops/xfce/core/xfce4-light-locker.patch25
-rw-r--r--pkgs/desktops/xfce/core/xfce4-panel.nix59
-rw-r--r--pkgs/desktops/xfce/core/xfce4-panel/default.nix29
-rw-r--r--pkgs/desktops/xfce/core/xfce4-panel/xfce4-panel-datadir.patch (renamed from pkgs/desktops/xfce/core/xfce4-panel-datadir.patch)0
-rw-r--r--pkgs/desktops/xfce/core/xfce4-power-manager.nix44
-rw-r--r--pkgs/desktops/xfce/core/xfce4-power-manager/default.nix23
-rw-r--r--pkgs/desktops/xfce/core/xfce4-session.nix44
-rw-r--r--pkgs/desktops/xfce/core/xfce4-session/default.nix22
-rw-r--r--pkgs/desktops/xfce/core/xfce4-settings-default-icon-theme.patch11
-rw-r--r--pkgs/desktops/xfce/core/xfce4-settings.nix54
-rw-r--r--pkgs/desktops/xfce/core/xfce4-settings/default.nix40
-rw-r--r--pkgs/desktops/xfce/core/xfconf.nix30
-rw-r--r--pkgs/desktops/xfce/core/xfconf/default.nix15
-rw-r--r--pkgs/desktops/xfce/core/xfdesktop.nix36
-rw-r--r--pkgs/desktops/xfce/core/xfdesktop/default.nix25
-rw-r--r--pkgs/desktops/xfce/core/xfwm4.nix31
-rw-r--r--pkgs/desktops/xfce/core/xfwm4/default.nix30
-rw-r--r--pkgs/desktops/xfce/default.nix125
-rw-r--r--pkgs/desktops/xfce/mkXfceDerivation.nix40
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin.nix24
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix15
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin.nix24
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix15
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin.nix29
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin/default.nix14
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin.nix4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-dict-plugin.nix4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix5
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix5
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix5
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix5
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix5
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin.nix24
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix15
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin.nix34
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix23
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix7
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin.nix4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin.nix36
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix22
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin.nix28
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix16
-rw-r--r--pkgs/desktops/xfce/thunar-plugins/archive/default.nix8
-rw-r--r--pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix8
102 files changed, 1041 insertions, 1560 deletions
diff --git a/pkgs/desktops/xfce/applications/gigolo.nix b/pkgs/desktops/xfce/applications/gigolo.nix
deleted file mode 100644
index d0fc55e77e8..00000000000
--- a/pkgs/desktops/xfce/applications/gigolo.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ stdenv, fetchurl, python, gettext, intltool, pkgconfig, gtk, gvfs }:
-
-stdenv.mkDerivation rec {
-  p_name  = "gigolo";
-  ver_maj = "0.4";
-  ver_min = "2";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "0r4ij0mlnp0bqq44pyrdcpz18r1zwsksw6w5yc0jzgg7wj7wfgsm";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ python gettext intltool gtk gvfs];
-
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/applications/${p_name}";
-    description = "A frontend to easily manage connections to remote filesystems";
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/xfce/applications/gigolo/default.nix b/pkgs/desktops/xfce/applications/gigolo/default.nix
new file mode 100644
index 00000000000..32486aab981
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/gigolo/default.nix
@@ -0,0 +1,16 @@
+{ mkXfceDerivation, exo, gtk3, gvfs, glib }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "gigolo";
+  version = "0.5.0";
+
+  sha256 = "1lqsxb0d5i8p9vbzx8s4p3rga7va5h1q146xgmsa41j5v40wrlw6";
+
+  nativeBuildInputs = [ exo ];
+  buildInputs = [ gtk3 glib gvfs ];
+
+  meta = {
+    description = "A frontend to easily manage connections to remote filesystems";
+  };
+}
diff --git a/pkgs/desktops/xfce/applications/mousepad-12134.patch b/pkgs/desktops/xfce/applications/mousepad-12134.patch
deleted file mode 100644
index 74a28ecf61a..00000000000
--- a/pkgs/desktops/xfce/applications/mousepad-12134.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-diff -urNZ a/mousepad/mousepad-action-group.c b/mousepad/mousepad-action-group.c
---- a/mousepad/mousepad-action-group.c	2014-09-01 20:50:07.000000000 +0000
-+++ b/mousepad/mousepad-action-group.c	2017-12-18 16:57:46.836538403 +0000
-@@ -302,11 +302,6 @@
-   gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
-   self->locked = FALSE;
- 
--  /* update the setting when the active action is changed */
--  self->locked = TRUE;
--  MOUSEPAD_SETTING_SET_STRING (COLOR_SCHEME, gtk_source_style_scheme_get_id (scheme));
--  self->locked = FALSE;
--
-   g_object_notify (G_OBJECT (self), "active-style-scheme");
- }
- 
-@@ -473,6 +468,8 @@
- mousepad_action_group_style_scheme_action_activate (MousepadActionGroup       *self,
-                                                     MousepadStyleSchemeAction *action)
- {
-+  const gchar *scheme_name = NULL;
-+
-   /* only update the active action if we're not already in the process of
-    * setting it and the sender action is actually active */
-   if (! self->locked &&
-@@ -481,7 +478,14 @@
-       GtkSourceStyleScheme *scheme;
- 
-       scheme = mousepad_style_scheme_action_get_style_scheme (action);
--      mousepad_action_group_set_active_style_scheme (self, scheme);
-+
-+      /* update the setting when the active action is changed */
-+      if (scheme != NULL)
-+        scheme_name = gtk_source_style_scheme_get_id(scheme);
-+
-+      self->locked = TRUE;
-+      MOUSEPAD_SETTING_SET_STRING (COLOR_SCHEME, scheme_name);
-+      self->locked = FALSE;
-     }
- }
- 
-diff -urNZ a/mousepad/mousepad-window.c b/mousepad/mousepad-window.c
---- a/mousepad/mousepad-window.c	2014-09-01 20:58:02.000000000 +0000
-+++ b/mousepad/mousepad-window.c	2017-12-18 17:07:51.099321408 +0000
-@@ -712,32 +712,6 @@
- 
- 
- static void
--mousepad_window_action_group_style_scheme_changed (MousepadWindow      *window,
--                                                   GParamSpec          *pspec,
--                                                   MousepadActionGroup *group)
--{
--  GtkSourceStyleScheme *scheme;
--  const gchar          *scheme_id;
--  gint                  npages, i;
--
--  /* get the new active language */
--  scheme = mousepad_action_group_get_active_style_scheme (group);
--  scheme_id = gtk_source_style_scheme_get_id (scheme);
--
--  /* update the color scheme on all the documents */
--  npages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (window->notebook));
--  for (i = 0; i < npages; i++)
--    {
--      MousepadDocument *document;
--
--      document = MOUSEPAD_DOCUMENT (gtk_notebook_get_nth_page (GTK_NOTEBOOK (window->notebook), i));
--      mousepad_view_set_color_scheme (document->textview, scheme_id);
--    }
--}
--
--
--
--static void
- mousepad_window_create_style_schemes_menu (MousepadWindow *window)
- {
-   GtkWidget           *menu, *item;
-@@ -751,13 +725,6 @@
-   gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
-   gtk_widget_show_all (menu);
-   gtk_widget_show (item);
--  
--  /* watch for activations of the style schemes actions */
--  g_signal_connect_object (window->action_group,
--                           "notify::active-style-scheme",
--                           G_CALLBACK (mousepad_window_action_group_style_scheme_changed),
--                           window,
--                           G_CONNECT_SWAPPED);
- }
- 
- 
diff --git a/pkgs/desktops/xfce/applications/mousepad.nix b/pkgs/desktops/xfce/applications/mousepad.nix
deleted file mode 100644
index 2dca1fa29b0..00000000000
--- a/pkgs/desktops/xfce/applications/mousepad.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util
-, gtk, gtksourceview, dbus, dbus-glib, makeWrapper
-, dconf }:
-
-stdenv.mkDerivation rec {
-  p_name  = "mousepad";
-  ver_maj = "0.4";
-  ver_min = "0";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "60114431eac8db6bb6ce18bd38f1630cccb684375b97a445a1b6fd619848d132";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  patches = [ ./mousepad-12134.patch ];
-
-  buildInputs =
-    [ pkgconfig intltool libxfce4util
-      gtk gtksourceview dbus dbus-glib makeWrapper
-      dconf
-    ];
-
-  configureFlags = [ "--enable-keyfile-settings" ];
-
-  preFixup = ''
-    wrapProgram "$out/bin/mousepad" \
-      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:${gtksourceview}/share" \
-      --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib dconf}/lib/gio/modules"
-  '';
-
-  meta = {
-    homepage = https://www.xfce.org/;
-    description = "A simple text editor for Xfce";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/xfce/applications/mousepad/default.nix b/pkgs/desktops/xfce/applications/mousepad/default.nix
new file mode 100644
index 00000000000..6f841958c79
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/mousepad/default.nix
@@ -0,0 +1,19 @@
+{ mkXfceDerivation, exo, glib, gtk3, gtksourceview3, xfconf }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "mousepad";
+  version = "0.4.2";
+
+  sha256 = "0a35vaq4l0d8vzw7hqpvbgkr3wj1sqr2zvj7bc5z4ikz2cppqj7p";
+
+  nativeBuildInputs = [ exo ];
+  buildInputs = [ glib gtk3 gtksourceview3 xfconf ];
+
+  # See https://github.com/NixOS/nixpkgs/issues/36468
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  meta = {
+    description = "A simple text editor for Xfce";
+  };
+}
diff --git a/pkgs/desktops/xfce/applications/orage.nix b/pkgs/desktops/xfce/applications/orage/default.nix
index 19bd560cbae..4a48cc83dda 100644
--- a/pkgs/desktops/xfce/applications/orage.nix
+++ b/pkgs/desktops/xfce/applications/orage/default.nix
@@ -1,25 +1,20 @@
-{ stdenv, fetchurl, fetchpatch, pkgconfig, bison, flex, intltool, gtk, libical, dbus-glib, tzdata
-, libnotify, popt, xfce }:
-
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-  p_name  = "orage";
-  ver_maj = "4.12";
-  ver_min = "1";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "0qlhvnl2m33vfxqlbkic2nmfpwyd4mq230jzhs48cg78392amy9w";
-  };
+{ lib, fetchpatch, mkXfceDerivation, dbus-glib, gtk2, libical, libnotify, tzdata
+, popt, libxfce4ui, xfce4-panel, withPanelPlugin ? true }:
 
-  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";
-    })
-  ];
+assert withPanelPlugin -> libxfce4ui != null && xfce4-panel != null;
+
+let
+  inherit (lib) optionals;
+in
+
+mkXfceDerivation {
+  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"
@@ -29,16 +24,16 @@ stdenv.mkDerivation rec {
 
   postConfigure = "rm -rf libical"; # ensure pkgs.libical is used instead of one included in the orage sources
 
-  nativeBuildInputs = [ pkgconfig intltool bison flex ];
-
-  buildInputs = [ gtk libical dbus-glib libnotify popt xfce.libxfce4util
-    xfce.xfce4-panel ];
+  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";
+    })
+  ];
 
   meta = {
-    homepage = https://www.xfce.org/projects/;
     description = "A simple calendar application with reminders";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.romildo ];
   };
 }
diff --git a/pkgs/desktops/xfce/applications/parole.nix b/pkgs/desktops/xfce/applications/parole.nix
deleted file mode 100644
index ac0180c20fe..00000000000
--- a/pkgs/desktops/xfce/applications/parole.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ stdenv, fetchurl, makeWrapper, pkgconfig, intltool, gst_all_1
-, gtk, dbus-glib, libxfce4ui, libxfce4util, xfconf
-, taglib, libnotify, hicolor-icon-theme
-, withGstPlugins ? true
-}:
-
-stdenv.mkDerivation rec {
-  p_name  = "parole";
-  ver_maj = "0.5";
-  ver_min = "4";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "1hxzqg9dfghrhvmnnccwwa4278fh2awkcqy89sla05m08mxvvx60";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  nativeBuildInputs = [ pkgconfig intltool ];
-
-  buildInputs = [
-    makeWrapper hicolor-icon-theme
-    gtk dbus-glib libxfce4ui libxfce4util xfconf
-    taglib libnotify
-  ] ++ (with gst_all_1; [ gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav]);
-
-  configureFlags = [ "--with-gstreamer=1.0" ];
-
-  postInstall = stdenv.lib.optionalString withGstPlugins ''
-    wrapProgram "$out/bin/parole" --prefix \
-      GST_PLUGIN_SYSTEM_PATH_1_0 ":" "$GST_PLUGIN_SYSTEM_PATH_1_0"
-  '';
-
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/applications/${p_name}";
-    description = "Modern simple media player";
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/xfce/applications/parole/default.nix b/pkgs/desktops/xfce/applications/parole/default.nix
new file mode 100644
index 00000000000..20b899165f0
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/parole/default.nix
@@ -0,0 +1,37 @@
+{ mkXfceDerivation, dbus, dbus-glib
+, gst_all_1, gtk3, libnotify, libxfce4ui, libxfce4util
+, taglib, xfconf }:
+
+# Doesn't seem to find H.264 codec even though built with gst-plugins-bad.
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "parole";
+  version = "1.0.4";
+
+  sha256 = "18j4bmny37crryh4pvxcjjvj99mln6ljq2vy69awxhvrjx9ljv13";
+
+  postPatch = ''
+    substituteInPlace src/plugins/mpris2/Makefile.am \
+      --replace GST_BASE_CFLAGS GST_VIDEO_CFLAGS
+  '';
+
+  buildInputs = with gst_all_1; [
+    dbus
+    dbus-glib
+    gst-plugins-bad
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-ugly
+    gtk3
+    libnotify
+    libxfce4ui
+    libxfce4util
+    taglib
+    xfconf
+  ];
+
+  meta = {
+    description = "Modern simple media player";
+  };
+}
diff --git a/pkgs/desktops/xfce/applications/ristretto.nix b/pkgs/desktops/xfce/applications/ristretto.nix
deleted file mode 100644
index 3c0e8040c3b..00000000000
--- a/pkgs/desktops/xfce/applications/ristretto.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libexif, gtk
-, exo, dbus-glib, libxfce4util, libxfce4ui, xfconf
-, hicolor-icon-theme, makeWrapper
-}:
-
-stdenv.mkDerivation rec {
-  p_name  = "ristretto";
-  ver_maj = "0.6";
-  ver_min = "3";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "0y9d8w1plwp4vmxs44y8k8x15i0k0xln89k6jndhv6lf57g1cs1b";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  buildInputs =
-    [ pkgconfig intltool libexif gtk dbus-glib exo libxfce4util
-      libxfce4ui xfconf hicolor-icon-theme makeWrapper
-    ];
-
-  postInstall = ''
-    wrapProgram "$out/bin/ristretto" \
-      --prefix XDG_DATA_DIRS : "${hicolor-icon-theme}/share"
-  '';
-
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/applications/${p_name}";
-    description = "A fast and lightweight picture-viewer for the Xfce desktop environment";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
-  };
-}
diff --git a/pkgs/desktops/xfce/applications/ristretto/default.nix b/pkgs/desktops/xfce/applications/ristretto/default.nix
new file mode 100644
index 00000000000..8766bd302ab
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/ristretto/default.nix
@@ -0,0 +1,17 @@
+{ mkXfceDerivation, automakeAddFlags, exo, gtk3, glib, libexif
+, libxfce4ui, libxfce4util, xfconf }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "ristretto";
+  version = "0.10.0";
+
+  sha256 = "07h7wbq3xh2ac6q4kp2ai1incfn0zfxxngap7hzqx47a5xw2mrm8";
+
+  nativeBuildInputs = [ exo ];
+  buildInputs = [ glib gtk3 libexif libxfce4ui libxfce4util xfconf ];
+
+  meta = {
+    description = "A fast and lightweight picture-viewer for the Xfce desktop environment";
+  };
+}
diff --git a/pkgs/desktops/xfce/applications/terminal.nix b/pkgs/desktops/xfce/applications/terminal.nix
deleted file mode 100644
index 31e851a469d..00000000000
--- a/pkgs/desktops/xfce/applications/terminal.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, ncurses, gtk, vte, dbus-glib
-, exo, libxfce4util, libxfce4ui
-}:
-
-stdenv.mkDerivation rec {
-  p_name  = "xfce4-terminal";
-  ver_maj = "0.6";
-  ver_min = "3";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "023y0lkfijifh05yz8grimxadqpi98mrivr00sl18nirq8b4fbwi";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool exo gtk vte libxfce4util ncurses dbus-glib libxfce4ui ];
-
-  meta = {
-    homepage = https://www.xfce.org/projects/terminal;
-    description = "A modern terminal emulator primarily for the Xfce desktop environment";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/xfce/applications/xfburn/default.nix b/pkgs/desktops/xfce/applications/xfburn/default.nix
new file mode 100644
index 00000000000..dd3a9af1680
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/xfburn/default.nix
@@ -0,0 +1,13 @@
+{ mkXfceDerivation, docbook_xsl, exo, gtk2, libburn, libisofs, libxfce4ui, libxslt }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfburn";
+  version = "0.5.5";
+
+  sha256 = "1lmv48vqrlap1a2ha72g16vqly18zvcwj8y3f3f00l10pmn52bkp";
+
+  nativeBuildInputs = [ libxslt docbook_xsl ];
+  buildInputs = [ exo gtk2 libburn libisofs libxfce4ui ];
+  meta.broken = true;
+}
diff --git a/pkgs/desktops/xfce/applications/xfce4-dict/configure-gio.patch b/pkgs/desktops/xfce/applications/xfce4-dict/configure-gio.patch
new file mode 100644
index 00000000000..787b63511a2
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/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/pkgs/desktops/xfce/applications/xfce4-dict/default.nix b/pkgs/desktops/xfce/applications/xfce4-dict/default.nix
new file mode 100644
index 00000000000..b2682080216
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/xfce4-dict/default.nix
@@ -0,0 +1,23 @@
+{ mkXfceDerivation, automakeAddFlags, gtk3, libxfce4ui, libxfce4util, xfce4-panel }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-dict";
+  version = "0.8.2";
+
+  sha256 = "1zbb0k0984ny7wy4gbk6ymkh87rbfakpim54yq4r3h5ymslx7iv7";
+
+  patches = [ ./configure-gio.patch ];
+
+  nativeBuildInputs = [ automakeAddFlags ];
+
+  postPatch = ''
+    automakeAddFlags lib/Makefile.am libdict_la_CFLAGS GIO_CFLAGS
+  '';
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel ];
+
+  meta = {
+    description = "A Dictionary Client for the Xfce desktop environment";
+  };
+}
diff --git a/pkgs/desktops/xfce/applications/xfce4-mixer.nix b/pkgs/desktops/xfce/applications/xfce4-mixer.nix
deleted file mode 100644
index e1646d93a61..00000000000
--- a/pkgs/desktops/xfce/applications/xfce4-mixer.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, makeWrapper
-, glib, gstreamer, gst-plugins-base, gtk
-, libxfce4util, libxfce4ui, xfce4-panel, xfconf, libunique ? null
-, pulseaudioSupport ? false, gst-plugins-good
-}:
-
-let
-  # The usual Gstreamer plugins package has a zillion dependencies
-  # that we don't need for a simple mixer, so build a minimal package.
-  gst_plugins_minimal = gst-plugins-base.override {
-    minimalDeps = true;
-  };
-  gst_plugins_pulse = gst-plugins-good.override {
-    minimalDeps = true;
-  };
-  gst_plugins = [ gst_plugins_minimal ] ++ stdenv.lib.optional pulseaudioSupport gst_plugins_pulse;
-
-in
-
-stdenv.mkDerivation rec {
-  p_name  = "xfce4-mixer";
-  ver_maj = "4.10";
-  ver_min = "0";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "1pnsd00583l7p5d80rxbh58brzy3jnccwikbbbm730a33c08kid8";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  buildInputs =
-    [ pkgconfig intltool glib gstreamer gtk
-      libxfce4util libxfce4ui xfce4-panel xfconf libunique makeWrapper
-    ] ++ gst_plugins;
-
-  postInstall =
-    ''
-      wrapProgram "$out/bin/xfce4-mixer" \
-        --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH"
-    '';
-
-  passthru = { inherit gst_plugins; };
-
-  meta = {
-    homepage = https://www.xfce.org/projects/xfce4-mixer; # referenced but inactive
-    description = "A volume control application for the Xfce desktop environment";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
-  };
-}
diff --git a/pkgs/desktops/xfce/applications/xfce4-notifyd.nix b/pkgs/desktops/xfce/applications/xfce4-notifyd.nix
deleted file mode 100644
index 19ecff29093..00000000000
--- a/pkgs/desktops/xfce/applications/xfce4-notifyd.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libnotify
-, gtk , libxfce4util, libxfce4ui, xfconf, hicolor-icon-theme }:
-
-stdenv.mkDerivation rec {
-  p_name  = "xfce4-notifyd";
-  ver_maj = "0.2";
-  ver_min = "4";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "1l6fpfk0fkizdx7vwbyjdyzzj5i2ng8pf7r8j49nv0cnjhpxczlc";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool libnotify gtk libxfce4util libxfce4ui xfconf hicolor-icon-theme ];
-
-  preFixup = ''
-    # to be able to run the daemon we need it in PATH
-    ln -rs $out/lib/xfce4/notifyd/xfce4-notifyd $out/bin
-  '';
-
-  doCheck = true;
-
-  meta = {
-    homepage = "http://goodies.xfce.org/projects/applications/${p_name}";
-    description = "Notification daemon for Xfce";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
-  };
-}
diff --git a/pkgs/desktops/xfce/applications/xfce4-notifyd/default.nix b/pkgs/desktops/xfce/applications/xfce4-notifyd/default.nix
new file mode 100644
index 00000000000..a991e8c8180
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/xfce4-notifyd/default.nix
@@ -0,0 +1,16 @@
+{ mkXfceDerivation, glib, exo, gtk3, libnotify, libxfce4ui, libxfce4util
+, xfce4-panel, xfconf }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-notifyd";
+  version = "0.4.4";
+
+  sha256 = "1lmm9h3ych8dz9jpjkxg91f9ln14xs527nxjxsryks00kmqk4kai";
+
+  buildInputs = [ exo gtk3 glib libnotify libxfce4ui libxfce4util xfce4-panel xfconf ];
+
+  meta = {
+    description = "Simple notification daemon for Xfce";
+  };
+}
diff --git a/pkgs/desktops/xfce/applications/xfce4-screenshooter.nix b/pkgs/desktops/xfce/applications/xfce4-screenshooter.nix
deleted file mode 100644
index 085cfd7b8f9..00000000000
--- a/pkgs/desktops/xfce/applications/xfce4-screenshooter.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, xfce4-panel, libxfce4util, gtk, libsoup
-, glib-networking, exo, hicolor-icon-theme, wrapGAppsHook }:
-
-stdenv.mkDerivation rec {
-  p_name  = "xfce4-screenshooter";
-  ver_maj = "1.8";
-  ver_min = "2";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "9dce2ddfaa87f703e870e29bae13f3fc82a1b3f06b44f8386640e45a135f5f69";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  nativeBuildInputs = [
-    pkgconfig intltool wrapGAppsHook
-  ];
-
-  buildInputs = [
-    xfce4-panel libxfce4util gtk libsoup exo hicolor-icon-theme glib-networking
-  ];
-
-  meta = {
-    homepage = https://goodies.xfce.org/projects/applications/xfce4-screenshooter;
-    description = "Xfce screenshooter";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix b/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix
new file mode 100644
index 00000000000..012486baac9
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix
@@ -0,0 +1,15 @@
+{ mkXfceDerivation, exo, gtk3, libsoup, libxfce4ui, libxfce4util, xfce4-panel, glib-networking }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-screenshooter";
+  version = "1.9.5";
+
+  sha256 = "1h14sywvk9l06p3z1cpb79911j8w2wqbk03ldknjkia2rfymjk06";
+
+  buildInputs = [ exo gtk3 libsoup libxfce4ui libxfce4util xfce4-panel glib-networking ];
+
+  meta = {
+    description = "Screenshot utility for the Xfce desktop";
+  };
+}
diff --git a/pkgs/desktops/xfce/applications/xfce4-taskmanager.nix b/pkgs/desktops/xfce/applications/xfce4-taskmanager.nix
deleted file mode 100644
index 96f71e004a8..00000000000
--- a/pkgs/desktops/xfce/applications/xfce4-taskmanager.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ stdenv, fetchurl, intltool, pkgconfig, gtk, libwnck }:
-
-stdenv.mkDerivation rec {
-  p_name  = "xfce4-taskmanager";
-  ver_maj = "1.1";
-  ver_min = "0";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "1jwywmkkkmz7406m1jq40w6apiav25cznafhigbgpjv6z5hv27if";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool gtk libwnck ];
-
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/applications/${p_name}";
-    description = "Easy to use task manager for Xfce";
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/xfce/applications/xfce4-taskmanager/default.nix b/pkgs/desktops/xfce/applications/xfce4-taskmanager/default.nix
new file mode 100644
index 00000000000..e3d8b4b87d9
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/xfce4-taskmanager/default.nix
@@ -0,0 +1,16 @@
+{ lib, mkXfceDerivation, exo, gtk3, libwnck3, libXmu }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-taskmanager";
+  version = "1.2.2";
+
+  sha256 = "03js0pmhrybxa7hrp3gx4rm7j061ansv0bp2dwhnbrdpmzjysysc";
+
+  nativeBuildInputs = [ exo ];
+  buildInputs = [ gtk3 libwnck3 libXmu ];
+
+  meta = {
+    description = "Easy to use task manager for Xfce";
+  };
+}
diff --git a/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix b/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix
new file mode 100644
index 00000000000..3b9cd268d55
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix
@@ -0,0 +1,15 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, vte, xfconf, pcre2 }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-terminal";
+  version = "0.8.8";
+
+  sha256 = "0sg9vwyvhh7pjp83biv7gvf42423a7ly4dc7q2gn28kp6bds2qcp";
+
+  buildInputs = [ gtk3 libxfce4ui vte xfconf pcre2 ];
+
+  meta = {
+    description = "A modern terminal emulator";
+  };
+}
diff --git a/pkgs/desktops/xfce/applications/xfce4-volumed-pulse.nix b/pkgs/desktops/xfce/applications/xfce4-volumed-pulse.nix
deleted file mode 100644
index 4344d34f13f..00000000000
--- a/pkgs/desktops/xfce/applications/xfce4-volumed-pulse.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, libpulseaudio
-, gtk2, libnotify
-, keybinder, xfconf
-}:
-
-stdenv.mkDerivation rec {
-  p_name  = "xfce4-volumed-pulse";
-  ver_maj = "0.2";
-  ver_min = "2";
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "0xjcs1b6ix6rwj9xgr9n89h315r3yhdm8wh5bkincd4lhz6ibhqf";
-  };
-
-  buildInputs =
-    [ libpulseaudio gtk2
-      keybinder xfconf libnotify
-    ];
-
-  nativeBuildInputs = [ pkgconfig ];
-
-  meta = with stdenv.lib; {
-    homepage = https://launchpad.net/xfce4-volumed-pulse;
-    description = "A volume keys control daemon for the Xfce desktop environment (Xubuntu fork)";
-    license = licenses.gpl3;
-    platforms = platforms.linux;
-    maintainers = [ maintainers.abbradar ];
-  };
-}
diff --git a/pkgs/desktops/xfce/applications/xfce4-volumed-pulse/default.nix b/pkgs/desktops/xfce/applications/xfce4-volumed-pulse/default.nix
new file mode 100644
index 00000000000..413c04a84cc
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/xfce4-volumed-pulse/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkXfceDerivation, gtk3, libnotify, libpulseaudio, keybinder3, xfconf }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-volumed-pulse";
+  version = "0.2.3";
+
+  sha256 = "1rsjng9qmq7vzrx5bfxq76h63y501cfl1mksrxkf1x39by9r628j";
+
+  buildInputs = [ gtk3 libnotify libpulseaudio keybinder3 xfconf ];
+
+  meta = with lib; {
+    description = "A volume keys control daemon for Xfce using pulseaudio";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.abbradar ];
+  };
+}
diff --git a/pkgs/desktops/xfce/applications/xfce4-volumed.nix b/pkgs/desktops/xfce/applications/xfce4-volumed/default.nix
index dafb72582b3..dafb72582b3 100644
--- a/pkgs/desktops/xfce/applications/xfce4-volumed.nix
+++ b/pkgs/desktops/xfce/applications/xfce4-volumed/default.nix
diff --git a/pkgs/desktops/xfce/applications/xfdashboard/default.nix b/pkgs/desktops/xfce/applications/xfdashboard/default.nix
new file mode 100644
index 00000000000..a17c29f6723
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/xfdashboard/default.nix
@@ -0,0 +1,44 @@
+{ mkXfceDerivation
+, clutter
+, libXcomposite
+, libXinerama
+, libXdamage
+, libX11
+, libwnck3
+, libxfce4ui
+, libxfce4util
+, garcon
+, xfconf
+, gtk3
+, glib
+, dbus-glib
+}:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfdashboard";
+  version = "0.7.5";
+  rev = "0.7.5";
+
+  sha256 = "0d0kg90h3li41bs75z3xldljsglkz220pba39c54qznnzb8v8a2i";
+
+  buildInputs = [
+    clutter
+    dbus-glib
+    garcon
+    glib
+    gtk3
+    libX11
+    libXcomposite
+    libXdamage
+    libXinerama
+    libwnck3
+    libxfce4ui
+    libxfce4util
+    xfconf
+  ];
+
+  meta = {
+    description = "Gnome shell like dashboard";
+  };
+}
diff --git a/pkgs/desktops/xfce/automakeAddFlags.sh b/pkgs/desktops/xfce/automakeAddFlags.sh
new file mode 100644
index 00000000000..92d5659d05c
--- /dev/null
+++ b/pkgs/desktops/xfce/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/pkgs/desktops/xfce/core/exo.nix b/pkgs/desktops/xfce/core/exo.nix
deleted file mode 100644
index 1a7cdd39d10..00000000000
--- a/pkgs/desktops/xfce/core/exo.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, URI, glib, gtk, libxfce4ui, libxfce4util
-, hicolor-icon-theme }:
-
-stdenv.mkDerivation rec {
-  p_name  = "exo";
-  ver_maj = "0.10";
-  ver_min = "7";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "521581481128af93e815f9690020998181f947ac9e9c2b232b1f144d76b1b35c";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  outputs = [ "out" "dev" "devdoc" ];
-    # lib/xfce4/exo-1/exo-compose-mail-1 is a perl script :-/
-
-  nativeBuildInputs = [ pkgconfig intltool ];
-  buildInputs = [ URI glib gtk libxfce4ui libxfce4util hicolor-icon-theme ];
-
-  meta = with stdenv.lib; {
-    homepage = "https://docs.xfce.org/xfce/${p_name}/start";
-    description = "Application library for the Xfce desktop environment";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/xfce/core/exo/default.nix b/pkgs/desktops/xfce/core/exo/default.nix
new file mode 100644
index 00000000000..59ab5823314
--- /dev/null
+++ b/pkgs/desktops/xfce/core/exo/default.nix
@@ -0,0 +1,20 @@
+{ mkXfceDerivation, docbook_xsl, glib, libxslt, perlPackages, gtk3
+, libxfce4ui, libxfce4util }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "exo";
+  version = "0.12.8";
+
+  sha256 = "013am7q4pwfncf4hk2a3hv7yx2vxgzb5xm8qsi9mxkj29xdhrvs5";
+
+  nativeBuildInputs = [ libxslt perlPackages.URI docbook_xsl ];
+  buildInputs = [ gtk3 glib libxfce4ui libxfce4util ];
+
+  # Workaround https://bugzilla.xfce.org/show_bug.cgi?id=15825
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  meta = {
+    description = "Application library for Xfce";
+  };
+}
diff --git a/pkgs/desktops/xfce/core/garcon-10967.patch b/pkgs/desktops/xfce/core/garcon-10967.patch
deleted file mode 100644
index aea12325547..00000000000
--- a/pkgs/desktops/xfce/core/garcon-10967.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -urNZ a/garcon-gtk/garcon-gtk-menu.c b/garcon-gtk/garcon-gtk-menu.c
---- a/garcon-gtk/garcon-gtk-menu.c	2017-11-16 19:22:33.551926068 +0000
-+++ b/garcon-gtk/garcon-gtk-menu.c	2017-11-16 19:23:33.055497211 +0000
-@@ -676,6 +676,9 @@
-                   G_CALLBACK (garcon_gtk_menu_deactivate), menu);
-               gtk_widget_show (mi);
- 
-+	      /* submenu are child items, too. */
-+	      has_children = TRUE;
-+	      
-               if (menu->priv->show_menu_icons)
-                 {
-                   icon_name = garcon_menu_element_get_icon_name (li->data);
-Binary files a/.git/index and b/.git/index differ
diff --git a/pkgs/desktops/xfce/core/garcon-12700.patch b/pkgs/desktops/xfce/core/garcon-12700.patch
deleted file mode 100644
index b95a65cc219..00000000000
--- a/pkgs/desktops/xfce/core/garcon-12700.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 222080e6d5fce85eb2a8a5c33df671bd9f21add8 Mon Sep 17 00:00:00 2001
-From: Yegor Timoshenko <yegortimoshenko@gmail.com>
-Date: Thu, 14 Dec 2017 22:04:04 +0000
-Subject: [PATCH] Decrement allocation counter on item unref (#12700)
-
----
- garcon/garcon-menu-item-pool.c | 7 ++++++-
- garcon/garcon-menu-item.c      | 2 ++
- 2 files changed, 8 insertions(+), 1 deletion(-)
-
-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 66a86bf..d61c88f 100644
---- a/garcon/garcon-menu-item.c
-+++ b/garcon/garcon-menu-item.c
-@@ -1516,6 +1516,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/pkgs/desktops/xfce/core/garcon.nix b/pkgs/desktops/xfce/core/garcon.nix
deleted file mode 100644
index 41d98f17516..00000000000
--- a/pkgs/desktops/xfce/core/garcon.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, glib, libxfce4util, libxfce4ui, gtk }:
-let
-  p_name  = "garcon";
-  ver_maj = "0.4";
-  ver_min = "0";
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "0wm9pjbwq53s3n3nwvsyf0q8lbmhiy2ln3bn5ncihr9vf5cwhzbq";
-  };
-
-  outputs = [ "out" "dev" ];
-  patches = [ ./garcon-10967.patch ./garcon-12700.patch ];
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool glib libxfce4util gtk libxfce4ui ];
-
-  meta = with stdenv.lib; {
-    homepage = https://www.xfce.org/;
-    description = "Xfce menu support library";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/xfce/core/garcon/default.nix b/pkgs/desktops/xfce/core/garcon/default.nix
new file mode 100644
index 00000000000..69184f2afa8
--- /dev/null
+++ b/pkgs/desktops/xfce/core/garcon/default.nix
@@ -0,0 +1,15 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "garcon";
+  version = "0.6.4";
+
+  sha256 = "0pamhp1wffiw638s66nws2mpzmwkhvhb6iwccfy8b0kyr57wipjv";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util ];
+
+  meta = {
+    description = "Xfce menu support library";
+  };
+}
diff --git a/pkgs/desktops/xfce/core/gtk-xfce-engine.nix b/pkgs/desktops/xfce/core/gtk-xfce-engine.nix
deleted file mode 100644
index 567d3b80387..00000000000
--- a/pkgs/desktops/xfce/core/gtk-xfce-engine.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, gtk2, withGtk3 ? false, gtk3 ? null }:
-
-assert withGtk3 -> (gtk3 != null);
-
-stdenv.mkDerivation rec {
-  p_name  = "gtk-xfce-engine";
-  ver_maj = "3.2";
-  ver_min = "0";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "1va71f3gpl8gikfkmqsd5ikgp7qj8b64jii2l98g1ylnv8xrqp47";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool gtk2 ] ++ stdenv.lib.optional withGtk3 gtk3;
-
-  # `glib-mkenums' is unhappy that some source files are not valid UTF-8
-  postPatch = ''find . -type f -name '*.[ch]' -exec sed -r -i 's/\xD6/O/g' {} +'';
-
-  configureFlags = stdenv.lib.optional withGtk3 "--enable-gtk3";
-
-  meta = {
-    homepage = https://www.xfce.org/;
-    description = "GTK theme engine for Xfce";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
-  };
-}
diff --git a/pkgs/desktops/xfce/core/libxfce4ui.nix b/pkgs/desktops/xfce/core/libxfce4ui.nix
deleted file mode 100644
index 797b51de8e4..00000000000
--- a/pkgs/desktops/xfce/core/libxfce4ui.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, xorg, gtk, libxfce4util, xfconf
-, libglade, libstartup_notification, hicolor-icon-theme
-, withGtk3 ? false, gtk3
-}:
-let
-  p_name  = "libxfce4ui";
-  ver_maj = "4.12";
-  ver_min = "1";
-  inherit (stdenv.lib) optional;
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "3d619811bfbe7478bb984c16543d980cadd08586365a7bc25e59e3ca6384ff43";
-  };
-
-  outputs = [ "out" "dev" "devdoc" ];
-
-  nativeBuildInputs = [ pkgconfig intltool ];
-
-  buildInputs =
-    [ gtk libxfce4util xfconf libglade
-      libstartup_notification hicolor-icon-theme
-    ] ++ optional withGtk3 gtk3;
-
-  propagatedBuildInputs = [ xorg.libICE xorg.libSM ];
-
-  #TODO: glade?
-  configureFlags = optional withGtk3 "--enable-gtk3";
-
-  enableParallelBuilding = true;
-
-  meta = with stdenv.lib; {
-    homepage = https://www.xfce.org/;
-    description = "Basic GUI library for Xfce";
-    license = licenses.lgpl2Plus;
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/xfce/core/libxfce4ui/default.nix b/pkgs/desktops/xfce/core/libxfce4ui/default.nix
new file mode 100644
index 00000000000..79c8ec74b62
--- /dev/null
+++ b/pkgs/desktops/xfce/core/libxfce4ui/default.nix
@@ -0,0 +1,23 @@
+{ lib, mkXfceDerivation, gobject-introspection, gtk2, gtk3, libICE, libSM
+, libstartup_notification, libxfce4util, xfconf }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "libxfce4ui";
+  version = "4.14.1";
+
+  sha256 = "0fnncf30s51qhgixn57z4d021pjjhzgsg2x69w4dy68vff2347qy";
+
+  nativeBuildInputs = [ gobject-introspection ];
+  buildInputs =  [ gtk2 gtk3 libstartup_notification xfconf ];
+  propagatedBuildInputs = [ libxfce4util libICE libSM ];
+
+  configureFlags = [
+    "--with-vendor-info='NixOS'"
+  ];
+
+  meta = with lib; {
+    description = "Widgets library for Xfce";
+    license = licenses.lgpl2Plus;
+  };
+}
diff --git a/pkgs/desktops/xfce/core/libxfce4util.nix b/pkgs/desktops/xfce/core/libxfce4util.nix
deleted file mode 100644
index b68b7059f8d..00000000000
--- a/pkgs/desktops/xfce/core/libxfce4util.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, glib, intltool }:
-let
-  p_name  = "libxfce4util";
-  ver_maj = "4.12";
-  ver_min = "1";
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "07c8r3xwx5is298zk77m3r784gmr5y4mh8bbca5zdjqk5vxdwsw7";
-  };
-
-  outputs = [ "out" "dev" "devdoc" ];
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ glib intltool ];
-
-  meta = {
-    homepage = https://www.xfce.org/;
-    description = "Basic utility non-GUI functions for Xfce";
-    license = "bsd";
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/xfce/core/libxfce4util/default.nix b/pkgs/desktops/xfce/core/libxfce4util/default.nix
new file mode 100644
index 00000000000..4540d235251
--- /dev/null
+++ b/pkgs/desktops/xfce/core/libxfce4util/default.nix
@@ -0,0 +1,16 @@
+{ lib, mkXfceDerivation, gobject-introspection }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "libxfce4util";
+  version = "4.14.0";
+
+  sha256 = "0vq16bzmnykiikg4dhiaj0qbyj76nkdd54j6k6n568h3dc9ix6q4";
+
+  nativeBuildInputs = [ gobject-introspection ];
+
+  meta = with lib; {
+    description = "Extension library for Xfce";
+    license = licenses.lgpl2Plus;
+  };
+}
diff --git a/pkgs/desktops/xfce/core/libxfcegui4.nix b/pkgs/desktops/xfce/core/libxfcegui4.nix
deleted file mode 100644
index 5c61c16cbcc..00000000000
--- a/pkgs/desktops/xfce/core/libxfcegui4.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, gtk
-, libxfce4util, xfconf, libglade, libstartup_notification, hicolor-icon-theme }:
-let
-  p_name  = "libxfcegui4";
-  ver_maj = "4.10";
-  ver_min = "0";
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "0cs5im0ib0cmr1lhr5765yliqjfyxvk4kwy8h1l8bn3mj6bzk0ib";
-  };
-
-  outputs = [ "out" "dev" "devdoc" ];
-
-  #TODO: gladeui
-  # By default, libxfcegui4 tries to install into libglade's prefix.
-  # Install into our own prefix instead.
-  configureFlags = [
-    "--with-libglade-module-path=$(out)/lib/libglade/2.0"
-  ];
-  #NOTE: missing keyboard library support is OK according to the mailing-list
-
-  buildInputs =
-    [ pkgconfig intltool gtk libxfce4util xfconf libglade
-      libstartup_notification hicolor-icon-theme
-    ];
-
-  meta = {
-    homepage = https://www.xfce.org/;
-    description = "Basic GUI library for Xfce";
-    license = stdenv.lib.licenses.lgpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/xfce/core/thunar-build.nix b/pkgs/desktops/xfce/core/thunar-build.nix
deleted file mode 100644
index 0b606ee5fdd..00000000000
--- a/pkgs/desktops/xfce/core/thunar-build.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool
-, gtk, dbus-glib, libstartup_notification, libnotify, libexif, pcre, udev
-, exo, libxfce4util, xfconf, xfce4-panel, hicolor-icon-theme, wrapGAppsHook
-}:
-
-stdenv.mkDerivation rec {
-  p_name  = "thunar";
-  ver_maj = "1.6";
-  ver_min = "10";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/Thunar-${ver_maj}.${ver_min}.tar.bz2";
-    sha256 = "7e9d24067268900e5e44d3325e60a1a2b2f8f556ec238ec12574fbea15fdee8a";
-  };
-
-  name = "${p_name}-build-${ver_maj}.${ver_min}";
-
-  patches = [ ./thunarx_plugins_directory.patch ];
-
-  postPatch = ''
-    sed -i -e 's|thunar_dialogs_show_insecure_program (parent, _(".*"), file, exec)|1|' thunar/thunar-file.c
-  '';
-
-  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
-  buildInputs = [
-    intltool
-    gtk dbus-glib libstartup_notification libnotify libexif pcre udev
-    exo libxfce4util xfconf xfce4-panel
-    hicolor-icon-theme
-  ];
-  # TODO: optionality?
-
-  enableParallelBuilding = true;
-
-  meta = {
-    homepage = http://thunar.xfce.org/;
-    description = "Xfce file manager";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
-  };
-}
diff --git a/pkgs/desktops/xfce/core/thunar-volman.nix b/pkgs/desktops/xfce/core/thunar-volman.nix
deleted file mode 100644
index eda3aab070a..00000000000
--- a/pkgs/desktops/xfce/core/thunar-volman.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, exo, gtk, libxfce4util, libxfce4ui
-, xfconf, udev, libgudev, libnotify, hicolor-icon-theme }:
-
-stdenv.mkDerivation rec {
-  p_name  = "thunar-volman";
-  ver_maj = "0.8";
-  ver_min = "1";
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "1gf259n1v3y23n1zlkhyr6r0i8j59rnl1cmxvxj6la9cwdfbn22s";
-  };
-
-
-  buildInputs =
-    [ pkgconfig intltool exo gtk udev libgudev libxfce4ui libxfce4util
-      xfconf libnotify hicolor-icon-theme
-    ];
-
-  enableParallelBuilding = true;
-
-  meta = {
-    homepage = https://goodies.xfce.org/projects/thunar-plugins/thunar-volman;
-    description = "Thunar extension for automatic management of removable drives and media";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
-  };
-}
diff --git a/pkgs/desktops/xfce/core/thunar-volman/default.nix b/pkgs/desktops/xfce/core/thunar-volman/default.nix
new file mode 100644
index 00000000000..fc6db0fcce4
--- /dev/null
+++ b/pkgs/desktops/xfce/core/thunar-volman/default.nix
@@ -0,0 +1,15 @@
+{ mkXfceDerivation, exo, gtk3, libgudev, libxfce4ui, libxfce4util, xfconf }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "thunar-volman";
+  version = "0.9.5";
+
+  buildInputs = [ exo gtk3 libgudev libxfce4ui libxfce4util xfconf ];
+
+  sha256 = "1qrlpn0q5g9psd41l6y80r3bvbg8jaic92m6r400zzwcvivf95z0";
+
+  meta = {
+    description = "Thunar extension for automatic management of removable drives and media";
+  };
+}
diff --git a/pkgs/desktops/xfce/core/thunar.nix b/pkgs/desktops/xfce/core/thunar.nix
deleted file mode 100644
index 83e3a2879d7..00000000000
--- a/pkgs/desktops/xfce/core/thunar.nix
+++ /dev/null
@@ -1,68 +0,0 @@
-{ stdenv, buildEnv, runCommand, makeWrapper, lndir, thunar-bare
-, thunarPlugins ? []
-}:
-
-with stdenv.lib; 
-
-let
-
-  build = thunar-bare;
-
-  replaceLnExeListWithWrapped = exeDir: exeNameList: mkWrapArgs: ''
-    exeDir="${exeDir}"
-    oriDir=`realpath -e "$exeDir"`
-    unlink "$exeDir"
-    mkdir -p "$exeDir"
-    lndir "$oriDir" "$exeDir"
-
-    exeList="${concatStrings (intersperse " " (map (x: "${exeDir}/${x}") exeNameList))}"
-
-    for exe in $exeList; do
-      oriExe=`realpath -e "$exe"`
-      rm -f "$exe"
-      makeWrapper "$oriExe" "$exe" ${concatStrings (intersperse " " mkWrapArgs)}
-    done
-  '';
-
-  name = "${build.p_name}-${build.ver_maj}.${build.ver_min}";
-
-  meta = {
-    inherit (build.meta) homepage license platforms;
-
-    description = build.meta.description + optionalString
-      (0 != length thunarPlugins)
-      " (with plugins: ${concatStrings (intersperse ", " (map (x: x.name) thunarPlugins))})";
-    maintainers = build.meta.maintainers /*++ [ jraygauthier ]*/;
-  };
-
-in
-
-# TODO: To be replaced with `buildEnv` awaiting missing features.
-runCommand name {
-  inherit build;
-  inherit meta;
-
-  nativeBuildInputs = [ makeWrapper lndir ];
-
-  dontPatchELF = true;
-  dontStrip = true;
-
-} 
-(let
-  buildWithPlugins = buildEnv {
-    name = "thunar-bare-with-plugins";
-    paths = [ build ] ++ thunarPlugins;
-  };
-
-in ''
-  mkdir -p $out
-  pushd ${buildWithPlugins} > /dev/null
-  for d in `find . -maxdepth 1 -name "*" -printf "%f\n" | tail -n+2`; do
-    ln -s "${buildWithPlugins}/$d" "$out/$d"
-  done
-  popd > /dev/null
-
-  ${replaceLnExeListWithWrapped "$out/bin" [ "thunar" "thunar-settings" ] [
-    "--set THUNARX_MODULE_DIR \"${buildWithPlugins}/lib/thunarx-2\""
-  ]}
-'')
diff --git a/pkgs/desktops/xfce/core/thunar/default.nix b/pkgs/desktops/xfce/core/thunar/default.nix
new file mode 100644
index 00000000000..11220141d2a
--- /dev/null
+++ b/pkgs/desktops/xfce/core/thunar/default.nix
@@ -0,0 +1,70 @@
+{ mkXfceDerivation
+, lib
+, docbook_xsl
+, exo
+, gdk-pixbuf
+, gtk3
+, libgudev
+, libnotify
+, libX11
+, libxfce4ui
+, libxfce4util
+, libxslt
+, xfconf
+, gobject-introspection
+, gvfs
+, makeWrapper
+, symlinkJoin
+, thunarPlugins ? []
+}:
+
+let unwrapped = mkXfceDerivation {
+  category = "xfce";
+  pname = "thunar";
+  version = "1.8.9";
+
+  sha256 = "01w60csbs2nq1bhb8n1bnmjmx48fm0va3qbnq84z0h2dxpr80b1w";
+
+  nativeBuildInputs = [
+    docbook_xsl
+    gobject-introspection
+    libxslt
+  ];
+
+  buildInputs = [
+    exo
+    gdk-pixbuf
+    gtk3
+    gvfs
+    libX11
+    libgudev
+    libnotify
+    libxfce4ui
+    libxfce4util
+    xfconf
+  ];
+
+  patches = [
+    ./thunarx_plugins_directory.patch
+  ];
+
+  # the desktop file … is in an insecure location»
+  # which pops up when invoking desktop files that are
+  # symlinks to the /nix/store
+  #
+  # this error was added by this commit:
+  # https://github.com/xfce-mirror/thunar/commit/1ec8ff89ec5a3314fcd6a57f1475654ddecc9875
+  postPatch = ''
+    sed -i -e 's|thunar_dialogs_show_insecure_program (parent, _(".*"), file, exec)|1|' thunar/thunar-file.c
+  '';
+
+  meta = {
+    description = "Xfce file manager";
+  };
+};
+
+in if thunarPlugins == [] then unwrapped
+  else import ./wrapper.nix {
+    inherit makeWrapper symlinkJoin thunarPlugins lib;
+    thunar = unwrapped;
+  }
diff --git a/pkgs/desktops/xfce/core/thunarx_plugins_directory.patch b/pkgs/desktops/xfce/core/thunar/thunarx_plugins_directory.patch
index e1431d86b14..594a81c829e 100644
--- a/pkgs/desktops/xfce/core/thunarx_plugins_directory.patch
+++ b/pkgs/desktops/xfce/core/thunar/thunarx_plugins_directory.patch
@@ -1,8 +1,8 @@
 diff --git a/thunarx/thunarx-provider-factory.c b/thunarx/thunarx-provider-factory.c
-index 31b8835..a3e7f4e 100644
+index 94b11545..1f66c982 100644
 --- a/thunarx/thunarx-provider-factory.c
 +++ b/thunarx/thunarx-provider-factory.c
-@@ -141,12 +141,19 @@ static GList*
+@@ -150,12 +150,19 @@ static GList*
  thunarx_provider_factory_load_modules (ThunarxProviderFactory *factory)
  {
    ThunarxProviderModule *module;
@@ -24,7 +24,7 @@ index 31b8835..a3e7f4e 100644
      {
        /* determine the types for all existing plugins */
 diff --git a/thunarx/thunarx-provider-module.c b/thunarx/thunarx-provider-module.c
-index 023ad2a..6c21997 100644
+index 023ad2ae..b1d1be8f 100644
 --- a/thunarx/thunarx-provider-module.c
 +++ b/thunarx/thunarx-provider-module.c
 @@ -174,10 +174,17 @@ static gboolean
@@ -33,13 +33,13 @@ index 023ad2a..6c21997 100644
    ThunarxProviderModule *module = THUNARX_PROVIDER_MODULE (type_module);
 +  const gchar           *thunar_dir;
    gchar                 *path;
-+    
+ 
 +  thunar_dir = g_getenv("THUNARX_MODULE_DIR");
 +  if (NULL == thunar_dir)
 +    {
 +      thunar_dir = THUNARX_DIRECTORY;
 +    }
- 
++
    /* load the module using the runtime link editor */
 -  path = g_build_filename (THUNARX_DIRECTORY, type_module->name, NULL);
 +  path = g_build_filename (thunar_dir, type_module->name, NULL);
diff --git a/pkgs/desktops/xfce/core/thunar/wrapper.nix b/pkgs/desktops/xfce/core/thunar/wrapper.nix
new file mode 100644
index 00000000000..cc44e662457
--- /dev/null
+++ b/pkgs/desktops/xfce/core/thunar/wrapper.nix
@@ -0,0 +1,34 @@
+{ makeWrapper, symlinkJoin, thunar, thunarPlugins, lib }:
+
+symlinkJoin {
+  name = "thunar-with-plugins-${thunar.version}";
+
+  paths = [ thunar ] ++ thunarPlugins;
+
+  buildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    wrapProgram "$out/bin/thunar" \
+      --set "THUNARX_MODULE_DIR" "$out/lib/thunarx-3"
+
+    wrapProgram "$out/bin/thunar-settings" \
+      --set "THUNARX_MODULE_DIR" "$out/lib/thunarx-3"
+
+    for file in "lib/systemd/user/thunar.service" "share/dbus-1/services/org.xfce.FileManager.service" \
+      "share/dbus-1/services/org.xfce.Thunar.FileManager1.service" \
+      "share/dbus-1/services/org.xfce.Thunar.service"
+    do
+      rm -f "$out/$file"
+      substitute "${thunar}/$file" "$out/$file" \
+        --replace "${thunar}" "$out"
+    done
+  '';
+
+   meta = with lib; {
+    inherit (thunar.meta) homepage license platforms maintainers;
+
+    description = thunar.meta.description + optionalString
+      (0 != length thunarPlugins)
+      " (with plugins: ${concatStrings (intersperse ", " (map (x: x.name) thunarPlugins))})";
+  };
+}
diff --git a/pkgs/desktops/xfce/core/tumbler.nix b/pkgs/desktops/xfce/core/tumbler.nix
deleted file mode 100644
index 9087d3a0255..00000000000
--- a/pkgs/desktops/xfce/core/tumbler.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, dbus-glib, gdk-pixbuf, curl, freetype
-, libgsf, poppler, bzip2 }:
-let
-  p_name  = "tumbler";
-  ver_maj = "0.1";
-  ver_min = "31";
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "0wvip28gm2w061hn84zp2q4dv947ihylrppahn4cjspzff935zfh";
-  };
-
-  outputs = [ "out" "dev" "devdoc" ];
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [
-    intltool dbus-glib gdk-pixbuf curl freetype
-    poppler libgsf bzip2
-  ];
-
-  configureFlags = [
-    # Needs gst-tag
-    # "--enable-gstreamer-thumbnailer"
-
-    # Needs libffmpegthumbnailer
-    # "--enable-ffmpeg-thumbnailer"
-
-    "--enable-odf-thumbnailer"
-    "--enable-poppler-thumbnailer"
-  ];
-
-  meta = with stdenv.lib; {
-    homepage = http://git.xfce.org/xfce/tumbler/;
-    description = "A D-Bus thumbnailer service";
-    platforms = platforms.linux;
-    license = licenses.gpl2;
-  };
-}
-
diff --git a/pkgs/desktops/xfce/core/tumbler/default.nix b/pkgs/desktops/xfce/core/tumbler/default.nix
new file mode 100644
index 00000000000..b795007ca7c
--- /dev/null
+++ b/pkgs/desktops/xfce/core/tumbler/default.nix
@@ -0,0 +1,39 @@
+{ mkXfceDerivation
+, ffmpegthumbnailer
+, gdk-pixbuf
+, glib
+, freetype
+, libgsf
+, poppler
+, libjpeg
+, gst_all_1
+}:
+
+# TODO: add libopenraw
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "tumbler";
+  version = "0.2.7";
+
+  sha256 = "14ql3fcxyz81qr9s0vcwh6j2ks5fl8jf9scwnkilv5jy0ii9l0ry";
+
+  buildInputs = [
+    ffmpegthumbnailer
+    freetype
+    gdk-pixbuf
+    glib
+    gst_all_1.gst-plugins-base
+    libgsf
+    poppler # technically the glib binding
+  ];
+
+  # WrapGAppsHook won't touch this binary automatically, so we wrap manually.
+  postFixup = ''
+    wrapProgram $out/lib/tumbler-1/tumblerd "''${gappsWrapperArgs[@]}"
+  '';
+
+  meta = {
+    description = "A D-Bus thumbnailer service";
+  };
+}
diff --git a/pkgs/desktops/xfce/core/xfce4-appfinder.nix b/pkgs/desktops/xfce/core/xfce4-appfinder.nix
deleted file mode 100644
index d39708dd523..00000000000
--- a/pkgs/desktops/xfce/core/xfce4-appfinder.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, glib, gtk, libxfce4util
-, libxfce4ui, garcon, xfconf }:
-let
-  p_name  = "xfce4-appfinder";
-  ver_maj = "4.12";
-  ver_min = "0";
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "0ry5hin8xhgnkmm9vs7jq8blk1cnbyr0s18nm1j6nsm7360abm1a";
-  };
-
-  buildInputs =
-    [ pkgconfig intltool glib gtk libxfce4util libxfce4ui garcon xfconf ];
-
-  enableParallelBuilding = true;
-
-  meta = with stdenv.lib; {
-    homepage = http://docs.xfce.org/xfce/xfce4-appfinder/;
-    description = "Xfce application finder, a tool to locate and launch programs on your system";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-    maintainers = [ maintainers.eelco ];
-  };
-}
-
diff --git a/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix b/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix
new file mode 100644
index 00000000000..cbb444c6c76
--- /dev/null
+++ b/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix
@@ -0,0 +1,16 @@
+{ mkXfceDerivation, exo, garcon, gtk3, libxfce4util, libxfce4ui, xfconf }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-appfinder";
+  version = "4.14.0";
+
+  sha256 = "04h7jxfm3wkxnxfy8149dckay7i160vvk4p9lnq6xny22r4x20h8";
+
+  nativeBuildInputs = [ exo ];
+  buildInputs = [ garcon gtk3 libxfce4ui libxfce4util xfconf ];
+
+  meta = {
+    description = "Appfinder for the Xfce4 Desktop Environment";
+  };
+}
diff --git a/pkgs/desktops/xfce/core/xfce4-dev-tools.nix b/pkgs/desktops/xfce/core/xfce4-dev-tools.nix
deleted file mode 100644
index 109c22f1e58..00000000000
--- a/pkgs/desktops/xfce/core/xfce4-dev-tools.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, glib, autoconf, automake, libtool, intltool }:
-let
-  p_name  = "xfce4-dev-tools";
-  ver_maj = "4.12";
-  ver_min = "0";
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "1jxmyp80pwbfgmqmwpjxs7z5dmm6pyf3qj62z20xy44izraadqz2";
-  };
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ glib ];
-
-  # not needed to build it but to use it
-  propagatedBuildInputs = [ autoconf automake libtool intltool ];
-
-  meta = {
-    homepage = http://foo-projects.org/~benny/projects/xfce4-dev-tools/;
-    description = "Tools and M4 macros for Xfce4 developers";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
-
diff --git a/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix b/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix
new file mode 100644
index 00000000000..38fe82ffb01
--- /dev/null
+++ b/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix
@@ -0,0 +1,32 @@
+{ mkXfceDerivation, autoreconfHook, autoconf, automake
+, glib, gtk-doc, intltool, libtool }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-dev-tools";
+  version = "4.14.0";
+
+  sha256 = "10hcj88784faqrk08xb538355cla26vdk9ckx158hqdqv38sb42f";
+
+  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/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh b/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh
new file mode 100644
index 00000000000..600bf47fd87
--- /dev/null
+++ b/pkgs/desktops/xfce/core/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/pkgs/desktops/xfce/core/xfce4-light-locker.patch b/pkgs/desktops/xfce/core/xfce4-light-locker.patch
deleted file mode 100644
index 0fabdffd7ed..00000000000
--- a/pkgs/desktops/xfce/core/xfce4-light-locker.patch
+++ /dev/null
@@ -1,25 +0,0 @@
---- ./scripts/xflock4.orig	2017-08-06 23:05:53.807688995 +0100
-+++ ./scripts/xflock4	2017-08-06 23:09:06.171789989 +0100
-@@ -24,12 +24,19 @
- PATH=/bin:/usr/bin
- export PATH
- 
--# Lock by xscreensaver or gnome-screensaver, if a respective daemon is running
-+# First test for the command set in the session's xfconf channel
-+LOCK_CMD=$(xfconf-query -c xfce4-session -p /general/LockCommand)
-+
-+# Lock by xscreensaver, gnome-screensaver, or light-locker, if a respective daemon is running
- for lock_cmd in \
-+    "$LOCK_CMD" \
-     "xscreensaver-command -lock" \
--    "gnome-screensaver-command --lock"
-+    "gnome-screensaver-command --lock" \
-+    "light-locker-command -l"
- do
--    $lock_cmd >/dev/null 2>&1 && exit
-+    if [ ! -z "$lock_cmd" ]; then
-+        $lock_cmd >/dev/null 2>&1 && exit
-+    fi
- done
- 
- # else run another access locking utility, if installed
diff --git a/pkgs/desktops/xfce/core/xfce4-panel.nix b/pkgs/desktops/xfce/core/xfce4-panel.nix
deleted file mode 100644
index b8ecae7e4e6..00000000000
--- a/pkgs/desktops/xfce/core/xfce4-panel.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, gtk, libxfce4util, libxfce4ui
-, libxfce4ui_gtk3, libwnck, exo, garcon, xfconf, libstartup_notification
-, makeWrapper, xfce4-mixer, hicolor-icon-theme, tzdata
-, withGtk3 ? false, gtk3, gettext, glib-networking
-}:
-let
-  inherit (stdenv.lib) optional;
-  p_name  = "xfce4-panel";
-  ver_maj = "4.12";
-  ver_min = "2";
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "1s8cvsrgmkmmm84g6mghpj2k4777gm22g5lrsf8pdy5qh6xql1a2";
-  };
-
-  patches = [ ./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))" ""
-  '';
-
-  outputs = [ "out" "dev" "devdoc" ];
-
-  buildInputs =
-    [ pkgconfig intltool gtk libxfce4util exo libwnck
-      garcon xfconf libstartup_notification makeWrapper hicolor-icon-theme
-    ] ++ xfce4-mixer.gst_plugins
-      ++ optional withGtk3 gtk3;
-
-  propagatedBuildInputs = [ (if withGtk3 then libxfce4ui_gtk3 else libxfce4ui) ];
-
-  configureFlags = optional withGtk3 "--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"
-  '';
-
-  enableParallelBuilding = true;
-
-  meta = with stdenv.lib; {
-    homepage = https://www.xfce.org/projects/xfce4-panel;
-    description = "Xfce panel";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-    maintainers = [ maintainers.eelco ];
-  };
-}
diff --git a/pkgs/desktops/xfce/core/xfce4-panel/default.nix b/pkgs/desktops/xfce/core/xfce4-panel/default.nix
new file mode 100644
index 00000000000..f7e500bdf54
--- /dev/null
+++ b/pkgs/desktops/xfce/core/xfce4-panel/default.nix
@@ -0,0 +1,29 @@
+{ mkXfceDerivation, tzdata, exo, garcon, gtk2, gtk3, glib, gettext, glib-networking, libxfce4ui, libxfce4util, libwnck3, xfconf, gobject-introspection }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-panel";
+  version = "4.14.0";
+
+  sha256 = "1v3f2xjz9gwa8maqqvv9w2dh1cgy03v89a9ny7nrv0cjsxwwrr15";
+
+  nativeBuildInputs = [ gobject-introspection ];
+  buildInputs = [ exo garcon gtk2 gtk3 glib glib-networking libxfce4ui libxfce4util libwnck3 xfconf ];
+
+  patches = [ ./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"
+  '';
+
+  configureFlags = [ "--enable-gtk3" ];
+
+  meta =  {
+    description = "Xfce's panel";
+  };
+}
diff --git a/pkgs/desktops/xfce/core/xfce4-panel-datadir.patch b/pkgs/desktops/xfce/core/xfce4-panel/xfce4-panel-datadir.patch
index ed9df9ef36f..ed9df9ef36f 100644
--- a/pkgs/desktops/xfce/core/xfce4-panel-datadir.patch
+++ b/pkgs/desktops/xfce/core/xfce4-panel/xfce4-panel-datadir.patch
diff --git a/pkgs/desktops/xfce/core/xfce4-power-manager.nix b/pkgs/desktops/xfce/core/xfce4-power-manager.nix
deleted file mode 100644
index 266f3064507..00000000000
--- a/pkgs/desktops/xfce/core/xfce4-power-manager.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ stdenv, lib, fetchurl, pkgconfig, intltool, glib, gtk, dbus-glib, upower, xfconf
-, libxfce4ui, libxfce4util, libnotify, xfce4-panel, hicolor-icon-theme
-, withGtk3 ? false, gtk3, libxfce4ui_gtk3, xfce4panel_gtk3 }:
-let
-  p_name  = "xfce4-power-manager";
-  ver_maj = if withGtk3 then "1.6" else "1.4";
-  ver_min = if withGtk3 then "0"   else "4";
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 =
-      if withGtk3
-      then "0avzhllpimcn7a6z9aa4jn0zg5ahxr9ks5ldchizycdb0rz1bqxx"
-      else "01rvqy1cif4s8lkidb7hhmsz7d9f2fwcwvc51xycaj3qgsmch3n5";
-  };
-
-  buildInputs =
-    [ pkgconfig intltool glib dbus-glib upower xfconf libxfce4util
-      libnotify hicolor-icon-theme
-    ] ++
-    (if withGtk3
-    then [ gtk3 libxfce4ui_gtk3 xfce4panel_gtk3 ]
-    else [ gtk  libxfce4ui      xfce4-panel      ]);
-
-  postPatch = lib.optionalString withGtk3 ''
-    substituteInPlace configure --replace gio-2.0 gio-unix-2.0
-  '';
-
-  postConfigure = lib.optionalString withGtk3 ''
-    substituteInPlace src/Makefile      --replace "xfce4_power_manager_CFLAGS = "          "xfce4_power_manager_CFLAGS = \$(GIO_CFLAGS) "
-    substituteInPlace settings/Makefile --replace "xfce4_power_manager_settings_CFLAGS = " "xfce4_power_manager_settings_CFLAGS = \$(GIO_CFLAGS) "
-  '';
-
-  meta = with stdenv.lib; {
-    homepage = https://goodies.xfce.org/projects/applications/xfce4-power-manager;
-    description = "A power manager for the Xfce Desktop Environment";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-    maintainers = [ maintainers.eelco ];
-  };
-}
diff --git a/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix b/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix
new file mode 100644
index 00000000000..fb3f05b3664
--- /dev/null
+++ b/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix
@@ -0,0 +1,23 @@
+{ mkXfceDerivation, automakeAddFlags, exo, gtk3, libnotify
+, libxfce4ui, libxfce4util, upower, xfconf }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-power-manager";
+  version = "1.6.5";
+
+  sha256 = "0zazm2cgkz5xj7rvy9gbh4kaay2anfcmawg4gj38pnq3a8zcwwd5";
+
+  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
+  '';
+
+  meta = {
+    description = "A power manager for the Xfce Desktop Environment";
+  };
+}
diff --git a/pkgs/desktops/xfce/core/xfce4-session.nix b/pkgs/desktops/xfce/core/xfce4-session.nix
deleted file mode 100644
index b57dd252033..00000000000
--- a/pkgs/desktops/xfce/core/xfce4-session.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, gtk, polkit
-, libxfce4util, libxfce4ui, xfce4-panel, libwnck, dbus-glib, xfconf, libglade, xorg
-, hicolor-icon-theme
-}:
-
-let
-  p_name  = "xfce4-session";
-  ver_maj = "4.12";
-  ver_min = "1";
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "97d7f2a2d0af7f3623b68d1f04091e02913b28f9555dab8b0d26c8a1299d08fd";
-  };
-
-  patches = [
-    # Fix "lock screen" not working for light-locker
-    ./xfce4-light-locker.patch
-  ];
-
-  buildInputs =
-    [ pkgconfig intltool gtk libxfce4util libxfce4ui libwnck dbus-glib
-      xfconf xfce4-panel libglade xorg.iceauth xorg.libSM
-      polkit hicolor-icon-theme
-    ]; #TODO: upower-glib, gconf (assistive?), gnome keyring
-
-  preBuild = ''
-    sed '/^PATH=/d'        -i scripts/xflock4
-    sed '/^export PATH$/d' -i scripts/xflock4
-  '';
-
-  configureFlags = [ "--with-xsession-prefix=$(out)" ];
-
-  meta = with stdenv.lib; {
-    homepage = https://www.xfce.org/projects/xfce4-session;
-    description = "Session manager for Xfce";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-    maintainers = [ maintainers.eelco ];
-  };
-}
diff --git a/pkgs/desktops/xfce/core/xfce4-session/default.nix b/pkgs/desktops/xfce/core/xfce4-session/default.nix
new file mode 100644
index 00000000000..0ab362aa21d
--- /dev/null
+++ b/pkgs/desktops/xfce/core/xfce4-session/default.nix
@@ -0,0 +1,22 @@
+{ mkXfceDerivation, polkit, exo, libxfce4util, libxfce4ui, xfconf, iceauth, gtk3, glib, libwnck3, xorg, xfce4-session }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-session";
+  version = "4.14.0";
+
+  sha256 = "0v0xzkdr5rgv6219c1dy96cghgw8bqnb313jccxihfgddf363104";
+
+  buildInputs = [ exo gtk3 glib libxfce4ui libxfce4util libwnck3 xfconf polkit iceauth ];
+
+  configureFlags = [ "--with-xsession-prefix=${placeholder "out"}" ];
+
+  # See https://github.com/NixOS/nixpkgs/issues/36468
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  passthru.xinitrc = "${xfce4-session}/etc/xdg/xfce4/xinitrc";
+
+  meta =  {
+    description = "Session manager for Xfce";
+  };
+}
diff --git a/pkgs/desktops/xfce/core/xfce4-settings-default-icon-theme.patch b/pkgs/desktops/xfce/core/xfce4-settings-default-icon-theme.patch
deleted file mode 100644
index 2683b3c3dfd..00000000000
--- a/pkgs/desktops/xfce/core/xfce4-settings-default-icon-theme.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/xfsettingsd/xsettings.xml       2015-02-28 22:32:02.681796319 +0100
-+++ b/xfsettingsd/xsettings.xml       2015-02-28 22:32:27.881214735 +0100
-@@ -7,7 +7,7 @@
- <channel name="xsettings" version="1.0">
-   <property name="Net" type="empty">
-     <property name="ThemeName" type="empty"/>
--    <property name="IconThemeName" type="empty"/>
-+    <property name="IconThemeName" type="string" value="Rodent"/>
-     <property name="DoubleClickTime" type="int" value="400"/>
-     <property name="DoubleClickDistance" type="int" value="5"/>
-     <property name="DndDragThreshold" type="int" value="8"/>
\ No newline at end of file
diff --git a/pkgs/desktops/xfce/core/xfce4-settings.nix b/pkgs/desktops/xfce/core/xfce4-settings.nix
deleted file mode 100644
index 584055c8ddf..00000000000
--- a/pkgs/desktops/xfce/core/xfce4-settings.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, exo, gtk, garcon, libxfce4util
-, libxfce4ui, xfconf, libXi, upower ? null, libnotify ? null
-, libXcursor ? null, xf86inputlibinput ? null, libxklavier ? null }:
-
-let
-  p_name  = "xfce4-settings";
-  ver_maj = "4.12";
-  ver_min = "1";
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "0x35i1cvkqp0hib1knwa58mckdwrfbhaisz4bsx6bbbx385llj7n";
-  };
-
-  patches = [ ./xfce4-settings-default-icon-theme.patch ];
-
-  postPatch = ''
-    for f in $(find . -name \*.c); do
-      substituteInPlace $f --replace \"libinput-properties.h\" '<xorg/libinput-properties.h>'
-    done
-  '';
-
-  nativeBuildInputs = [ pkgconfig intltool ];
-
-  buildInputs = [
-    exo
-    gtk
-    garcon
-    libxfce4util
-    libxfce4ui
-    xfconf
-    libXi
-    upower
-    libnotify
-    libXcursor
-    xf86inputlibinput
-    libxklavier
-  ];
-
-  configureFlags = [ "--enable-pluggable-dialogs" "--enable-sound-settings" ];
-
-  enableParallelBuilding = true;
-
-  meta = with stdenv.lib; {
-    homepage = https://www.xfce.org/projects/xfce4-settings;
-    description = "Settings manager for Xfce";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-    maintainers = [ maintainers.eelco ];
-  };
-}
diff --git a/pkgs/desktops/xfce/core/xfce4-settings/default.nix b/pkgs/desktops/xfce/core/xfce4-settings/default.nix
new file mode 100644
index 00000000000..74ab96ed1bc
--- /dev/null
+++ b/pkgs/desktops/xfce/core/xfce4-settings/default.nix
@@ -0,0 +1,40 @@
+{ mkXfceDerivation, automakeAddFlags, exo, garcon, gtk3, glib
+, libnotify, libxfce4ui, libxfce4util, libxklavier
+, upower, xfconf, xf86inputlibinput }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-settings";
+  version = "4.14.0";
+
+  sha256 = "13gmxd4sfgd6wky7s03bar58w9vl4i6jv2wncd6iajww791y5akn";
+
+  postPatch = ''
+    for f in $(find . -name \*.c); do
+      substituteInPlace $f --replace \"libinput-properties.h\" '<xorg/libinput-properties.h>'
+    done
+  '';
+
+  buildInputs = [
+    exo
+    garcon
+    glib
+    gtk3
+    libnotify
+    libxfce4ui
+    libxfce4util
+    libxklavier
+    upower
+    xf86inputlibinput
+    xfconf
+  ];
+
+  configureFlags = [
+    "--enable-pluggable-dialogs"
+    "--enable-sound-settings"
+  ];
+
+  meta = {
+    description = "Settings manager for Xfce";
+  };
+}
diff --git a/pkgs/desktops/xfce/core/xfconf.nix b/pkgs/desktops/xfce/core/xfconf.nix
deleted file mode 100644
index 9af365c6f14..00000000000
--- a/pkgs/desktops/xfce/core/xfconf.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, glib, libxfce4util, dbus-glib }:
-let
-  p_name  = "xfconf";
-  ver_maj = "4.12";
-  ver_min = "1";
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "0dns190bwb615wy9ma2654sw4vz1d0rcv061zmaalkv9wmj8bx1m";
-  };
-
-  outputs = [ "out" "dev" "devdoc" ];
-
-  #TODO: no perl bingings yet (ExtUtils::Depends, ExtUtils::PkgConfig, Glib)
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool glib libxfce4util ];
-  propagatedBuildInputs = [ dbus-glib ];
-
-  doCheck = false; # requires dbus daemon
-
-  meta = with stdenv.lib; {
-    homepage = http://docs.xfce.org/xfce/xfconf/start;
-    description = "Simple client-server configuration storage and query system for Xfce";
-    license = licenses.gpl2;
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/desktops/xfce/core/xfconf/default.nix b/pkgs/desktops/xfce/core/xfconf/default.nix
new file mode 100644
index 00000000000..a0923f0fda1
--- /dev/null
+++ b/pkgs/desktops/xfce/core/xfconf/default.nix
@@ -0,0 +1,15 @@
+{ mkXfceDerivation, libxfce4util }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfconf";
+  version = "4.14.1";
+
+  sha256 = "1mbqc1463xgn7gafbh2fyshshdxin33iwk96y4nw2gl48nhx4sgs";
+
+  buildInputs = [ libxfce4util ];
+
+  meta = {
+    description = "Simple client-server configuration storage and query system for Xfce";
+  };
+}
diff --git a/pkgs/desktops/xfce/core/xfdesktop.nix b/pkgs/desktops/xfce/core/xfdesktop.nix
deleted file mode 100644
index 091dd03c0bc..00000000000
--- a/pkgs/desktops/xfce/core/xfdesktop.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ stdenv, fetchurl, fetchpatch, pkgconfig, intltool, gtk, libxfce4util, libxfce4ui
-, libwnck, xfconf, libglade, xfce4-panel, thunar, exo, garcon, libnotify
-, hicolor-icon-theme }:
-let
-  p_name  = "xfdesktop";
-  ver_maj = "4.12";
-  ver_min = "3";
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "a8a8d93744d842ca6ac1f9bd2c8789ee178937bca7e170e5239cbdbef30520ac";
-  };
-
-  buildInputs = [
-    pkgconfig intltool gtk libxfce4util libxfce4ui libwnck xfconf
-    libglade xfce4-panel thunar exo garcon libnotify hicolor-icon-theme
-  ];
-
-  patches = [(fetchpatch {
-    url = https://git.xfce.org/xfce/xfdesktop/patch?id=157f5b55cfc3629d595ef38984278de5915aac27;
-    sha256 = "0ki7hnyfpz7bdmsxqnm9qvyk040iyv1fawnhzfbyyzrh4nc5jd3x";
-  })];
-
-  enableParallelBuilding = true;
-
-  meta = with stdenv.lib; {
-    homepage = https://www.xfce.org/projects/xfdesktop;
-    description = "Xfce desktop manager";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-    maintainers = [ maintainers.eelco ];
-  };
-}
diff --git a/pkgs/desktops/xfce/core/xfdesktop/default.nix b/pkgs/desktops/xfce/core/xfdesktop/default.nix
new file mode 100644
index 00000000000..afcd0d19dc3
--- /dev/null
+++ b/pkgs/desktops/xfce/core/xfdesktop/default.nix
@@ -0,0 +1,25 @@
+{ mkXfceDerivation, exo, gtk3, libxfce4ui, libxfce4util, libwnck3, xfconf, libnotify, garcon, thunar }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfdesktop";
+  version = "4.14.1";
+
+  sha256 = "006w4xwmpwp34q2qkkixr3xz0vb0kny79pw64yj4304wsb5jr14g";
+
+  buildInputs = [
+    exo
+    gtk3
+    libxfce4ui
+    libxfce4util
+    libwnck3
+    xfconf
+    libnotify
+    garcon
+    thunar
+  ];
+
+  meta = {
+    description = "Xfce's desktop manager";
+  };
+}
diff --git a/pkgs/desktops/xfce/core/xfwm4.nix b/pkgs/desktops/xfce/core/xfwm4.nix
deleted file mode 100644
index d26649ee6ce..00000000000
--- a/pkgs/desktops/xfce/core/xfwm4.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, gtk, intltool, libglade, libxfce4util
-, libxfce4ui, xfconf, libwnck, libstartup_notification, xorg }:
-let
-  p_name  = "xfwm4";
-  ver_maj = "4.12";
-  ver_min = "4";
-in
-stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "0dpvdrd5lclkcrzmdpva38gfsgvdf3xkqfknvy96x6k4fn508x7s";
-  };
-
-  buildInputs =
-    [ pkgconfig intltool gtk libglade libxfce4util libxfce4ui xfconf
-      libwnck libstartup_notification
-      xorg.libXcomposite xorg.libXfixes xorg.libXdamage
-    ];
-
-  enableParallelBuilding = true;
-
-  meta = with stdenv.lib; {
-    homepage = https://www.xfce.org/projects/xfwm4;
-    description = "Window manager for Xfce";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-    maintainers = [ maintainers.eelco ];
-  };
-}
diff --git a/pkgs/desktops/xfce/core/xfwm4/default.nix b/pkgs/desktops/xfce/core/xfwm4/default.nix
new file mode 100644
index 00000000000..2dff3302617
--- /dev/null
+++ b/pkgs/desktops/xfce/core/xfwm4/default.nix
@@ -0,0 +1,30 @@
+{ mkXfceDerivation, exo, librsvg, dbus-glib, epoxy, gtk3, libXdamage
+, libstartup_notification, libxfce4ui, libxfce4util, libwnck3
+, libXpresent, xfconf }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfwm4";
+  version = "4.14.0";
+
+  sha256 = "1z5aqij2d8n9wnha88b0qzkvss54jvqs8w1w5m3mzjl4c9mn9n8m";
+
+  nativeBuildInputs = [ exo librsvg ];
+
+  buildInputs = [
+    dbus-glib
+    epoxy
+    gtk3
+    libXdamage
+    libstartup_notification
+    libxfce4ui
+    libxfce4util
+    libwnck3
+    libXpresent
+    xfconf
+  ];
+
+  meta = {
+    description = "Window manager for Xfce";
+  };
+}
diff --git a/pkgs/desktops/xfce/default.nix b/pkgs/desktops/xfce/default.nix
index 20d5175fed6..b40dc6669e5 100644
--- a/pkgs/desktops/xfce/default.nix
+++ b/pkgs/desktops/xfce/default.nix
@@ -3,91 +3,91 @@
 lib.makeScope pkgs.newScope (self: with self; {
   #### NixOS support
 
-  inherit (pkgs.gnome2) libglade vte gtksourceview;
   inherit (pkgs.gnome3) dconf;
-  inherit (pkgs.perlPackages) URI;
 
-  gtk = pkgs.gtk2;
+  mkXfceDerivation = callPackage ./mkXfceDerivation.nix { };
+
+  automakeAddFlags = pkgs.makeSetupHook { } ./automakeAddFlags.sh;
 
   # Samba is a rather heavy dependency
   gvfs = pkgs.gvfs.override { samba = null; };
 
-  xinitrc = "${xfce4-session}/etc/xdg/xfce4/xinitrc";
-
   #### CORE
 
-  exo = callPackage ./core/exo.nix { };
-
-  garcon = callPackage ./core/garcon.nix { };
+  exo = callPackage ./core/exo { };
 
-  # When built with GTK 3, it was breaking GTK 3 app layout
-  gtk-xfce-engine = callPackage ./core/gtk-xfce-engine.nix { withGtk3 = false; };
+  garcon = callPackage ./core/garcon { };
 
-  libxfce4ui = callPackage ./core/libxfce4ui.nix { };
+  libxfce4ui = callPackage ./core/libxfce4ui { };
 
-  libxfce4util = callPackage ./core/libxfce4util.nix { };
+  libxfce4util = callPackage ./core/libxfce4util { };
 
-  libxfcegui4 = callPackage ./core/libxfcegui4.nix { };
+  thunar = callPackage ./core/thunar {
+    thunarPlugins = [];
+  };
 
-  thunar-bare = callPackage ./core/thunar-build.nix { };
-
-  thunar = callPackage ./core/thunar.nix { };
-
-  # NB: thunar already has it
-  thunar-volman = callPackage ./core/thunar-volman.nix { };
+  thunar-volman = callPackage ./core/thunar-volman { };
 
   thunar-archive-plugin = callPackage ./thunar-plugins/archive { };
 
   thunar-dropbox-plugin = callPackage ./thunar-plugins/dropbox { };
 
-  tumbler = callPackage ./core/tumbler.nix { };
+  tumbler = callPackage ./core/tumbler { };
 
-  # TODO: impure plugins from /run/current-system/sw/lib/xfce4
-  xfce4-panel = callPackage ./core/xfce4-panel.nix { };
+  xfce4-panel = callPackage ./core/xfce4-panel { };
 
-  xfce4-session = callPackage ./core/xfce4-session.nix { };
+  xfce4-session = callPackage ./core/xfce4-session { };
 
-  xfce4-settings = callPackage ./core/xfce4-settings.nix { };
+  xfce4-settings = callPackage ./core/xfce4-settings { };
 
-  xfce4-power-manager = callPackage ./core/xfce4-power-manager.nix { };
+  xfce4-power-manager = callPackage ./core/xfce4-power-manager { };
 
-  xfconf = callPackage ./core/xfconf.nix { };
+  xfconf = callPackage ./core/xfconf { };
 
-  xfdesktop = callPackage ./core/xfdesktop.nix { };
+  xfdesktop = callPackage ./core/xfdesktop { };
 
-  xfwm4 = callPackage ./core/xfwm4.nix { };
+  xfwm4 = callPackage ./core/xfwm4 { };
 
-  xfce4-appfinder = callPackage ./core/xfce4-appfinder.nix { };
+  xfce4-appfinder = callPackage ./core/xfce4-appfinder { };
 
-  xfce4-dev-tools = callPackage ./core/xfce4-dev-tools.nix { };
+  xfce4-dev-tools = callPackage ./core/xfce4-dev-tools {
+    mkXfceDerivation = mkXfceDerivation.override {
+      xfce4-dev-tools = null;
+    };
+  };
 
   #### APPLICATIONS
 
-  gigolo = callPackage ./applications/gigolo.nix { };
+  gigolo = callPackage ./applications/gigolo { };
+
+  mousepad = callPackage ./applications/mousepad { };
 
-  mousepad = callPackage ./applications/mousepad.nix { };
+  orage = callPackage ./applications/orage { };
 
-  orage = callPackage ./applications/orage.nix { };
+  parole = callPackage ./applications/parole { };
 
-  parole = callPackage ./applications/parole.nix { };
+  ristretto = callPackage ./applications/ristretto { };
 
-  ristretto = callPackage ./applications/ristretto.nix { };
+  xfce4-taskmanager = callPackage ./applications/xfce4-taskmanager { };
 
-  xfce4-mixer = callPackage ./applications/xfce4-mixer.nix { };
+  xfce4-dict = callPackage ./applications/xfce4-dict { };
 
-  xfce4-mixer-pulse = callPackage ./applications/xfce4-mixer.nix { pulseaudioSupport = true; };
+  xfce4-terminal = callPackage ./applications/xfce4-terminal { };
 
-  xfce4-notifyd = callPackage ./applications/xfce4-notifyd.nix { };
+  xfce4-screenshooter = callPackage ./applications/xfce4-screenshooter {
+    inherit (pkgs.gnome3) libsoup;
+  };
 
-  xfce4-taskmanager = callPackage ./applications/xfce4-taskmanager.nix { };
+  xfdashbooard = callPackage ./applications/xfdashboard {};
 
-  xfce4-terminal = callPackage ./applications/terminal.nix { };
+  # TODO: this repo is inactive for many years. Remove?
+  xfce4-volumed = callPackage ./applications/xfce4-volumed { };
 
-  xfce4-screenshooter = callPackage ./applications/xfce4-screenshooter.nix { };
+  xfce4-volumed-pulse = callPackage ./applications/xfce4-volumed-pulse { };
 
-  xfce4-volumed = callPackage ./applications/xfce4-volumed.nix { };
+  xfce4-notifyd = callPackage ./applications/xfce4-notifyd { };
 
-  xfce4-volumed-pulse = callPackage ./applications/xfce4-volumed-pulse.nix { };
+  xfburn = callPackage ./applications/xfburn { };
 
   #### ART
 
@@ -99,11 +99,11 @@ lib.makeScope pkgs.newScope (self: with self; {
 
   xfce4-vala-panel-appmenu-plugin = callPackage ./panel-plugins/xfce4-vala-panel-appmenu-plugin { };
 
-  xfce4-battery-plugin = callPackage ./panel-plugins/xfce4-battery-plugin.nix { };
+  xfce4-battery-plugin = callPackage ./panel-plugins/xfce4-battery-plugin { };
 
-  xfce4-clipman-plugin = callPackage ./panel-plugins/xfce4-clipman-plugin.nix { };
+  xfce4-clipman-plugin = callPackage ./panel-plugins/xfce4-clipman-plugin { };
 
-  xfce4-cpufreq-plugin = callPackage ./panel-plugins/xfce4-cpufreq-plugin.nix { };
+  xfce4-cpufreq-plugin = callPackage ./panel-plugins/xfce4-cpufreq-plugin { };
 
   xfce4-cpugraph-plugin = callPackage ./panel-plugins/xfce4-cpugraph-plugin.nix { };
 
@@ -125,7 +125,7 @@ lib.makeScope pkgs.newScope (self: with self; {
 
   xfce4-namebar-plugin = callPackage ./panel-plugins/xfce4-namebar-plugin.nix { };
 
-  xfce4-netload-plugin = callPackage ./panel-plugins/xfce4-netload-plugin.nix { };
+  xfce4-netload-plugin = callPackage ./panel-plugins/xfce4-netload-plugin { };
 
   xfce4-notes-plugin = callPackage ./panel-plugins/xfce4-notes-plugin.nix { };
 
@@ -141,23 +141,15 @@ lib.makeScope pkgs.newScope (self: with self; {
 
   xfce4-verve-plugin = callPackage ./panel-plugins/xfce4-verve-plugin.nix { };
 
-  xfce4-xkb-plugin = callPackage ./panel-plugins/xfce4-xkb-plugin.nix { };
+  xfce4-xkb-plugin = callPackage ./panel-plugins/xfce4-xkb-plugin { };
 
   xfce4-weather-plugin = callPackage ./panel-plugins/xfce4-weather-plugin.nix { };
 
-  xfce4-whiskermenu-plugin = callPackage ./panel-plugins/xfce4-whiskermenu-plugin.nix { };
+  xfce4-whiskermenu-plugin = callPackage ./panel-plugins/xfce4-whiskermenu-plugin { };
 
   xfce4-windowck-plugin = callPackage ./panel-plugins/xfce4-windowck-plugin.nix { };
 
-  xfce4-pulseaudio-plugin = callPackage ./panel-plugins/xfce4-pulseaudio-plugin.nix { };
-
-  #### GTK3 (deprecated, see NixOS/nixpkgs#32763)
-
-  libxfce4ui_gtk3 = libxfce4ui.override { withGtk3 = true; };
-
-  xfce4panel_gtk3 = xfce4-panel.override { withGtk3 = true; };
-
-  xfce4_power_manager_gtk3 = xfce4-power-manager.override { withGtk3 = true; };
+  xfce4-pulseaudio-plugin = callPackage ./panel-plugins/xfce4-pulseaudio-plugin { };
 
 } // lib.optionalAttrs (config.allowAliases or true) {
   #### ALIASES - added 2018-01
@@ -208,4 +200,21 @@ lib.makeScope pkgs.newScope (self: with self; {
   xfce4_whiskermenu_plugin = xfce4-whiskermenu-plugin;
   xfce4_windowck_plugin = xfce4-windowck-plugin;
   xfce4_pulseaudio_plugin = xfce4-pulseaudio-plugin;
+
+  xfce4-mixer = throw "deprecated 2019-08-18: obsoleted by xfce4-pulseaudio-plugin"; # added 2019-08-18
+  gtk-xfce-engine = throw "deprecated 2019-09-17: Xfce 4.14 deprecated gtk-xfce-engine"; # added 2019-09-17
+
+  # added 2019-11-04
+  libxfce4ui_gtk3 = libxfce4ui;
+  xfce4panel_gtk3 = xfce4-panel;
+  xfce4_power_manager_gtk3 = xfce4-power-manager;
+  gtk = pkgs.gtk2;
+  libxfcegui4 = throw "libxfcegui4 is the deprecated Xfce GUI library. It has been superseded by the libxfce4ui library";
+  xinitrc = xfce4-session.xinitrc;
+  inherit (pkgs.gnome2) libglade;
+  inherit (pkgs.gnome3) vte gtksourceview;
+  xfce4-mixer-pulse = xfce4-mixer;
+  thunar-bare = thunar.override {
+    thunarPlugins = [];
+  };
 })
diff --git a/pkgs/desktops/xfce/mkXfceDerivation.nix b/pkgs/desktops/xfce/mkXfceDerivation.nix
new file mode 100644
index 00000000000..b7dc8322569
--- /dev/null
+++ b/pkgs/desktops/xfce/mkXfceDerivation.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchgit, pkgconfig, xfce4-dev-tools, hicolor-icon-theme, wrapGAppsHook }:
+
+{ 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 = {
+    name = "${pname}-${version}";
+
+    nativeBuildInputs = [ pkgconfig xfce4-dev-tools wrapGAppsHook ];
+    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/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin.nix
deleted file mode 100644
index 6399aa3cc20..00000000000
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk, hicolor-icon-theme }:
-
-with stdenv.lib;
-stdenv.mkDerivation rec {
-  p_name  = "xfce4-battery-plugin";
-  ver_maj = "1.0";
-  ver_min = "5";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "04gbplcj8z4vg5xbks8cc2jjf62mmf9sdymg90scjwmb82pv2ngn";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk hicolor-icon-theme ];
-
-  meta = {
-    homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
-    description = "Battery plugin for Xfce panel";
-    platforms = platforms.linux;
-    maintainers = [ maintainers.AndersonTorres ];
-  };
-}
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix
new file mode 100644
index 00000000000..3966e256b16
--- /dev/null
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix
@@ -0,0 +1,15 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-battery-plugin";
+  version = "1.1.2";
+  rev = version;
+  sha256 = "0329miiclc8da6j0sz495p99hyrf9fjhvpmdl0556fphybz5agc0";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+
+  meta = {
+    description = "Battery plugin for Xfce panel";
+  };
+}
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin.nix
deleted file mode 100644
index 280f39f8d99..00000000000
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, glib, exo, libXtst, xorgproto, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk, hicolor-icon-theme }:
-
-with stdenv.lib;
-stdenv.mkDerivation rec {
-  p_name  = "xfce4-clipman-plugin";
-  ver_maj = "1.2";
-  ver_min = "6";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "19a8gwcqc0r5qqi8w28dc8arqip34m8yxdb87lgps9g5qfcky113";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool glib exo libXtst xorgproto libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk hicolor-icon-theme ];
-
-  meta = {
-    homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
-    description = "Clipboard manager for Xfce panel";
-    platforms = platforms.linux;
-    maintainers = [ maintainers.AndersonTorres ];
-  };
-}
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix
new file mode 100644
index 00000000000..bd1a3b5e5e3
--- /dev/null
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix
@@ -0,0 +1,15 @@
+{ mkXfceDerivation, gtk3, libXtst, libxfce4ui, libxfce4util, xfce4-panel, xfconf, exo }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-clipman-plugin";
+  version = "1.4.3";
+  rev = version;
+  sha256 = "1xk79xh1zk0x4r1z9m1dakp79pip0zh3naviybvl1dnpwwfc03gq";
+
+  buildInputs = [ exo gtk3 libXtst libxfce4ui libxfce4util xfce4-panel xfconf ];
+
+  meta = {
+    description = "Clipboard manager for Xfce panel";
+  };
+}
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin.nix
deleted file mode 100644
index 07838f8fe7c..00000000000
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk, hicolor-icon-theme }:
-
-with stdenv.lib;
-stdenv.mkDerivation rec {
-  p_name  = "xfce4-cpufreq-plugin";
-  ver_maj = "1.1";
-  ver_min = "3";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "0crd21l5cw0xgm6w7s049xa36k203yx7l56ssnah9nq1w73n58bl";
-  };
-
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  nativeBuildInputs = [ pkgconfig intltool ];
-
-  buildInputs = [ libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk hicolor-icon-theme ];
-
-  enableParallelBuilding = true;
-
-  meta = {
-    homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
-    description = "CPU Freq load plugin for Xfce panel";
-    license = [ licenses.gpl2Plus ];
-    platforms = platforms.linux;
-    maintainers = [ maintainers.AndersonTorres ];
-  };
-}
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin/default.nix
new file mode 100644
index 00000000000..3798edbf89d
--- /dev/null
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin/default.nix
@@ -0,0 +1,14 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-cpufreq-plugin";
+  version = "1.2.1";
+  sha256 = "1p7c4g3yfc19ksdckxpzq1q35jvplh5g55299cvv0afhdb5l8zhv";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+
+  meta = {
+    description = "CPU Freq load plugin for Xfce panel";
+  };
+}
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix
index e088e74cfb1..ef7f7e58020 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, intltool, glib, exo, libXtst, xorgproto, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk, hicolor-icon-theme }:
+{ stdenv, fetchurl, pkgconfig, intltool, glib, exo, libXtst, xorgproto, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2, hicolor-icon-theme }:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
   name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool glib exo libXtst xorgproto libxfce4util libxfce4ui xfce4-panel xfconf gtk hicolor-icon-theme ];
+  buildInputs = [ intltool glib exo libXtst xorgproto libxfce4util libxfce4ui xfce4-panel xfconf gtk2 hicolor-icon-theme ];
 
   meta = {
     homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin.nix
index c6317010031..31f502162cf 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, pkgconfig, intltool, libxfce4util, libxfcegui4, xfce4-panel
-, gtk }:
+, gtk2 }:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool libxfce4util libxfcegui4 xfce4-panel gtk ];
+  buildInputs = [ intltool libxfce4util libxfcegui4 xfce4-panel gtk2 ];
 
   meta = {
     homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-dict-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-dict-plugin.nix
index 8210fc62ccb..0b31bac8d54 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-dict-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-dict-plugin.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk}:
+{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2}:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
   name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk ];
+  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf gtk2 ];
 
   meta = {
     homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix
index 3a79f67068c..03e5a222967 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk}:
+{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2}:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
@@ -13,12 +13,13 @@ stdenv.mkDerivation rec {
   name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk ];
+  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf gtk2 ];
 
   meta = {
     homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
     description = "Eyes following you!";
     platforms = platforms.linux;
     maintainers = [ maintainers.AndersonTorres ];
+    broken = true;
   };
 }
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix
index 6d0f8ee73a4..ee663aa71ca 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk}:
+{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2}:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
@@ -13,12 +13,13 @@ stdenv.mkDerivation rec {
   name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk ];
+  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf gtk2 ];
 
   meta = {
     homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
     description = "Filesystem monitor";
     platforms = platforms.linux;
     maintainers = [ maintainers.AndersonTorres ];
+    broken = true;
   };
 }
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix
index 039ac144094..193d27af98a 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk}:
+{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2}:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
@@ -13,12 +13,13 @@ stdenv.mkDerivation rec {
   name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk ];
+  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf gtk2 ];
 
   meta = {
     homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
     description = "Cyclically spawns a command and captures its output";
     platforms = platforms.linux;
     maintainers = [ maintainers.AndersonTorres ];
+    broken = true;
   };
 }
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix
index 541b30ec1b3..e9d2eb590be 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui,
-libxfcegui4, xfconf, gtk, exo, gnutls, libgcrypt }:
+ xfconf, gtk2, exo, gnutls, libgcrypt }:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
@@ -15,12 +15,13 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel
-    libxfcegui4 xfconf gtk exo gnutls libgcrypt ];
+    xfconf gtk2 exo gnutls libgcrypt ];
 
   meta = {
     homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
     description = "Mailwatch plugin for Xfce panel";
     platforms = platforms.linux;
     maintainers = [ ];
+    broken = true;
   };
 }
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix
index 5331c29a454..b909540144a 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui,
-libxfcegui4, xfconf, gtk, exo }:
+ xfconf, gtk2, exo }:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
@@ -15,12 +15,13 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel
-    libxfcegui4 xfconf gtk exo ];
+    xfconf gtk2 exo ];
 
   meta = {
     homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
     description = "MPD plugin for Xfce panel";
     platforms = platforms.linux;
     maintainers = [ ];
+    broken = true;
   };
 }
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin.nix
deleted file mode 100644
index e82669cc1a3..00000000000
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk, hicolor-icon-theme }:
-
-with stdenv.lib;
-stdenv.mkDerivation rec {
-  p_name  = "xfce4-netload-plugin";
-  ver_maj = "1.2";
-  ver_min = "4";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "1lrhhzxmybcfl52hnadr2dvasis9wmk6a48pcy02s09ch8cfkb7z";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk hicolor-icon-theme ];
-
-  meta = {
-    homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
-    description = "Battery plugin for Xfce panel";
-    platforms = platforms.linux;
-    maintainers = [ maintainers.AndersonTorres ];
-  };
-}
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix
new file mode 100644
index 00000000000..d774649b536
--- /dev/null
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix
@@ -0,0 +1,15 @@
+{ 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 ];
+
+  meta = {
+    description = "Battery plugin for Xfce panel";
+  };
+}
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix
index d61dae6bdd5..2876c1b1f7d 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, libxfcegui4, xfconf, gtk, libunique }:
+{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2, libunique }:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
   name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf gtk libunique ];
+  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf gtk2 libunique ];
 
   meta = {
     homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin.nix
deleted file mode 100644
index 6f6f5699b6e..00000000000
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4panel_gtk3, xfconf
-, gtk3, libpulseaudio, hicolor-icon-theme
-, withKeybinder ? true, keybinder3
-, withLibnotify ? true, libnotify
-}:
-
-assert withKeybinder -> keybinder3 != null;
-assert withLibnotify -> libnotify != null;
-
-with stdenv.lib;
-
-stdenv.mkDerivation rec {
-  p_name  = "xfce4-pulseaudio-plugin";
-  ver_maj = "0.2";
-  ver_min = "3";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "e82836bc8cf7d905b4e60d43dc630ba8e32dea785989700c71d4aeee9f583b33";
-  };
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  nativeBuildInputs = [ pkgconfig intltool ];
-  buildInputs = [ libxfce4util xfce4panel_gtk3 xfconf gtk3 libpulseaudio hicolor-icon-theme ]
-    ++ optional withKeybinder keybinder3
-    ++ optional withLibnotify libnotify;
-
-  meta = {
-    homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
-    description = "Adjust the audio volume of the PulseAudio sound system";
-    platforms = platforms.linux;
-    maintainers = [ ];
-  };
-}
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix
new file mode 100644
index 00000000000..59f282d7411
--- /dev/null
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix
@@ -0,0 +1,23 @@
+{ mkXfceDerivation, automakeAddFlags, dbus-glib, dbus, gtk3, libpulseaudio
+, libnotify, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation {
+  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 ];
+
+  meta = {
+    description = "Adjust the audio volume of the PulseAudio sound system";
+  };
+}
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix
index 5a4dfee76fc..2e7233e6cdb 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, intltool, gnome2, libxfce4ui,
+{ stdenv, fetchurl, pkgconfig, intltool, gtk2, libxfce4ui,
   libxfce4util, xfce4-panel, libnotify, lm_sensors, hddtemp, netcat-gnu
 }:
 
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [
-    gnome2.gtk
+    gtk2
     libxfce4ui
     libxfce4util
     xfce4-panel
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix
index 698d4aae532..5575962ab77 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, gtk}:
+{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, gtk2}:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
   name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel gtk ];
+  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel gtk2 ];
 
   meta = {
     homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix
index 57cd48c6f27..4eddfe8df57 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel
-, libxfce4ui, libxfcegui4, xfconf, gtk, hicolor-icon-theme }:
+, libxfce4ui, xfconf, gtk2, hicolor-icon-theme }:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
@@ -13,8 +13,8 @@ stdenv.mkDerivation rec {
   };
   name = "${p_name}-${ver_maj}.${ver_min}";
 
-  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel libxfcegui4 xfconf
-    gtk hicolor-icon-theme ];
+  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf
+    gtk2 hicolor-icon-theme ];
 
   nativeBuildInputs = [ pkgconfig ];
 
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     license = licenses.gpl2;
     maintainers = [ ];
+    broken = true;
   };
 }
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin.nix
index 96ef08cbeb7..c9e5c8befbb 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, pkgconfig, intltool, glib, exo, pcre
-, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk }:
+, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2 }:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool glib exo pcre libxfce4util libxfce4ui xfce4-panel xfconf gtk ];
+  buildInputs = [ intltool glib exo pcre libxfce4util libxfce4ui xfce4-panel xfconf gtk2 ];
 
   hardeningDisable = [ "format" ];
 
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix
index 15cd526d6de..5ab311ef16f 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, intltool, gtk, libxml2, libsoup, upower,
+{ stdenv, fetchurl, pkgconfig, intltool, gtk2, libxml2, libsoup, upower,
 libxfce4ui, libxfce4util, xfce4-panel, hicolor-icon-theme }:
 
 stdenv.mkDerivation rec {
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ pkgconfig intltool ];
 
-  buildInputs = [ gtk libxml2 libsoup upower libxfce4ui libxfce4util
+  buildInputs = [ gtk2 libxml2 libsoup upower libxfce4ui libxfce4util
    xfce4-panel hicolor-icon-theme ];
 
   enableParallelBuilding = true;
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin.nix
deleted file mode 100644
index c29758452ae..00000000000
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ stdenv, fetchFromGitHub, cmake, pkgconfig, intltool, libxfce4util, libxfcegui4
-, xfce4-panel, gtk, exo, garcon }:
-
-with stdenv.lib;
-stdenv.mkDerivation rec {
-  p_name  = "xfce4-whiskermenu-plugin";
-  version = "1.7.2";
-
-  name = "${p_name}-${version}";
-
-  src = fetchFromGitHub {
-    owner = "gottcode";
-    repo = "xfce4-whiskermenu-plugin";
-    rev = "v${version}";
-    sha256 = "1rpazgnjp443abc31bgi6gp9q3sgbg13v7v74nn7vf6kl4v725ah";
-  };
-
-  nativeBuildInputs = [ cmake pkgconfig intltool ];
-
-  buildInputs = [ libxfce4util libxfcegui4 xfce4-panel gtk exo garcon ];
-
-  enableParallelBuilding = true;
-
-  preFixup = ''
-    substituteInPlace $out/bin/xfce4-popup-whiskermenu \
-      --replace $out/bin/xfce4-panel ${xfce4-panel.out}/bin/xfce4-panel
-  '';
-
-  meta = {
-    homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
-    description = "Alternate application launcher for Xfce";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-    maintainers = [ maintainers.pjbarnoy ];
-  };
-}
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix
new file mode 100644
index 00000000000..ef47d37e5ef
--- /dev/null
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix
@@ -0,0 +1,22 @@
+{ mkXfceDerivation, gtk3, glib, cmake, exo, garcon, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-whiskermenu-plugin";
+  version = "2.3.3";
+  rev = "v${version}";
+  sha256 = "0agh0a5srsy6vi6r50ak9rb42r7vcnfv6nfvg4qbqi77yc44yqdb";
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ exo garcon gtk3 glib libxfce4ui libxfce4util xfce4-panel xfconf ];
+
+  postInstall = ''
+    substituteInPlace $out/bin/xfce4-popup-whiskermenu \
+      --replace $out/bin/xfce4-panel ${xfce4-panel.out}/bin/xfce4-panel
+  '';
+
+  meta = {
+    description = "Alternate application launcher for Xfce";
+  };
+}
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin.nix
deleted file mode 100644
index 307d2e81bf2..00000000000
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, libxfce4ui, xfce4-panel
-, garcon, gtk, libxklavier, librsvg, libwnck
-}:
-
-with stdenv.lib;
-stdenv.mkDerivation rec {
-  p_name  = "xfce4-xkb-plugin";
-  ver_maj = "0.7";
-  ver_min = "1";
-
-  name = "${p_name}-${ver_maj}.${ver_min}";
-
-  src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
-    sha256 = "10g65j5ia389ahhn3b9hr52ghpp0817fk0m60rfrv4wrzqrjxzk1";
-  };
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel garcon
-    gtk libxklavier librsvg libwnck  ];
-
-  meta = {
-    homepage = "http://goodies.xfce.org/projects/panel-plugins/${p_name}";
-    description = "Allows you to setup and use multiple keyboard layouts";
-    platforms = platforms.linux;
-    maintainers = [ maintainers.AndersonTorres ];
-  };
-}
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix
new file mode 100644
index 00000000000..4497a7b0e36
--- /dev/null
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix
@@ -0,0 +1,16 @@
+{ lib, 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 ];
+
+  meta = with lib; {
+    description = "Allows you to setup and use multiple keyboard layouts";
+    maintainers = [ maintainers.AndersonTorres ];
+  };
+}
diff --git a/pkgs/desktops/xfce/thunar-plugins/archive/default.nix b/pkgs/desktops/xfce/thunar-plugins/archive/default.nix
index ea3a0f08443..3d621037b02 100644
--- a/pkgs/desktops/xfce/thunar-plugins/archive/default.nix
+++ b/pkgs/desktops/xfce/thunar-plugins/archive/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, pkgconfig, xfce4-dev-tools
-, gtk
-, thunar-bare
+, gtk2
+, thunar
 , exo, libxfce4util, libxfce4ui
 , xfconf, udev, libnotify, hicolor-icon-theme
 }:
@@ -21,8 +21,8 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [
     xfce4-dev-tools
-    thunar-bare
-    exo gtk libxfce4util libxfce4ui
+    thunar
+    exo gtk2 libxfce4util libxfce4ui
     xfconf udev libnotify hicolor-icon-theme
   ];
 
diff --git a/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix b/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix
index 217cecf85a8..bbac9929ca8 100644
--- a/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix
+++ b/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, pkgconfig
-, gtk
-, thunar-bare, python2, hicolor-icon-theme
+, gtk2
+, thunar, python2, hicolor-icon-theme
 , wafHook
 }:
 
@@ -17,8 +17,8 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ pkgconfig wafHook ];
   buildInputs = [
-    gtk
-    thunar-bare python2 hicolor-icon-theme
+    gtk2
+    thunar python2 hicolor-icon-theme
   ];
 
   enableParallelBuilding = true;