cluster/services/c-f32aebf5: fix restarting, perform daily backups and auto-restarts
This commit is contained in:
parent
38ce5a40d5
commit
598f9a1a1e
1 changed files with 57 additions and 0 deletions
|
@ -81,6 +81,9 @@ in
|
||||||
Group = cid;
|
Group = cid;
|
||||||
ReadWritePaths = [ home ];
|
ReadWritePaths = [ home ];
|
||||||
|
|
||||||
|
ExecStop = "${pkgs.wine64Packages.staging}/bin/wineserver --kill";
|
||||||
|
Restart = "on-failure";
|
||||||
|
|
||||||
CPUQuota = "75%";
|
CPUQuota = "75%";
|
||||||
MemoryMax = "2G";
|
MemoryMax = "2G";
|
||||||
MemorySwapMax = "2G";
|
MemorySwapMax = "2G";
|
||||||
|
@ -107,6 +110,60 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.services."${cid}-backup" = {
|
||||||
|
startAt = "04:00";
|
||||||
|
|
||||||
|
script = ''
|
||||||
|
cd ${home}/drive_c/spt/user
|
||||||
|
tarball=".profiles-backup-$(date +%s).tar"
|
||||||
|
final="profiles-backup-$(date +%Y-%m-%d-%H:%M:%S).tar.xz"
|
||||||
|
${pkgs.gnutar}/bin/tar cvf "$tarball" profiles/
|
||||||
|
${pkgs.xz}/bin/xz -9 "$tarball"
|
||||||
|
mv "''${tarball}.xz" "$final"
|
||||||
|
${pkgs.rotate-backups}/bin/rotate-backups -S yes -q --daily 30 --weekly 12 -I 'profiles-backup-*.tar.xz' .
|
||||||
|
'';
|
||||||
|
|
||||||
|
unitConfig.ConditionPathExists = "${home}/drive_c/spt/user";
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
DynamicUser = true;
|
||||||
|
User = cid;
|
||||||
|
Group = cid;
|
||||||
|
ReadWritePaths = [ home ];
|
||||||
|
PrivateNetwork = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services."${cid}-auto-restart" = {
|
||||||
|
startAt = "05:00";
|
||||||
|
|
||||||
|
script = ''
|
||||||
|
echo -n "Service status: "
|
||||||
|
if ! systemctl is-active '${cid}.service'; then
|
||||||
|
echo Service not active.
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
for i in {1..120}; do
|
||||||
|
if test "$(${pkgs.iproute2}/bin/ss -H -tn 'cgroup = /sys/fs/cgroup/system.slice/${cid}.service' | wc -l)" != 0; then
|
||||||
|
echo Service in use.
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
echo Restarting service...
|
||||||
|
systemctl restart --no-block '${cid}.service'
|
||||||
|
'';
|
||||||
|
|
||||||
|
unitConfig.ConditionPathExists = "${home}/drive_c/spt";
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
services.openssh.extraConfig = ''
|
services.openssh.extraConfig = ''
|
||||||
Match User ${cid}
|
Match User ${cid}
|
||||||
ChrootDirectory ${root}
|
ChrootDirectory ${root}
|
||||||
|
|
Loading…
Reference in a new issue