vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / x11 / xscreensaver.nix
blobdc269b892ebcf667c2fe0e2b351aa5e903b22d35
1 { config, lib, pkgs, ... }:
3 let
4   cfg = config.services.xscreensaver;
5 in
7   options.services.xscreensaver = {
8     enable = lib.mkEnableOption "xscreensaver user service";
10     package = lib.mkOption {
11       type = lib.types.package;
12       default = pkgs.xscreensaver;
13       defaultText = lib.literalExpression "pkgs.xscreensaver";
14       description = "Which xscreensaver package to use.";
15     };
16   };
18   config = lib.mkIf cfg.enable {
19     # Make xscreensaver-auth setuid root so that it can (try to) prevent the OOM
20     # killer from unlocking the screen.
21     security.wrappers.xscreensaver-auth = {
22       setuid = true;
23       owner = "root";
24       group = "root";
25       source = "${pkgs.xscreensaver}/libexec/xscreensaver/xscreensaver-auth";
26     };
28     systemd.user.services.xscreensaver = {
29       enable = true;
30       description = "XScreenSaver";
31       after = [ "graphical-session-pre.target" ];
32       partOf = [ "graphical-session.target" ];
33       wantedBy = [ "graphical-session.target" ];
34       path = [ cfg.package ];
35       serviceConfig.ExecStart = "${cfg.package}/bin/xscreensaver -no-splash";
36     };
37   };
39   meta.maintainers = with lib.maintainers; [ vancluever AndersonTorres ];