nixos/modules/rclone-webdav/default.nix

59 lines
1.7 KiB
Nix
Raw Normal View History

2023-05-29 12:26:02 +02:00
{ custom }: { config, pkgs, ... }:
let
2023-05-29 12:26:02 +02:00
pathToMonitor = "/home/${config.az-username}/10_documents/";
syncNotes = pkgs.writeShellScriptBin "monitor-notes" ''
2023-02-17 19:18:10 +01:00
${pkgs.rclone}/bin/rclone bisync -P --remove-empty-dirs --max-delete=10 --exclude=/99_archive/** nextcloud:10_documents ${pathToMonitor}
'';
in
{
2023-02-13 20:54:15 +01:00
imports = [
(import "${custom.inputs.self}/modules/telegram-notifications"
{
inherit custom;
})
2023-02-13 20:54:15 +01:00
];
age.secrets.webdavSecrets = {
file = "${custom.inputs.self}/scrts/webdav_andreas.age";
2023-05-29 12:26:02 +02:00
path = "/home/${config.az-username}/.config/rclone/rclone.conf";
2023-02-13 20:54:15 +01:00
mode = "600";
2023-05-29 12:26:02 +02:00
owner = "${config.az-username}";
2023-02-13 20:54:15 +01:00
group = "users";
};
systemd.timers."rclone-webdav-sync" = {
2023-02-13 20:54:15 +01:00
wantedBy = [ "timers.target" ];
partOf = [ "rclone-webdav-sync.service" ];
2023-02-13 20:54:15 +01:00
timerConfig = {
OnStartupSec = "5min";
OnUnitActiveSec = "5min";
};
};
systemd.services."rclone-webdav-sync" = {
after = [ "network-online.target" ];
serviceConfig = {
2023-05-29 12:26:02 +02:00
User = config.az-username;
Type = "oneshot";
2023-02-13 20:54:15 +01:00
};
onFailure = [ "unit-status-telegram@%n.service" ];
script = "${syncNotes}/bin/monitor-notes";
2023-02-13 20:54:15 +01:00
};
systemd.services."rclone-webdav-monitor" = {
requires = [ "network-online.target" ];
2023-02-13 20:54:15 +01:00
after = [ "network-online.target" ];
serviceConfig = {
2023-05-29 12:26:02 +02:00
User = config.az-username;
2023-02-13 20:54:15 +01:00
};
onFailure = [ "unit-status-telegram@%n.service" ];
wantedBy = [ "multi-user.target" ];
2023-02-13 20:54:15 +01:00
script = ''
${pkgs.inotify-tools}/bin/inotifywait -m -r -e create,modify,delete,move "${pathToMonitor}" |
while read -r directory event file; do
sleep 10
${syncNotes}/bin/monitor-notes
done
2023-02-13 20:54:15 +01:00
'';
};
}