43 lines
1.4 KiB
Nix
43 lines
1.4 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;
|
|
};
|
|
}
|