DashNix/home/sync.nix

55 lines
1.6 KiB
Nix

# derived from NixOS wiki
{
config,
pkgs,
lib,
...
}: let
username = config.mods.nextcloud.username;
password =
if (config.sops.secrets ? nextcloud.path)
then config.sops.secrets.nextcloud.path
else "";
url = config.mods.nextcloud.url;
synclist = config.mods.nextcloud.synclist;
in
lib.mkIf config.mods.nextcloud.enable {
systemd.user = {
services = builtins.listToAttrs (
map (opts: {
name = "${opts.name}";
value = {
Unit = {
Description = "Auto sync Nextcloud";
After = "network-online.target";
};
Service = {
Type = "simple";
ExecStart = "${pkgs.bash}/bin/bash -c '${pkgs.nextcloud-client}/bin/nextcloudcmd -h --path ${opts.remote} ${opts.local} https://${username}:$(bat ${password})@${url}'";
TimeoutStopSec = "180";
KillMode = "process";
KillSignal = "SIGINT";
};
Install.WantedBy = ["multi-user.target"];
};
})
synclist
);
timers = builtins.listToAttrs (
map (opts: {
name = "${opts.name}";
value = {
Unit.Description = "Automatic sync files with Nextcloud when booted up after 1 minute then rerun every 60 minutes";
Timer.OnBootSec = "1min";
Timer.OnUnitActiveSec = "60min";
Install.WantedBy = [
"multi-user.target"
"timers.target"
];
};
})
synclist
);
startServices = true;
};
}