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.nix89
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/gigolo/default.nix19
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/mousepad/default.nix53
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/orage/default.nix36
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/parole/default.nix50
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/ristretto/default.nix35
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfburn/default.nix19
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/default.nix30
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-notifyd/default.nix52
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-panel-profiles/default.nix31
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-screensaver/default.nix62
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix47
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-taskmanager/default.nix40
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix49
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed-pulse/default.nix18
-rw-r--r--nixpkgs/pkgs/desktops/xfce/applications/xfdashboard/default.nix46
-rw-r--r--nixpkgs/pkgs/desktops/xfce/art/xfce4-icon-theme/default.nix38
-rw-r--r--nixpkgs/pkgs/desktops/xfce/art/xfwm4-themes/default.nix23
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/exo/default.nix32
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/garcon/default.nix19
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/libxfce4ui/default.nix25
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/libxfce4util/default.nix18
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/libxfce4windowing/default.nix39
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/thunar-volman/default.nix18
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/thunar/default.nix70
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/thunar/wrapper.nix41
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/tumbler/default.nix44
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix17
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix42
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh14
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/default.nix54
-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.nix41
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-session/default.nix55
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-settings/default.nix52
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfconf/default.nix24
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfdesktop/default.nix26
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfwm4/default.nix31
-rw-r--r--nixpkgs/pkgs/desktops/xfce/default.nix176
-rw-r--r--nixpkgs/pkgs/desktops/xfce/mkXfceDerivation.nix61
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix32
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix45
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin/default.nix15
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin/default.nix38
-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.nix71
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-docklike-plugin/default.nix39
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin/default.nix49
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin/default.nix50
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin/default.nix52
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin/default.nix50
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-i3-workspaces-plugin/default.nix40
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin/default.nix58
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin/default.nix52
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin/default.nix43
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix30
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin/default.nix52
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix44
-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.nix46
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-time-out-plugin/default.nix33
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin/default.nix56
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix30
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin/default.nix66
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix48
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin/default.nix47
-rw-r--r--nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix38
-rw-r--r--nixpkgs/pkgs/desktops/xfce/thunar-plugins/archive/default.nix39
-rw-r--r--nixpkgs/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix43
-rw-r--r--nixpkgs/pkgs/desktops/xfce/thunar-plugins/media-tags/default.nix37
70 files changed, 2988 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..24148731291a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/catfish/default.nix
@@ -0,0 +1,89 @@
+{ lib
+, fetchFromGitLab
+, gitUpdater
+, file
+, which
+, intltool
+, gobject-introspection
+, findutils
+, xdg-utils
+, dconf
+, gtk3
+, python3Packages
+, xfconf
+, wrapGAppsHook
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "catfish";
+  version = "4.18.0";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.xfce.org";
+    owner = "apps";
+    repo = pname;
+    rev = "${pname}-${version}";
+    sha256 = "sha256-hfbIgSFn48++eGrJXzhXRxhWkrjgTYsr7BX/n0EXhGo=";
+  };
+
+  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
+  ];
+
+  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;
+
+  dontWrapGApps = true;
+
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  passthru.updateScript = gitUpdater { rev-prefix = "${pname}-"; };
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/apps/catfish/start";
+    description = "Handy file search tool";
+    mainProgram = "catfish";
+    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 = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..e63053deedf6
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/gigolo/default.nix
@@ -0,0 +1,19 @@
+{ lib, mkXfceDerivation, gtk3, glib }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "gigolo";
+  version = "0.5.3";
+  odd-unstable = false;
+
+  sha256 = "sha256-dxaFuKbSqhj/l5JV31cI+XzgdghfbcVwVtwmRiZeff8=";
+
+  buildInputs = [ gtk3 glib ];
+
+  meta = with lib; {
+    description = "A frontend to easily manage connections to remote filesystems";
+    mainProgram = "gigolo";
+    license = with licenses; [ gpl2Only ];
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..a312c0040e99
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/mousepad/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, mkXfceDerivation
+, fetchpatch2
+, gobject-introspection
+, glib
+, gtk3
+, gtksourceview4
+, gspell
+, libxfce4ui
+, xfconf
+, enablePolkit ? true
+, polkit
+}:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "mousepad";
+  version = "0.6.2";
+  odd-unstable = false;
+
+  sha256 = "sha256-A4siNxbTf9ObJJg8inPuH7Lo4dckLbFljV6aPFQxRto=";
+
+  patches = [
+    # shortcuts-plugin: Fix shortcuts-editor include
+    # https://gitlab.xfce.org/apps/mousepad/-/merge_requests/131
+    (fetchpatch2 {
+      url = "https://gitlab.xfce.org/apps/mousepad/-/commit/d2eb43ae4d692cc4753647111eb3deebfa26abbb.patch";
+      hash = "sha256-Ldn0ZVmCzqG8lOkeaazkodEMip3lTm/lJEhfsL8TyT8=";
+    })
+  ];
+
+  nativeBuildInputs = [ gobject-introspection ];
+
+  buildInputs = [
+    glib
+    gtk3
+    gtksourceview4
+    gspell
+    libxfce4ui # for shortcut plugin
+    xfconf # required by libxfce4kbd-private-3
+  ] ++ lib.optionals enablePolkit [
+    polkit
+  ];
+
+  # Use the GSettings keyfile backend rather than DConf
+  configureFlags = [ "--enable-keyfile-settings" ];
+
+  meta = with lib; {
+    description = "Simple text editor for Xfce";
+    mainProgram = "mousepad";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..130eb8464aeb
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/orage/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, mkXfceDerivation
+, gtk3
+, libical
+, libnotify
+, libxfce4ui
+, popt
+, tzdata
+}:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "orage";
+  version = "4.18.0";
+
+  sha256 = "sha256-vL9zexPbQKPqIzK5UqUIxkE9I7hEupkDOJehMgj2Leo=";
+
+  buildInputs = [
+    gtk3
+    libical
+    libnotify
+    libxfce4ui
+    popt
+  ];
+
+  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"
+  '';
+
+  meta = with lib; {
+    description = "Simple calendar application for Xfce";
+    mainProgram = "orage";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..41286052db41
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/parole/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, mkXfceDerivation
+, dbus
+, dbus-glib
+, gst_all_1
+, gtk3
+, libnotify
+, libX11
+, 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.18.1";
+
+  sha256 = "sha256-g+Wy90tHpCeylbU7aUa8578ehmuyWI5WlCK7YdJKlNQ=";
+
+  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
+    libX11
+    libxfce4ui
+    libxfce4util
+    taglib
+    xfconf
+  ];
+
+  meta = with lib; {
+    description = "Modern simple media player";
+    mainProgram = "parole";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..e5ee18d85da0
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/ristretto/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, mkXfceDerivation
+, gtk3
+, glib
+, libexif
+, libxfce4ui
+, libxfce4util
+, xfconf
+}:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "ristretto";
+  version = "0.13.2";
+  odd-unstable = false;
+
+  sha256 = "sha256-FKgNKQ2l4FGvEvmppf+RTxMXU6TfsZVFBVii4zr4ASc=";
+
+  buildInputs = [
+    glib
+    gtk3
+    libexif
+    libxfce4ui
+    libxfce4util
+    xfconf
+  ];
+
+  env.NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  meta = with lib; {
+    description = "A fast and lightweight picture-viewer for the Xfce desktop environment";
+    mainProgram = "ristretto";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..d2ba14d27dff
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfburn/default.nix
@@ -0,0 +1,19 @@
+{ lib, mkXfceDerivation, docbook_xsl, exo, gtk3, libburn, libisofs, libxfce4ui, libxslt }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfburn";
+  version = "0.7.0";
+  odd-unstable = false;
+
+  sha256 = "sha256-/CuV2tqja5fa2H2mmU9BP6tZHoCZZML5d2LL/CG3rno=";
+
+  nativeBuildInputs = [ libxslt docbook_xsl ];
+  buildInputs = [ exo gtk3 libburn libisofs libxfce4ui ];
+
+  meta = with lib; {
+    description = "Disc burner and project creator for Xfce";
+    mainProgram = "xfburn";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..58141262409d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-dict/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, mkXfceDerivation
+, glib
+, gtk3
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+}:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-dict";
+  version = "0.8.6";
+
+  sha256 = "sha256-a7St9iH+jzwq/llrMJkuqwgQrDFEjqebs/N6Lxa3dkI=";
+
+  buildInputs = [
+    glib
+    gtk3
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+  ];
+
+  meta = with lib; {
+    description = "A Dictionary Client for the Xfce desktop environment";
+    mainProgram = "xfce4-dict";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..c7a1f94177e8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-notifyd/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, mkXfceDerivation
+, dbus
+, glib
+, gtk3
+, gtk-layer-shell
+, libcanberra-gtk3
+, libnotify
+, libX11
+, libxfce4ui
+, libxfce4util
+, sqlite
+, xfce4-panel
+, xfconf
+}:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-notifyd";
+  version = "0.9.4";
+  odd-unstable = false;
+
+  sha256 = "sha256-oDvP2xE/KvIKl7D5hAwROxhqpli7G/UNd51YCdT7Dv4=";
+
+  buildInputs = [
+    dbus
+    gtk3
+    gtk-layer-shell
+    glib
+    libcanberra-gtk3
+    libnotify
+    libX11
+    libxfce4ui
+    libxfce4util
+    sqlite
+    xfce4-panel
+    xfconf
+  ];
+
+  env.NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  configureFlags = [
+    "--enable-dbus-start-daemon"
+    "--enable-sound"
+  ];
+
+  meta = with lib; {
+    description = "Simple notification daemon for Xfce";
+    mainProgram = "xfce4-notifyd-config";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..e223f8bc6663
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-panel-profiles/default.nix
@@ -0,0 +1,31 @@
+{ mkXfceDerivation, lib, python3, intltool, gettext,
+ gtk3, libxfce4ui, libxfce4util, pango, harfbuzz, gdk-pixbuf, atk }:
+
+let
+  pythonEnv = python3.withPackages(ps: [ ps.pygobject3 ps.psutil ]);
+  makeTypelibPath = lib.makeSearchPathOutput "lib/girepository-1.0" "lib/girepository-1.0";
+in mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-panel-profiles";
+  version = "1.0.14";
+
+  sha256 = "sha256-mGA70t2U4mqEbcrj/DDsPl++EKWyZ8YXzKzzVOrH5h8=";
+
+  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 = with lib; {
+    description = "Simple application to manage Xfce panel layouts";
+    mainProgram = "xfce4-panel-profiles";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/applications/xfce4-screensaver/default.nix b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-screensaver/default.nix
new file mode 100644
index 000000000000..8422f6661e02
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-screensaver/default.nix
@@ -0,0 +1,62 @@
+{ mkXfceDerivation
+, gobject-introspection
+, dbus-glib
+, garcon
+, glib
+, gtk3
+, libX11
+, libXScrnSaver
+, libXrandr
+, libwnck
+, libxfce4ui
+, libxfce4util
+, libxklavier
+, pam
+, python3
+, systemd
+, xfconf
+, lib
+}:
+
+let
+  # For xfce4-screensaver-configure
+  pythonEnv = python3.withPackages (pp: [ pp.pygobject3 ]);
+in
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-screensaver";
+  version = "4.18.3";
+
+  sha256 = "sha256-hOhWJoiKoeRgkhXaR8rnDpcJpStMD4BBdll4nwSA+EQ=";
+
+  nativeBuildInputs = [
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    dbus-glib
+    garcon
+    glib
+    gtk3
+    libX11
+    libXScrnSaver
+    libXrandr
+    libwnck
+    libxfce4ui
+    libxfce4util
+    libxklavier
+    pam
+    pythonEnv
+    systemd
+    xfconf
+  ];
+
+  configureFlags = [ "--without-console-kit" ];
+
+  makeFlags = [ "DBUS_SESSION_SERVICE_DIR=$(out)/etc" ];
+
+  meta = with lib; {
+    description = "Screensaver for Xfce";
+    maintainers = with maintainers; [ symphorien ] ++ teams.xfce.members;
+  };
+}
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..4a3f85ea0ce3
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, mkXfceDerivation
+, exo
+, libxml2
+, libsoup_3
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+, xfconf
+, curl
+, gnome
+, jq
+, xclip
+}:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-screenshooter";
+  version = "1.10.5";
+  odd-unstable = false;
+
+  sha256 = "sha256-x1uQIfiUNMYowrCLpwdt1IsHfJLn81f8I/4NBwX/z9k=";
+
+  buildInputs = [
+    exo
+    libxml2
+    libsoup_3
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    xfconf
+  ];
+
+  preFixup = ''
+    # For Imgur upload action
+    # https://gitlab.xfce.org/apps/xfce4-screenshooter/-/merge_requests/51
+    gappsWrapperArgs+=(
+      --prefix PATH : ${lib.makeBinPath [ curl gnome.zenity jq xclip ]}
+    )
+  '';
+
+  meta = with lib; {
+    description = "Screenshot utility for the Xfce desktop";
+    mainProgram = "xfce4-screenshooter";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..f6dfcec8be7f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-taskmanager/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, mkXfceDerivation
+, exo
+, glib
+, gtk3
+, libxfce4ui
+, xfconf
+, libwnck
+, libX11
+, libXmu
+}:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-taskmanager";
+  version = "1.5.7";
+  odd-unstable = false;
+
+  sha256 = "sha256-znadP7rrP/IxH22U1D9p6IHZ1J1JfXoCVk8iKUgrkJw=";
+
+  nativeBuildInputs = [
+    exo
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libxfce4ui
+    xfconf
+    libwnck
+    libX11
+    libXmu
+  ];
+
+  meta = with lib; {
+    description = "Easy to use task manager for Xfce";
+    mainProgram = "xfce4-taskmanager";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..a9d87d4f6847
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-terminal/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, mkXfceDerivation
+, glib
+, gtk3
+, gtk-layer-shell
+, libX11
+, libxfce4ui
+, vte
+, xfconf
+, pcre2
+, libxslt
+, docbook_xml_dtd_45
+, docbook_xsl
+, nixosTests
+}:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-terminal";
+  version = "1.1.3";
+  odd-unstable = false;
+
+  sha256 = "sha256-CUIQf22Lmb6MNPd2wk8LlHFNUhdIoC1gzVV6RDP2PfY=";
+
+  nativeBuildInputs = [
+    libxslt
+    docbook_xml_dtd_45
+    docbook_xsl
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    gtk-layer-shell
+    libX11
+    libxfce4ui
+    vte
+    xfconf
+    pcre2
+  ];
+
+  passthru.tests.test = nixosTests.terminal-emulators.xfce4-terminal;
+
+  meta = with lib; {
+    description = "A modern terminal emulator";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+    mainProgram = "xfce4-terminal";
+  };
+}
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..878975cebb1c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfce4-volumed-pulse/default.nix
@@ -0,0 +1,18 @@
+{ lib, mkXfceDerivation, gtk3, libnotify, libpulseaudio, keybinder3, xfconf }:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfce4-volumed-pulse";
+  version = "0.2.4";
+
+  sha256 = "sha256-NDIJRjKV5aoM2sLhZ6WmoynOc4yz55KpuiTJDMLMA5Y=";
+
+  buildInputs = [ gtk3 libnotify libpulseaudio keybinder3 xfconf ];
+
+  meta = with lib; {
+    description = "A volume keys control daemon for Xfce using pulseaudio";
+    mainProgram = "xfce4-volumed-pulse";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ abbradar ] ++ teams.xfce.members;
+  };
+}
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..fd92e2c92e8f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/applications/xfdashboard/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, mkXfceDerivation
+, clutter
+, libXcomposite
+, libXinerama
+, libXdamage
+, libX11
+, libwnck
+, libxfce4ui
+, libxfce4util
+, garcon
+, xfconf
+, gtk3
+, glib
+, dbus-glib
+}:
+
+mkXfceDerivation {
+  category = "apps";
+  pname = "xfdashboard";
+  version = "1.0.0";
+  rev-prefix = "";
+
+  sha256 = "sha256-iC41I0u9id9irUNyjuvRRzSldF3dzRYkaxb/fgptnq4=";
+
+  buildInputs = [
+    clutter
+    dbus-glib
+    garcon
+    glib
+    gtk3
+    libX11
+    libXcomposite
+    libXdamage
+    libXinerama
+    libwnck
+    libxfce4ui
+    libxfce4util
+    xfconf
+  ];
+
+  meta = with lib; {
+    description = "Gnome shell like dashboard";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..23ad1069fb74
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/art/xfce4-icon-theme/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenv, fetchurl, pkg-config, intltool, gtk3, gnome-icon-theme, tango-icon-theme, hicolor-icon-theme, httpTwoLevelsUpdater }:
+
+stdenv.mkDerivation rec {
+  pname  = "xfce4-icon-theme";
+  version = "4.4.3";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/art/${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 = httpTwoLevelsUpdater {
+    url = "https://archive.xfce.org/src/art/${pname}";
+  };
+
+  meta = with lib; {
+    homepage = "https://www.xfce.org/";
+    description = "Icons for Xfce";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ eelco ] ++ teams.xfce.members;
+  };
+}
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..6eda846ee311
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/art/xfwm4-themes/default.nix
@@ -0,0 +1,23 @@
+{ lib, stdenv, fetchurl, httpTwoLevelsUpdater }:
+
+stdenv.mkDerivation rec {
+  pname  = "xfwm4-themes";
+  version = "4.10.0";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/art/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-MhTV8A6XA7XoyefDKH1gbe3scoXOtNXbMy6TraZv1XU=";
+  };
+
+  passthru.updateScript = httpTwoLevelsUpdater {
+    url = "https://archive.xfce.org/src/art/${pname}";
+  };
+
+  meta = with lib; {
+    homepage = "https://www.xfce.org/";
+    description = "Themes for Xfce";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..e5d34969d4c8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/exo/default.nix
@@ -0,0 +1,32 @@
+{ lib, mkXfceDerivation, docbook_xsl, glib, libxslt, gtk3
+, libxfce4ui, libxfce4util, perl }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "exo";
+  version = "4.18.0";
+
+  sha256 = "sha256-oWlKeUD1v2qqb8vY+2Cu9VJ1iThFPVboP12m/ob5KSQ=";
+
+  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
+  env.NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  meta = with lib; {
+    description = "Application library for Xfce";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..ec0d76bfe7ff
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/garcon/default.nix
@@ -0,0 +1,19 @@
+{ lib, mkXfceDerivation, gobject-introspection, gtk3, libxfce4ui, libxfce4util }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "garcon";
+  version = "4.18.2";
+
+  sha256 = "sha256-J9f9MzZ1I9XIyvwuyINkvXDuXY6/MkjlH2Ct4yaEXsY=";
+
+  nativeBuildInputs = [ gobject-introspection ];
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util ];
+
+  meta = with lib; {
+    description = "Xfce menu support library";
+    license = with licenses; [ lgpl2Only fdl11Only ];
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..862d4f8cbc94
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/libxfce4ui/default.nix
@@ -0,0 +1,25 @@
+{ lib, mkXfceDerivation, gobject-introspection, vala, gtk3, libICE, libSM
+, libstartup_notification, libgtop, libepoxy, libxfce4util, xfconf }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "libxfce4ui";
+  version = "4.18.6";
+
+  sha256 = "sha256-ojmI745tKLHv26uL1qS/v6hAcLmAV/WF2NAtAhQRUkg=";
+
+  nativeBuildInputs = [ gobject-introspection vala ];
+  buildInputs =  [ gtk3 libstartup_notification libgtop libepoxy xfconf ];
+  propagatedBuildInputs = [ libxfce4util libICE libSM ];
+
+  configureFlags = [
+    "--with-vendor-info=NixOS"
+  ];
+
+  meta = with lib; {
+    description = "Widgets library for Xfce";
+    mainProgram = "xfce4-about";
+    license = with licenses; [ lgpl2Plus lgpl21Plus ];
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..02a4b98309a3
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/libxfce4util/default.nix
@@ -0,0 +1,18 @@
+{ lib, mkXfceDerivation, gobject-introspection, vala }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "libxfce4util";
+  version = "4.18.2";
+
+  sha256 = "sha256-JQ6biE1gxtB6+LWxRGfbUhgJhhITGhLr+8BxFW4/8SU=";
+
+  nativeBuildInputs = [ gobject-introspection vala ];
+
+  meta = with lib; {
+    description = "Extension library for Xfce";
+    mainProgram = "xfce4-kiosk-query";
+    license = licenses.lgpl2Plus;
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/core/libxfce4windowing/default.nix b/nixpkgs/pkgs/desktops/xfce/core/libxfce4windowing/default.nix
new file mode 100644
index 000000000000..c83cf06d4384
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/libxfce4windowing/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, mkXfceDerivation
+, gobject-introspection
+, wayland-scanner
+, glib
+, gtk3
+, libwnck
+, libX11
+, wayland
+, wlr-protocols
+}:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "libxfce4windowing";
+  version = "4.19.3";
+
+  sha256 = "sha256-nsobRyGeagUq1WHzYBq6vd9g5A65KEQC4cX+m7w0pqg=";
+
+  nativeBuildInputs = [
+    gobject-introspection
+    wayland-scanner
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libwnck
+    libX11
+    wayland
+    wlr-protocols
+  ];
+
+  meta = {
+    description = "Windowing concept abstraction library for X11 and Wayland";
+    license = lib.licenses.lgpl21Plus;
+    maintainers = lib.teams.xfce.members;
+  };
+}
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..33b34e5beee8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/thunar-volman/default.nix
@@ -0,0 +1,18 @@
+{ lib, mkXfceDerivation, exo, gtk3, libgudev, libxfce4ui, libxfce4util, xfconf }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "thunar-volman";
+  version = "4.18.0";
+
+  buildInputs = [ exo gtk3 libgudev libxfce4ui libxfce4util xfconf ];
+
+  sha256 = "sha256-NRVoakU8jTCJVe+iyJQwW1xPti2vjd/8n8CYrIYGII0=";
+
+  odd-unstable = false;
+
+  meta = with lib; {
+    description = "Thunar extension for automatic management of removable drives and media";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..fe3b23323c63
--- /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.18.10";
+
+  sha256 = "sha256-jne+jETPmM6VksdwJAxruji/GKH42iftWm74Ok9qX44=";
+
+  nativeBuildInputs = [
+    docbook_xsl
+    gobject-introspection
+    libxslt
+  ];
+
+  buildInputs = [
+    exo
+    gdk-pixbuf
+    gtk3
+    libX11
+    libgudev
+    libnotify
+    libxfce4ui
+    libxfce4util
+    pcre
+    xfconf
+  ];
+
+  configureFlags = [ "--with-custom-thunarx-dirs-enabled" ];
+
+  # 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 = with lib; {
+    description = "Xfce file manager";
+    mainProgram = "thunar";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+};
+
+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/wrapper.nix b/nixpkgs/pkgs/desktops/xfce/core/thunar/wrapper.nix
new file mode 100644
index 000000000000..43531f201232
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/thunar/wrapper.nix
@@ -0,0 +1,41 @@
+{ lib, makeWrapper, symlinkJoin, thunar, thunarPlugins }:
+
+symlinkJoin {
+  name = "thunar-with-plugins-${thunar.version}";
+
+  paths = [ thunar ] ++ thunarPlugins;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    wrapProgram "$out/bin/thunar" \
+      --set "THUNARX_DIRS" "$out/lib/thunarx-3"
+
+    wrapProgram "$out/bin/thunar-settings" \
+      --set "THUNARX_DIRS" "$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..e8c7ac2b4948
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/tumbler/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, mkXfceDerivation
+, ffmpegthumbnailer
+, gdk-pixbuf
+, glib
+, freetype
+, libgepub
+, libgsf
+, poppler
+, gst_all_1
+, libxfce4util
+}:
+
+# TODO: add libopenraw
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "tumbler";
+  version = "4.18.2";
+
+  sha256 = "sha256-thioE0q2qnV4weJFPz8OWoHIRuUcXnQEviwBtCWsSV4=";
+
+  buildInputs = [
+    libxfce4util
+    ffmpegthumbnailer
+    freetype
+    gdk-pixbuf
+    glib
+    gst_all_1.gst-plugins-base
+    libgepub # optional EPUB thumbnailer support
+    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 = with lib; {
+    description = "A D-Bus thumbnailer service";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..e716fab959a0
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-appfinder/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkXfceDerivation, exo, garcon, gtk3, libxfce4util, libxfce4ui, xfconf }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-appfinder";
+  version = "4.18.1";
+
+  sha256 = "sha256-CZEX1PzFsVt72Fkb4+5PiZjAcDisvYnbzFGFXjFL4sc=";
+
+  nativeBuildInputs = [ exo ];
+  buildInputs = [ garcon gtk3 libxfce4ui libxfce4util xfconf ];
+
+  meta = with lib; {
+    description = "Appfinder for the Xfce4 Desktop Environment";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..7504c8e09d4c
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, mkXfceDerivation
+, autoreconfHook
+, libxslt
+, docbook_xsl
+, autoconf
+, automake
+, glib
+, gtk-doc
+, intltool
+, libtool
+}:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-dev-tools";
+  version = "4.18.1";
+
+  sha256 = "sha256-JUyFlifNVhSnIMaI9qmgCtGIgkpmzYybMfuhPgJiDOg=";
+
+  nativeBuildInputs = [
+    autoreconfHook
+    libxslt
+    docbook_xsl
+  ];
+
+  propagatedBuildInputs = [
+    autoconf
+    automake
+    glib
+    gtk-doc
+    intltool
+    libtool
+  ];
+
+  setupHook = ./setup-hook.sh;
+
+  meta = with lib; {
+    description = "Autoconf macros and scripts to augment app build systems";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..05ddc6a172ff
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh
@@ -0,0 +1,14 @@
+xdtEnvHook() {
+    addToSearchPath ACLOCAL_PATH $1/share/aclocal
+}
+
+envHooks+=(xdtEnvHook)
+
+xdtAutogenPhase() {
+    mkdir -p m4
+    NOCONFIGURE=1 xdt-autogen
+}
+
+if [ -z "${dontUseXdtAutogenPhase-}" ]; then
+    preConfigurePhases+=(xdtAutogenPhase)
+fi
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..3d96f682dbca
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/default.nix
@@ -0,0 +1,54 @@
+{ lib
+, mkXfceDerivation
+, exo
+, garcon
+, gobject-introspection
+, gtk3
+, libdbusmenu-gtk3
+, libwnck
+, libxfce4ui
+, libxfce4util
+, tzdata
+, vala
+, xfconf
+}:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-panel";
+  version = "4.18.6";
+
+  sha256 = "sha256-eQLz/LJIx2WkzcSLytRdJdhtGv0woT48mdqG7eHB0U4=";
+
+  nativeBuildInputs = [
+    gobject-introspection
+    vala
+  ];
+
+  buildInputs = [
+    exo
+    garcon
+    libdbusmenu-gtk3
+    libxfce4ui
+    libwnck
+    xfconf
+    tzdata
+  ];
+
+  propagatedBuildInputs = [
+    gtk3
+    libxfce4util
+  ];
+
+  patches = [ ./xfce4-panel-datadir.patch ];
+
+  postPatch = ''
+    substituteInPlace plugins/clock/clock.c \
+       --replace-fail "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo"
+  '';
+
+  meta = with lib; {
+    description = "Panel for the Xfce desktop environment";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..c483c58c8172
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, mkXfceDerivation
+, gtk3
+, libnotify
+, libxfce4ui
+, libxfce4util
+, upower
+, xfconf
+, xfce4-panel
+}:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-power-manager";
+  version = "4.18.3";
+
+  sha256 = "sha256-CuW2siApho7u8P01t15dAiqNAiwQzAMZsEugYuKN4kM=";
+
+  buildInputs = [
+    gtk3
+    libnotify
+    libxfce4ui
+    libxfce4util
+    upower
+    xfconf
+    xfce4-panel
+  ];
+
+  # using /run/current-system/sw/bin instead of nix store path prevents polkit permission errors on
+  # rebuild.  See https://github.com/NixOS/nixpkgs/issues/77485
+  postPatch = ''
+    substituteInPlace src/org.xfce.power.policy.in2 --replace "@sbindir@" "/run/current-system/sw/bin"
+    substituteInPlace common/xfpm-brightness.c --replace "SBINDIR" "\"/run/current-system/sw/bin\""
+    substituteInPlace src/xfpm-suspend.c --replace "SBINDIR" "\"/run/current-system/sw/bin\""
+  '';
+
+  meta = with lib; {
+    description = "A power manager for the Xfce Desktop Environment";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..73ce969d05f7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-session/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, mkXfceDerivation
+, fetchpatch
+, polkit
+, exo
+, libxfce4util
+, libxfce4ui
+, xfconf
+, iceauth
+, gtk3
+, glib
+, libwnck
+, xfce4-session
+}:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-session";
+  version = "4.18.3";
+
+  sha256 = "sha256-qCkE3aVYVwphoO1ZAyzpL1ZtsLaP6XT1H1rlFoBI3yg=";
+
+  patches = [
+    # Add minimal xdg-desktop-portal conf file
+    # https://gitlab.xfce.org/xfce/xfce4-session/-/issues/181
+    (fetchpatch {
+      url = "https://gitlab.xfce.org/xfce/xfce4-session/-/commit/6451c8b21085631d8861e07ff4e1b2ef64a64ad3.patch";
+      sha256 = "sha256-t3opom0iv7QsKoivzk+nXbxI5uFhNmB8/Qwb4QHvcCQ=";
+    })
+  ];
+
+  buildInputs = [
+    exo
+    gtk3
+    glib
+    libxfce4ui
+    libxfce4util
+    libwnck
+    xfconf
+    polkit
+    iceauth
+  ];
+
+  configureFlags = [ "--with-xsession-prefix=${placeholder "out"}" ];
+
+  # See https://github.com/NixOS/nixpkgs/issues/36468
+  env.NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  passthru.xinitrc = "${xfce4-session}/etc/xdg/xfce4/xinitrc";
+
+  meta = with lib; {
+    description = "Session manager for Xfce";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..31aa4bc2e98a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, mkXfceDerivation
+, exo
+, garcon
+, gtk3
+, glib
+, libnotify
+, libxfce4ui
+, libxfce4util
+, libxklavier
+, upower
+, xfconf
+, xf86inputlibinput
+}:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-settings";
+  version = "4.18.4";
+
+  sha256 = "sha256-f6ldTmTSvfRjn6j/LKIoFI3cbYZFtNdnAq3dQewc948=";
+
+  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 = with lib; {
+    description = "Settings manager for Xfce";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..45873f7ef248
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfconf/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, mkXfceDerivation
+, libxfce4util
+, gobject-introspection
+, vala
+}:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfconf";
+  version = "4.18.3";
+
+  sha256 = "sha256-Iu/LHyk/lOvu8uJuJRDxIkabiX0vZB4H99vVKRiugVo=";
+
+  nativeBuildInputs = [ gobject-introspection vala ];
+
+  buildInputs = [ libxfce4util ];
+
+  meta = with lib; {
+    description = "Simple client-server configuration storage and query system for Xfce";
+    mainProgram = "xfconf-query";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..ed36d2b92b73
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfdesktop/default.nix
@@ -0,0 +1,26 @@
+{ lib, mkXfceDerivation, exo, gtk3, libxfce4ui, libxfce4util, libwnck, xfconf, libnotify, garcon, thunar }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfdesktop";
+  version = "4.18.1";
+
+  sha256 = "sha256-33G7X5kA3MCNJ9Aq9ZCafP0Qm/46iUmLFB8clhKwDz8=";
+
+  buildInputs = [
+    exo
+    gtk3
+    libxfce4ui
+    libxfce4util
+    libwnck
+    xfconf
+    libnotify
+    garcon
+    thunar
+  ];
+
+  meta = with lib; {
+    description = "Xfce's desktop manager";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..abd08f5a6f3d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfwm4/default.nix
@@ -0,0 +1,31 @@
+{ lib, mkXfceDerivation, exo, librsvg, dbus-glib, libepoxy, gtk3, libXdamage
+, libstartup_notification, libxfce4ui, libxfce4util, libwnck
+, libXpresent, xfconf }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfwm4";
+  version = "4.18.0";
+
+  sha256 = "sha256-nTPgxC0XMBJ48lPCeQgCvWWK1/2ZIoQOYsMeaxDpE1c=";
+
+  nativeBuildInputs = [ exo librsvg ];
+
+  buildInputs = [
+    dbus-glib
+    libepoxy
+    gtk3
+    libXdamage
+    libstartup_notification
+    libxfce4ui
+    libxfce4util
+    libwnck
+    libXpresent
+    xfconf
+  ];
+
+  meta = with lib; {
+    description = "Window manager for Xfce";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/default.nix b/nixpkgs/pkgs/desktops/xfce/default.nix
new file mode 100644
index 000000000000..a1416426a32a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/default.nix
@@ -0,0 +1,176 @@
+{ config
+, lib
+, pkgs
+, generateSplicesForMkScope
+, makeScopeWithSplicing'
+}:
+
+makeScopeWithSplicing' {
+  otherSplices = generateSplicesForMkScope "xfce";
+  f = (self:
+    let
+      inherit (self) callPackage;
+    in
+    {
+      #### NixOS support
+
+      genericUpdater = pkgs.genericUpdater;
+
+      mkXfceDerivation = callPackage ./mkXfceDerivation.nix { };
+
+      #### CORE
+
+      exo = callPackage ./core/exo { };
+
+      garcon = callPackage ./core/garcon { };
+
+      libxfce4ui = callPackage ./core/libxfce4ui { };
+
+      libxfce4util = callPackage ./core/libxfce4util { };
+
+      libxfce4windowing = callPackage ./core/libxfce4windowing { };
+
+      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 = self.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-screensaver = callPackage ./applications/xfce4-screensaver { };
+
+      xfce4-screenshooter = callPackage ./applications/xfce4-screenshooter { };
+
+      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-docklike-plugin = callPackage ./panel-plugins/xfce4-docklike-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-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-time-out-plugin = callPackage ./panel-plugins/xfce4-time-out-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 {
+      #### ALIASES
+
+      automakeAddFlags = throw "xfce.automakeAddFlags has been removed: this setup-hook is no longer used in Nixpkgs"; # added 2024-03-24
+
+      xinitrc = self.xfce4-session.xinitrc; # added 2019-11-04
+
+      thunar-bare = self.thunar.override { thunarPlugins = [ ]; }; # added 2019-11-04
+
+      xfce4-hardware-monitor-plugin = throw "xfce.xfce4-hardware-monitor-plugin has been removed: abandoned by upstream and does not build"; # added 2023-01-15
+    });
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/mkXfceDerivation.nix b/nixpkgs/pkgs/desktops/xfce/mkXfceDerivation.nix
new file mode 100644
index 000000000000..17939e5e2058
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/mkXfceDerivation.nix
@@ -0,0 +1,61 @@
+{ lib, stdenv, fetchFromGitLab, pkg-config, xfce4-dev-tools, hicolor-icon-theme, xfce, wrapGAppsHook, gitUpdater }:
+
+{ category
+, pname
+, version
+, attrPath ? "xfce.${pname}"
+, rev-prefix ? "${pname}-"
+, rev ? "${rev-prefix}${version}"
+, sha256
+, odd-unstable ? true
+, patchlevel-unstable ? true
+, passthru ? { }
+, meta ? { }
+, ...
+} @ 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 = {
+    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 = gitUpdater {
+        inherit rev-prefix odd-unstable patchlevel-unstable;
+      };
+    } // passthru;
+
+    meta = with lib; {
+      homepage = "https://gitlab.xfce.org/${category}/${pname}";
+      license = licenses.gpl2Plus; # some libraries are under LGPLv2+
+      platforms = platforms.linux;
+    } // meta;
+  };
+
+  publicArgs = removeAttrs args [ "category" "sha256" ];
+in
+
+stdenv.mkDerivation (publicArgs // template // 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..e2a28c8bad8b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, mkXfceDerivation
+, glib
+, gtk3
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+, xfconf
+}:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-battery-plugin";
+  version = "1.1.5";
+  rev-prefix = "xfce4-battery-plugin-";
+  odd-unstable = false;
+  sha256 = "sha256-X5EGDZaPZdTxiLXyeLwnMx97P6wPy+H09hi9+OFYyY0=";
+
+  buildInputs = [
+    glib
+    gtk3
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    xfconf
+  ];
+
+  meta = with lib; {
+    description = "Battery plugin for Xfce panel";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..74ff2d171044
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, mkXfceDerivation
+, wayland-scanner
+, glib
+, gtk3
+, libX11
+, libXtst
+, libxfce4ui
+, libxfce4util
+, qrencode
+, xfce4-panel
+, xfconf
+, wayland
+, wlr-protocols
+}:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-clipman-plugin";
+  version = "1.6.6";
+  sha256 = "sha256-wdEoM4etco+s0+dULkBvWJZ3WBCW3Ph2bdY0E/l5VRc=";
+
+  nativeBuildInputs = [
+    wayland-scanner
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libX11
+    libXtst
+    libxfce4ui
+    libxfce4util
+    qrencode
+    xfce4-panel
+    xfconf
+    wayland
+    wlr-protocols
+  ];
+
+  meta = with lib; {
+    description = "Clipboard manager for Xfce panel";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..bba028bfe536
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpufreq-plugin/default.nix
@@ -0,0 +1,15 @@
+{ lib, mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-cpufreq-plugin";
+  version = "1.2.8";
+  sha256 = "sha256-wEVv3zBS9PRLOMusFPzTnffVDvTaBnTCyGjstJRQRCo=";
+
+  buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
+
+  meta = with lib; {
+    description = "CPU Freq load plugin for Xfce panel";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..f138d8418966
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, mkXfceDerivation
+, exo
+, glib
+, gtk3
+, libXtst
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+, xfconf
+, xorgproto
+}:
+
+mkXfceDerivation rec {
+  category = "panel-plugins";
+  pname  = "xfce4-cpugraph-plugin";
+  version = "1.2.10";
+  rev-prefix = "xfce4-cpugraph-plugin-";
+  odd-unstable = false;
+  sha256 = "sha256-VPelWTtFHmU4ZgWLTzZKbtmQ4LOtVwJvpLG9rHtGoNs=";
+
+  buildInputs = [
+    exo
+    glib
+    gtk3
+    libXtst
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    xfconf
+    xorgproto
+  ];
+
+  meta = with lib; {
+    description = "CPU graph show for Xfce panel";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..eaf090c348cf
--- /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.3";
+
+  rev-prefix = "xfce4-datetime-plugin-";
+  sha256 = "sha256-dpN5ZN7VjgO1GQ6v8NXuBKACyIwIosaiVGtmLEb6auI=";
+
+  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 = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..2dad2d688eca
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin/default.nix
@@ -0,0 +1,71 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, bash
+, cmake
+, dockbarx
+, gobject-introspection
+, keybinder3
+, pkg-config
+, python3Packages
+, wrapGAppsHook
+, xfce
+}:
+
+stdenv.mkDerivation rec {
+  pname = "xfce4-dockbarx-plugin";
+  version = "0.7.2";
+
+  src = fetchFromGitHub {
+    owner = "xuzhen";
+    repo = "xfce4-dockbarx-plugin";
+    rev = "v${version}";
+    sha256 = "sha256-ZxaWORqA8LiM4CzakxClg5C6AsyHrzCGydgboCrC45g=";
+  };
+
+  pythonPath = [
+    dockbarx
+    python3Packages.pygobject3
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    gobject-introspection
+    pkg-config
+    python3Packages.wrapPython
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    keybinder3
+    python3Packages.python
+    xfce.xfce4-panel
+    xfce.xfconf
+  ]
+  ++ pythonPath;
+
+  postPatch = ''
+    # We execute the wrapped xfce4-panel-plug directly.
+    # Since argv is used for g_free() we also need to shift the indexes.
+    substituteInPlace src/xfce_panel_plugin.c \
+      --replace '"python3",' "" \
+      --replace "g_free(argv[3]);" "g_free(argv[2]);" \
+      --replace "g_free(argv[5]);" "g_free(argv[4]);"
+
+    patchShebangs src/xfce4-dockbarx-plug.py
+  '';
+
+  postFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+    chmod +x $out/share/dockbarx/xfce4-panel-plug
+    wrapPythonProgramsIn "$out/share/dockbarx" "$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 = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-docklike-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-docklike-plugin/default.nix
new file mode 100644
index 000000000000..0451afc54b22
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-docklike-plugin/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, mkXfceDerivation
+, cairo
+, glib
+, gtk3
+, libX11
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+, libwnck
+}:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-docklike-plugin";
+  version = "0.4.2";
+  sha256 = "sha256-M/V8cnEU/nSEDjQ3k8fWiklF5OuNg3uzzJMHBSZBiLU=";
+
+  buildInputs = [
+    cairo
+    glib
+    gtk3
+    libX11
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    libwnck
+  ];
+
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  meta = with lib; {
+    homepage = "https://docs.xfce.org/panel-plugins/xfce4-docklike-plugin/start";
+    description = "A modern, minimalist taskbar for Xfce";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..6d8e1199b99b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, libxfce4util
+, xfce4-panel
+, libxfce4ui
+, gtk2
+, gitUpdater
+}:
+
+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 = gitUpdater {
+    url = "https://gitlab.xfce.org/panel-plugins/${pname}";
+    rev-prefix = "${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 = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..cbf526e3d98b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, libxfce4util
+, xfce4-panel
+, libxfce4ui
+, xfconf
+, gtk3
+, gitUpdater
+}:
+
+let
+  category = "panel-plugins";
+in stdenv.mkDerivation rec {
+  pname  = "xfce4-eyes-plugin";
+  version = "4.6.0";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-rQ/wXYi6OTt8iSL4Iz7dM/wKTosAC2HeH486EMWuUyQ=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4util
+    libxfce4ui
+    xfce4-panel
+    xfconf
+    gtk3
+  ];
+
+  passthru.updateScript = gitUpdater {
+    url = "https://gitlab.xfce.org/panel-plugins/${pname}";
+    rev-prefix = "${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 = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..3abc25669e6b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, libxfce4util
+, xfce4-panel
+, libxfce4ui
+, xfconf
+, glib
+, gtk3
+, gitUpdater
+}:
+
+let
+  category = "panel-plugins";
+in stdenv.mkDerivation rec {
+  pname = "xfce4-fsguard-plugin";
+  version = "1.1.3";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-hO+LtHUiktZMDvEBut97FESHkL+gqF3mRNv6Iphuwlg=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4util
+    libxfce4ui
+    xfce4-panel
+    xfconf
+    glib
+    gtk3
+  ];
+
+  passthru.updateScript = gitUpdater {
+    url = "https://gitlab.xfce.org/panel-plugins/${pname}";
+    rev-prefix = "${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 = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..2219ce754af8
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, libxfce4util
+, xfce4-panel
+, xfconf
+, libxfce4ui
+, gtk3
+, gitUpdater
+}:
+
+let
+  category = "panel-plugins";
+in stdenv.mkDerivation rec {
+  pname  = "xfce4-genmon-plugin";
+  version = "4.2.0";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-lI0I7l8hQIR/EJtTG8HUzGJoSWkT6nYA08WtiQJaA2I=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4util
+    libxfce4ui
+    xfce4-panel
+    xfconf
+    gtk3
+  ];
+
+  passthru.updateScript = gitUpdater {
+    url = "https://gitlab.xfce.org/panel-plugins/${pname}";
+    rev-prefix = "${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 = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..5a6794bf79af
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-i3-workspaces-plugin/default.nix
@@ -0,0 +1,40 @@
+{ lib, stdenv, fetchFromGitHub, pkg-config, intltool, gtk3
+, libxfce4ui, libxfce4util, xfce4-dev-tools, xfce4-panel
+, i3ipc-glib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "xfce4-i3-workspaces-plugin";
+  version = "1.4.2";
+
+  src = fetchFromGitHub {
+    owner = "denesb";
+    repo = "xfce4-i3-workspaces-plugin";
+    rev = version;
+    sha256 = "sha256-CKpofupoJhe5IORJgij6gOGotB+dGkUDtTUdon8/JdE=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+    xfce4-dev-tools
+  ];
+
+  buildInputs = [
+    gtk3
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    i3ipc-glib
+   ];
+
+  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 = with maintainers; [ berbiche ] ++ teams.xfce.members;
+  };
+}
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..0a3e4029b347
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, xfce4-panel
+, libxfce4ui
+, libxfce4util
+, exo
+, glib
+, gtk3
+, gnutls
+, libgcrypt
+, gitUpdater
+}:
+
+let
+  category = "panel-plugins";
+in
+
+stdenv.mkDerivation rec {
+  pname = "xfce4-mailwatch-plugin";
+  version = "1.3.1";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-BUlk6f5MpmhIZACZHOHqAdB6rHuiNfSxTUqPfZgABGo=";
+  };
+
+  nativeBuildInputs = [
+    intltool
+    pkg-config
+  ];
+
+  buildInputs = [
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    exo
+    glib
+    gtk3
+    gnutls
+    libgcrypt
+  ];
+
+  passthru.updateScript = gitUpdater {
+    url = "https://gitlab.xfce.org/panel-plugins/${pname}";
+    rev-prefix = "${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 = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..6a1a750096f9
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, libxfce4util
+, xfce4-panel
+, libxfce4ui
+, glib
+, gtk3
+, gitUpdater
+}:
+
+let
+  category = "panel-plugins";
+in
+
+stdenv.mkDerivation rec {
+  pname = "xfce4-mpc-plugin";
+  version = "0.5.3";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-BGf7TRrNmC08PguJy0EBmUaFBST/Ge0PZYqNVse3Zk0=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4util
+    libxfce4ui
+    xfce4-panel
+    glib
+    gtk3
+  ];
+
+  passthru.updateScript = gitUpdater {
+    url = "https://gitlab.xfce.org/panel-plugins/${pname}";
+    rev-prefix = "${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 = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..032b29eaef3d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-namebar-plugin/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, pkg-config, fetchFromGitHub, python3, vala
+, gtk3, libwnck, libxfce4util, xfce4-panel, wafHook, xfce
+, gitUpdater
+}:
+
+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 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 = gitUpdater {
+    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 = with maintainers; [ ] ++ teams.xfce.members;
+    # Does not build with vala 0.48 or later
+    # libxfce4panel-2.0.vapi:92.3-92.41: error: overriding method `Xfce.PanelPlugin.remote_event' is incompatible
+    # with base method `bool Xfce.PanelPluginProvider.remote_event (string, GLib.Value, uint)': too few parameters.
+    #               public virtual signal bool remote_event (string name, GLib.Value value);
+    #               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    # Upstream has no activity since 20 May 2020
+    broken = true;
+  };
+}
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..e1baf7137e4b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, mkXfceDerivation
+, glib
+, gtk3
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+}:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-netload-plugin";
+  version = "1.4.1";
+  rev-prefix = "xfce4-netload-plugin-";
+  odd-unstable = false;
+  sha256 = "sha256-PwbyYi9EeSTKilVXlbseY2zkabcL7o2CGnk2DFFVI94=";
+
+  buildInputs = [
+    glib
+    gtk3
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+  ];
+
+  meta = with lib; {
+    description = "Internet load speed plugin for Xfce4 panel";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..4de8c0f77cda
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, glib
+, gtk3
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+, xfconf
+, gitUpdater
+}:
+
+let
+  category = "panel-plugins";
+in stdenv.mkDerivation rec {
+  pname  = "xfce4-notes-plugin";
+  version = "1.11.0";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-6zgkbesPyJU1+p/5uVPHYs7OIytVhdghD6uau/KCquM=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    xfconf
+  ];
+
+  passthru.updateScript = gitUpdater {
+    url = "https://gitlab.xfce.org/panel-plugins/${pname}";
+    rev-prefix = "${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 = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..b14ebb67374a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-pulseaudio-plugin/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, mkXfceDerivation
+, exo
+, gtk3
+, libcanberra
+, libpulseaudio
+, libnotify
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+, xfconf
+, keybinder3
+, glib
+}:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-pulseaudio-plugin";
+  version = "0.4.8";
+  sha256 = "sha256-7vcjARm0O+/hVNFzOpxcgAnqD+wRNg5/eqXLcq4t/iU=";
+
+  postPatch = ''
+    substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0
+  '';
+
+  buildInputs = [
+    exo
+    glib
+    gtk3
+    keybinder3
+    libcanberra
+    libnotify
+    libpulseaudio
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    xfconf
+  ];
+
+  meta = with lib; {
+    description = "Adjust the audio volume of the PulseAudio sound system";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..4a3148962efd
--- /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, gitUpdater
+}:
+
+let
+  category = "panel-plugins";
+in
+
+stdenv.mkDerivation rec {
+  pname  = "xfce4-sensors-plugin";
+  version = "1.4.4";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-bBYFpzjl30DghNCKyT+WLNRFCTOW3h6b+tx6tFiMNrY=";
+  };
+
+  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 = gitUpdater {
+    url = "https://gitlab.xfce.org/panel-plugins/${pname}";
+    rev-prefix = "${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";
+    mainProgram = "xfce4-sensors";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..9e1518f7be0a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, xfce4-panel
+, libxfce4ui
+, xfconf
+, gitUpdater
+}:
+
+let
+  category = "panel-plugins";
+in stdenv.mkDerivation rec {
+  pname  = "xfce4-systemload-plugin";
+  version = "1.3.2";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-uzA/wwIOBTrR+guPy/DXaBxVY7uPZJNX1qlaV3gCsHI=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4ui
+    xfce4-panel
+    xfconf
+  ];
+
+  passthru.updateScript = gitUpdater {
+    url = "https://gitlab.xfce.org/panel-plugins/${pname}";
+    rev-prefix = "${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 = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-time-out-plugin/default.nix b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-time-out-plugin/default.nix
new file mode 100644
index 000000000000..a5b656650170
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-time-out-plugin/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, mkXfceDerivation
+, glib
+, gtk3
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+, xfconf
+}:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-time-out-plugin";
+  version = "1.1.3";
+  rev-prefix = "xfce4-time-out-plugin-";
+  odd-unstable = false;
+  sha256 = "sha256-sm6y3t4nngZDg4Q8S3SVkNR++XkCKysQePN6Qei1OY8=";
+
+  buildInputs = [
+    glib
+    gtk3
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    xfconf
+  ];
+
+  meta = with lib; {
+    description = "Panel plug-in to take periodical breaks from the computer";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..997377f42b3e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin/default.nix
@@ -0,0 +1,56 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, libxfce4util
+, xfce4-panel
+, libxfce4ui
+, glib
+, gtk3
+, hicolor-icon-theme
+, gitUpdater
+}:
+
+let
+  category = "panel-plugins";
+in
+
+stdenv.mkDerivation rec {
+  pname = "xfce4-timer-plugin";
+  version = "1.7.2";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-/rO4wtOVBegWaDVAoyJr172ocMy8tMfQ9qv+7/XFi30=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    libxfce4util
+    libxfce4ui
+    xfce4-panel
+    glib
+    gtk3
+    hicolor-icon-theme
+  ];
+
+  hardeningDisable = [ "format" ];
+
+  passthru.updateScript = gitUpdater {
+    url = "https://gitlab.xfce.org/panel-plugins/${pname}";
+    rev-prefix = "${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 = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..a76d3cdb5344
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, mkXfceDerivation
+, glib
+, gtk3
+, libxfce4ui
+, libxfce4util
+, pcre2
+, xfce4-panel
+}:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-verve-plugin";
+  version = "2.0.3";
+  sha256 = "sha256-K335cs1vWKTNQjZlSUuhK8OmgTsKSzN87IZwS4RtvB8=";
+
+  buildInputs = [
+    glib
+    gtk3
+    libxfce4ui
+    libxfce4util
+    pcre2
+    xfce4-panel
+  ];
+
+  meta = with lib; {
+    description = "A command-line plugin";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..c76800fea4fc
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin/default.nix
@@ -0,0 +1,66 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, intltool
+, glib
+, gtk3
+, json_c
+, libxml2
+, libsoup
+, upower
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+, xfconf
+, hicolor-icon-theme
+, gitUpdater
+}:
+
+let
+  category = "panel-plugins";
+in
+
+stdenv.mkDerivation rec {
+  pname = "xfce4-weather-plugin";
+  version = "0.11.2";
+
+  src = fetchurl {
+    url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+    sha256 = "sha256-ZdQK/3hjVQhYqfnStgVPJ8aaPn5xKZF4WYf5pzu6h2s=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    json_c
+    libxml2
+    libsoup
+    upower
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    xfconf
+    hicolor-icon-theme
+  ];
+
+  enableParallelBuilding = true;
+
+  passthru.updateScript = gitUpdater {
+    url = "https://gitlab.xfce.org/panel-plugins/${pname}";
+    rev-prefix = "${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 = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..b1b068eaa55f
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix
@@ -0,0 +1,48 @@
+{ mkXfceDerivation
+, lib
+, cmake
+, accountsservice
+, exo
+, garcon
+, gettext
+, glib
+, gtk-layer-shell
+, gtk3
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+, xfconf
+}:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-whiskermenu-plugin";
+  version = "2.8.3";
+  rev-prefix = "v";
+  odd-unstable = false;
+  sha256 = "sha256-xRLvjRu/I+wsTWXUhrJUcrQz+JkZCYqoJSqYAYOztgg=";
+
+  nativeBuildInputs = [
+    cmake
+  ];
+
+  buildInputs = [
+    accountsservice
+    exo
+    garcon
+    gettext
+    glib
+    gtk-layer-shell
+    gtk3
+    libxfce4ui
+    libxfce4util
+    xfce4-panel
+    xfconf
+  ];
+
+  meta = with lib; {
+    description = "Alternate application launcher for Xfce";
+    mainProgram = "xfce4-popup-whiskermenu";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..6c0a7bafe39e
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin/default.nix
@@ -0,0 +1,47 @@
+{ stdenv
+, lib
+, fetchurl
+, intltool
+, pkg-config
+, libwnck
+, libxfce4ui
+, xfce4-panel
+, xfconf
+, gitUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "xfce4-windowck-plugin";
+  version = "0.5.1";
+
+  src = fetchurl {
+    # Use dist tarballs to avoid pulling extra deps and generating images ourselves.
+    url = "mirror://xfce/src/panel-plugins/xfce4-windowck-plugin/${lib.versions.majorMinor version}/xfce4-windowck-plugin-${version}.tar.bz2";
+    sha256 = "sha256-p4FEi3gemE072lmw2qsNGE1M7CJSMW9zcKxKmO/kgfQ=";
+  };
+
+  nativeBuildInputs = [
+    intltool
+    pkg-config
+  ];
+
+  buildInputs = [
+    libwnck
+    libxfce4ui
+    xfce4-panel
+    xfconf
+  ];
+
+  passthru.updateScript = gitUpdater {
+    url = "https://gitlab.xfce.org/panel-plugins/xfce4-windowck-plugin";
+    rev-prefix = "xfce4-windowck-plugin-";
+  };
+
+  meta = with lib; {
+    description = "Xfce panel plugin for displaying window title and buttons";
+    homepage = "https://gitlab.xfce.org/panel-plugins/xfce4-windowck-plugin";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..40ac161879b7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, mkXfceDerivation
+, gtk3
+, libnotify
+, librsvg
+, libwnck
+, libxklavier
+, garcon
+, libxfce4ui
+, libxfce4util
+, xfce4-panel
+, xfconf
+}:
+
+mkXfceDerivation {
+  category = "panel-plugins";
+  pname = "xfce4-xkb-plugin";
+  version = "0.8.3";
+  sha256 = "sha256-qWxjULrBpueQS3gxwRg49cQ3ovlQ8iWvYZ6Z/THm+/s=";
+
+  buildInputs = [
+    garcon
+    gtk3
+    libnotify # optional notification support
+    librsvg
+    libxfce4ui
+    libxfce4util
+    libxklavier
+    libwnck
+    xfce4-panel
+    xfconf
+  ];
+
+  meta = with lib; {
+    description = "Allows you to setup and use multiple keyboard layouts";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..99285b53cb61
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/archive/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, mkXfceDerivation
+, gtk3
+, thunar
+, exo
+, libxfce4util
+, intltool
+, gettext
+}:
+
+mkXfceDerivation {
+  category = "thunar-plugins";
+  pname  = "thunar-archive-plugin";
+  version = "0.5.2";
+  odd-unstable = false;
+
+  sha256 = "sha256-vbuFosj2qxDus7vu9WfRiFpLwnTRnmLVGCDa0tNQecU=";
+
+  nativeBuildInputs = [
+    intltool
+    gettext
+  ];
+
+  buildInputs = [
+    thunar
+    exo
+    gtk3
+    libxfce4util
+  ];
+
+  preConfigure = ''
+    ./autogen.sh
+  '';
+
+  meta = with lib; {
+    description = "Thunar plugin providing file context menus for archives";
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..5449eadc6d37
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv
+, fetchFromGitHub
+, pkg-config
+, gtk3
+, thunar
+, cmake
+, ninja
+, xfce
+, gitUpdater
+}:
+
+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 = gitUpdater { };
+
+  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;
+    maintainers = with maintainers; [ ] ++ teams.xfce.members;
+  };
+}
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..570f0aeafcfe
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/thunar-plugins/media-tags/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, mkXfceDerivation
+, glib
+, gtk3
+, thunar
+, libxfce4util
+, intltool
+, gettext
+, taglib
+}:
+
+mkXfceDerivation {
+  category = "thunar-plugins";
+  pname = "thunar-media-tags-plugin";
+  version = "0.4.0";
+  odd-unstable = false;
+
+  sha256 = "sha256-2WA7EtDmNl8XP0wK00iyQcSqV3mnfHNJZTKhBJ/YWPQ=";
+
+  nativeBuildInputs = [
+    intltool
+    gettext
+  ];
+
+  buildInputs = [
+    thunar
+    glib
+    gtk3
+    libxfce4util
+    taglib
+  ];
+
+  meta = with lib; {
+    description = "Thunar plugin providing tagging and renaming features for media files";
+    maintainers = with maintainers; [ ncfavier ] ++ teams.xfce.members;
+  };
+}