dotfiles/platforms/nixos/modules/services/betterlockscreen.nix

47 lines
1.2 KiB
Nix
Raw Normal View History

2025-01-20 22:35:40 -05:00
{
config,
pkgs,
lib,
...
}:
let
2025-02-16 10:48:31 -05:00
inherit (config.nmasur.settings) username;
2025-01-20 22:35:40 -05:00
cfg = config.services.betterlockscreen;
2025-02-15 13:59:17 -05:00
# Disable Dunst so that it's not attempting to reach a non-existent dunst service
betterlockscreen = pkgs.betterlockscreen.override { withDunst = cfg.dunst.enable; };
2025-01-20 22:35:40 -05:00
in
{
2025-02-15 13:59:17 -05:00
options.services.betterlockscreen = {
enable = lib.mkEnableOption "Betterlockscreen X server display lock";
dunst.enable = lib.mkEnableOption "Dunst integration";
};
2025-01-20 22:35:40 -05:00
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 = {
2025-02-16 10:48:31 -05:00
User = username;
2025-01-20 22:35:40 -05:00
Type = "simple";
Environment = "DISPLAY=:0";
TimeoutSec = "infinity";
2025-02-15 13:59:17 -05:00
ExecStart = "${lib.getExe betterlockscreen} --lock --display 1 --blur 0.5 --span";
ExecStartPost = "${lib.getExe' pkgs.coreutils-full "sleep"} 1";
2025-01-20 22:35:40 -05:00
};
wantedBy = [
"sleep.target"
"suspend.target"
];
};
};
}