at master 1.0 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.mkPackageOption pkgs "xscreensaver" { }; 16 }; 17 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 }; 27 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 }; 38 39 meta.maintainers = with lib.maintainers; [ 40 vancluever 41 ]; 42}