about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/xfce
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops/xfce')
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/catfish/default.nix67
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/gigolo/default.nix17
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/mousepad/default.nix21
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/orage/default.nix53
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/parole/default.nix37
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/ristretto/default.nix16
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfburn/default.nix12
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/configure-gio.patch11
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/default.nix23
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-notifyd/default.nix20
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-panel-profiles/default.nix29
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix16
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-taskmanager/default.nix16
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix17
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed-pulse/default.nix17
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfdashboard/default.nix45
-rw-r--r--nixpkgs/pkgs/desktops/xfce/art/xfce4-icon-theme/default.nix44
-rw-r--r--nixpkgs/pkgs/desktops/xfce/art/xfwm4-themes/default.nix29
-rw-r--r--nixpkgs/pkgs/desktops/xfce/automakeAddFlags.sh7
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/exo/default.nix31
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/garcon/default.nix18
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/libxfce4ui/default.nix23
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/libxfce4util/default.nix16
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/thunar-volman/default.nix17
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/thunar/default.nix70
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/thunar/thunarx_plugins_directory.patch48
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/thunar/wrapper.nix41
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/tumbler/default.nix38
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix16
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix40
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh12
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/default.nix57
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/xfce4-panel-datadir.patch24
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix23
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-session/default.nix22
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-settings/default.nix40
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfconf/default.nix17
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfdesktop/default.nix25
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfwm4/default.nix30
-rw-r--r--nixpkgs/pkgs/desktops/xfce/default.nix226
-rw-r--r--nixpkgs/pkgs/desktops/xfce/mkXfceDerivation.nix60
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix16
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix14
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin/default.nix14
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin/default.nix61
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin/default.nix31
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin/default.nix69
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin/default.nix50
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin/default.nix51
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin/default.nix51
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin/default.nix49
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin/default.nix41
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-i3-workspaces-plugin/default.nix46
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin/default.nix43
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin/default.nix43
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin/default.nix37
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix16
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin/default.nix47
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix49
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin/default.nix54
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin/default.nix47
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin/default.nix44
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix25
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin/default.nix47
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix28
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin/default.nix50
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix37
-rw-r--r--nixpkgs/pkgs/desktops/xfce/thunar-plugins/archive/default.nix37
-rw-r--r--nixpkgs/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix45
-rw-r--r--nixpkgs/pkgs/desktops/xfce/thunar-plugins/media-tags/default.nix36
70 files changed, 2569 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/xfce/applications/catfish/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/catfish/default.nix
new file mode 100644
index 000000000000..df072f862080
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/catfish/default.nix
@@ -0,0 +1,67 @@
+{ lib, fetchurl, file, which, intltool, gobject-introspection,
+  findutils, xdg-utils, dconf, gtk3, python3Packages, xfconf,
+  wrapGAppsHook
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "catfish";
+  version = "4.16.2";
+
+  src = fetchurl {
+    url = "https://archive.xfce.org/src/apps/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-shouFRlD8LGU04sX/qrzghh5R+0SoCw9ZJKvt0gBKms=";
+  };
+
+  nativeBuildInputs = [
+    python3Packages.distutils_extra
+    file
+    which
+    intltool
+    gobject-introspection # for setup hook populating GI_TYPELIB_PATH
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    dconf
+    python3Packages.pyxdg
+    python3Packages.ptyprocess
+    python3Packages.pycairo
+    gobject-introspection # Temporary fix, see https://github.com/NixOS/nixpkgs/issues/56943
+  ];
+
+  propagatedBuildInputs = [
+    python3Packages.dbus-python
+    python3Packages.pygobject3
+    python3Packages.pexpect
+    xdg-utils
+    findutils
+    xfconf
+  ];
+
+  # Explicitly set the prefix dir in "setup.py" because setuptools is
+  # not using "$out" as the prefix when installing catfish data. In
+  # particular the variable "__catfish_data_directory__" in
+  # "catfishconfig.py" is being set to a subdirectory in the python
+  # path in the store.
+  postPatch = ''
+    sed -i "/^        if self.root/i\\        self.prefix = \"$out\"" setup.py
+  '';
+
+  # Disable check because there is no test in the source distribution
+  doCheck = false;
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/apps/catfish/start";
+    description = "Handy file search tool";
+    longDescription = ''
+      Catfish is a handy file searching tool. The interface is
+      intentionally lightweight and simple, using only GTK 3.
+      You can configure it to your needs by using several command line
+      options.
+    '';
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/applications/gigolo/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/gigolo/default.nix
new file mode 100644
index 000000000000..84fec43b3c2a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/gigolo/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkXfceDerivation, gtk3, glib }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "gigolo";
+  version = "0.5.2";
+  odd-unstable = false;
+
+  sha256 = "sha256-8UDb4H3zxRKx2y+MRsozQoR3es0fs5ooR/5wBIE11bY=";
+
+  buildInputs = [ gtk3 glib ];
+
+  meta = {
+    description = "A frontend to easily manage connections to remote filesystems";
+    license = with lib.licenses; [ gpl2Only ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/applications/mousepad/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/mousepad/default.nix
new file mode 100644
index 000000000000..c3e7805b112d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/mousepad/default.nix
@@ -0,0 +1,21 @@
+{ mkXfceDerivation, gobject-introspection, gtk3, gtksourceview4, gspell }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "mousepad";
+  version = "0.5.6";
+  odd-unstable = false;
+
+  sha256 = "sha256-cdM2NHUnN2FITITb4077Je5Z8xwZAJfjmwXfV+WE6jk=";
+
+  nativeBuildInputs = [ gobject-introspection ];
+
+  buildInputs = [ gtk3 gtksourceview4 gspell ];
+
+  # Use the GSettings keyfile backend rather than DConf
+  configureFlags = [ "--enable-keyfile-settings" ];
+
+  meta = {
+    description = "Simple text editor for Xfce";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/applications/orage/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/orage/default.nix
new file mode 100644
index 000000000000..f2747c9c62a5
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/orage/default.nix
@@ -0,0 +1,53 @@
+{ lib, stdenv, fetchurl, fetchpatch, pkg-config, intltool, dbus-glib, gtk2, libical, libnotify, tzdata
+, popt, libxfce4ui, xfce4-panel, withPanelPlugin ? true, wrapGAppsHook, xfce }:
+
+assert withPanelPlugin -> libxfce4ui != null && xfce4-panel != null;
+
+let
+  inherit (lib) optionals;
+in
+
+stdenv.mkDerivation rec {
+  pname = "orage";
+  version = "4.12.1";
+
+  src = fetchurl {
+    url = "https://archive.xfce.org/src/apps/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-PPmqRBroPIaIhl+CIXAlzfPrqhUszkVxd3uMKqjdkGI=";
+  };
+
+  nativeBuildInputs = [ pkg-config intltool wrapGAppsHook ];
+
+  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://aur.archlinux.org/cgit/aur.git/plain/libical3.patch?h=orage-4.10";
+      sha256 = "sha256-bsnQMGmeo4mRNGM/7UYXez2bNopXMHRFX7VFVg0IGtE=";
+    })
+  ];
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister "apps" pname;
+  };
+
+  meta = with lib; {
+    description = "Simple calendar application with reminders";
+    homepage = "https://git.xfce.org/archive/orage/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/applications/parole/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/parole/default.nix
new file mode 100644
index 000000000000..8ea2180dea28
--- /dev/null
+++ b/nixpkgs/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 = "4.16.0";
+
+  sha256 = "sha256-9Rvhc8asFEb/+OU6uhuHKPl7w5mWBfzGP5ia0tiyDB4=";
+
+  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/nixpkgs/pkgs/desktops/xfce/applications/ristretto/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/ristretto/default.nix
new file mode 100644
index 000000000000..d938dc8a5282
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/ristretto/default.nix
@@ -0,0 +1,16 @@
+{ mkXfceDerivation, gtk3, glib, libexif
+, libxfce4ui, libxfce4util, xfconf }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "ristretto";
+  version = "0.11.0";
+
+  sha256 = "sha256-7hVoQ2cgWTTWMch9CSliAhRDh3qKrMzUaZeaN40l1x4=";
+
+  buildInputs = [ glib gtk3 libexif libxfce4ui libxfce4util xfconf ];
+
+  meta = {
+    description = "A fast and lightweight picture-viewer for the Xfce desktop environment";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfburn/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfburn/default.nix
new file mode 100644
index 000000000000..f44769ddd69a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfburn/default.nix
@@ -0,0 +1,12 @@
+{ mkXfceDerivation, docbook_xsl, exo, gtk3, libburn, libisofs, libxfce4ui, libxslt }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfburn";
+  version = "0.6.2";
+
+  sha256 = "sha256-AUonNhMs2HBF1WBLdZNYmASTOxYt6A6WDKNtvZaGXQk=";
+
+  nativeBuildInputs = [ libxslt docbook_xsl ];
+  buildInputs = [ exo gtk3 libburn libisofs libxfce4ui ];
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/configure-gio.patch b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/configure-gio.patch
new file mode 100644
index 000000000000..787b63511a23
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/default.nix
new file mode 100644
index 000000000000..94f6f7c5dd5b
--- /dev/null
+++ b/nixpkgs/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.4";
+
+  sha256 = "sha256-UEkHB+i6hkTTjX62GCnr4uiCdZANuffSx2Nb2DF/pT4=";
+
+  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/nixpkgs/pkgs/desktops/xfce/applications/xfce4-notifyd/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-notifyd/default.nix
new file mode 100644
index 000000000000..64fc7db4dbcc
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-notifyd/default.nix
@@ -0,0 +1,20 @@
+{ mkXfceDerivation, glib, gtk3, libnotify, libxfce4ui, libxfce4util
+, xfce4-panel, xfconf }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-notifyd";
+  version = "0.6.2";
+
+  sha256 = "sha256-Gomehef68+mOgGFDaH48jG51nbaV4ruN925h71w7FuE=";
+
+  buildInputs = [ gtk3 glib libnotify libxfce4ui libxfce4util xfce4-panel xfconf ];
+
+  configureFlags = [
+    "--enable-dbus-start-daemon"
+  ];
+
+  meta = {
+    description = "Simple notification daemon for Xfce";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-panel-profiles/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-panel-profiles/default.nix
new file mode 100644
index 000000000000..3c7f99f7d3ac
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-panel-profiles/default.nix
@@ -0,0 +1,29 @@
+{ mkXfceDerivation, lib, python3, intltool, gettext,
+ gtk3, libxfce4ui, libxfce4util, pango, harfbuzz, gdk-pixbuf, atk }:
+
+let
+  pythonEnv = python3.withPackages(ps: [ ps.pygobject3 ]);
+  makeTypelibPath = lib.makeSearchPathOutput "lib/girepository-1.0" "lib/girepository-1.0";
+in mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-panel-profiles";
+  version = "1.0.13";
+
+  sha256 = "sha256-B3Q5d3KBN5m8wY82CIbIugJC8nNS+OcgKchn+TGrDhc=";
+
+  nativeBuildInputs = [ intltool gettext ];
+  propagatedBuildInputs = [ pythonEnv ];
+
+  configurePhase = ''
+    ./configure --prefix=$out
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/xfce4-panel-profiles \
+      --set GI_TYPELIB_PATH ${makeTypelibPath [ gtk3 libxfce4ui libxfce4util pango harfbuzz gdk-pixbuf atk ]}
+  '';
+
+  meta = {
+    description = "Simple application to manage Xfce panel layouts";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix
new file mode 100644
index 000000000000..f381b2d61817
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix
@@ -0,0 +1,16 @@
+{ mkXfceDerivation, exo, gtk3, libsoup, libxfce4ui, libxfce4util, xfce4-panel, glib-networking }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-screenshooter";
+  version = "1.9.9";
+  odd-unstable = false;
+
+  sha256 = "sha256-QOYJl+bxRk0+spgtGADPgkw2lPLfQOwTZQuZNHWq39c=";
+
+  buildInputs = [ exo gtk3 libsoup libxfce4ui libxfce4util xfce4-panel glib-networking ];
+
+  meta = {
+    description = "Screenshot utility for the Xfce desktop";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-taskmanager/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-taskmanager/default.nix
new file mode 100644
index 000000000000..6c7e0b296819
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-taskmanager/default.nix
@@ -0,0 +1,16 @@
+{ mkXfceDerivation, exo, gtk3, libwnck, libXmu }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-taskmanager";
+  version = "1.4.2";
+
+  sha256 = "sha256-jcICXPtG/7t0U0xqgvU52mjiA8wsyw7JQ0OmNjwA89A=";
+
+  nativeBuildInputs = [ exo ];
+  buildInputs = [ gtk3 libwnck libXmu ];
+
+  meta = {
+    description = "Easy to use task manager for Xfce";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix
new file mode 100644
index 000000000000..ce0c2d1f3cd3
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix
@@ -0,0 +1,17 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, vte, xfconf, pcre2, libxslt, docbook_xml_dtd_45, docbook_xsl }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-terminal";
+  version = "0.8.10";
+
+  sha256 = "sha256-FINoED7C2PXeDJf9sKD7bk+b5FGZMMqXFe3i2zLDqGw=";
+
+  nativeBuildInputs = [ libxslt docbook_xml_dtd_45 docbook_xsl ];
+
+  buildInputs = [ gtk3 libxfce4ui vte xfconf pcre2 ];
+
+  meta = {
+    description = "A modern terminal emulator";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed-pulse/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed-pulse/default.nix
new file mode 100644
index 000000000000..fc9328e0e2f0
--- /dev/null
+++ b/nixpkgs/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 = "sha256-EgmTk19p9OBmz3rWQB0LoPhhoDm4u1V6/vvgitOzUuc=";
+
+  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/nixpkgs/pkgs/desktops/xfce/applications/xfdashboard/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfdashboard/default.nix
new file mode 100644
index 000000000000..527696c995ed
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfdashboard/default.nix
@@ -0,0 +1,45 @@
+{ mkXfceDerivation
+, clutter
+, libXcomposite
+, libXinerama
+, libXdamage
+, libX11
+, libwnck
+, libxfce4ui
+, libxfce4util
+, garcon
+, xfconf
+, gtk3
+, glib
+, dbus-glib
+}:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfdashboard";
+  version = "0.9.3";
+  rev-prefix = "";
+  odd-unstable = false;
+
+  sha256 = "sha256-xoeqVsfvBH2zzQqDUJGiA47hgVvEkvVf9bNYQmyiytk=";
+
+  buildInputs = [
+    clutter
+    dbus-glib
+    garcon
+    glib
+    gtk3
+    libX11
+    libXcomposite
+    libXdamage
+    libXinerama
+    libwnck
+    libxfce4ui
+    libxfce4util
+    xfconf
+  ];
+
+  meta = {
+    description = "Gnome shell like dashboard";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/art/xfce4-icon-theme/default.nix b/nixpkgs/pkgs/desktops/xfce/art/xfce4-icon-theme/default.nix
new file mode 100644
index 000000000000..6ece5d68c5fb
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/art/xfce4-icon-theme/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenv, fetchurl, pkg-config, intltool, gtk3, gnome-icon-theme, tango-icon-theme, hicolor-icon-theme, xfce }:
+
+let
+  category = "art";
+in
+
+stdenv.mkDerivation rec {
+  pname  = "xfce4-icon-theme";
+  version = "4.4.3";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-1HhmktVrilY/ZqXyYPHxOt4R6Gx4y8slqfml/EfPZvo=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+    gtk3
+  ];
+
+  buildInputs = [
+    gnome-icon-theme
+    tango-icon-theme
+    hicolor-icon-theme
+    # missing parent icon theme Industrial
+  ];
+
+  dontDropIconThemeCache = true;
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib; {
+    homepage = "https://www.xfce.org/";
+    description = "Icons for Xfce";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.eelco ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/art/xfwm4-themes/default.nix b/nixpkgs/pkgs/desktops/xfce/art/xfwm4-themes/default.nix
new file mode 100644
index 000000000000..5548be8f4abe
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/art/xfwm4-themes/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenv, fetchurl, xfce }:
+
+let
+  category = "art";
+in
+
+stdenv.mkDerivation rec {
+  pname  = "xfwm4-themes";
+  version = "4.10.0";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-MhTV8A6XA7XoyefDKH1gbe3scoXOtNXbMy6TraZv1XU=";
+  };
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib; {
+    homepage = "https://www.xfce.org/";
+    description = "Themes for Xfce";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.volth ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/automakeAddFlags.sh b/nixpkgs/pkgs/desktops/xfce/automakeAddFlags.sh
new file mode 100644
index 000000000000..92d5659d05ca
--- /dev/null
+++ b/nixpkgs/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/nixpkgs/pkgs/desktops/xfce/core/exo/default.nix b/nixpkgs/pkgs/desktops/xfce/core/exo/default.nix
new file mode 100644
index 000000000000..3ab53444a41a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/exo/default.nix
@@ -0,0 +1,31 @@
+{ mkXfceDerivation, docbook_xsl, glib, libxslt, gtk3
+, libxfce4ui, libxfce4util, perl }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "exo";
+  version = "4.16.2";
+
+  sha256 = "sha256-O9Ak1sGxcSl9xB//+/vqJjXuEv9WIZlnliVPSKRIV2c=";
+
+  nativeBuildInputs = [
+    libxslt
+    docbook_xsl
+  ];
+
+  buildInputs = [
+    gtk3
+    glib
+    libxfce4ui
+    libxfce4util
+
+    (perl.withPackages(ps: with ps; [ URI ])) # for $out/lib/xfce4/exo/exo-compose-mail
+  ];
+
+  # 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/nixpkgs/pkgs/desktops/xfce/core/garcon/default.nix b/nixpkgs/pkgs/desktops/xfce/core/garcon/default.nix
new file mode 100644
index 000000000000..a3ff8e0afd1f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/garcon/default.nix
@@ -0,0 +1,18 @@
+{ lib, mkXfceDerivation, gobject-introspection, gtk3, libxfce4ui, libxfce4util }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "garcon";
+  version = "4.16.1";
+
+  sha256 = "sha256-KimO6w82lkUBSzJbBMI3W8w1eXPARE1oVyJEUk6olow=";
+
+  nativeBuildInputs = [ gobject-introspection ];
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util ];
+
+  meta = {
+    description = "Xfce menu support library";
+    license = with lib.licenses; [ lgpl2Only fdl11Only ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/core/libxfce4ui/default.nix b/nixpkgs/pkgs/desktops/xfce/core/libxfce4ui/default.nix
new file mode 100644
index 000000000000..99cb0e7cc626
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/libxfce4ui/default.nix
@@ -0,0 +1,23 @@
+{ lib, mkXfceDerivation, gobject-introspection, vala, gtk3, libICE, libSM
+, libstartup_notification, libgtop, epoxy, libxfce4util, xfconf }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "libxfce4ui";
+  version = "4.16.0";
+
+  sha256 = "sha256-YmawNgkCM2xwoMKZrY9SxRhm2t0tsmk2j2+grW9zPCk=";
+
+  nativeBuildInputs = [ gobject-introspection vala ];
+  buildInputs =  [ gtk3 libstartup_notification libgtop epoxy xfconf ];
+  propagatedBuildInputs = [ libxfce4util libICE libSM ];
+
+  configureFlags = [
+    "--with-vendor-info='NixOS'"
+  ];
+
+  meta = with lib; {
+    description = "Widgets library for Xfce";
+    license = with licenses; [ lgpl2Plus lgpl21Plus ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/core/libxfce4util/default.nix b/nixpkgs/pkgs/desktops/xfce/core/libxfce4util/default.nix
new file mode 100644
index 000000000000..638c3a3158dd
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/libxfce4util/default.nix
@@ -0,0 +1,16 @@
+{ lib, mkXfceDerivation, gobject-introspection, vala }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "libxfce4util";
+  version = "4.16.0";
+
+  sha256 = "sha256-q2vH4k1OiergjITOaA9+m92C3Q/sbPoKVrAFxG60Gtw=";
+
+  nativeBuildInputs = [ gobject-introspection vala ];
+
+  meta = with lib; {
+    description = "Extension library for Xfce";
+    license = licenses.lgpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/core/thunar-volman/default.nix b/nixpkgs/pkgs/desktops/xfce/core/thunar-volman/default.nix
new file mode 100644
index 000000000000..31d25f97d37d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/thunar-volman/default.nix
@@ -0,0 +1,17 @@
+{ mkXfceDerivation, exo, gtk3, libgudev, libxfce4ui, libxfce4util, xfconf }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "thunar-volman";
+  version = "4.16.0";
+
+  buildInputs = [ exo gtk3 libgudev libxfce4ui libxfce4util xfconf ];
+
+  sha256 = "sha256-A9APQ5FLshb+MXQErCExegax6hqbHnlfI2hgtnWfVgA=";
+
+  odd-unstable = false;
+
+  meta = {
+    description = "Thunar extension for automatic management of removable drives and media";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/core/thunar/default.nix b/nixpkgs/pkgs/desktops/xfce/core/thunar/default.nix
new file mode 100644
index 000000000000..7efc64e942de
--- /dev/null
+++ b/nixpkgs/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
+, pcre
+, xfconf
+, gobject-introspection
+, makeWrapper
+, symlinkJoin
+, thunarPlugins ? []
+}:
+
+let unwrapped = mkXfceDerivation {
+  category = "xfce";
+  pname = "thunar";
+  version = "4.16.8";
+
+  sha256 = "sha256-KFx01vbVeGR+0U3DkUVRhO7pTv3R2h7qSe5VQE2b+OQ=";
+
+  nativeBuildInputs = [
+    docbook_xsl
+    gobject-introspection
+    libxslt
+  ];
+
+  buildInputs = [
+    exo
+    gdk-pixbuf
+    gtk3
+    libX11
+    libgudev
+    libnotify
+    libxfce4ui
+    libxfce4util
+    pcre
+    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/nixpkgs/pkgs/desktops/xfce/core/thunar/thunarx_plugins_directory.patch b/nixpkgs/pkgs/desktops/xfce/core/thunar/thunarx_plugins_directory.patch
new file mode 100644
index 000000000000..594a81c829ef
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/thunar/thunarx_plugins_directory.patch
@@ -0,0 +1,48 @@
+diff --git a/thunarx/thunarx-provider-factory.c b/thunarx/thunarx-provider-factory.c
+index 94b11545..1f66c982 100644
+--- a/thunarx/thunarx-provider-factory.c
++++ b/thunarx/thunarx-provider-factory.c
+@@ -150,12 +150,19 @@ static GList*
+ thunarx_provider_factory_load_modules (ThunarxProviderFactory *factory)
+ {
+   ThunarxProviderModule *module;
++  const gchar           *thunar_dir;
+   const gchar           *name;
+   GList                 *modules = NULL;
+   GList                 *lp;
+   GDir                  *dp;
+ 
+-  dp = g_dir_open (THUNARX_DIRECTORY, 0, NULL);
++  thunar_dir = g_getenv("THUNARX_MODULE_DIR");
++  if (NULL == thunar_dir)
++    {
++      thunar_dir = THUNARX_DIRECTORY;
++    }
++
++  dp = g_dir_open (thunar_dir, 0, NULL);
+   if (G_LIKELY (dp != NULL))
+     {
+       /* determine the types for all existing plugins */
+diff --git a/thunarx/thunarx-provider-module.c b/thunarx/thunarx-provider-module.c
+index 023ad2ae..b1d1be8f 100644
+--- a/thunarx/thunarx-provider-module.c
++++ b/thunarx/thunarx-provider-module.c
+@@ -174,10 +174,17 @@ static gboolean
+ thunarx_provider_module_load (GTypeModule *type_module)
+ {
+   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);
+   module->library = g_module_open (path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
+   g_free (path);
+ 
diff --git a/nixpkgs/pkgs/desktops/xfce/core/thunar/wrapper.nix b/nixpkgs/pkgs/desktops/xfce/core/thunar/wrapper.nix
new file mode 100644
index 000000000000..5381dceae4a4
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/thunar/wrapper.nix
@@ -0,0 +1,41 @@
+{ makeWrapper, symlinkJoin, thunar, thunarPlugins, lib }:
+
+symlinkJoin {
+  name = "thunar-with-plugins-${thunar.version}";
+
+  paths = [ thunar ] ++ thunarPlugins;
+
+  nativeBuildInputs = [ 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"
+
+    # NOTE: we need to remove the folder symlink itself and create
+    # a new folder before trying to substitute any file below.
+    rm -f "$out/lib/systemd/user"
+    mkdir -p "$out/lib/systemd/user"
+
+    # point to wrapped binary in all service files
+    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: ${concatStringsSep  ", " (map (x: x.name) thunarPlugins)})";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/core/tumbler/default.nix b/nixpkgs/pkgs/desktops/xfce/core/tumbler/default.nix
new file mode 100644
index 000000000000..a9642b3b52c6
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/tumbler/default.nix
@@ -0,0 +1,38 @@
+{ mkXfceDerivation
+, ffmpegthumbnailer
+, gdk-pixbuf
+, glib
+, freetype
+, libgsf
+, poppler
+, gst_all_1
+}:
+
+# TODO: add libopenraw
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "tumbler";
+  version = "4.16.0";
+
+  sha256 = "sha256-JLcmYjStF9obDoRHsxnZ1e9HPTeJUVKjnn5Ip1BBmPw=";
+
+  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/nixpkgs/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix
new file mode 100644
index 000000000000..4d0f61863e7d
--- /dev/null
+++ b/nixpkgs/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.16.1";
+
+  sha256 = "sha256-Xr8iiCDQYmxiLR2+TeuJggV1dLM/U4b7u7kpvFWT+uQ=";
+
+  nativeBuildInputs = [ exo ];
+  buildInputs = [ garcon gtk3 libxfce4ui libxfce4util xfconf ];
+
+  meta = {
+    description = "Appfinder for the Xfce4 Desktop Environment";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix
new file mode 100644
index 000000000000..fc8263abb4fc
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix
@@ -0,0 +1,40 @@
+{ mkXfceDerivation
+, autoreconfHook
+, libxslt
+, docbook_xsl
+, autoconf
+, automake
+, glib
+, gtk-doc
+, intltool
+, libtool
+}:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-dev-tools";
+  version = "4.16.0";
+
+  sha256 = "sha256-5r9dJfCgXosXoOAtNg1kaPWgFEAmyw/pWTtdG+K1h3A=";
+
+  nativeBuildInputs = [
+    autoreconfHook
+    libxslt
+    docbook_xsl
+  ];
+
+  propagatedBuildInputs = [
+    autoconf
+    automake
+    glib
+    gtk-doc
+    intltool
+    libtool
+  ];
+
+  setupHook = ./setup-hook.sh;
+
+  meta = {
+    description = "Autoconf macros and scripts to augment app build systems";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh b/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh
new file mode 100644
index 000000000000..3abf3172ea66
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh
@@ -0,0 +1,12 @@
+xdtEnvHook() {
+    addToSearchPath ACLOCAL_PATH $1/share/aclocal
+}
+
+envHooks+=(xdtEnvHook)
+
+xdtAutogenPhase() {
+    mkdir -p m4
+    NOCONFIGURE=1 xdt-autogen
+}
+
+preConfigurePhases+=(xdtAutogenPhase)
diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/default.nix
new file mode 100644
index 000000000000..417241235b95
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/default.nix
@@ -0,0 +1,57 @@
+{ mkXfceDerivation
+, exo
+, garcon
+, glib
+, gobject-introspection
+, gtk3
+, libdbusmenu-gtk3
+, libwnck
+, libxfce4ui
+, libxfce4util
+, tzdata
+, vala
+, xfconf
+}:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-panel";
+  version = "4.16.3";
+
+  sha256 = "sha256-PdE64WKdluKfof/l1wTPi7JdpJMYWIvi0yIdpyntsCA=";
+
+  nativeBuildInputs = [
+    gobject-introspection
+    vala
+  ];
+
+  buildInputs = [
+    exo
+    garcon
+    libdbusmenu-gtk3
+    libxfce4ui
+    libwnck
+    xfconf
+    tzdata
+  ];
+
+  propagatedBuildInputs = [
+    glib
+    gtk3
+    libxfce4util
+  ];
+
+  patches = [ ./xfce4-panel-datadir.patch ];
+
+  postPatch = ''
+    substituteInPlace plugins/clock/clock.c \
+       --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo"
+  '';
+
+  # Workaround https://bugzilla.xfce.org/show_bug.cgi?id=15825
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  meta = {
+    description = "Panel for the Xfce desktop environment";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/xfce4-panel-datadir.patch b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/xfce4-panel-datadir.patch
new file mode 100644
index 000000000000..ed9df9ef36f3
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/xfce4-panel-datadir.patch
@@ -0,0 +1,24 @@
+diff --git a/panel/panel-module-factory.c b/panel/panel-module-factory.c
+index 529fe85..8c792b7 100644
+--- a/panel/panel-module-factory.c
++++ b/panel/panel-module-factory.c
+@@ -39,6 +39,7 @@
+ #include <panel/panel-module.h>
+ #include <panel/panel-module-factory.h>
+ 
++#define DATADIR "/run/current-system/sw/share/xfce4"
+ #define PANEL_PLUGINS_DATA_DIR     (DATADIR G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "plugins")
+ #define PANEL_PLUGINS_DATA_DIR_OLD (DATADIR G_DIR_SEPARATOR_S "panel-plugins")
+ 
+diff --git a/panel/panel-module.c b/panel/panel-module.c
+index ba39320..519440b 100644
+--- a/panel/panel-module.c
++++ b/panel/panel-module.c
+@@ -35,6 +35,7 @@
+ #include <panel/panel-plugin-external-wrapper.h>
+ #include <panel/panel-plugin-external-46.h>
+ 
++#define LIBDIR "/run/current-system/sw/lib/xfce4"
+ #define PANEL_PLUGINS_LIB_DIR (LIBDIR G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "plugins")
+ #define PANEL_PLUGINS_LIB_DIR_OLD (LIBDIR G_DIR_SEPARATOR_S "panel-plugins")
+ 
diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix
new file mode 100644
index 000000000000..9877027c4033
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix
@@ -0,0 +1,23 @@
+{ mkXfceDerivation, automakeAddFlags, exo, gtk3, libnotify
+, libxfce4ui, libxfce4util, upower, xfconf, xfce4-panel }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-power-manager";
+  version = "4.16.0";
+
+  sha256 = "sha256-Qk++1db+agiU99p+QW8/WNnNqFVejV/BcnmgvfoB3OU=";
+
+  nativeBuildInputs = [ automakeAddFlags exo ];
+  buildInputs = [ gtk3 libnotify libxfce4ui libxfce4util upower xfconf xfce4-panel ];
+
+  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/nixpkgs/pkgs/desktops/xfce/core/xfce4-session/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-session/default.nix
new file mode 100644
index 000000000000..27eaf94b2599
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-session/default.nix
@@ -0,0 +1,22 @@
+{ mkXfceDerivation, polkit, exo, libxfce4util, libxfce4ui, xfconf, iceauth, gtk3, glib, libwnck, xfce4-session }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-session";
+  version = "4.16.0";
+
+  sha256 = "sha256-LIRAQ1YAkAHwIzC5NYV/0iFLkAP5V96wuTIrYTGbGy0=";
+
+  buildInputs = [ exo gtk3 glib libxfce4ui libxfce4util libwnck 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/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings/default.nix
new file mode 100644
index 000000000000..61382ba8c509
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings/default.nix
@@ -0,0 +1,40 @@
+{ mkXfceDerivation, exo, garcon, gtk3, glib
+, libnotify, libxfce4ui, libxfce4util, libxklavier
+, upower, xfconf, xf86inputlibinput }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-settings";
+  version = "4.16.2";
+
+  sha256 = "sha256-DkybMfkgsC8fJuhOWLzKO5f2Y8YtqzUXMH/npTv21yY=";
+
+  postPatch = ''
+    for f in xfsettingsd/pointers.c dialogs/mouse-settings/main.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/nixpkgs/pkgs/desktops/xfce/core/xfconf/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfconf/default.nix
new file mode 100644
index 000000000000..f255c5e5e58b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfconf/default.nix
@@ -0,0 +1,17 @@
+{ mkXfceDerivation, libxfce4util, gobject-introspection, vala }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfconf";
+  version = "4.16.0";
+
+  sha256 = "sha256-w8wnHFj1KBX6lCnGbVLgWPEo2ul4SwfemUYVHioTlwE=";
+
+  nativeBuildInputs = [ gobject-introspection vala ];
+
+  buildInputs = [ libxfce4util ];
+
+  meta = {
+    description = "Simple client-server configuration storage and query system for Xfce";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfdesktop/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfdesktop/default.nix
new file mode 100644
index 000000000000..bc6a19346ece
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfdesktop/default.nix
@@ -0,0 +1,25 @@
+{ mkXfceDerivation, exo, gtk3, libxfce4ui, libxfce4util, libwnck, xfconf, libnotify, garcon, thunar }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfdesktop";
+  version = "4.16.0";
+
+  sha256 = "sha256-w/JNjyAlxZqfVpm8EBt+ieHhUziOtfd//XHzIjJjy/4=";
+
+  buildInputs = [
+    exo
+    gtk3
+    libxfce4ui
+    libxfce4util
+    libwnck
+    xfconf
+    libnotify
+    garcon
+    thunar
+  ];
+
+  meta = {
+    description = "Xfce's desktop manager";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfwm4/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfwm4/default.nix
new file mode 100644
index 000000000000..cc998487f165
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfwm4/default.nix
@@ -0,0 +1,30 @@
+{ mkXfceDerivation, exo, librsvg, dbus-glib, epoxy, gtk3, libXdamage
+, libstartup_notification, libxfce4ui, libxfce4util, libwnck
+, libXpresent, xfconf }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfwm4";
+  version = "4.16.1";
+
+  sha256 = "sha256-CwRJk+fqu3iC4Vb6fKGOIZZk2hxTqYF3sNvm6WKqHdI=";
+
+  nativeBuildInputs = [ exo librsvg ];
+
+  buildInputs = [
+    dbus-glib
+    epoxy
+    gtk3
+    libXdamage
+    libstartup_notification
+    libxfce4ui
+    libxfce4util
+    libwnck
+    libXpresent
+    xfconf
+  ];
+
+  meta = {
+    description = "Window manager for Xfce";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/default.nix b/nixpkgs/pkgs/desktops/xfce/default.nix
new file mode 100644
index 000000000000..ccbeff5c37cb
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/default.nix
@@ -0,0 +1,226 @@
+{ config, lib, pkgs }:
+
+lib.makeScope pkgs.newScope (self: with self; {
+  #### NixOS support
+
+  updateScript = pkgs.genericUpdater;
+
+  gitLister = url:
+    "${pkgs.common-updater-scripts}/bin/list-git-tags ${url}";
+
+  archiveLister = category: name:
+    "${pkgs.common-updater-scripts}/bin/list-archive-two-level-versions https://archive.xfce.org/src/${category}/${name}";
+
+  mkXfceDerivation = callPackage ./mkXfceDerivation.nix { };
+
+  automakeAddFlags = pkgs.makeSetupHook { } ./automakeAddFlags.sh;
+
+  #### CORE
+
+  exo = callPackage ./core/exo { };
+
+  garcon = callPackage ./core/garcon { };
+
+  libxfce4ui = callPackage ./core/libxfce4ui { };
+
+  libxfce4util = callPackage ./core/libxfce4util { };
+
+  thunar = callPackage ./core/thunar {
+    thunarPlugins = [];
+  };
+
+  thunar-volman = callPackage ./core/thunar-volman { };
+
+  thunar-archive-plugin = callPackage ./thunar-plugins/archive { };
+
+  thunar-dropbox-plugin = callPackage ./thunar-plugins/dropbox { };
+
+  thunar-media-tags-plugin = callPackage ./thunar-plugins/media-tags { };
+
+  tumbler = callPackage ./core/tumbler { };
+
+  xfce4-panel = callPackage ./core/xfce4-panel { };
+
+  xfce4-session = callPackage ./core/xfce4-session { };
+
+  xfce4-settings = callPackage ./core/xfce4-settings { };
+
+  xfce4-power-manager = callPackage ./core/xfce4-power-manager { };
+
+  xfconf = callPackage ./core/xfconf { };
+
+  xfdesktop = callPackage ./core/xfdesktop { };
+
+  xfwm4 = callPackage ./core/xfwm4 { };
+
+  xfce4-appfinder = callPackage ./core/xfce4-appfinder { };
+
+  xfce4-dev-tools = callPackage ./core/xfce4-dev-tools {
+    mkXfceDerivation = mkXfceDerivation.override {
+      xfce4-dev-tools = null;
+    };
+  };
+
+  #### APPLICATIONS
+
+  catfish = callPackage ./applications/catfish { };
+
+  gigolo = callPackage ./applications/gigolo { };
+
+  mousepad = callPackage ./applications/mousepad { };
+
+  orage = callPackage ./applications/orage { };
+
+  parole = callPackage ./applications/parole { };
+
+  ristretto = callPackage ./applications/ristretto { };
+
+  xfce4-taskmanager = callPackage ./applications/xfce4-taskmanager { };
+
+  xfce4-dict = callPackage ./applications/xfce4-dict { };
+
+  xfce4-terminal = callPackage ./applications/xfce4-terminal { };
+
+  xfce4-screenshooter = callPackage ./applications/xfce4-screenshooter {
+    inherit (pkgs.gnome) libsoup;
+  };
+
+  xfdashboard = callPackage ./applications/xfdashboard {};
+
+  xfce4-volumed-pulse = callPackage ./applications/xfce4-volumed-pulse { };
+
+  xfce4-notifyd = callPackage ./applications/xfce4-notifyd { };
+
+  xfburn = callPackage ./applications/xfburn { };
+
+  xfce4-panel-profiles = callPackage ./applications/xfce4-panel-profiles { };
+
+  #### ART
+
+  xfce4-icon-theme = callPackage ./art/xfce4-icon-theme { };
+
+  xfwm4-themes = callPackage ./art/xfwm4-themes { };
+
+  #### PANEL PLUGINS
+
+  xfce4-battery-plugin = callPackage ./panel-plugins/xfce4-battery-plugin { };
+
+  xfce4-clipman-plugin = callPackage ./panel-plugins/xfce4-clipman-plugin { };
+
+  xfce4-cpufreq-plugin = callPackage ./panel-plugins/xfce4-cpufreq-plugin { };
+
+  xfce4-cpugraph-plugin = callPackage ./panel-plugins/xfce4-cpugraph-plugin { };
+
+  xfce4-datetime-plugin = callPackage ./panel-plugins/xfce4-datetime-plugin { };
+
+  xfce4-dockbarx-plugin = callPackage ./panel-plugins/xfce4-dockbarx-plugin { };
+
+  xfce4-embed-plugin = callPackage ./panel-plugins/xfce4-embed-plugin { };
+
+  xfce4-eyes-plugin = callPackage ./panel-plugins/xfce4-eyes-plugin { };
+
+  xfce4-fsguard-plugin = callPackage ./panel-plugins/xfce4-fsguard-plugin { };
+
+  xfce4-genmon-plugin = callPackage ./panel-plugins/xfce4-genmon-plugin { };
+
+  xfce4-hardware-monitor-plugin = callPackage ./panel-plugins/xfce4-hardware-monitor-plugin { };
+
+  xfce4-i3-workspaces-plugin = callPackage ./panel-plugins/xfce4-i3-workspaces-plugin { };
+
+  xfce4-namebar-plugin = callPackage ./panel-plugins/xfce4-namebar-plugin { };
+
+  xfce4-netload-plugin = callPackage ./panel-plugins/xfce4-netload-plugin { };
+
+  xfce4-notes-plugin = callPackage ./panel-plugins/xfce4-notes-plugin { };
+
+  xfce4-mailwatch-plugin = callPackage ./panel-plugins/xfce4-mailwatch-plugin { };
+
+  xfce4-mpc-plugin = callPackage ./panel-plugins/xfce4-mpc-plugin { };
+
+  xfce4-sensors-plugin = callPackage ./panel-plugins/xfce4-sensors-plugin { };
+
+  xfce4-systemload-plugin = callPackage ./panel-plugins/xfce4-systemload-plugin { };
+
+  xfce4-timer-plugin = callPackage ./panel-plugins/xfce4-timer-plugin { };
+
+  xfce4-verve-plugin = callPackage ./panel-plugins/xfce4-verve-plugin { };
+
+  xfce4-xkb-plugin = callPackage ./panel-plugins/xfce4-xkb-plugin { };
+
+  xfce4-weather-plugin = callPackage ./panel-plugins/xfce4-weather-plugin { };
+
+  xfce4-whiskermenu-plugin = callPackage ./panel-plugins/xfce4-whiskermenu-plugin { };
+
+  xfce4-windowck-plugin = callPackage ./panel-plugins/xfce4-windowck-plugin { };
+
+  xfce4-pulseaudio-plugin = callPackage ./panel-plugins/xfce4-pulseaudio-plugin { };
+
+} // lib.optionalAttrs (config.allowAliases or true) {
+  #### ALIASES - added 2018-01
+
+  terminal = xfce4-terminal;
+  thunar-build = thunar-bare;
+  thunarx-2-dev = thunar-build;
+  thunar_volman = thunar-volman;
+  xfce4panel = xfce4-panel;
+  xfce4session = xfce4-session;
+  xfce4settings = xfce4-settings;
+  xfce4_power_manager = xfce4-power-manager;
+  xfce4_appfinder = xfce4-appfinder;
+  xfce4_dev_tools = xfce4-dev-tools;
+  xfce4mixer = xfce4-mixer;
+  xfce4mixer_pulse = xfce4-mixer-pulse;
+  xfce4notifyd = xfce4-notifyd;
+  xfce4taskmanager = xfce4-taskmanager;
+  xfce4terminal = xfce4-terminal;
+  xfce4volumed_pulse = xfce4-volumed-pulse;
+  xfce4icontheme = xfce4-icon-theme;
+  xfwm4themes = xfwm4-themes;
+
+  xfce4_battery_plugin = xfce4-battery-plugin;
+  xfce4_clipman_plugin = xfce4-clipman-plugin;
+  xfce4_cpufreq_plugin = xfce4-cpufreq-plugin;
+  xfce4_cpugraph_plugin = xfce4-cpugraph-plugin;
+  xfce4_datetime_plugin = xfce4-datetime-plugin;
+  xfce4_dockbarx_plugin = xfce4-dockbarx-plugin;
+  xfce4_embed_plugin = xfce4-embed-plugin;
+  xfce4_eyes_plugin = xfce4-eyes-plugin;
+  xfce4_fsguard_plugin = xfce4-fsguard-plugin;
+  xfce4_genmon_plugin = xfce4-genmon-plugin;
+  xfce4_hardware_monitor_plugin = xfce4-hardware-monitor-plugin;
+  xfce4_namebar_plugin = xfce4-namebar-plugin;
+  xfce4_netload_plugin = xfce4-netload-plugin;
+  xfce4_notes_plugin = xfce4-notes-plugin;
+  xfce4_mailwatch_plugin = xfce4-mailwatch-plugin;
+  xfce4_mpc_plugin = xfce4-mpc-plugin;
+  xfce4_sensors_plugin = xfce4-sensors-plugin;
+  xfce4_systemload_plugin = xfce4-systemload-plugin;
+  xfce4_timer_plugin = xfce4-timer-plugin;
+  xfce4_verve_plugin = xfce4-verve-plugin;
+  xfce4_xkb_plugin = xfce4-xkb-plugin;
+  xfce4_weather_plugin = xfce4-weather-plugin;
+  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
+  xfce4-dict-plugin = throw "deprecated 2020-04-19: xfce4-dict-plugin is now part of xfce4-dict."; # added 2020-04-19
+
+  # 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.gnome) vte gtksourceview;
+  xfce4-mixer-pulse = xfce4-mixer;
+  thunar-bare = thunar.override {
+    thunarPlugins = [];
+  };
+
+  # added 2019-11-30
+  inherit (pkgs) dconf;
+})
diff --git a/nixpkgs/pkgs/desktops/xfce/mkXfceDerivation.nix b/nixpkgs/pkgs/desktops/xfce/mkXfceDerivation.nix
new file mode 100644
index 000000000000..8ff0d83cae38
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/mkXfceDerivation.nix
@@ -0,0 +1,60 @@
+{ lib, stdenv, fetchFromGitLab, pkg-config, xfce4-dev-tools, hicolor-icon-theme, xfce, wrapGAppsHook }:
+
+{ category
+, pname
+, version
+, attrPath ? "xfce.${pname}"
+, rev-prefix ? "${pname}-"
+, rev ? "${rev-prefix}${version}"
+, sha256
+, odd-unstable ? true
+, patchlevel-unstable ? true
+, ...
+} @ args:
+
+let
+  inherit (builtins) filter getAttr head isList;
+  inherit (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 {
+    inherit pname version;
+
+    nativeBuildInputs = [ pkg-config xfce4-dev-tools wrapGAppsHook ];
+    buildInputs = [ hicolor-icon-theme ];
+    configureFlags = [ "--enable-maintainer-mode" ];
+
+    src = fetchFromGitLab {
+      domain = "gitlab.xfce.org";
+      owner = category;
+      repo = pname;
+      inherit rev sha256;
+    };
+
+    enableParallelBuilding = true;
+    outputs = [ "out" "dev" ];
+
+    pos = builtins.unsafeGetAttrPos "pname" args;
+
+    passthru.updateScript = xfce.updateScript {
+      inherit pname version attrPath rev-prefix odd-unstable patchlevel-unstable;
+      versionLister = xfce.gitLister src.meta.homepage;
+    };
+
+    meta = with lib; {
+      homepage = "https://gitlab.xfce.org/${category}/${pname}";
+      license = licenses.gpl2Plus; # some libraries are under LGPLv2+
+      platforms = platforms.linux;
+    };
+  };
+
+  publicArgs = removeAttrs args [ "category" "pname" "sha256" ];
+in
+
+stdenv.mkDerivation (recursiveUpdate template publicArgs // concatAttrLists [ template args ])
+# TODO [ AndersonTorres ]: verify if it allows using hash attribute as an option to sha256
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix
new file mode 100644
index 000000000000..ffb0118edee8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix
@@ -0,0 +1,16 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-battery-plugin";
+  version = "1.1.4";
+  rev-prefix = "xfce4-battery-plugin-";
+  odd-unstable = false;
+  sha256 = "sha256-LwwlyWhtVM+OHR9KtE4DPyU5V/dMOjcgSjsI3o7qfk8=";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+
+  meta = {
+    description = "Battery plugin for Xfce panel";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix
new file mode 100644
index 000000000000..7f18009c51d2
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix
@@ -0,0 +1,14 @@
+{ mkXfceDerivation, libXtst, libxfce4ui, xfce4-panel, xfconf }:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-clipman-plugin";
+  version = "1.6.2";
+  sha256 = "sha256-RpFVJSq/DxyA5ne1h+Nr3xfL+DTzg1cTqIDVOPC/pF4=";
+
+  buildInputs = [ libXtst libxfce4ui xfce4-panel xfconf ];
+
+  meta = {
+    description = "Clipboard manager for Xfce panel";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin/default.nix
new file mode 100644
index 000000000000..358d2b64e446
--- /dev/null
+++ b/nixpkgs/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.5";
+  sha256 = "sha256-r783SIGbVKxmLjCxexrMWjYdK7EgbgcHDFTG8KGjWMc=";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+
+  meta = {
+    description = "CPU Freq load plugin for Xfce panel";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin/default.nix
new file mode 100644
index 000000000000..1a8842f5c86e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, glib
+, exo
+, libXtst
+, xorgproto
+, libxfce4util
+, xfce4-panel
+, libxfce4ui
+, xfconf
+, gtk3
+, hicolor-icon-theme
+, xfce
+}:
+
+let
+  category = "panel-plugins";
+in stdenv.mkDerivation rec {
+  pname  = "xfce4-cpugraph-plugin";
+  version = "1.2.3";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-+wzM2aZ4E2JW7dDwT5ReYRqwqpEoN/V0E+87sPUVYIw=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    glib
+    exo
+    libXtst
+    xorgproto
+    libxfce4util
+    libxfce4ui
+    xfce4-panel
+    xfconf
+    gtk3
+    hicolor-icon-theme
+  ];
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/panel-plugins/xfce4-cpugraph-plugin";
+    description = "CPU graph show for Xfce panel";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin/default.nix
new file mode 100644
index 000000000000..2626ea749971
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin/default.nix
@@ -0,0 +1,31 @@
+{ mkXfceDerivation
+, lib
+, intltool
+, libxfce4ui
+, xfce4-panel
+, gettext
+}:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-datetime-plugin";
+  version = "0.8.1";
+
+  rev-prefix = "xfce4-datetime-plugin-";
+  sha256 = "sha256-qmZit7cCGnVTzdzPTiAiruBWlMLWzZEXJtFqAesaARo=";
+
+  nativeBuildInputs = [
+    gettext
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4ui
+    xfce4-panel
+  ];
+
+  meta = with lib; {
+    description = "Shows the date and time in the panel, and a calendar appears when you left-click on it";
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin/default.nix
new file mode 100644
index 000000000000..41f71ec2f907
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, bash
+, dockbarx
+, gobject-introspection
+, keybinder3
+, pkg-config
+, python3Packages
+, vala_0_48
+, wafHook
+, wrapGAppsHook
+, xfce
+}:
+
+stdenv.mkDerivation rec {
+  pname = "xfce4-dockbarx-plugin";
+  version = "${ver}-${rev}";
+  ver = "0.6";
+  rev = "5213876151f1836f044e9902a22d1e682144c1e0";
+
+  src = fetchFromGitHub {
+    owner = "xuzhen";
+    repo = "xfce4-dockbarx-plugin";
+    rev = rev;
+    sha256 = "sha256-VqtGcBRjvpCO9prVHOv6Gt1rAZtcAgkQkVCoR6ykC2k=";
+  };
+
+  pythonPath = [
+    dockbarx
+    python3Packages.pygobject3
+  ];
+
+  nativeBuildInputs = [
+    gobject-introspection
+    pkg-config
+    python3Packages.wrapPython
+    vala_0_48
+    wafHook
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    keybinder3
+    python3Packages.python
+    xfce.xfce4-panel
+    xfce.xfconf
+  ]
+  ++ pythonPath;
+
+  postPatch = ''
+    substituteInPlace wscript           --replace /usr/share/            "\''${PREFIX}/share/"
+    substituteInPlace src/dockbarx.vala --replace /usr/share/            $out/share/
+    substituteInPlace src/dockbarx.vala --replace '/usr/bin/env python3' ${bash}/bin/bash
+  '';
+
+  postFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+    wrapPythonProgramsIn "$out/share/xfce4/panel/plugins" "$out $pythonPath"
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/xuzhen/xfce4-dockbarx-plugin";
+    description = "Plugins to embed DockbarX into xfce4-panel";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin/default.nix
new file mode 100644
index 000000000000..00738ccbc629
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, libxfce4util
+, xfce4-panel
+, libxfce4ui
+, gtk2
+, xfce
+}:
+
+let
+  category = "panel-plugins";
+in stdenv.mkDerivation rec {
+  pname  = "xfce4-embed-plugin";
+  version = "1.6.0";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-x2ffY2DoGUsyvCSCPdAAl17boMr+Ulwj14VAKTWe4ig=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4util
+    libxfce4ui
+    xfce4-panel
+    gtk2
+  ];
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib;{
+    homepage = "https://docs.xfce.org/panel-plugins/xfce4-embed-plugin";
+    description = "Embed arbitrary app windows on Xfce panel";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    broken = true; # unmaintained plugin; no longer compatible with xfce 4.16
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin/default.nix
new file mode 100644
index 000000000000..4bc039940489
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, libxfce4util
+, xfce4-panel
+, libxfce4ui
+, xfconf
+, gtk3
+, xfce
+}:
+
+let
+  category = "panel-plugins";
+in stdenv.mkDerivation rec {
+  pname  = "xfce4-eyes-plugin";
+  version = "4.5.1";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-TbeAF45Sk5HVPaGA5JOGkE5ppaM7O9UYWDXQp+b/WsU=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4util
+    libxfce4ui
+    xfce4-panel
+    xfconf
+    gtk3
+  ];
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/panel-plugins/xfce4-eyes-plugin";
+    description = "Rolling eyes (following mouse pointer) plugin for the Xfce panel";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin/default.nix
new file mode 100644
index 000000000000..1e98a5a62121
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, libxfce4util
+, xfce4-panel
+, libxfce4ui
+, xfconf
+, gtk3
+, xfce
+}:
+
+let
+  category = "panel-plugins";
+in stdenv.mkDerivation rec {
+  pname  = "xfce4-fsguard-plugin";
+  version = "1.1.2";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-Z9jmohmnEXxZaTrbxZw5puujHj8YpUmRie9O8otVQQU=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4util
+    libxfce4ui
+    xfce4-panel
+    xfconf
+    gtk3
+  ];
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/panel-plugins/xfce4-fsguard-plugin";
+    description = "Filesystem usage monitor plugin for the Xfce panel";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin/default.nix
new file mode 100644
index 000000000000..e190df90b83b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, libxfce4util
+, xfce4-panel
+, libxfce4ui
+, gtk3
+, xfce
+}:
+
+let
+  category = "panel-plugins";
+in stdenv.mkDerivation rec {
+  pname  = "xfce4-genmon-plugin";
+  version = "4.1.1";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-shGf0P8Z+ik7l+yXsN6OJBeZ4IuGIYUVFnxWi9m1ATU=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4util
+    libxfce4ui
+    xfce4-panel
+    gtk3
+  ];
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/panel-plugins/xfce4-genmon-plugin";
+    description = "Generic monitor plugin for the Xfce panel";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin/default.nix
new file mode 100644
index 000000000000..8ff68c21d61b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin/default.nix
@@ -0,0 +1,41 @@
+{ lib, stdenv, fetchurl, pkg-config, intltool, autoreconfHook, gnome2, gtkmm2,
+  libgtop, libxfce4ui, libxfce4util, xfce4-panel, lm_sensors, xfce
+}:
+
+stdenv.mkDerivation rec {
+  pname  = "xfce4-hardware-monitor-plugin";
+  version = "1.6.0";
+
+  src = fetchurl {
+    url = "https://git.xfce.org/archive/${pname}/snapshot/${pname}-${version}.tar.gz";
+    sha256 = "sha256-aLpNY+qUhmobGb8OkbjtJxQMDO9xSlvurVjNLgOpZ4Y=";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    gtkmm2
+    gnome2.libgnomecanvas
+    gnome2.libgnomecanvasmm
+    libgtop
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    lm_sensors
+   ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/xfce4-hardware-monitor-plugin";
+    description = "Hardware monitor plugin for the XFCE4 panel";
+    license = licenses.gpl3Only;
+    platforms = platforms.unix;
+    broken = true; # unmaintained plugin; no longer compatible with xfce 4.16
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-i3-workspaces-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-i3-workspaces-plugin/default.nix
new file mode 100644
index 000000000000..136b91a8a2f8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-i3-workspaces-plugin/default.nix
@@ -0,0 +1,46 @@
+{ lib, stdenv, fetchFromGitHub, pkg-config, intltool, gtk3
+, libxfce4ui, libxfce4util, xfconf, xfce4-dev-tools, xfce4-panel
+, i3ipc-glib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "xfce4-i3-workspaces-plugin";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "denesb";
+    repo = "xfce4-i3-workspaces-plugin";
+    rev = version;
+    sha256 = "sha256-+tjxMr0UbE3BLdxBwNr2mZqKSQOOtw69FmN4rk4loyA=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    gtk3
+    xfconf
+    libxfce4ui
+    libxfce4util
+    xfce4-dev-tools
+    xfce4-panel
+    i3ipc-glib
+   ];
+
+  preConfigure = ''
+    ./autogen.sh
+    patchShebangs .
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    homepage = "https://github.com/denesb/xfce4-i3-workspaces-plugin";
+    description = "Workspace switcher plugin for xfce4-panel which can be used for the i3 window manager";
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.berbiche ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin/default.nix
new file mode 100644
index 000000000000..56d9a15aaada
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchurl, pkg-config, intltool, xfce4-panel, libxfce4ui,
+  exo, gnutls, libgcrypt, xfce }:
+
+let
+  category = "panel-plugins";
+in
+
+stdenv.mkDerivation rec {
+  pname  = "xfce4-mailwatch-plugin";
+  version = "1.3.0";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-IPkevv0ogLJ/Qh93MRWzdA9n3iv2D+rOOEG/0aCcvi4=";
+  };
+
+  nativeBuildInputs = [
+    intltool
+    pkg-config
+  ];
+
+  buildInputs = [
+    libxfce4ui
+    xfce4-panel
+    exo
+    gnutls
+    libgcrypt
+  ];
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/panel-plugins/xfce4-mailwatch-plugin";
+    description = "Mail watcher plugin for Xfce panel";
+    license = licenses.gpl2Only;
+    platforms = platforms.linux;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin/default.nix
new file mode 100644
index 000000000000..8012b14b1389
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchurl, pkg-config, intltool, libxfce4util, xfce4-panel,
+  libxfce4ui, gtk3, exo, xfce }:
+
+let
+  category = "panel-plugins";
+in
+
+stdenv.mkDerivation rec {
+  pname  = "xfce4-mpc-plugin";
+  version = "0.5.2";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-7v54t7a5UxKzpSgUt/Yy3JKXDBs+lTXeYWMVdJv2d2A=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4util
+    libxfce4ui
+    xfce4-panel
+    gtk3
+    exo
+  ];
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/panel-plugins/xfce4-mpc-plugin";
+    description = "MPD plugin for Xfce panel";
+    platforms = platforms.linux;
+    license = licenses.bsd2;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin/default.nix
new file mode 100644
index 000000000000..baba34212fdc
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, pkg-config, fetchFromGitHub, python3, vala_0_46
+, gtk3, libwnck, libxfce4util, xfce4-panel, wafHook, xfce }:
+
+stdenv.mkDerivation rec {
+  pname = "xfce4-namebar-plugin";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "HugLifeTiZ";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-aKrJzf9rwCyXAJsRIXdBzmJBASuXD5I5kZrp+atx4FA=";
+  };
+
+  nativeBuildInputs = [ pkg-config vala_0_46 wafHook python3 ];
+  buildInputs = [ gtk3 libwnck libxfce4util xfce4-panel ];
+
+  postPatch = ''
+    substituteInPlace src/namebar.vala --replace 'var dirs = Environment.get_system_data_dirs()' "string[] dirs = { \"$out/share\" }"
+    substituteInPlace src/preferences.vala --replace 'var dir_strings = Environment.get_system_data_dirs()' "string[] dir_strings = { \"$out/share\" }"
+  '';
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.gitLister src.meta.homepage;
+    rev-prefix = "v";
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/HugLifeTiZ/xfce4-namebar-plugin";
+    description = "Plugin which integrates titlebar and window controls into the xfce4-panel";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.volth ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix
new file mode 100644
index 000000000000..dc39001b8089
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix
@@ -0,0 +1,16 @@
+{ mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-netload-plugin";
+  version = "1.4.0";
+  rev-prefix = "xfce4-netload-plugin-";
+  odd-unstable = false;
+  sha256 = "sha256-HasaMymMCPidYkaAUK4gvD+Ka7NJdFOTeq43gJ1G3jo=";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+
+  meta = {
+    description = "Internet load speed plugin for Xfce4 panel";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin/default.nix
new file mode 100644
index 000000000000..6e84c83eafcc
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, xfce4-panel
+, libxfce4ui
+, xfconf
+, xfce
+}:
+
+let
+  category = "panel-plugins";
+in stdenv.mkDerivation rec {
+  pname  = "xfce4-notes-plugin";
+  version = "1.9.0";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-E/kJyUi2Oflt5kz3k+t0yxd5WJIB05M+/yFO6PNasIg=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4ui
+    xfce4-panel
+    xfconf
+  ];
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/panel-plugins/xfce4-notes-plugin";
+    description = "Sticky notes plugin for Xfce panel";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix
new file mode 100644
index 000000000000..ab3983721611
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix
@@ -0,0 +1,49 @@
+{ mkXfceDerivation
+, automakeAddFlags
+, dbus-glib
+, dbus
+, exo
+, gtk3
+, libpulseaudio
+, libnotify
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+, xfconf
+, keybinder3
+, glib
+}:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-pulseaudio-plugin";
+  version = "0.4.3";
+  sha256 = "sha256-+E1pyDP140xUbYPZXhdiEjdU0t8Un+IjV7Ek+hAX3OU=";
+
+  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 = [
+    exo
+    glib
+    gtk3
+    keybinder3
+    libnotify
+    libpulseaudio
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    xfconf
+  ];
+
+  meta = {
+    description = "Adjust the audio volume of the PulseAudio sound system";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin/default.nix
new file mode 100644
index 000000000000..3e592b60f141
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin/default.nix
@@ -0,0 +1,54 @@
+{ lib, stdenv, fetchurl, pkg-config, intltool, gtk3, libxfce4ui,
+  libxfce4util, xfce4-panel, libnotify, lm_sensors, hddtemp, netcat-gnu, xfce
+}:
+
+let
+  category = "panel-plugins";
+in
+
+stdenv.mkDerivation rec {
+  pname  = "xfce4-sensors-plugin";
+  version = "1.4.1";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-N9DcVp5zXkgqGFRcJOsc4CKdaRDjpNTB3uBoCZkjS+I=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    gtk3
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    libnotify
+    lm_sensors
+    hddtemp
+    netcat-gnu
+   ];
+
+  enableParallelBuilding = true;
+
+  configureFlags = [
+    "--with-pathhddtemp=${hddtemp}/bin/hddtemp"
+    "--with-pathnetcat=${netcat-gnu}/bin/netcat"
+  ];
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/panel-plugins/xfce4-sensors-plugin";
+    description = "A panel plug-in for different sensors using acpi, lm_sensors and hddtemp";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin/default.nix
new file mode 100644
index 000000000000..092985f5acd2
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, xfce4-panel
+, libxfce4ui
+, xfconf
+, xfce
+}:
+
+let
+  category = "panel-plugins";
+in stdenv.mkDerivation rec {
+  pname  = "xfce4-systemload-plugin";
+  version = "1.3.1";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-VtEAeAHVLXwrWhO7VHRfbX8G/aKLSc6TYUVjMGiBdlI=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4ui
+    xfce4-panel
+    xfconf
+  ];
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/panel-plugins/xfce4-systemload-plugin";
+    description = "System load plugin for Xfce panel";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin/default.nix
new file mode 100644
index 000000000000..a31824ab771a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenv, fetchurl, pkg-config, intltool, libxfce4util, xfce4-panel, libxfce4ui, gtk3, hicolor-icon-theme, xfce }:
+
+let
+  category = "panel-plugins";
+in
+
+stdenv.mkDerivation rec {
+  pname  = "xfce4-timer-plugin";
+  version = "1.7.1";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-S1LSkRsZSelFlxvmUzFV7mupnHcHjqx/1DsPKuyoJOM=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4util
+    libxfce4ui
+    xfce4-panel
+    gtk3
+    hicolor-icon-theme
+  ];
+
+  hardeningDisable = [ "format" ];
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/panel-plugins/xfce4-timer-plugin";
+    description = "Simple countdown and alarm plugin for the Xfce panel";
+    platforms = platforms.linux;
+    license = licenses.gpl2Plus;
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix
new file mode 100644
index 000000000000..838dba46c880
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, mkXfceDerivation
+, gtk3
+, libxfce4ui
+, pcre
+, libxfce4util
+, xfce4-panel
+}:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-verve-plugin";
+  version = "2.0.1";
+  rev-prefix = "";
+  sha256 = "sha256-YwUOSTZMoHsWWmi/ajQv/fX8a0IJoc3re3laVEmnX/M=";
+
+  buildInputs = [ gtk3 libxfce4ui pcre libxfce4util xfce4-panel ];
+
+  hardeningDisable = [ "format" ];
+
+  meta = with lib; {
+    description = "A command-line plugin";
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin/default.nix
new file mode 100644
index 000000000000..d300329d2876
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin/default.nix
@@ -0,0 +1,47 @@
+{ lib, stdenv, fetchurl, pkg-config, intltool, libxml2, libsoup, upower,
+  libxfce4ui, xfce4-panel, xfconf, hicolor-icon-theme, xfce }:
+
+let
+  category = "panel-plugins";
+in
+
+stdenv.mkDerivation rec {
+  pname  = "xfce4-weather-plugin";
+  version = "0.11.0";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-4yQuqVHVG8D97R0CpPH2Yr7Bah+xDIVfcb2mVBoRU/w=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxml2
+    libsoup
+    upower
+    libxfce4ui
+    xfce4-panel
+    xfconf
+    hicolor-icon-theme
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/panel-plugins/xfce4-weather-plugin";
+    description = "Weather plugin for the Xfce desktop environment";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix
new file mode 100644
index 000000000000..b9d6f5b23eb5
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix
@@ -0,0 +1,28 @@
+{ mkXfceDerivation, gettext, gtk3, glib, cmake, exo, garcon, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-whiskermenu-plugin";
+  version = "2.5.3";
+  rev-prefix = "v";
+  odd-unstable = false;
+  sha256 = "sha256-Hw4vdFChKOqllsxMS2Bi7UL48a3Z6oB8oCPKWwa8bJY=";
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ gettext exo garcon gtk3 glib libxfce4ui libxfce4util xfce4-panel xfconf ];
+
+  postPatch = ''
+    substituteInPlace panel-plugin/xfce4-popup-whiskermenu.in \
+      --replace gettext ${gettext}/bin/gettext
+  '';
+
+  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/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin/default.nix
new file mode 100644
index 000000000000..8f4751b1737b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin/default.nix
@@ -0,0 +1,50 @@
+{ lib, stdenv, fetchFromGitHub, pkg-config, intltool, python3, imagemagick, libwnck, libxfce4ui, xfce4-panel, xfconf, xfce4-dev-tools, xfce }:
+
+stdenv.mkDerivation rec {
+  pname  = "xfce4-windowck-plugin";
+  version = "0.4.10";
+
+  src = fetchFromGitHub {
+    owner = "invidian";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-luCQzqWX3Jl2MlBa3vi1q7z1XOhpFxE8PUxscoIyBlA=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    python3
+    imagemagick
+    libwnck
+    libxfce4ui
+    xfce4-panel
+    xfconf
+    xfce4-dev-tools
+  ];
+
+  preConfigure = ''
+    ./autogen.sh
+    patchShebangs .
+  '';
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.gitLister src.meta.homepage;
+    rev-prefix = "v";
+  };
+
+  meta = with lib; {
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/xfce4-windowck-plugin";
+    description = "Xfce plugins which allows to put the maximized window title and buttons on the panel";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.volth ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix
new file mode 100644
index 000000000000..8145f1a2af06
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, mkXfceDerivation
+, gtk3
+, librsvg
+, libwnck
+, libxklavier
+, garcon
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+, xfconf
+}:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-xkb-plugin";
+  version = "0.8.2";
+  rev-prefix = "";
+  sha256 = "sha256-xmCoNMxykeaThYEJo6BcbraFo9CruFZL6YPjovzb6hg=";
+
+  buildInputs = [
+    garcon
+    gtk3
+    librsvg
+    libxfce4ui
+    libxfce4util
+    libxklavier
+    libwnck
+    xfce4-panel
+    xfconf
+  ];
+
+  meta = with lib; {
+    description = "Allows you to setup and use multiple keyboard layouts";
+    maintainers = [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/thunar-plugins/archive/default.nix b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/archive/default.nix
new file mode 100644
index 000000000000..53d18b4d9b36
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/archive/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, mkXfceDerivation
+, gtk3
+, thunar
+, exo
+, libxfce4util
+, intltool
+, gettext
+}:
+
+mkXfceDerivation {
+  category = "thunar-plugins";
+  pname  = "thunar-archive-plugin";
+  version = "0.4.0";
+
+  sha256 = "sha256-aEAErm87K2k8TAz2ZtMQEhmzhOeR2hkJjcoBUFn8I50=";
+
+  nativeBuildInputs = [
+    intltool
+    gettext
+  ];
+
+  buildInputs = [
+    thunar
+    exo
+    gtk3
+    libxfce4util
+  ];
+
+  preConfigure = ''
+    ./autogen.sh
+  '';
+
+  meta = with lib; {
+    description = "Thunar plugin providing file context menus for archives";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix
new file mode 100644
index 000000000000..3e8004d3d538
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix
@@ -0,0 +1,45 @@
+{ lib, stdenv
+, fetchFromGitHub
+, pkg-config
+, gtk3
+, thunar
+, cmake
+, ninja
+, xfce
+}:
+
+stdenv.mkDerivation rec {
+  pname  = "thunar-dropbox";
+  version = "0.3.1";
+
+  src = fetchFromGitHub {
+    owner = "Jeinzi";
+    repo = "thunar-dropbox";
+    rev = version;
+    sha256 = "sha256-q7tw/1JgEn9SyjH1KBZl0tintWJjd3ctUs4JUuCWULs=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    cmake
+    ninja
+  ];
+
+  buildInputs = [
+    thunar
+    gtk3
+  ];
+
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.thunar-dropbox-plugin";
+    versionLister = xfce.gitLister src.meta.homepage;
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/Jeinzi/thunar-dropbox";
+    description = "A plugin that adds context-menu items for Dropbox to Thunar";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/thunar-plugins/media-tags/default.nix b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/media-tags/default.nix
new file mode 100644
index 000000000000..0ae0c3523365
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/media-tags/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, mkXfceDerivation
+, gtk3
+, thunar
+, exo
+, libxfce4util
+, intltool
+, gettext
+, taglib
+}:
+
+mkXfceDerivation {
+  category = "thunar-plugins";
+  pname = "thunar-media-tags-plugin";
+  version = "0.3.0";
+
+  sha256 = "sha256-jtgcHH5U5GOvzDVUwPEreMtTdk5DT6sXvFPDbzbF684=";
+
+  nativeBuildInputs = [
+    intltool
+    gettext
+  ];
+
+  buildInputs = [
+    thunar
+    exo
+    gtk3
+    libxfce4util
+    taglib
+  ];
+
+  meta = with lib; {
+    description = "Thunar plugin providing tagging and renaming features for media files";
+    maintainers = with maintainers; [ ncfavier ];
+  };
+}