diff --git a/modules/services/screen-locker.nix b/modules/services/screen-locker.nix index 2d0fc7588..30591a7d1 100644 --- a/modules/services/screen-locker.nix +++ b/modules/services/screen-locker.nix @@ -65,12 +65,21 @@ in { }; }; - # xss-lock will run specified screen locker when the session is locked via loginctl - # can't be started as a systemd service, - # see https://bitbucket.org/raymonad/xss-lock/issues/13/allow-operation-as-systemd-user-unit - xsession.initExtra = "${pkgs.xss-lock}/bin/xss-lock ${ - concatStringsSep " " cfg.xssLockExtraOptions - } -- ${cfg.lockCmd} &"; + systemd.user.services.xss-lock = { + Unit = { + Description = "xss-lock, session locker service"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; + + Install = { WantedBy = [ "graphical-session.target" ]; }; + + Service = { + ExecStart = concatStringsSep " " + ([ "${pkgs.xss-lock}/bin/xss-lock" "-s \${XDG_SESSION_ID}" ] + ++ cfg.xssLockExtraOptions ++ [ "-- ${cfg.lockCmd}" ]); + }; + }; }; }