at 25.11-pre 1.2 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7 8let 9 cfg = config.services.xscreensaver; 10in 11{ 12 options.services.xscreensaver = { 13 enable = lib.mkEnableOption "xscreensaver user service"; 14 15 package = lib.mkOption { 16 type = lib.types.package; 17 default = pkgs.xscreensaver; 18 defaultText = lib.literalExpression "pkgs.xscreensaver"; 19 description = "Which xscreensaver package to use."; 20 }; 21 }; 22 23 config = lib.mkIf cfg.enable { 24 # Make xscreensaver-auth setuid root so that it can (try to) prevent the OOM 25 # killer from unlocking the screen. 26 security.wrappers.xscreensaver-auth = { 27 setuid = true; 28 owner = "root"; 29 group = "root"; 30 source = "${pkgs.xscreensaver}/libexec/xscreensaver/xscreensaver-auth"; 31 }; 32 33 systemd.user.services.xscreensaver = { 34 enable = true; 35 description = "XScreenSaver"; 36 after = [ "graphical-session-pre.target" ]; 37 partOf = [ "graphical-session.target" ]; 38 wantedBy = [ "graphical-session.target" ]; 39 path = [ cfg.package ]; 40 serviceConfig.ExecStart = "${cfg.package}/bin/xscreensaver -no-splash"; 41 }; 42 }; 43 44 meta.maintainers = with lib.maintainers; [ 45 vancluever 46 ]; 47}