From 4c55551353bb57a2fa8f25be0f6109fc324546dd Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Sat, 17 Aug 2024 13:18:49 +0200 Subject: ... --- accounts/gkleen@sif/systemd.nix | 76 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) (limited to 'accounts/gkleen@sif/systemd.nix') diff --git a/accounts/gkleen@sif/systemd.nix b/accounts/gkleen@sif/systemd.nix index be016b09..613d034a 100644 --- a/accounts/gkleen@sif/systemd.nix +++ b/accounts/gkleen@sif/systemd.nix @@ -1,7 +1,7 @@ { pkgs, lib, config, userName, ... }: let inherit (lib) listToAttrs nameValuePair; - + xmobar = import ./xmobar pkgs.haskellPackages; cfg = config.home-manager.users.${userName}; @@ -204,6 +204,80 @@ in { WatchdogSec = "2s"; }; }; + polkit-kde-authentication-agent-1 = { + Install = { + WantedBy = ["graphical-session.target"]; + }; + Unit = { + PartOf = ["graphical-session.target"]; + Requires = ["graphical-session-pre.target"]; + After = ["graphical-session-pre.target"]; + }; + Service = { + ExecStart = "${pkgs.kdePackages.polkit-kde-agent-1}/libexec/polkit-kde-authentication-agent-1"; + Restart = "on-failure"; + }; + }; + gtklock = { + Unit = { + Requisite = ["graphical-session.target"]; + PartOf = ["graphical-session.target"]; + }; + Service = { + Type = "notify"; + RuntimeDirectory = "gtklock"; + CacheDirectory = "gtklock"; + ExecStartPre = [ + "${pkgs.libsForQt5.qt5.qttools.bin}/bin/qdbus org.keepassxc.KeePassXC.MainWindow /keepassxc org.keepassxc.KeePassXC.MainWindow.lockAllDatabases" + "${config.systemd.package}/bin/systemctl --user stop gpg-agent.service" + (pkgs.writeShellScript "generate-css" '' + set -x + export PATH="${lib.makeBinPath [cfg.programs.wpaperd.package pkgs.jq pkgs.coreutils pkgs.imagemagick pkgs.findutils]}:$PATH" + + declare -A monitors + monitors=() + while IFS= read -r entry; do + path=$(jq -r ".path" <<<"$entry") + [[ -z "$path" || ! -f "$path" ]] && continue + blurred_path="$CACHE_DIRECTORY"/"$(b2sum -l 128 <<<"$path" | cut -d' ' -f1)"."''${path##*.}" + monitor=$(jq -r ".display" <<<"$entry") + if [[ ! -f "$blurred_path" ]]; then + mkdir -p "$(dirname "$blurred_path")" + magick "$path" -filter Gaussian -resize 6.25% -define filter:sigma=2.5 -resize 1600% "$blurred_path" & + fi + monitors+=([$monitor]="$blurred_path") + done < <(wpaperctl all-wallpapers -j | jq -c ".[]") + wait + + cp --no-preserve=mode ${pkgs.writeText "gtklock.css" '' + #window-box { + padding: 64px; + /* border: 1px solid black; */ + border-radius: 4px; + box-shadow: rgba(0, 0, 0, 0.8) 0px 4px 12px; + /* background-color: white; */ + background-color: rgba(0, 0, 0, 0.5); + } + ''} "$RUNTIME_DIRECTORY"/style.css + for monitor in "''${!monitors[@]}"; do + cat >>"$RUNTIME_DIRECTORY"/style.css <