diff --git a/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
index b4a33777851e..38dd7b3894dd 100644
--- a/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
+++ b/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
@@ -1780,6 +1780,13 @@
desktop environments as needed.
+
+
+ services.xserver.desktopManager.xfce now
+ includes Xfce’s screen locker,
+ xfce4-screensaver.
+
+
The hadoop package has added support for
diff --git a/nixos/doc/manual/release-notes/rl-2205.section.md b/nixos/doc/manual/release-notes/rl-2205.section.md
index 560d80514d6a..82f1b97d5cbd 100644
--- a/nixos/doc/manual/release-notes/rl-2205.section.md
+++ b/nixos/doc/manual/release-notes/rl-2205.section.md
@@ -615,6 +615,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- The polkit service, available at `security.polkit.enable`, is now disabled by default. It will automatically be enabled through services and desktop environments as needed.
+- `services.xserver.desktopManager.xfce` now includes Xfce's screen locker, `xfce4-screensaver`.
+
- The `hadoop` package has added support for `aarch64-linux` and `aarch64-darwin` as of 3.3.1 ([#158613](https://github.com/NixOS/nixpkgs/pull/158613)).
- The `R` package now builds again on `aarch64-darwin` ([#158992](https://github.com/NixOS/nixpkgs/pull/158992)).
diff --git a/nixos/modules/services/x11/desktop-managers/xfce.nix b/nixos/modules/services/x11/desktop-managers/xfce.nix
index 3cf92f98c56f..0bb5c1268cac 100644
--- a/nixos/modules/services/x11/desktop-managers/xfce.nix
+++ b/nixos/modules/services/x11/desktop-managers/xfce.nix
@@ -99,6 +99,7 @@ in
ristretto
xfce4-appfinder
xfce4-notifyd
+ xfce4-screensaver
xfce4-screenshooter
xfce4-session
xfce4-settings
@@ -168,5 +169,6 @@ in
xfce4-notifyd
];
+ security.pam.services.xfce4-screensaver.unixAuth = true;
};
}
diff --git a/pkgs/desktops/xfce/applications/xfce4-screensaver/default.nix b/pkgs/desktops/xfce/applications/xfce4-screensaver/default.nix
new file mode 100644
index 000000000000..4ac72b02da1a
--- /dev/null
+++ b/pkgs/desktops/xfce/applications/xfce4-screensaver/default.nix
@@ -0,0 +1,49 @@
+{ mkXfceDerivation
+, dbus-glib
+, garcon
+, glib
+, gtk3
+, libX11
+, libXScrnSaver
+, libXrandr
+, libwnck
+, libxfce4ui
+, libxklavier
+, pam
+, systemd
+, xfconf
+, lib
+}:
+
+mkXfceDerivation {
+ category = "apps";
+ pname = "xfce4-screensaver";
+ version = "4.16.0";
+
+ sha256 = "1vblqhhzhv85yd5bz1xg14yli82ys5qrjdcabg3l53glbk61n99p";
+
+ buildInputs = [
+ dbus-glib
+ garcon
+ glib
+ gtk3
+ libX11
+ libXScrnSaver
+ libXrandr
+ libwnck
+ libxfce4ui
+ libxklavier
+ pam
+ systemd
+ xfconf
+ ];
+
+ configureFlags = [ "--without-console-kit" ];
+
+ makeFlags = [ "DBUS_SESSION_SERVICE_DIR=$(out)/etc" ];
+
+ meta = {
+ description = "Screensaver for Xfce";
+ maintainers = with lib.maintainers; [ symphorien ];
+ };
+}
diff --git a/pkgs/desktops/xfce/default.nix b/pkgs/desktops/xfce/default.nix
index 0205a7226398..b181cc29c966 100644
--- a/pkgs/desktops/xfce/default.nix
+++ b/pkgs/desktops/xfce/default.nix
@@ -82,6 +82,8 @@ lib.makeScope pkgs.newScope (self: with self; {
xfce4-terminal = callPackage ./applications/xfce4-terminal { };
+ xfce4-screensaver = callPackage ./applications/xfce4-screensaver { };
+
xfce4-screenshooter = callPackage ./applications/xfce4-screenshooter {
inherit (pkgs.gnome) libsoup;
};