56 lines
1.6 KiB
Nix
56 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;
|
|
};
|
|
}
|