dotfiles/platforms/nixos/modules/services/betterlockscreen.nix
2025-02-16 10:48:31 -05:00

47 lines
1.2 KiB
Nix

{
config,
pkgs,
lib,
...
}:
let
inherit (config.nmasur.settings) username;
cfg = config.services.betterlockscreen;
# Disable Dunst so that it's not attempting to reach a non-existent dunst service
betterlockscreen = pkgs.betterlockscreen.override { withDunst = cfg.dunst.enable; };
in
{
options.services.betterlockscreen = {
enable = lib.mkEnableOption "Betterlockscreen X server display lock";
dunst.enable = lib.mkEnableOption "Dunst integration";
};
config = lib.mkIf cfg.enable {
# Ref: https://github.com/betterlockscreen/betterlockscreen/blob/next/system/betterlockscreen%40.service
systemd.services.lock = {
enable = true;
description = "Lock the screen on resume from suspend";
before = [
"sleep.target"
"suspend.target"
];
serviceConfig = {
User = username;
Type = "simple";
Environment = "DISPLAY=:0";
TimeoutSec = "infinity";
ExecStart = "${lib.getExe betterlockscreen} --lock --display 1 --blur 0.5 --span";
ExecStartPost = "${lib.getExe' pkgs.coreutils-full "sleep"} 1";
};
wantedBy = [
"sleep.target"
"suspend.target"
];
};
};
}