summary refs log tree commit diff
diff options
context:
space:
mode:
authorJosé Romildo Malaquias <malaquias@gmail.com>2020-04-13 18:12:16 -0300
committerJosé Romildo Malaquias <malaquias@gmail.com>2020-04-15 09:45:25 -0300
commit06ba312152e99b9254a0950a97667b6c0ad2996e (patch)
treea9338b7b622db8acf49b091aa6c6b663ae01341f
parent8162d76b18e17552f885ab01d9b9302707fd70c8 (diff)
downloadnixpkgs-06ba312152e99b9254a0950a97667b6c0ad2996e.tar
nixpkgs-06ba312152e99b9254a0950a97667b6c0ad2996e.tar.gz
nixpkgs-06ba312152e99b9254a0950a97667b6c0ad2996e.tar.bz2
nixpkgs-06ba312152e99b9254a0950a97667b6c0ad2996e.tar.lz
nixpkgs-06ba312152e99b9254a0950a97667b6c0ad2996e.tar.xz
nixpkgs-06ba312152e99b9254a0950a97667b6c0ad2996e.tar.zst
nixpkgs-06ba312152e99b9254a0950a97667b6c0ad2996e.zip
xfce: add update scripts to xfce packages
-rw-r--r--pkgs/desktops/xfce/applications/gigolo/default.nix1
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix1
-rw-r--r--pkgs/desktops/xfce/applications/xfce4-volumed/default.nix18
-rw-r--r--pkgs/desktops/xfce/applications/xfdashboard/default.nix3
-rw-r--r--pkgs/desktops/xfce/art/xfce4-icon-theme.nix26
-rw-r--r--pkgs/desktops/xfce/art/xfwm4-themes.nix20
-rw-r--r--pkgs/desktops/xfce/core/thunar-volman/default.nix2
-rw-r--r--pkgs/desktops/xfce/mkXfceDerivation.nix23
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix5
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix3
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix25
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin/default.nix5
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-dict-plugin.nix25
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix3
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin.nix22
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix25
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix25
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix25
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix10
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix25
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix25
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix25
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix26
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix25
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix25
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/default.nix6
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix30
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin.nix16
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix4
-rw-r--r--pkgs/desktops/xfce/thunar-plugins/archive/default.nix3
-rw-r--r--pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix7
34 files changed, 325 insertions, 171 deletions
diff --git a/pkgs/desktops/xfce/applications/gigolo/default.nix b/pkgs/desktops/xfce/applications/gigolo/default.nix
index 32486aab981..7b643bd0dc8 100644
--- a/pkgs/desktops/xfce/applications/gigolo/default.nix
+++ b/pkgs/desktops/xfce/applications/gigolo/default.nix
@@ -4,6 +4,7 @@ mkXfceDerivation {
   category = "apps";
   pname = "gigolo";
   version = "0.5.0";
+  odd-unstable = false;
 
   sha256 = "1lqsxb0d5i8p9vbzx8s4p3rga7va5h1q146xgmsa41j5v40wrlw6";
 
diff --git a/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix b/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix
index 012486baac9..1db6fb016a1 100644
--- a/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix
+++ b/pkgs/desktops/xfce/applications/xfce4-screenshooter/default.nix
@@ -4,6 +4,7 @@ mkXfceDerivation {
   category = "apps";
   pname = "xfce4-screenshooter";
   version = "1.9.5";
+  odd-unstable = false;
 
   sha256 = "1h14sywvk9l06p3z1cpb79911j8w2wqbk03ldknjkia2rfymjk06";
 
diff --git a/pkgs/desktops/xfce/applications/xfce4-volumed/default.nix b/pkgs/desktops/xfce/applications/xfce4-volumed/default.nix
index 76e89a592b4..aec898161ff 100644
--- a/pkgs/desktops/xfce/applications/xfce4-volumed/default.nix
+++ b/pkgs/desktops/xfce/applications/xfce4-volumed/default.nix
@@ -1,9 +1,11 @@
 { stdenv, fetchurl, pkgconfig, makeWrapper
 , gstreamer, gtk2, gst-plugins-base, libnotify
-, keybinder, xfconf
+, keybinder, xfconf, xfce
 }:
 
 let
+  category = "apps";
+
   # The usual Gstreamer plugins package has a zillion dependencies
   # that we don't need for a simple mixer, so build a minimal package.
   gst_plugins_minimal = gst-plugins-base.override {
@@ -13,15 +15,13 @@ let
 in
 
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-volumed";
-  ver_maj = "0.1";
-  ver_min = "13";
+  pname  = "xfce4-volumed";
+  version = "0.1.13";
 
   src = fetchurl {
-    url = "mirror://xfce/src/apps/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "1aa0a1sbf9yzi7bc78kw044m0xzg1li3y4w9kf20wqv5kfjs7v2c";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   buildInputs =
     [ gstreamer gst_plugins_minimal gtk2
@@ -36,6 +36,12 @@ stdenv.mkDerivation rec {
         --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH"
     '';
 
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
+
   meta = with stdenv.lib; {
     homepage = "https://www.xfce.org/projects/xfce4-volumed"; # referenced but inactive
     description = "A volume keys control daemon for the Xfce desktop environment";
diff --git a/pkgs/desktops/xfce/applications/xfdashboard/default.nix b/pkgs/desktops/xfce/applications/xfdashboard/default.nix
index a17c29f6723..f3db9c2446b 100644
--- a/pkgs/desktops/xfce/applications/xfdashboard/default.nix
+++ b/pkgs/desktops/xfce/applications/xfdashboard/default.nix
@@ -18,7 +18,8 @@ mkXfceDerivation {
   category = "apps";
   pname = "xfdashboard";
   version = "0.7.5";
-  rev = "0.7.5";
+  rev-prefix = "";
+  odd-unstable = false;
 
   sha256 = "0d0kg90h3li41bs75z3xldljsglkz220pba39c54qznnzb8v8a2i";
 
diff --git a/pkgs/desktops/xfce/art/xfce4-icon-theme.nix b/pkgs/desktops/xfce/art/xfce4-icon-theme.nix
index 4f35dff42ff..089b7cc27f8 100644
--- a/pkgs/desktops/xfce/art/xfce4-icon-theme.nix
+++ b/pkgs/desktops/xfce/art/xfce4-icon-theme.nix
@@ -1,23 +1,31 @@
-{ stdenv, fetchurl, pkgconfig, intltool, gtk2 }:
+{ stdenv, fetchurl, pkgconfig, intltool, gtk2, xfce }:
+
+let
+  category = "art";
+in
 
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-icon-theme";
-  ver_maj = "4.4";
-  ver_min = "3";
+  pname  = "xfce4-icon-theme";
+  version = "4.4.3";
 
   src = fetchurl {
-    url = "mirror://xfce/src/art/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "1yk6rx3zr9grm4jwpjvqdkl13pisy7qn1wm5cqzmd2kbsn96cy6l";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool gtk2 ];
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = "https://www.xfce.org/";
     description = "Icons for Xfce";
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.eelco ];
   };
 }
diff --git a/pkgs/desktops/xfce/art/xfwm4-themes.nix b/pkgs/desktops/xfce/art/xfwm4-themes.nix
index 1c40b7ec29b..db0a1779a41 100644
--- a/pkgs/desktops/xfce/art/xfwm4-themes.nix
+++ b/pkgs/desktops/xfce/art/xfwm4-themes.nix
@@ -1,15 +1,23 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchurl, xfce }:
+
+let
+  category = "art";
+in
 
 stdenv.mkDerivation rec {
-  p_name  = "xfwm4-themes";
-  ver_maj = "4.10";
-  ver_min = "0";
+  pname  = "xfwm4-themes";
+  version = "4.10.0";
 
   src = fetchurl {
-    url = "mirror://xfce/src/art/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "0xfmdykav4rf6gdxbd6fhmrfrvbdc1yjihz7r7lba0wp1vqda51j";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
   meta = with stdenv.lib; {
     homepage = "https://www.xfce.org/";
diff --git a/pkgs/desktops/xfce/core/thunar-volman/default.nix b/pkgs/desktops/xfce/core/thunar-volman/default.nix
index fc6db0fcce4..ecc26ccb8fe 100644
--- a/pkgs/desktops/xfce/core/thunar-volman/default.nix
+++ b/pkgs/desktops/xfce/core/thunar-volman/default.nix
@@ -9,6 +9,8 @@ mkXfceDerivation {
 
   sha256 = "1qrlpn0q5g9psd41l6y80r3bvbg8jaic92m6r400zzwcvivf95z0";
 
+  odd-unstable = false;
+
   meta = {
     description = "Thunar extension for automatic management of removable drives and media";
   };
diff --git a/pkgs/desktops/xfce/mkXfceDerivation.nix b/pkgs/desktops/xfce/mkXfceDerivation.nix
index ed604a02824..4c6edf99b61 100644
--- a/pkgs/desktops/xfce/mkXfceDerivation.nix
+++ b/pkgs/desktops/xfce/mkXfceDerivation.nix
@@ -1,6 +1,16 @@
-{ stdenv, fetchgit, pkgconfig, xfce4-dev-tools, hicolor-icon-theme, wrapGAppsHook }:
-
-{ category, pname, version, rev ? "${pname}-${version}", sha256, ... } @ args:
+{ stdenv, fetchgit, pkgconfig, xfce4-dev-tools, hicolor-icon-theme, xfce, wrapGAppsHook }:
+
+{ category
+, pname
+, version
+, attrPath ? "xfce.${pname}"
+, rev-prefix ? "${pname}-"
+, rev ? "${rev-prefix}${version}"
+, sha256
+, odd-unstable ? true
+, patchlevel-unstable ? true
+, ...
+} @ args:
 
 let
   inherit (builtins) filter getAttr head isList;
@@ -12,7 +22,7 @@ let
   concatAttrLists = attrsets:
     zipAttrsWithNames (filterAttrNames isList (head attrsets)) (_: concatLists) attrsets;
 
-  template = {
+  template = rec {
     name = "${pname}-${version}";
 
     nativeBuildInputs = [ pkgconfig xfce4-dev-tools wrapGAppsHook ];
@@ -29,6 +39,11 @@ let
 
     pos = builtins.unsafeGetAttrPos "pname" args;
 
+    passthru.updateScript = xfce.updateScript {
+      inherit pname version attrPath rev-prefix odd-unstable patchlevel-unstable;
+      versionLister = xfce.gitLister src.url;
+    };
+
     meta = with stdenv.lib; {
       homepage = "https://git.xfce.org/${category}/${pname}/about";
       license = licenses.gpl2; # some libraries are under LGPLv2+
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix
index 3966e256b16..0120cea0886 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-battery-plugin/default.nix
@@ -1,10 +1,11 @@
 { mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
 
-mkXfceDerivation rec {
+mkXfceDerivation {
   category = "panel-plugins";
   pname = "xfce4-battery-plugin";
   version = "1.1.2";
-  rev = version;
+  rev-prefix = "";
+  odd-unstable = false;
   sha256 = "0329miiclc8da6j0sz495p99hyrf9fjhvpmdl0556fphybz5agc0";
 
   buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix
index bd1a3b5e5e3..f814850561a 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-clipman-plugin/default.nix
@@ -1,10 +1,9 @@
 { mkXfceDerivation, gtk3, libXtst, libxfce4ui, libxfce4util, xfce4-panel, xfconf, exo }:
 
-mkXfceDerivation rec {
+mkXfceDerivation {
   category = "panel-plugins";
   pname = "xfce4-clipman-plugin";
   version = "1.4.3";
-  rev = version;
   sha256 = "1xk79xh1zk0x4r1z9m1dakp79pip0zh3naviybvl1dnpwwfc03gq";
 
   buildInputs = [ exo gtk3 libXtst libxfce4ui libxfce4util xfce4-panel xfconf ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix
index 321e4792e4b..22a019e56bc 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-cpugraph-plugin.nix
@@ -1,22 +1,29 @@
-{ stdenv, fetchurl, pkgconfig, intltool, glib, exo, libXtst, xorgproto, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2, hicolor-icon-theme }:
+{ stdenv, fetchurl, pkgconfig, intltool, glib, exo, libXtst, xorgproto, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2, hicolor-icon-theme, xfce }:
+
+let
+  category = "panel-plugins";
+in
 
-with stdenv.lib;
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-cpugraph-plugin";
-  ver_maj = "1.0";
-  ver_min = "5";
+  pname  = "xfce4-cpugraph-plugin";
+  version = "1.0.5";
 
   src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "1izl53q95m5xm2fiq7385vb1i9nwgjizxkmgpgh33zdckb40xnl5";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool glib exo libXtst xorgproto libxfce4util libxfce4ui xfce4-panel xfconf gtk2 hicolor-icon-theme ];
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/panel-plugins/${p_name}";
+  meta = with stdenv.lib; {
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "CPU graph show for Xfce panel";
     platforms = platforms.linux;
     maintainers = [ maintainers.AndersonTorres ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin/default.nix
index 3cfb010b12d..15f528fd5fc 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin/default.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-datetime-plugin/default.nix
@@ -7,13 +7,12 @@
 , gettext
 }:
 
-mkXfceDerivation rec {
+mkXfceDerivation {
   category = "panel-plugins";
   pname = "xfce4-datetime-plugin";
   version = "0.8.0";
 
-  rev = "datetime-${version}";
-
+  rev-prefix = "datetime-";
   sha256 = "12drh7y70d70r93lpv43fkj5cbyl0vciz4a41nxrknrfbhxrvyah";
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-dict-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-dict-plugin.nix
index d5982ea3c12..ae6141bd662 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-dict-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-dict-plugin.nix
@@ -1,22 +1,29 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2}:
+{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2, xfce }:
+
+let
+  category = "panel-plugins";
+in
 
-with stdenv.lib;
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-dict-plugin";
-  ver_maj = "0.3";
-  ver_min = "0";
+  pname  = "xfce4-dict-plugin";
+  version = "0.3.0";
 
   src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.gz";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "1x0imfnsdfq7fbhka8bc0yjjspkcljc1jafhrwzb08qi9bk2wbar";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf gtk2 ];
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/panel-plugins/${p_name}";
+  meta =with stdenv.lib; {
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "Dictionary plugin for Xfce panel";
     platforms = platforms.linux;
     maintainers = [ maintainers.AndersonTorres ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix
index db74da2939d..673b0a24fb6 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-dockbarx-plugin.nix
@@ -2,9 +2,10 @@
 , dockbarx, gtk2, xfce, pythonPackages, wafHook }:
 
 stdenv.mkDerivation rec {
+  pname = "xfce4-dockbarx-plugin";
+  version = "${ver}-${rev}";
   ver = "0.5";
   rev = "a2dcb66";
-  name = "xfce4-dockbarx-plugin-${ver}-${rev}";
 
   src = fetchFromGitHub {
     owner = "TiZ-EX1";
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin.nix
index 94c26f9e1b2..3cd84714663 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-embed-plugin.nix
@@ -1,22 +1,30 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2 }:
+{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2, xfce }:
+
+let
+  category = "panel-plugins";
+in
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-embed-plugin";
-  ver_maj = "1.6";
-  ver_min = "0";
+  pname  = "xfce4-embed-plugin";
+  version = "1.6.0";
 
   src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "0a72kqsjjh45swimqlpyrahdnplp0383v0i4phr4n6g8c1ixyry7";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf gtk2 ];
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
   meta = {
-    homepage = "https://goodies.xfce.org/projects/panel-plugins/${p_name}";
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "Embed arbitrary app windows on Xfce panel";
     platforms = platforms.linux;
     maintainers = [ maintainers.AndersonTorres ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix
index 1932a9e9968..687bcf59859 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin.nix
@@ -1,22 +1,29 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2}:
+{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2, xfce }:
+
+let
+  category = "panel-plugins";
+in
 
-with stdenv.lib;
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-eyes-plugin";
-  ver_maj = "4.4";
-  ver_min = "4";
+  pname  = "xfce4-eyes-plugin";
+  version = "4.4.4";
 
   src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "1jh02hylvsvfpxrx0bq6fzgy6vnxf9qakgpbfvr63lfkd1dyh314";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf gtk2 ];
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/panel-plugins/${p_name}";
+  meta = with stdenv.lib; {
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "Eyes following you!";
     platforms = platforms.linux;
     maintainers = [ maintainers.AndersonTorres ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix
index 54bb4817d7e..adab2f033ac 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-fsguard-plugin.nix
@@ -1,22 +1,29 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2}:
+{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2, xfce }:
+
+let
+  category = "panel-plugins";
+in
 
-with stdenv.lib;
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-fsguard-plugin";
-  ver_maj = "1.0";
-  ver_min = "2";
+  pname  = "xfce4-fsguard-plugin";
+  version = "1.0.2";
 
   src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "1bj021h4q68bc03f32pkyqy4gfd1sz6s21nxdg7j6gdfhs9xbj52";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf gtk2 ];
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/panel-plugins/${p_name}";
+  meta = with stdenv.lib; {
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "Filesystem monitor";
     platforms = platforms.linux;
     maintainers = [ maintainers.AndersonTorres ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix
index dd9827dcc5a..65dc61a4b39 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-genmon-plugin.nix
@@ -1,22 +1,29 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2}:
+{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2, xfce }:
+
+let
+  category = "panel-plugins";
+in
 
-with stdenv.lib;
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-genmon-plugin";
-  ver_maj = "3.4";
-  ver_min = "0";
+  pname  = "xfce4-genmon-plugin";
+  version = "3.4.0";
 
   src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "11q3g6lmgz3d5lyh6614mxkd9cblfdyf9jgki7f26mn895xk79dh";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf gtk2 ];
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/panel-plugins/${p_name}";
+  meta = with stdenv.lib; {
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "Cyclically spawns a command and captures its output";
     platforms = platforms.linux;
     maintainers = [ maintainers.AndersonTorres ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix
index 40810abfc07..83084b62661 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-hardware-monitor-plugin.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, pkgconfig, intltool, autoreconfHook, gnome2, gtkmm2,
-  libgtop, libxfce4ui, libxfce4util, xfce4-panel, lm_sensors
+  libgtop, libxfce4ui, libxfce4util, xfce4-panel, lm_sensors, xfce
 }:
 
 stdenv.mkDerivation rec {
@@ -30,11 +30,11 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "Hardware monitor plugin for the XFCE4 panel";
-    license = stdenv.lib.licenses.gpl3;
-    platforms = stdenv.lib.platforms.unix;
-    maintainers = [ stdenv.lib.maintainers.romildo ];
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
   };
 }
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix
index 058f2591716..b63224f8708 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-mailwatch-plugin.nix
@@ -1,24 +1,31 @@
 { stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui,
- xfconf, gtk2, exo, gnutls, libgcrypt }:
+  xfconf, gtk2, exo, gnutls, libgcrypt, xfce }:
+
+let
+  category = "panel-plugins";
+in
 
-with stdenv.lib;
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-mailwatch-plugin";
-  ver_maj = "1.2";
-  ver_min = "0";
+  pname  = "xfce4-mailwatch-plugin";
+  version = "1.2.0";
 
   src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "1bfw3smwivr9mzdyq768biqrl4aq94zqi3xjzq6kqnd8561cqjk2";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel
     xfconf gtk2 exo gnutls libgcrypt ];
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/panel-plugins/${p_name}";
+  meta = with stdenv.lib; {
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "Mailwatch plugin for Xfce panel";
     platforms = platforms.linux;
     maintainers = [ ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix
index b936d2e441c..7d7b1981c52 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-mpc-plugin.nix
@@ -1,24 +1,31 @@
 { stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui,
- xfconf, gtk2, exo }:
+ xfconf, gtk2, exo, xfce }:
+
+let
+  category = "panel-plugins";
+in
 
-with stdenv.lib;
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-mpc-plugin";
-  ver_maj = "0.4";
-  ver_min = "5";
-  name = "${p_name}-${ver_maj}.${ver_min}";
+  pname  = "xfce4-mpc-plugin";
+  version = "0.4.5";
 
   src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "1kvgq1pq7cykqdc3227dq0izad093ppfw3nfsrcp9i8mi6i5f7z7";
   };
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel
     xfconf gtk2 exo ];
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/panel-plugins/${p_name}";
+  meta = with stdenv.lib; {
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "MPD plugin for Xfce panel";
     platforms = platforms.linux;
     maintainers = [ ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix
index d774649b536..09e686a9536 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-netload-plugin/default.nix
@@ -1,10 +1,10 @@
 { mkXfceDerivation, gtk3, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
 
-mkXfceDerivation rec {
+mkXfceDerivation {
   category = "panel-plugins";
   pname = "xfce4-netload-plugin";
   version = "1.3.1";
-  rev = "version-${version}";
+  rev-prefix = "version-";
   sha256 = "0nm8advafw4jpc9p1qszyfqa56194sz51z216rdh4c6ilcrrpy1h";
 
   buildInputs = [ gtk3 libxfce4ui libxfce4util xfce4-panel xfconf ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix
index 516d86f56ab..1b7e66936fa 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-notes-plugin.nix
@@ -1,22 +1,29 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2, libunique }:
+{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, xfconf, gtk2, libunique, xfce }:
+
+let
+  category = "panel-plugins";
+in
 
-with stdenv.lib;
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-notes-plugin";
-  ver_maj = "1.7";
-  ver_min = "7";
+  pname  = "xfce4-notes-plugin";
+  version = "1.7.7";
 
   src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "05sjbwgch1j93m3r23ksbjnpfk11sf7xjmbb9pm5vl3snc2s3fm7";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf gtk2 libunique ];
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/panel-plugins/${p_name}";
+  meta = with stdenv.lib; {
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "Sticky notes plugin for Xfce panel";
     platforms = platforms.linux;
     maintainers = [ maintainers.AndersonTorres ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix
index 56cad888168..14cab3d932e 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin.nix
@@ -1,15 +1,17 @@
 { stdenv, fetchurl, pkgconfig, intltool, gtk2, libxfce4ui,
-  libxfce4util, xfce4-panel, libnotify, lm_sensors, hddtemp, netcat-gnu
+  libxfce4util, xfce4-panel, libnotify, lm_sensors, hddtemp, netcat-gnu, xfce
 }:
 
+let
+  category = "panel-plugins";
+in
+
 stdenv.mkDerivation rec {
-  name = "${pname}-${ver_maj}.${ver_min}";
   pname  = "xfce4-sensors-plugin";
-  ver_maj = "1.2";
-  ver_min = "6";
+  version = "1.2.6";
 
   src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${pname}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "1h0vpqxcziml3gwrbvd8xvy1mwh9mf2a68dvxsy03rs5pm1ghpi3";
   };
 
@@ -35,12 +37,18 @@ stdenv.mkDerivation rec {
     "--with-pathhddtemp=${hddtemp}/bin/hddtemp"
     "--with-pathnetcat=${netcat-gnu}/bin/netcat"
   ];
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "A panel plug-in for different sensors using acpi, lm_sensors and hddtemp";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.unix;
-    maintainers = [ stdenv.lib.maintainers.romildo ];
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
   };
 }
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix
index 95fb9358f94..1ff0bc2efba 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-systemload-plugin.nix
@@ -1,22 +1,29 @@
-{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, gtk2}:
+{ stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel, libxfce4ui, gtk2, xfce }:
+
+let
+  category = "panel-plugins";
+in
 
-with stdenv.lib;
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-systemload-plugin";
-  ver_maj = "1.1";
-  ver_min = "2";
+  pname  = "xfce4-systemload-plugin";
+  version = "1.1.2";
 
   src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "0z4as6sxdz93d4jpgv0665dg4sykfvc5068mc689phlfl2rvcsdl";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel gtk2 ];
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/panel-plugins/${p_name}";
+  meta = with stdenv.lib; {
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "System load plugin for Xfce panel";
     platforms = platforms.linux;
     maintainers = [ maintainers.AndersonTorres ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix
index 4070156c223..ae08fd3aeae 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-timer-plugin.nix
@@ -1,17 +1,18 @@
 { stdenv, fetchurl, pkgconfig, intltool, libxfce4util, xfce4-panel
-, libxfce4ui, xfconf, gtk2, hicolor-icon-theme }:
+, libxfce4ui, xfconf, gtk2, hicolor-icon-theme, xfce }:
+
+let
+  category = "panel-plugins";
+in
 
-with stdenv.lib;
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-timer-plugin";
-  ver_maj = "1.6";
-  ver_min = "0";
+  pname  = "xfce4-timer-plugin";
+  version = "1.6.0";
 
   src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "0z46gyw3ihcd1jf0m5z1dsc790xv1cpi8mk1dagj3i4v14gx5mrr";
   };
-  name = "${p_name}-${ver_maj}.${ver_min}";
 
   buildInputs = [ intltool libxfce4util libxfce4ui xfce4-panel xfconf
     gtk2 hicolor-icon-theme ];
@@ -19,9 +20,15 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkgconfig ];
 
   hardeningDisable = [ "format" ];
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/panel-plugins/${p_name}";
+  meta = with stdenv.lib; {
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "A simple XFCE panel plugin that lets the user run an alarm at a specified time or at the end of a specified countdown period";
     platforms = platforms.linux;
     license = licenses.gpl2;
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/default.nix
index 43e943f194a..bd0db543cf6 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/default.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-vala-panel-appmenu-plugin/default.nix
@@ -41,6 +41,12 @@ stdenv.mkDerivation rec {
     mv cmake/FallbackVersion.cmake.in cmake/FallbackVersion.cmake
   '';
 
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.gitLister src.meta.homepage;
+  };
+
   meta = with stdenv.lib; {
     description = "Global Menu applet for XFCE4";
     license = licenses.lgpl3;
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix
index 288aaddfb98..5a98173ea00 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-verve-plugin/default.nix
@@ -1,10 +1,10 @@
 { lib, mkXfceDerivation, gtk3, libxfce4ui, pcre, libxfce4util, xfce4-panel, xfconf }:
 
-mkXfceDerivation rec {
+mkXfceDerivation {
   category = "panel-plugins";
   pname = "xfce4-verve-plugin";
   version = "2.0.0";
-  rev = version;
+  rev-prefix = "";
   sha256 = "09vpa6m0ah7pgmra094c16vb79xrcwva808g6zpawwrhcwz85lcz";
 
   buildInputs = [ gtk3 libxfce4ui pcre libxfce4util xfce4-panel ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix
index 0914c4cb7d9..f32efb01edd 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-weather-plugin.nix
@@ -1,14 +1,16 @@
 { stdenv, fetchurl, pkgconfig, intltool, gtk2, libxml2, libsoup, upower,
-libxfce4ui, libxfce4util, xfce4-panel, hicolor-icon-theme }:
+  libxfce4ui, libxfce4util, xfce4-panel, hicolor-icon-theme, xfce }:
+
+let
+  category = "panel-plugins";
+in
 
 stdenv.mkDerivation rec {
-  name = "${p_name}-${ver_maj}.${ver_min}";
-  p_name  = "xfce4-weather-plugin";
-  ver_maj = "0.8";
-  ver_min = "10";
+  pname  = "xfce4-weather-plugin";
+  version = "0.8.10";
 
   src = fetchurl {
-    url = "mirror://xfce/src/panel-plugins/${p_name}/${ver_maj}/${name}.tar.bz2";
+    url = "mirror://xfce/src/${category}/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
     sha256 = "1f7ac2zr5s5w6krdpgsq252wxhhmcblia3j783132ilh8k246vgf";
   };
 
@@ -18,12 +20,18 @@ stdenv.mkDerivation rec {
    xfce4-panel hicolor-icon-theme ];
 
   enableParallelBuilding = true;
+  
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.archiveLister category pname;
+  };
 
-  meta = {
-    homepage = "https://goodies.xfce.org/projects/panel-plugins/${p_name}";
+  meta = with stdenv.lib; {
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "Weather plugin for the Xfce desktop environment";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.unix;
-    maintainers = [ stdenv.lib.maintainers.romildo ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
   };
 }
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix
index 884b8ee3a29..262093af69f 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-whiskermenu-plugin/default.nix
@@ -1,10 +1,10 @@
 { mkXfceDerivation, gtk3, glib, cmake, exo, garcon, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
 
-mkXfceDerivation rec {
+mkXfceDerivation {
   category = "panel-plugins";
   pname = "xfce4-whiskermenu-plugin";
   version = "2.4.3";
-  rev = "v${version}";
+  rev-prefix = "v";
   sha256 = "1cs3fps1bj0dd5az7fwrvw1xl3y621qk4dma3n73p7rr19j7fpsn";
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin.nix
index eba7be91ef9..ceeac724cf3 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-windowck-plugin.nix
@@ -1,17 +1,16 @@
 { stdenv, fetchFromGitHub, pkgconfig, intltool, python3, imagemagick, libwnck, gtk2
-, exo, libxfce4ui, libxfce4util, xfce4-panel, xfconf, xfce4-dev-tools }:
+, exo, libxfce4ui, libxfce4util, xfce4-panel, xfconf, xfce4-dev-tools, xfce }:
 
 stdenv.mkDerivation rec {
-  p_name  = "xfce4-windowck-plugin";
+  pname  = "xfce4-windowck-plugin";
   version = "0.4.4";
 
   src = fetchFromGitHub {
     owner = "cedl38";
-    repo = "xfce4-windowck-plugin";
+    repo = pname;
     rev = "v${version}";
     sha256 = "0c6a1ibh39dpq9x0dha5lsg0vzmgaf051fgwz0nlky0s94nwzvgv";
   };
-  name = "${p_name}-${version}";
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ intltool python3 imagemagick libwnck gtk2
@@ -24,8 +23,15 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.${pname}";
+    versionLister = xfce.gitLister src.meta.homepage;
+    rev-prefix = "v";
+  };
+
   meta = with stdenv.lib; {
-    homepage = "https://goodies.xfce.org/projects/panel-plugins/${p_name}";
+    homepage = "https://goodies.xfce.org/projects/panel-plugins/${pname}";
     description = "Set of two plugins which allows you to put the maximized window title and windows buttons on the panel";
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix
index 4497a7b0e36..a0862159489 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-xkb-plugin/default.nix
@@ -1,10 +1,10 @@
 { lib, mkXfceDerivation, gtk3, librsvg, libwnck3, libxklavier, garcon, libxfce4ui, libxfce4util, xfce4-panel, xfconf }:
 
-mkXfceDerivation rec {
+mkXfceDerivation {
   category = "panel-plugins";
   pname = "xfce4-xkb-plugin";
   version = "0.8.1";
-  rev = version;
+  rev-prefix = "";
   sha256 = "1gyky4raynp2ggdnq0g96c6646fjm679fzipcsmf1q0aymr8d5ky";
 
   buildInputs = [ garcon gtk3 librsvg libxfce4ui libxfce4util libxklavier libwnck3 xfce4-panel xfconf ];
diff --git a/pkgs/desktops/xfce/thunar-plugins/archive/default.nix b/pkgs/desktops/xfce/thunar-plugins/archive/default.nix
index e3c72d3b50e..6b255dc7201 100644
--- a/pkgs/desktops/xfce/thunar-plugins/archive/default.nix
+++ b/pkgs/desktops/xfce/thunar-plugins/archive/default.nix
@@ -1,6 +1,5 @@
 { stdenv
 , mkXfceDerivation
-, fetchFromGitHub
 , gtk3
 , thunar
 , exo
@@ -9,7 +8,7 @@
 , gettext
 }:
 
-mkXfceDerivation rec {
+mkXfceDerivation {
   category = "thunar-plugins";
   pname  = "thunar-archive-plugin";
   version = "0.4.0";
diff --git a/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix b/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix
index 8674c586552..61e9d94acc5 100644
--- a/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix
+++ b/pkgs/desktops/xfce/thunar-plugins/dropbox/default.nix
@@ -5,6 +5,7 @@
 , thunar
 , cmake
 , ninja
+, xfce
 }:
 
 stdenv.mkDerivation rec {
@@ -31,6 +32,12 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
+  passthru.updateScript = xfce.updateScript {
+    inherit pname version;
+    attrPath = "xfce.thunar-dropbox-plugin";
+    versionLister = xfce.gitLister src.meta.homepage;
+  };
+
   meta = with stdenv.lib; {
     homepage = "https://github.com/Jeinzi/thunar-dropbox";
     description = "A plugin that adds context-menu items for Dropbox to Thunar";