From 7e7a9707a3ab08545d9638bef01080024826b627 Mon Sep 17 00:00:00 2001 From: Arnie Date: Tue, 11 Mar 2025 08:33:24 +0100 Subject: [PATCH] Add service to sync keepass db on change --- home-manager/becky-dingleberry.nix | 41 +++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/home-manager/becky-dingleberry.nix b/home-manager/becky-dingleberry.nix index 1b06999..63cd697 100644 --- a/home-manager/becky-dingleberry.nix +++ b/home-manager/becky-dingleberry.nix @@ -292,7 +292,7 @@ in ''; }; - systemd.user.services.keepass-sync = { + systemd.user.services.keepass-sync-timer = { Unit.Description = "Sync KeePass database"; Service = { @@ -307,6 +307,45 @@ in Install.WantedBy = [ "default.target" ]; }; + systemd.user.services.keepass-sync = { + Unit.Description = "Sync KeePass database"; + + Service = { + Type = "simple"; + ExecStart = toString ( + pkgs.writeShellScript "keepass-sync" '' + echo "Starting sync" + ${pkgs.inotify-tools}/bin/inotifywait --monitor --quiet -e modify "/mnt/storage/.circuitry/.secret/default.kdbx" | ${pkgs.writeShellScript "keepass-sync-cp" '' + function sync() { + ${pkgs.coreutils}/bin/cp "/mnt/storage/.circuitry/.secret/default.kdbx" "/mnt/storage/.macshare/.secret/arnie.kdbx" + if [[ $? -ne 0 ]]; then + echo "Sync failed" + fi + } + + sync_pid=0 + + while read -r event; do + # Throttle syncing + if [ $sync_pid -ne 0 ]; then + kill $sync_pid 2>/dev/null || true + fi + + # Schedule new sync + { sleep 1; sync; } & + sync_pid=$! + done + ''} + '' + ); + Restart = "always"; + RestartSec = 1; + + }; + + Install.WantedBy = [ "default.target" ]; + }; + systemd.user.services.voron2-red-sync = { Unit.Description = "Sync Voron2 red gcodes";