about summary refs log tree commit diff
path: root/pkgs/desktops/xfce4-14
diff options
context:
space:
mode:
authorJosé Romildo Malaquias <malaquias@gmail.com>2019-07-13 08:42:05 -0300
committerJosé Romildo Malaquias <malaquias@gmail.com>2019-07-13 08:42:05 -0300
commitc3282487ddce9bfa1876a07566a7cd5f7943952f (patch)
treea92f0fcef5f871b4d89e86d7c68bae961f7ea3d7 /pkgs/desktops/xfce4-14
parent202d2b97b9c13d9c523eca708fe614e3bcb7c6d0 (diff)
downloadnixlib-c3282487ddce9bfa1876a07566a7cd5f7943952f.tar
nixlib-c3282487ddce9bfa1876a07566a7cd5f7943952f.tar.gz
nixlib-c3282487ddce9bfa1876a07566a7cd5f7943952f.tar.bz2
nixlib-c3282487ddce9bfa1876a07566a7cd5f7943952f.tar.lz
nixlib-c3282487ddce9bfa1876a07566a7cd5f7943952f.tar.xz
nixlib-c3282487ddce9bfa1876a07566a7cd5f7943952f.tar.zst
nixlib-c3282487ddce9bfa1876a07566a7cd5f7943952f.zip
xfce4-13: rename to xfce4-14
Diffstat (limited to 'pkgs/desktops/xfce4-14')
-rw-r--r--pkgs/desktops/xfce4-14/automakeAddFlags.sh7
-rw-r--r--pkgs/desktops/xfce4-14/default.nix113
-rw-r--r--pkgs/desktops/xfce4-14/exo/default.nix28
-rw-r--r--pkgs/desktops/xfce4-14/garcon/default.nix12
-rw-r--r--pkgs/desktops/xfce4-14/gigolo/default.nix12
-rw-r--r--pkgs/desktops/xfce4-14/libxfce4ui/default.nix19
-rw-r--r--pkgs/desktops/xfce4-14/libxfce4util/default.nix17
-rw-r--r--pkgs/desktops/xfce4-14/mkXfceDerivation.nix40
-rw-r--r--pkgs/desktops/xfce4-14/mousepad/default.nix12
-rw-r--r--pkgs/desktops/xfce4-14/orage/default.nix35
-rw-r--r--pkgs/desktops/xfce4-14/parole/default.nix36
-rw-r--r--pkgs/desktops/xfce4-14/ristretto/default.nix18
-rw-r--r--pkgs/desktops/xfce4-14/thunar-volman/default.nix12
-rw-r--r--pkgs/desktops/xfce4-14/thunar/default.nix31
-rw-r--r--pkgs/desktops/xfce4-14/tumbler/default.nix15
-rw-r--r--pkgs/desktops/xfce4-14/xfburn/default.nix18
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-appfinder/default.nix13
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-battery-plugin/default.nix11
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-clipman-plugin/default.nix11
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-cpufreq-plugin/default.nix10
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-dev-tools/default.nix33
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-dev-tools/setup-hook.sh12
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-dict/configure-gio.patch11
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-dict/default.nix19
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-mixer/default.nix32
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-netload-plugin/default.nix11
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-notifyd/default.nix12
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-panel/default.nix37
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-power-manager/default.nix20
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-pulseaudio-plugin/default.nix19
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-screenshooter/default.nix12
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-session/default.nix28
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-settings/default.nix39
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-taskmanager/default.nix12
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-terminal/default.nix16
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-volumed-pulse/default.nix15
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-whiskermenu-plugin/default.nix18
-rw-r--r--pkgs/desktops/xfce4-14/xfce4-xkb-plugin/default.nix11
-rw-r--r--pkgs/desktops/xfce4-14/xfconf/default.nix12
-rw-r--r--pkgs/desktops/xfce4-14/xfdesktop/default.nix25
-rw-r--r--pkgs/desktops/xfce4-14/xfwm4/default.nix27
41 files changed, 891 insertions, 0 deletions
diff --git a/pkgs/desktops/xfce4-14/automakeAddFlags.sh b/pkgs/desktops/xfce4-14/automakeAddFlags.sh
new file mode 100644
index 000000000000..92d5659d05ca
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/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/xfce4-14/default.nix b/pkgs/desktops/xfce4-14/default.nix
new file mode 100644
index 000000000000..d3e46cf23654
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/default.nix
@@ -0,0 +1,113 @@
+{ lib, makeSetupHook, newScope, gnome3, gst_all_1 }:
+
+let
+  inherit (lib) makeScope;
+in
+
+makeScope newScope (self: with self; {
+  mkXfceDerivation = callPackage ./mkXfceDerivation.nix { };
+
+  automakeAddFlags = makeSetupHook { } ./automakeAddFlags.sh;
+
+  exo = callPackage ./exo { };
+
+  garcon = callPackage ./garcon { };
+
+  gigolo = callPackage ./gigolo { };
+
+  libxfce4util = callPackage ./libxfce4util { };
+
+  libxfce4ui = callPackage ./libxfce4ui { };
+
+  mousepad = callPackage ./mousepad { };
+
+  orage = callPackage ./orage { };
+
+  parole = callPackage ./parole {
+    inherit (gst_all_1) gst-plugins-bad gst-plugins-base gst-plugins-good;
+    gst-plugins-ugly = null;
+  };
+
+  ristretto = callPackage ./ristretto { };
+
+  thunar = callPackage ./thunar { };
+
+  thunar-volman = callPackage ./thunar-volman { };
+
+  tumbler = callPackage ./tumbler { };
+
+  xfburn = callPackage ./xfburn { };
+
+  xfconf = callPackage ./xfconf { };
+
+  xfdesktop = callPackage ./xfdesktop { };
+
+  xfce4-appfinder = callPackage ./xfce4-appfinder { };
+
+  xfce4-battery-plugin = callPackage ./xfce4-battery-plugin { };
+
+  xfce4-cpufreq-plugin = callPackage ./xfce4-cpufreq-plugin { };
+
+  xfce4-clipman-plugin = callPackage ./xfce4-clipman-plugin { };
+
+  xfce4-dev-tools = callPackage ./xfce4-dev-tools {
+    mkXfceDerivation = mkXfceDerivation.override {
+      xfce4-dev-tools = null;
+    };
+  };
+
+  xfce4-dict = callPackage ./xfce4-dict { };
+
+  xfce4-mixer = callPackage ./xfce4-mixer { };
+
+  xfce4-netload-plugin = callPackage ./xfce4-netload-plugin { };
+
+  xfce4-notifyd = callPackage ./xfce4-notifyd { };
+
+  xfce4-panel = callPackage ./xfce4-panel { };
+
+  xfce4-power-manager = callPackage ./xfce4-power-manager { };
+
+  xfce4-pulseaudio-plugin = callPackage ./xfce4-pulseaudio-plugin { };
+
+  xfce4-screenshooter = callPackage ./xfce4-screenshooter {
+    inherit (gnome3) libsoup;
+  };
+
+  xfce4-session = callPackage ./xfce4-session { };
+  xinitrc = "${xfce4-session}/etc/xdg/xfce4/xinitrc";
+
+  xfce4-settings = callPackage ./xfce4-settings { };
+
+  xfce4-taskmanager = callPackage ./xfce4-taskmanager { };
+
+  xfce4-terminal = callPackage ./xfce4-terminal { };
+
+  xfce4-volumed-pulse = callPackage ./xfce4-volumed-pulse { };
+
+  xfce4-whiskermenu-plugin = callPackage ./xfce4-whiskermenu-plugin { };
+
+  xfce4-xkb-plugin = callPackage ./xfce4-xkb-plugin { };
+
+  xfwm4 = callPackage ./xfwm4 { };
+
+  ## COMMON PARTS WITH XFCE 4.12
+
+  gtk-xfce-engine = callPackage ../xfce/core/gtk-xfce-engine.nix { withGtk3 = false; };
+
+  xfce4-icon-theme = callPackage ../xfce/art/xfce4-icon-theme.nix { };
+
+  xfwm4-themes = callPackage ../xfce/art/xfwm4-themes.nix { };
+
+  xfce4-embed-plugin = callPackage ../xfce/panel-plugins/xfce4-embed-plugin.nix { };
+
+  xfce4-hardware-monitor-plugin = callPackage ../xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix { };
+
+  ## THIRD PARTY PLIGINS
+
+  xfce4-dockbarx-plugin = callPackage ../xfce/panel-plugins/xfce4-dockbarx-plugin.nix { };
+
+  xfce4-namebar-plugin = callPackage ../xfce/panel-plugins/xfce4-namebar-plugin.nix { };
+
+  xfce4-windowck-plugin = callPackage ../xfce/panel-plugins/xfce4-windowck-plugin.nix { };
+})
diff --git a/pkgs/desktops/xfce4-14/exo/default.nix b/pkgs/desktops/xfce4-14/exo/default.nix
new file mode 100644
index 000000000000..933fa595aada
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/exo/default.nix
@@ -0,0 +1,28 @@
+{ mkXfceDerivation, docbook_xsl, libxslt, perlPackages, gtk3
+, libxfce4ui, libxfce4util }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "exo";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "0s91fv4yzafmdi25c63yin15sa25cfcyarpvavr4q3mmmiamzpi0";
+
+  nativeBuildInputs = [ libxslt perlPackages.URI ];
+  buildInputs = [ gtk3 libxfce4ui libxfce4util ];
+
+  postPatch = ''
+    substituteInPlace exo-helper/Makefile.am \
+      --replace 'exo_helper_2_CFLAGS =' \
+                'exo_helper_2_CFLAGS = $(GIO_UNIX_CFLAGS)'
+
+    substituteInPlace docs/reference/Makefile.am \
+      --replace http://docbook.sourceforge.net/release/xsl/current \
+                ${docbook_xsl}/share/xml/docbook-xsl
+  '';
+
+  meta = {
+    description = "Application library for Xfce";
+  };
+}
diff --git a/pkgs/desktops/xfce4-14/garcon/default.nix b/pkgs/desktops/xfce4-14/garcon/default.nix
new file mode 100644
index 000000000000..a63ddeb52ea9
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/garcon/default.nix
@@ -0,0 +1,12 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "garcon";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "0d2fir4vbfdmng9k70nf5zv3fjwgr6g0czrp458x6qswih2gv2ik";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util ];
+}
diff --git a/pkgs/desktops/xfce4-14/gigolo/default.nix b/pkgs/desktops/xfce4-14/gigolo/default.nix
new file mode 100644
index 000000000000..46b659b11d03
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/gigolo/default.nix
@@ -0,0 +1,12 @@
+{ mkXfceDerivation, exo, gtk3 }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "gigolo";
+  version = "0.4.91";
+
+  sha256 = "1r075hw1jxbpv7jxzyqgfmd2rsw1lykd7snnx736gm55v84k15i7";
+
+  nativeBuildInputs = [ exo ];
+  buildInputs = [ gtk3 ];
+}
diff --git a/pkgs/desktops/xfce4-14/libxfce4ui/default.nix b/pkgs/desktops/xfce4-14/libxfce4ui/default.nix
new file mode 100644
index 000000000000..77083fabbd35
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/libxfce4ui/default.nix
@@ -0,0 +1,19 @@
+{ lib, mkXfceDerivation, gobject-introspection, gtk2, gtk3, libICE, libSM
+, libstartup_notification ? null, libxfce4util, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "libxfce4ui";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "0kvqzf91ygxxkcy4drjminby4c3c42c54a3if8jwx0zmgbml7l8q";
+
+  buildInputs =  [ gobject-introspection gtk2 gtk3 libstartup_notification xfconf ];
+  propagatedBuildInputs = [ libxfce4util libICE libSM ];
+
+  meta = with lib; {
+    description = "Widgets library for Xfce";
+    license = licenses.lgpl2Plus;
+  };
+}
diff --git a/pkgs/desktops/xfce4-14/libxfce4util/default.nix b/pkgs/desktops/xfce4-14/libxfce4util/default.nix
new file mode 100644
index 000000000000..e6cafcac8bbf
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/libxfce4util/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkXfceDerivation, gobject-introspection }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "libxfce4util";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "0s1fh798v86ifg46qn3zaykpwidn23vpqbkxq1fcbxpxb6rpxxwk";
+
+  buildInputs = [ gobject-introspection ];
+
+  meta = with lib; {
+    description = "Extension library for Xfce";
+    license = licenses.lgpl2Plus;
+  };
+}
diff --git a/pkgs/desktops/xfce4-14/mkXfceDerivation.nix b/pkgs/desktops/xfce4-14/mkXfceDerivation.nix
new file mode 100644
index 000000000000..da7179c46462
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/mkXfceDerivation.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchgit, pkgconfig, xfce4-dev-tools, hicolor-icon-theme }:
+
+{ category, pname, version, rev ? "${pname}-${version}", sha256, ... } @ args:
+
+let
+  inherit (builtins) filter getAttr head isList;
+  inherit (stdenv.lib) attrNames concatLists recursiveUpdate zipAttrsWithNames;
+
+  filterAttrNames = f: attrs:
+    filter (n: f (getAttr n attrs)) (attrNames attrs);
+
+  concatAttrLists = attrsets:
+    zipAttrsWithNames (filterAttrNames isList (head attrsets)) (_: concatLists) attrsets;
+
+  template = rec {
+    name = "${pname}-${version}";
+
+    nativeBuildInputs = [ pkgconfig xfce4-dev-tools ];
+    buildInputs = [ hicolor-icon-theme ];
+    configureFlags = [ "--enable-maintainer-mode" ];
+
+    src = fetchgit {
+      url = "git://git.xfce.org/${category}/${pname}";
+      inherit rev sha256;
+    };
+
+    enableParallelBuilding = true;
+    outputs = [ "out" "dev" ];
+
+    meta = with stdenv.lib; {
+      homepage = "https://git.xfce.org/${category}/${pname}/about";
+      license = licenses.gpl2; # some libraries are under LGPLv2+
+      platforms = platforms.linux;
+    };
+  };
+
+  publicArgs = removeAttrs args [ "category" "pname" "sha256" ];
+in
+
+stdenv.mkDerivation (recursiveUpdate template publicArgs // concatAttrLists [ template args ])
diff --git a/pkgs/desktops/xfce4-14/mousepad/default.nix b/pkgs/desktops/xfce4-14/mousepad/default.nix
new file mode 100644
index 000000000000..b5fd3a19d060
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/mousepad/default.nix
@@ -0,0 +1,12 @@
+{ mkXfceDerivation, exo, wrapGAppsHook, dbus-glib, gtk3, gtksourceview3 }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "mousepad";
+  version = "0.4.1";
+
+  sha256 = "0pr1w9n0qq2raxhy78982i9g17x0ya02q7vdrn0wb2bpk74hlki5";
+
+  nativeBuildInputs = [ exo wrapGAppsHook ];
+  buildInputs = [ dbus-glib gtk3 gtksourceview3 ];
+}
diff --git a/pkgs/desktops/xfce4-14/orage/default.nix b/pkgs/desktops/xfce4-14/orage/default.nix
new file mode 100644
index 000000000000..3c8395a49088
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/orage/default.nix
@@ -0,0 +1,35 @@
+{ lib, fetchpatch, mkXfceDerivation, dbus-glib, gtk2, libical, libnotify, tzdata
+, popt, libxfce4ui ? null, xfce4-panel ? null, withPanelPlugin ? true }:
+
+assert withPanelPlugin -> libxfce4ui != null && xfce4-panel != null;
+
+let
+  inherit (lib) optionals;
+in
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "orage";
+  version = "4.12.1";
+
+  sha256 = "04z6y1vfaz1im1zq1zr7cf8pjibjhj9zkyanbp7vn30q520yxa0m";
+  buildInputs = [ dbus-glib gtk2 libical libnotify popt ]
+    ++ optionals withPanelPlugin [ libxfce4ui xfce4-panel ];
+
+  postPatch = ''
+    substituteInPlace src/parameters.c        --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo"
+    substituteInPlace src/tz_zoneinfo_read.c  --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo"
+    substituteInPlace tz_convert/tz_convert.c --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo"
+  '';
+
+  postConfigure = "rm -rf libical"; # ensure pkgs.libical is used instead of one included in the orage sources
+
+  patches = [
+    # Fix build with libical 3.0
+    (fetchpatch {
+      name = "fix-libical3.patch";
+      url = https://git.archlinux.org/svntogit/packages.git/plain/trunk/libical3.patch?h=packages/orage&id=7b1b06c42dda034d538977b9f3550b28e370057f;
+      sha256 = "1l8s106mcidmbx2p8c2pi8v9ngbv2x3fsgv36j8qk8wyd4qd1jbf";
+    })
+  ];
+}
diff --git a/pkgs/desktops/xfce4-14/parole/default.nix b/pkgs/desktops/xfce4-14/parole/default.nix
new file mode 100644
index 000000000000..f3a4561826e8
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/parole/default.nix
@@ -0,0 +1,36 @@
+{ mkXfceDerivation, makeWrapper, wrapGAppsHook, dbus, dbus-glib
+, gst-plugins-bad ? null, gst-plugins-base, gst-plugins-good
+, gst-plugins-ugly ? null, gtk3, libnotify, libxfce4ui, libxfce4util
+, taglib ? null, xfconf }:
+
+# Doesn't seem to find H.264 codec even though built with gst-plugins-bad.
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "parole";
+  version = "1.0.2";
+
+  sha256 = "11i20pvbrcf1jbn77skb1cg72jdmdd0jvmf5khfn91slqky8gcbl";
+
+  postPatch = ''
+    substituteInPlace src/plugins/mpris2/Makefile.am \
+      --replace GST_BASE_CFLAGS GST_VIDEO_CFLAGS
+  '';
+
+  nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
+
+  buildInputs = [
+    dbus
+    dbus-glib
+    gst-plugins-bad
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-ugly
+    gtk3
+    libnotify
+    libxfce4ui
+    libxfce4util
+    taglib
+    xfconf
+  ];
+}
diff --git a/pkgs/desktops/xfce4-14/ristretto/default.nix b/pkgs/desktops/xfce4-14/ristretto/default.nix
new file mode 100644
index 000000000000..b2da81399301
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/ristretto/default.nix
@@ -0,0 +1,18 @@
+{ mkXfceDerivation, automakeAddFlags, exo, dbus-glib, gtk2, libexif
+, libxfce4ui, libxfce4util, xfconf }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "ristretto";
+  version = "0.8.4";
+
+  postPatch = ''
+    automakeAddFlags src/Makefile.am ristretto_CFLAGS DBUS_GLIB_CFLAGS
+    automakeAddFlags src/Makefile.am ristretto_LDADD DBUS_GLIB_LIBS
+  '';
+
+  nativeBuildInputs = [ automakeAddFlags exo ];
+  buildInputs = [ dbus-glib gtk2 libexif libxfce4ui libxfce4util xfconf ];
+
+  sha256 = "0vnivwl0xwhzpflys9zwds6x9gqd3v069qn04afmakhi2m8qr6hf";
+}
diff --git a/pkgs/desktops/xfce4-14/thunar-volman/default.nix b/pkgs/desktops/xfce4-14/thunar-volman/default.nix
new file mode 100644
index 000000000000..db7324140c5b
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/thunar-volman/default.nix
@@ -0,0 +1,12 @@
+{ mkXfceDerivation, exo, gtk3, libgudev, libxfce4ui, libxfce4util, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "thunar-volman";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  buildInputs = [ exo gtk3 libgudev libxfce4ui libxfce4util xfconf ];
+
+  sha256 = "0jl863z6rxz50vqa31s58dfn429yn5x8scg492bvgl4cnmni6a30";
+}
diff --git a/pkgs/desktops/xfce4-14/thunar/default.nix b/pkgs/desktops/xfce4-14/thunar/default.nix
new file mode 100644
index 000000000000..e559505aca65
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/thunar/default.nix
@@ -0,0 +1,31 @@
+{ mkXfceDerivation, docbook_xsl, exo, gdk_pixbuf, gtk3, libgudev ? null
+, libnotify ? null, libX11, libxfce4ui, libxfce4util, libxslt, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "thunar";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "0b17yf8ss8s8xyr65v4zrq15ayr5nskqpxy4wxah33n7lz09dh8r";
+
+  postPatch = ''
+    substituteInPlace docs/Makefile.am \
+      --replace http://docbook.sourceforge.net/release/xsl/current \
+                ${docbook_xsl}/share/xml/docbook-xsl
+  '';
+
+  nativeBuildInputs = [ libxslt ];
+
+  buildInputs = [
+    exo
+    gdk_pixbuf
+    gtk3
+    libgudev
+    libnotify
+    libX11
+    libxfce4ui
+    libxfce4util
+    xfconf
+  ];
+}
diff --git a/pkgs/desktops/xfce4-14/tumbler/default.nix b/pkgs/desktops/xfce4-14/tumbler/default.nix
new file mode 100644
index 000000000000..e67c7f1e2989
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/tumbler/default.nix
@@ -0,0 +1,15 @@
+{ mkXfceDerivation, gdk_pixbuf ? null, ffmpegthumbnailer ? null, libgsf ? null
+, poppler ? null }:
+
+# TODO: add libopenraw
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "tumbler";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "1k579g8dmcfpw1vakspv6k2qkr1y1axyr8cbd0fqjhqdj4pis81i";
+
+  buildInputs = [ gdk_pixbuf ffmpegthumbnailer libgsf poppler ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfburn/default.nix b/pkgs/desktops/xfce4-14/xfburn/default.nix
new file mode 100644
index 000000000000..b8a61f6cf90c
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfburn/default.nix
@@ -0,0 +1,18 @@
+{ mkXfceDerivation, docbook_xsl, exo, gtk2, libburn, libisofs, libxfce4ui, libxslt }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfburn";
+  version = "0.5.5";
+
+  postPatch = ''
+    substituteInPlace docs/Makefile.am \
+      --replace http://docbook.sourceforge.net/release/xsl/current \
+                ${docbook_xsl}/share/xml/docbook-xsl
+  '';
+
+  sha256 = "1lmv48vqrlap1a2ha72g16vqly18zvcwj8y3f3f00l10pmn52bkp";
+
+  nativeBuildInputs = [ libxslt ];
+  buildInputs = [ exo gtk2 libburn libisofs libxfce4ui ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-appfinder/default.nix b/pkgs/desktops/xfce4-14/xfce4-appfinder/default.nix
new file mode 100644
index 000000000000..22a6b6fedd29
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-appfinder/default.nix
@@ -0,0 +1,13 @@
+{ mkXfceDerivation, exo, garcon, gtk3, libxfce4util, libxfce4ui, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfce4-appfinder";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "0vr5lx4fv0kldqvqfnsjp6ss7ciz0b2yjq4fhmrhk8czkf8p7va8";
+
+  nativeBuildInputs = [ exo ];
+  buildInputs = [ garcon gtk3 libxfce4ui libxfce4util xfconf ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-battery-plugin/default.nix b/pkgs/desktops/xfce4-14/xfce4-battery-plugin/default.nix
new file mode 100644
index 000000000000..376551b09c0f
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-battery-plugin/default.nix
@@ -0,0 +1,11 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-battery-plugin";
+  version = "1.1.2";
+  rev = version;
+  sha256 = "0329miiclc8da6j0sz495p99hyrf9fjhvpmdl0556fphybz5agc0";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-clipman-plugin/default.nix b/pkgs/desktops/xfce4-14/xfce4-clipman-plugin/default.nix
new file mode 100644
index 000000000000..74628a325d41
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-clipman-plugin/default.nix
@@ -0,0 +1,11 @@
+{ mkXfceDerivation, gtk3, libXtst, libxfce4ui, libxfce4util, xfce4-panel, xfconf, exo }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-clipman-plugin";
+  version = "1.4.3";
+  rev = version;
+  sha256 = "1xk79xh1zk0x4r1z9m1dakp79pip0zh3naviybvl1dnpwwfc03gq";
+
+  buildInputs = [ exo gtk3 libXtst libxfce4ui libxfce4util xfce4-panel xfconf ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-cpufreq-plugin/default.nix b/pkgs/desktops/xfce4-14/xfce4-cpufreq-plugin/default.nix
new file mode 100644
index 000000000000..84cb74276997
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-cpufreq-plugin/default.nix
@@ -0,0 +1,10 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-cpufreq-plugin";
+  version = "1.2.1";
+  sha256 = "1p7c4g3yfc19ksdckxpzq1q35jvplh5g55299cvv0afhdb5l8zhv";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-dev-tools/default.nix b/pkgs/desktops/xfce4-14/xfce4-dev-tools/default.nix
new file mode 100644
index 000000000000..49133b0ba2d9
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-dev-tools/default.nix
@@ -0,0 +1,33 @@
+{ mkXfceDerivation, autoreconfHook, autoconf, automake
+, glib, gtk-doc, intltool, libtool }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfce4-dev-tools";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "11g5byxjihgkn0wi7gp8627d04wr59k117lpv53vdbsvv2qgksmg";
+
+  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/xfce4-14/xfce4-dev-tools/setup-hook.sh b/pkgs/desktops/xfce4-14/xfce4-dev-tools/setup-hook.sh
new file mode 100644
index 000000000000..600bf47fd872
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/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/xfce4-14/xfce4-dict/configure-gio.patch b/pkgs/desktops/xfce4-14/xfce4-dict/configure-gio.patch
new file mode 100644
index 000000000000..787b63511a23
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/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/xfce4-14/xfce4-dict/default.nix b/pkgs/desktops/xfce4-14/xfce4-dict/default.nix
new file mode 100644
index 000000000000..603863264efc
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-dict/default.nix
@@ -0,0 +1,19 @@
+{ mkXfceDerivation, automakeAddFlags, gtk3, libxfce4ui, libxfce4util, xfce4-panel }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfce4-dict";
+  version = "0.8.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 ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-mixer/default.nix b/pkgs/desktops/xfce4-14/xfce4-mixer/default.nix
new file mode 100644
index 000000000000..a4bc0a3eaddb
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-mixer/default.nix
@@ -0,0 +1,32 @@
+{ mkXfceDerivation, automakeAddFlags, dbus-glib, gtk2, libxfce4ui, libxfce4util, xfce4-panel, xfconf, gst-plugins-base, libunique }:
+
+let
+  gst_plugins_minimal = gst-plugins-base.override {
+    minimalDeps = true;
+  };
+in
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfce4-mixer";
+  version = "4.11.0";
+
+  sha256 = "1kiz5ysn4rqkjfzz4dvbsfj64kqqayg7bqakcys3rw28g2q5qyys";
+
+  nativeBuildInputs = [ automakeAddFlags ];
+
+  postPatch = ''
+    automakeAddFlags panel-plugin/Makefile.am libmixer_la_CFLAGS DBUS_GLIB_CFLAGS
+    automakeAddFlags xfce4-mixer/Makefile.am xfce4_mixer_CFLAGS DBUS_GLIB_CFLAGS
+  '';
+
+  buildInputs = [
+    dbus-glib
+    gst_plugins_minimal
+    gtk2
+    libunique
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    xfconf
+  ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-netload-plugin/default.nix b/pkgs/desktops/xfce4-14/xfce4-netload-plugin/default.nix
new file mode 100644
index 000000000000..d9f517981d3e
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-netload-plugin/default.nix
@@ -0,0 +1,11 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-netload-plugin";
+  version = "1.3.1";
+  rev = "version-${version}";
+  sha256 = "0nm8advafw4jpc9p1qszyfqa56194sz51z216rdh4c6ilcrrpy1h";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-notifyd/default.nix b/pkgs/desktops/xfce4-14/xfce4-notifyd/default.nix
new file mode 100644
index 000000000000..98ed6882a024
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-notifyd/default.nix
@@ -0,0 +1,12 @@
+{ mkXfceDerivation, dbus-glib, exo, gtk3, libnotify, libxfce4ui, libxfce4util
+, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfce4-notifyd";
+  version = "0.4.4";
+
+  sha256 = "1lmm9h3ych8dz9jpjkxg91f9ln14xs527nxjxsryks00kmqk4kai";
+
+  buildInputs = [ dbus-glib exo gtk3 libnotify libxfce4ui libxfce4util xfce4-panel xfconf ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-panel/default.nix b/pkgs/desktops/xfce4-14/xfce4-panel/default.nix
new file mode 100644
index 000000000000..4f1de32abdf2
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-panel/default.nix
@@ -0,0 +1,37 @@
+{ mkXfceDerivation, makeWrapper, tzdata, exo, garcon, gtk2, gtk3, gettext, glib-networking, libxfce4ui, libxfce4util, libwnck3, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfce4-panel";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "1p0bkbxjh14kgny2lpcjg2q8pm55l8i7qsr5bsvdppw3ab46kz34";
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ exo garcon gtk2 gtk3 libxfce4ui libxfce4util libwnck3 xfconf ];
+
+  patches = [ ../../xfce/core/xfce4-panel-datadir.patch ];
+  patchFlags = "-p1";
+
+  postPatch = ''
+    for f in $(find . -name \*.sh); do
+      substituteInPlace $f --replace gettext ${gettext}/bin/gettext
+    done
+    substituteInPlace plugins/clock/clock.c \
+       --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo" \
+       --replace "if (!g_file_test (filename, G_FILE_TEST_IS_SYMLINK))" ""
+  '';
+
+  configureFlags = [ "--enable-gtk3" ];
+
+  postInstall = ''
+    wrapProgram "$out/bin/xfce4-panel" \
+      --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" \
+      --prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules"
+  '';
+
+  meta =  {
+    description = "Xfce's panel";
+  };
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-power-manager/default.nix b/pkgs/desktops/xfce4-14/xfce4-power-manager/default.nix
new file mode 100644
index 000000000000..a855f2c977e9
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-power-manager/default.nix
@@ -0,0 +1,20 @@
+{ mkXfceDerivation, automakeAddFlags, exo, gtk3, libnotify
+, libxfce4ui, libxfce4util, upower, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfce4-power-manager";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "1x1ssji4v9qp64si38paz15bgsgs1w3hkx080qznnmcxqlg7zpj9";
+
+  nativeBuildInputs = [ automakeAddFlags exo ];
+  buildInputs = [ gtk3 libnotify libxfce4ui libxfce4util upower xfconf ];
+
+  postPatch = ''
+    substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0
+    automakeAddFlags src/Makefile.am xfce4_power_manager_CFLAGS GIO_CFLAGS
+    automakeAddFlags settings/Makefile.am xfce4_power_manager_settings_CFLAGS GIO_CFLAGS
+  '';
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-pulseaudio-plugin/default.nix b/pkgs/desktops/xfce4-14/xfce4-pulseaudio-plugin/default.nix
new file mode 100644
index 000000000000..185494c25439
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-pulseaudio-plugin/default.nix
@@ -0,0 +1,19 @@
+{ mkXfceDerivation, automakeAddFlags, dbus-glib, dbus, gtk3, libpulseaudio
+, libnotify, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-pulseaudio-plugin";
+  version = "0.4.1";
+  sha256 = "1c8krpg3l6ki00ldd9hifc4bddysdm0w3x5w43fkr31j0zrscvfp";
+
+  nativeBuildInputs = [ automakeAddFlags ];
+
+  NIX_CFLAGS_COMPILE = [ "-I${dbus-glib.dev}/include/dbus-1.0" "-I${dbus.dev}/include/dbus-1.0" ];
+
+  postPatch = ''
+    substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0
+  '';
+
+  buildInputs = [ gtk3 libnotify libpulseaudio libxfce4ui libxfce4util xfce4-panel xfconf ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-screenshooter/default.nix b/pkgs/desktops/xfce4-14/xfce4-screenshooter/default.nix
new file mode 100644
index 000000000000..95af146903b1
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-screenshooter/default.nix
@@ -0,0 +1,12 @@
+{ mkXfceDerivation, exo, gtk3, libsoup, libxfce4ui, libxfce4util, xfce4-panel, wrapGAppsHook, glib-networking }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfce4-screenshooter";
+  version = "1.9.5";
+
+  sha256 = "1h14sywvk9l06p3z1cpb79911j8w2wqbk03ldknjkia2rfymjk06";
+
+  nativeBuildInputs = [ wrapGAppsHook ]; # fix "No GSettings schemas are installed on the system"
+  buildInputs = [ exo gtk3 libsoup libxfce4ui libxfce4util xfce4-panel glib-networking ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-session/default.nix b/pkgs/desktops/xfce4-14/xfce4-session/default.nix
new file mode 100644
index 000000000000..a39a70b09a81
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-session/default.nix
@@ -0,0 +1,28 @@
+{ mkXfceDerivation, polkit, exo, libxfce4util, libxfce4ui, xfconf, dbus-glib, dbus, iceauth, gtk3, libwnck3, xorg }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfce4-session";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "1asfy11rp6zmn70a3w5dqssxpxywhpm9ns7zyiaz6pnpcq075dr0";
+
+  buildInputs = [ exo dbus-glib dbus gtk3 libxfce4ui libxfce4util libwnck3 xfconf polkit iceauth ];
+
+  configureFlags = [ "--with-xsession-prefix=$(out)" ];
+
+  NIX_CFLAGS_COMPILE = [ "-I${dbus-glib.dev}/include/dbus-1.0"
+                         "-I${dbus.dev}/include/dbus-1.0"
+                         "-I${dbus.lib}/lib/dbus-1.0/include"
+                       ];
+
+  postPatch = ''
+    substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0
+    substituteInPlace scripts/xflock4 --replace PATH=/bin:/usr/bin "PATH=\$PATH:$out/bin:${xorg.xset}/bin"
+  '';
+
+  meta =  {
+    description = "Session manager for Xfce";
+  };
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-settings/default.nix b/pkgs/desktops/xfce4-14/xfce4-settings/default.nix
new file mode 100644
index 000000000000..a939f5e213cb
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-settings/default.nix
@@ -0,0 +1,39 @@
+{ mkXfceDerivation, automakeAddFlags, exo, garcon, gtk3
+, libnotify ? null, libxfce4ui, libxfce4util, libxklavier ? null
+, upower ? null, xfconf, xf86inputlibinput ? null }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfce4-settings";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "0agi5flbzbc9q29yh7wbk3giif74finf4shq3q7v2h91w5kvyc9j";
+
+  postPatch = ''
+    automakeAddFlags xfce4-settings-editor/Makefile.am xfce4_settings_editor_CFLAGS DBUS_GLIB_CFLAGS
+    for f in $(find . -name \*.c); do
+      substituteInPlace $f --replace \"libinput-properties.h\" '<xorg/libinput-properties.h>'
+    done
+  '';
+
+  nativeBuildInputs = [ automakeAddFlags ];
+
+  buildInputs = [
+    exo
+    garcon
+    gtk3
+    libnotify
+    libxfce4ui
+    libxfce4util
+    libxklavier
+    upower
+    xfconf
+    xf86inputlibinput
+  ];
+
+  configureFlags = [
+    "--enable-pluggable-dialogs"
+    "--enable-sound-settings"
+  ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-taskmanager/default.nix b/pkgs/desktops/xfce4-14/xfce4-taskmanager/default.nix
new file mode 100644
index 000000000000..776b3797f769
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-taskmanager/default.nix
@@ -0,0 +1,12 @@
+{ lib, mkXfceDerivation, exo, gtk3, libwnck3, libXmu }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-taskmanager";
+  version = "1.2.2";
+
+  sha256 = "03js0pmhrybxa7hrp3gx4rm7j061ansv0bp2dwhnbrdpmzjysysc";
+
+  nativeBuildInputs = [ exo ];
+  buildInputs = [ gtk3 libwnck3 libXmu ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-terminal/default.nix b/pkgs/desktops/xfce4-14/xfce4-terminal/default.nix
new file mode 100644
index 000000000000..6bc88ee76611
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-terminal/default.nix
@@ -0,0 +1,16 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, wrapGAppsHook, vte }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfce4-terminal";
+  version = "0.8.7.4";
+
+  sha256 = "1s1dq560icg602jjb2ja58x7hxg4ikp3jrrf74v3qgi0ir950k2y";
+
+  buildInputs = [ gtk3 libxfce4ui vte ];
+  nativeBuildInputs = [ wrapGAppsHook ];
+
+  meta = {
+    description = "A modern terminal emulator";
+  };
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-volumed-pulse/default.nix b/pkgs/desktops/xfce4-14/xfce4-volumed-pulse/default.nix
new file mode 100644
index 000000000000..626451c70d63
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-volumed-pulse/default.nix
@@ -0,0 +1,15 @@
+{ lib, mkXfceDerivation, gtk3, libnotify ? null, libpulseaudio, keybinder3, xfconf }:
+
+mkXfceDerivation rec {
+  category = "apps";
+  pname = "xfce4-volumed-pulse";
+  version = "0.2.3";
+
+  sha256 = "1rsjng9qmq7vzrx5bfxq76h63y501cfl1mksrxkf1x39by9r628j";
+
+  buildInputs = [ gtk3 libnotify libpulseaudio keybinder3 xfconf ];
+
+  meta = with lib; {
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-whiskermenu-plugin/default.nix b/pkgs/desktops/xfce4-14/xfce4-whiskermenu-plugin/default.nix
new file mode 100644
index 000000000000..41cd491a7dc2
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-whiskermenu-plugin/default.nix
@@ -0,0 +1,18 @@
+{ mkXfceDerivation, dbus-glib, gtk3, cmake, exo, garcon, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-whiskermenu-plugin";
+  version = "2.3.2";
+  rev = "v${version}";
+  sha256 = "0ha6c259d7a0wzpf87ynyzpj3y178iwhpcb87m9zxm66i513qmbs";
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ dbus-glib exo garcon gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+
+  postInstall = ''
+    substituteInPlace $out/bin/xfce4-popup-whiskermenu \
+      --replace $out/bin/xfce4-panel ${xfce4-panel.out}/bin/xfce4-panel
+  '';
+}
diff --git a/pkgs/desktops/xfce4-14/xfce4-xkb-plugin/default.nix b/pkgs/desktops/xfce4-14/xfce4-xkb-plugin/default.nix
new file mode 100644
index 000000000000..a024d3a88ba0
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfce4-xkb-plugin/default.nix
@@ -0,0 +1,11 @@
+{ mkXfceDerivation, gtk3, librsvg, libwnck3, libxklavier, garcon, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname = "xfce4-xkb-plugin";
+  version = "0.8.1";
+  rev = version;
+  sha256 = "1gyky4raynp2ggdnq0g96c6646fjm679fzipcsmf1q0aymr8d5ky";
+
+  buildInputs = [ garcon gtk3 librsvg libxfce4ui libxfce4util libxklavier libwnck3 xfce4-panel xfconf ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfconf/default.nix b/pkgs/desktops/xfce4-14/xfconf/default.nix
new file mode 100644
index 000000000000..8a37aefab415
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfconf/default.nix
@@ -0,0 +1,12 @@
+{ mkXfceDerivation, libxfce4util }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfconf";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "056r2dkkw8hahqin1p5k8rz0r9r0z8piniy855nd1ns0mx2sh47k";
+
+  buildInputs = [ libxfce4util ];
+}
diff --git a/pkgs/desktops/xfce4-14/xfdesktop/default.nix b/pkgs/desktops/xfce4-14/xfdesktop/default.nix
new file mode 100644
index 000000000000..6b99b1b6a350
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfdesktop/default.nix
@@ -0,0 +1,25 @@
+{ mkXfceDerivation, exo, wrapGAppsHook, gtk3, libxfce4ui, libxfce4util, libwnck3, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfdesktop";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "14sfcxbwxhhwn9nmiap46nz6idvw5hwr8wyjqrhq4h79x78g18k4";
+
+  nativeBuildInputs = [ wrapGAppsHook ]; # fix "No GSettings schemas are installed on the system"
+
+  buildInputs = [
+    exo
+    gtk3
+    libxfce4ui
+    libxfce4util
+    libwnck3
+    xfconf
+  ];
+
+  meta = {
+    description = "Xfce's desktop manager";
+  };
+}
diff --git a/pkgs/desktops/xfce4-14/xfwm4/default.nix b/pkgs/desktops/xfce4-14/xfwm4/default.nix
new file mode 100644
index 000000000000..34b5bdae45a0
--- /dev/null
+++ b/pkgs/desktops/xfce4-14/xfwm4/default.nix
@@ -0,0 +1,27 @@
+{ mkXfceDerivation, exo, librsvg, dbus-glib, epoxy, gtk3, libXdamage
+, libstartup_notification, libxfce4ui, libxfce4util, libwnck3
+, libXpresent, xfconf }:
+
+mkXfceDerivation rec {
+  category = "xfce";
+  pname = "xfwm4";
+  version = "4.14pre2";
+  rev = "xfce-4.14pre2";
+
+  sha256 = "00nysv5qrv5n4xzyqv4jnsmgljwr2wyynis1gpdbm2kvl5ndxrrd";
+
+  nativeBuildInputs = [ exo librsvg ];
+
+  buildInputs = [
+    dbus-glib
+    epoxy
+    gtk3
+    libXdamage
+    libstartup_notification
+    libxfce4ui
+    libxfce4util
+    libwnck3
+    libXpresent
+    xfconf
+  ];
+}