about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/xfce/core
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops/xfce/core')
-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.nix24
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/libxfce4util/default.nix17
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/thunar-volman/default.nix18
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/thunar/default.nix71
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/thunar/thunarx_plugins_directory.patch48
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/thunar/wrapper.nix41
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/tumbler/default.nix40
-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.sh12
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/default.nix59
-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.nix24
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-session/default.nix23
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfce4-settings/default.nix41
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfconf/default.nix18
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfdesktop/default.nix26
-rw-r--r--nixpkgs/pkgs/desktops/xfce/core/xfwm4/default.nix31
20 files changed, 627 insertions, 0 deletions
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..7c891bd03584
--- /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.16.3";
+
+  sha256 = "sha256-PG3GWpZ04sX4HrgAy2Sqcb+vdhiNk7C3YP7KpwgHj+g=";
+
+  nativeBuildInputs = [
+    libxslt
+    docbook_xsl
+  ];
+
+  buildInputs = [
+    gtk3
+    glib
+    libxfce4ui
+    libxfce4util
+
+    (perl.withPackages(ps: with ps; [ URI ])) # for $out/lib/xfce4/exo/exo-compose-mail
+  ];
+
+  # Workaround https://bugzilla.xfce.org/show_bug.cgi?id=15825
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  meta = 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..740022550ebb
--- /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.16.1";
+
+  sha256 = "sha256-KimO6w82lkUBSzJbBMI3W8w1eXPARE1oVyJEUk6olow=";
+
+  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..fc3535127fa2
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/libxfce4ui/default.nix
@@ -0,0 +1,24 @@
+{ lib, mkXfceDerivation, gobject-introspection, vala, gtk3, libICE, libSM
+, libstartup_notification, libgtop, libepoxy, libxfce4util, xfconf }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "libxfce4ui";
+  version = "4.16.1";
+
+  sha256 = "sha256-5mwyC3YA1LvdVSvaHN7CXDJh+IXjmdHGLKzhpjtUZkw=";
+
+  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";
+    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..4262a0393035
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/libxfce4util/default.nix
@@ -0,0 +1,17 @@
+{ lib, mkXfceDerivation, gobject-introspection, vala }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "libxfce4util";
+  version = "4.16.0";
+
+  sha256 = "sha256-q2vH4k1OiergjITOaA9+m92C3Q/sbPoKVrAFxG60Gtw=";
+
+  nativeBuildInputs = [ gobject-introspection vala ];
+
+  meta = with lib; {
+    description = "Extension library for Xfce";
+    license = licenses.lgpl2Plus;
+    maintainers = with maintainers; [ ] ++ 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..3fe2df6f1b62
--- /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.16.0";
+
+  buildInputs = [ exo gtk3 libgudev libxfce4ui libxfce4util xfconf ];
+
+  sha256 = "sha256-A9APQ5FLshb+MXQErCExegax6hqbHnlfI2hgtnWfVgA=";
+
+  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..3319141a8be9
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/thunar/default.nix
@@ -0,0 +1,71 @@
+{ mkXfceDerivation
+, lib
+, docbook_xsl
+, exo
+, gdk-pixbuf
+, gtk3
+, libgudev
+, libnotify
+, libX11
+, libxfce4ui
+, libxfce4util
+, libxslt
+, pcre
+, xfconf
+, gobject-introspection
+, makeWrapper
+, symlinkJoin
+, thunarPlugins ? []
+}:
+
+let unwrapped = mkXfceDerivation {
+  category = "xfce";
+  pname = "thunar";
+  version = "4.16.10";
+
+  sha256 = "sha256-BeEy8+zEsJ5fJAbvP37tfekqF5LTHil0RDcE5RY0f64=";
+
+  nativeBuildInputs = [
+    docbook_xsl
+    gobject-introspection
+    libxslt
+  ];
+
+  buildInputs = [
+    exo
+    gdk-pixbuf
+    gtk3
+    libX11
+    libgudev
+    libnotify
+    libxfce4ui
+    libxfce4util
+    pcre
+    xfconf
+  ];
+
+  patches = [
+    ./thunarx_plugins_directory.patch
+  ];
+
+  # the desktop file … is in an insecure location»
+  # which pops up when invoking desktop files that are
+  # symlinks to the /nix/store
+  #
+  # this error was added by this commit:
+  # https://github.com/xfce-mirror/thunar/commit/1ec8ff89ec5a3314fcd6a57f1475654ddecc9875
+  postPatch = ''
+    sed -i -e 's|thunar_dialogs_show_insecure_program (parent, _(".*"), file, exec)|1|' thunar/thunar-file.c
+  '';
+
+  meta = with lib; {
+    description = "Xfce file manager";
+    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/thunarx_plugins_directory.patch b/nixpkgs/pkgs/desktops/xfce/core/thunar/thunarx_plugins_directory.patch
new file mode 100644
index 000000000000..594a81c829ef
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/thunar/thunarx_plugins_directory.patch
@@ -0,0 +1,48 @@
+diff --git a/thunarx/thunarx-provider-factory.c b/thunarx/thunarx-provider-factory.c
+index 94b11545..1f66c982 100644
+--- a/thunarx/thunarx-provider-factory.c
++++ b/thunarx/thunarx-provider-factory.c
+@@ -150,12 +150,19 @@ static GList*
+ thunarx_provider_factory_load_modules (ThunarxProviderFactory *factory)
+ {
+   ThunarxProviderModule *module;
++  const gchar           *thunar_dir;
+   const gchar           *name;
+   GList                 *modules = NULL;
+   GList                 *lp;
+   GDir                  *dp;
+ 
+-  dp = g_dir_open (THUNARX_DIRECTORY, 0, NULL);
++  thunar_dir = g_getenv("THUNARX_MODULE_DIR");
++  if (NULL == thunar_dir)
++    {
++      thunar_dir = THUNARX_DIRECTORY;
++    }
++
++  dp = g_dir_open (thunar_dir, 0, NULL);
+   if (G_LIKELY (dp != NULL))
+     {
+       /* determine the types for all existing plugins */
+diff --git a/thunarx/thunarx-provider-module.c b/thunarx/thunarx-provider-module.c
+index 023ad2ae..b1d1be8f 100644
+--- a/thunarx/thunarx-provider-module.c
++++ b/thunarx/thunarx-provider-module.c
+@@ -174,10 +174,17 @@ static gboolean
+ thunarx_provider_module_load (GTypeModule *type_module)
+ {
+   ThunarxProviderModule *module = THUNARX_PROVIDER_MODULE (type_module);
++  const gchar           *thunar_dir;
+   gchar                 *path;
+ 
++  thunar_dir = g_getenv("THUNARX_MODULE_DIR");
++  if (NULL == thunar_dir)
++    {
++      thunar_dir = THUNARX_DIRECTORY;
++    }
++
+   /* load the module using the runtime link editor */
+-  path = g_build_filename (THUNARX_DIRECTORY, type_module->name, NULL);
++  path = g_build_filename (thunar_dir, type_module->name, NULL);
+   module->library = g_module_open (path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
+   g_free (path);
+ 
diff --git a/nixpkgs/pkgs/desktops/xfce/core/thunar/wrapper.nix b/nixpkgs/pkgs/desktops/xfce/core/thunar/wrapper.nix
new file mode 100644
index 000000000000..584c356547b3
--- /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_MODULE_DIR" "$out/lib/thunarx-3"
+
+    wrapProgram "$out/bin/thunar-settings" \
+      --set "THUNARX_MODULE_DIR" "$out/lib/thunarx-3"
+
+    # NOTE: we need to remove the folder symlink itself and create
+    # a new folder before trying to substitute any file below.
+    rm -f "$out/lib/systemd/user"
+    mkdir -p "$out/lib/systemd/user"
+
+    # point to wrapped binary in all service files
+    for file in "lib/systemd/user/thunar.service" \
+      "share/dbus-1/services/org.xfce.FileManager.service" \
+      "share/dbus-1/services/org.xfce.Thunar.FileManager1.service" \
+      "share/dbus-1/services/org.xfce.Thunar.service"
+    do
+      rm -f "$out/$file"
+      substitute "${thunar}/$file" "$out/$file" \
+        --replace "${thunar}" "$out"
+    done
+  '';
+
+  meta = with lib; {
+    inherit (thunar.meta) homepage license platforms maintainers;
+
+    description = thunar.meta.description + optionalString
+      (0 != length thunarPlugins)
+      " (with plugins: ${concatStringsSep  ", " (map (x: x.name) thunarPlugins)})";
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/xfce/core/tumbler/default.nix b/nixpkgs/pkgs/desktops/xfce/core/tumbler/default.nix
new file mode 100644
index 000000000000..26a28b9b426d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/tumbler/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, mkXfceDerivation
+, ffmpegthumbnailer
+, gdk-pixbuf
+, glib
+, freetype
+, libgsf
+, poppler
+, gst_all_1
+}:
+
+# TODO: add libopenraw
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "tumbler";
+  version = "4.16.0";
+
+  sha256 = "sha256-JLcmYjStF9obDoRHsxnZ1e9HPTeJUVKjnn5Ip1BBmPw=";
+
+  buildInputs = [
+    ffmpegthumbnailer
+    freetype
+    gdk-pixbuf
+    glib
+    gst_all_1.gst-plugins-base
+    libgsf
+    poppler # technically the glib binding
+  ];
+
+  # WrapGAppsHook won't touch this binary automatically, so we wrap manually.
+  postFixup = ''
+    wrapProgram $out/lib/tumbler-1/tumblerd "''${gappsWrapperArgs[@]}"
+  '';
+
+  meta = 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..d98353a070af
--- /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.16.1";
+
+  sha256 = "sha256-Xr8iiCDQYmxiLR2+TeuJggV1dLM/U4b7u7kpvFWT+uQ=";
+
+  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..16c35e6002bf
--- /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.16.0";
+
+  sha256 = "sha256-5r9dJfCgXosXoOAtNg1kaPWgFEAmyw/pWTtdG+K1h3A=";
+
+  nativeBuildInputs = [
+    autoreconfHook
+    libxslt
+    docbook_xsl
+  ];
+
+  propagatedBuildInputs = [
+    autoconf
+    automake
+    glib
+    gtk-doc
+    intltool
+    libtool
+  ];
+
+  setupHook = ./setup-hook.sh;
+
+  meta = 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..3abf3172ea66
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh
@@ -0,0 +1,12 @@
+xdtEnvHook() {
+    addToSearchPath ACLOCAL_PATH $1/share/aclocal
+}
+
+envHooks+=(xdtEnvHook)
+
+xdtAutogenPhase() {
+    mkdir -p m4
+    NOCONFIGURE=1 xdt-autogen
+}
+
+preConfigurePhases+=(xdtAutogenPhase)
diff --git a/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/default.nix b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/default.nix
new file mode 100644
index 000000000000..4fa26b3da024
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-panel/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, mkXfceDerivation
+, exo
+, garcon
+, glib
+, gobject-introspection
+, gtk3
+, libdbusmenu-gtk3
+, libwnck
+, libxfce4ui
+, libxfce4util
+, tzdata
+, vala
+, xfconf
+}:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-panel";
+  version = "4.16.3";
+
+  sha256 = "sha256-PdE64WKdluKfof/l1wTPi7JdpJMYWIvi0yIdpyntsCA=";
+
+  nativeBuildInputs = [
+    gobject-introspection
+    vala
+  ];
+
+  buildInputs = [
+    exo
+    garcon
+    libdbusmenu-gtk3
+    libxfce4ui
+    libwnck
+    xfconf
+    tzdata
+  ];
+
+  propagatedBuildInputs = [
+    glib
+    gtk3
+    libxfce4util
+  ];
+
+  patches = [ ./xfce4-panel-datadir.patch ];
+
+  postPatch = ''
+    substituteInPlace plugins/clock/clock.c \
+       --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo"
+  '';
+
+  # Workaround https://bugzilla.xfce.org/show_bug.cgi?id=15825
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  meta = 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..107357d5a731
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-power-manager/default.nix
@@ -0,0 +1,24 @@
+{ lib, mkXfceDerivation, automakeAddFlags, exo, gtk3, libnotify
+, libxfce4ui, libxfce4util, upower, xfconf, xfce4-panel }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-power-manager";
+  version = "4.16.0";
+
+  sha256 = "sha256-Qk++1db+agiU99p+QW8/WNnNqFVejV/BcnmgvfoB3OU=";
+
+  nativeBuildInputs = [ automakeAddFlags exo ];
+  buildInputs = [ gtk3 libnotify libxfce4ui libxfce4util upower xfconf xfce4-panel ];
+
+  postPatch = ''
+    substituteInPlace configure.ac.in --replace gio-2.0 gio-unix-2.0
+    automakeAddFlags src/Makefile.am xfce4_power_manager_CFLAGS GIO_CFLAGS
+    automakeAddFlags settings/Makefile.am xfce4_power_manager_settings_CFLAGS GIO_CFLAGS
+  '';
+
+  meta = 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..5ce96c1b02b6
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-session/default.nix
@@ -0,0 +1,23 @@
+{ lib, mkXfceDerivation, polkit, exo, libxfce4util, libxfce4ui, xfconf, iceauth, gtk3, glib, libwnck, xfce4-session }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-session";
+  version = "4.16.0";
+
+  sha256 = "sha256-LIRAQ1YAkAHwIzC5NYV/0iFLkAP5V96wuTIrYTGbGy0=";
+
+  buildInputs = [ exo gtk3 glib libxfce4ui libxfce4util libwnck xfconf polkit iceauth ];
+
+  configureFlags = [ "--with-xsession-prefix=${placeholder "out"}" ];
+
+  # See https://github.com/NixOS/nixpkgs/issues/36468
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  passthru.xinitrc = "${xfce4-session}/etc/xdg/xfce4/xinitrc";
+
+  meta = 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..91714976f84d
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfce4-settings/default.nix
@@ -0,0 +1,41 @@
+{ lib, mkXfceDerivation, exo, garcon, gtk3, glib
+, libnotify, libxfce4ui, libxfce4util, libxklavier
+, upower, xfconf, xf86inputlibinput }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfce4-settings";
+  version = "4.16.2";
+
+  sha256 = "sha256-DkybMfkgsC8fJuhOWLzKO5f2Y8YtqzUXMH/npTv21yY=";
+
+  postPatch = ''
+    for f in xfsettingsd/pointers.c dialogs/mouse-settings/main.c; do
+      substituteInPlace $f --replace \"libinput-properties.h\" '<xorg/libinput-properties.h>'
+    done
+  '';
+
+  buildInputs = [
+    exo
+    garcon
+    glib
+    gtk3
+    libnotify
+    libxfce4ui
+    libxfce4util
+    libxklavier
+    upower
+    xf86inputlibinput
+    xfconf
+  ];
+
+  configureFlags = [
+    "--enable-pluggable-dialogs"
+    "--enable-sound-settings"
+  ];
+
+  meta = 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..c3946258292b
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/xfce/core/xfconf/default.nix
@@ -0,0 +1,18 @@
+{ lib, mkXfceDerivation, libxfce4util, gobject-introspection, vala }:
+
+mkXfceDerivation {
+  category = "xfce";
+  pname = "xfconf";
+  version = "4.16.0";
+
+  sha256 = "sha256-w8wnHFj1KBX6lCnGbVLgWPEo2ul4SwfemUYVHioTlwE=";
+
+  nativeBuildInputs = [ gobject-introspection vala ];
+
+  buildInputs = [ libxfce4util ];
+
+  meta = with lib; {
+    description = "Simple client-server configuration storage and query system for Xfce";
+    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..7e397b395f35
--- /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.16.0";
+
+  sha256 = "sha256-w/JNjyAlxZqfVpm8EBt+ieHhUziOtfd//XHzIjJjy/4=";
+
+  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..efc12dd91eb9
--- /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.16.1";
+
+  sha256 = "sha256-CwRJk+fqu3iC4Vb6fKGOIZZk2hxTqYF3sNvm6WKqHdI=";
+
+  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;
+  };
+}