From 69d1bd15f34f589cfd1ebee7b8fd7fe95a79e885 Mon Sep 17 00:00:00 2001 From: Don Harper Date: Thu, 26 Dec 2024 09:50:59 -0600 Subject: [PATCH] task | add support for systemd-lock-handler --- home/gui/default.nix | 1 + hosts/workstation/systemd.nix | 24 ++++++++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/home/gui/default.nix b/home/gui/default.nix index b1eec0e..4be20ac 100644 --- a/home/gui/default.nix +++ b/home/gui/default.nix @@ -63,6 +63,7 @@ in { signal-desktop simple-scan syncthingtray + systemd-lock-handler telegram-desktop texlive.combined.scheme-medium watchmate diff --git a/hosts/workstation/systemd.nix b/hosts/workstation/systemd.nix index b14cc5b..cefdfea 100644 --- a/hosts/workstation/systemd.nix +++ b/hosts/workstation/systemd.nix @@ -5,6 +5,7 @@ let in { systemd = { services = { + systemd-lock-handler = { enable = true; }; NetworkManager-wait-online.enable = lib.mkForce false; systemd-networkd-wait-online.enable = lib.mkForce false; clean-keychain = { @@ -18,17 +19,32 @@ in { }; user = { services = { + swaylock = { + description = "Screen locker for Wayland"; + documentation = ["man:swaylock(1)"]; + onSuccess = ["unlock.target"]; + partOf = ["lock.target"]; + before = ["lock.target"]; + wantedBy = ["lock.target"]; + serviceConfig = { + Type = "forking"; + Environment = "PATH=/run/current-system/sw/bin:/etc/profiles/per-user/don/bin:/home/don/bin"; + ExecStart = "/home/don/bin/lock.sh -m"; + Restart = "on-failure"; + RestartSec = 0; + }; + }; detect-reboot-for-upgrade = { script = '' set -eu -o pipefail booted="$(${readlink} /run/booted-system/{initrd,kernel,kernel-modules})" built="$(${readlink} /nix/var/nix/profiles/system/{initrd,kernel,kernel-modules})" if [[ "''${booted}" != "''${built}" ]]; - then - echo "Looks like we need a reboot!" - ${notify-send} --urgency=low --icon=system-reboot "Reboot is needed for a NixOS upgrade." + then + echo "Looks like we need a reboot!" + ${notify-send} --urgency=low --icon=system-reboot "Reboot is needed for a NixOS upgrade." fi - ''; + ''; serviceConfig = { Type = "oneshot"; }; }; };