nixpkgs/nixos/tests/rsync.nix
2025-10-22 20:48:35 +02:00

65 lines
1.6 KiB
Nix

{
name = "rsync";
nodes.machine = {
users.users.test.isNormalUser = true;
services.rsync = {
enable = true;
jobs = {
root = {
sources = [ "/root/src/" ];
destination = "/root/dst";
settings = {
archive = true;
delete = true;
mkpath = true;
};
timerConfig = {
OnCalendar = "daily";
Persistent = false;
};
inhibit = [ "sleep" ];
};
user = {
sources = [ "/home/test/src/" ];
destination = "/home/test/dst";
settings = {
archive = true;
delete = true;
mkpath = true;
};
timerConfig = {
OnCalendar = "daily";
Persistent = false;
};
user = "test";
group = "users";
};
};
};
};
testScript = ''
machine.start()
machine.wait_for_unit("multi-user.target")
machine.succeed("mkdir --parents /root/src")
machine.succeed("echo test data > /root/src/file.txt")
machine.start_job("rsync-job-root.service")
machine.succeed("""[[ 'test data' == "$(< /root/dst/file.txt)" ]]""")
machine.succeed("mkdir --parents /home/test/src")
machine.succeed("echo test data > /home/test/src/file.txt")
machine.start_job("rsync-job-user.service")
machine.succeed("""[[ 'test data' == "$(< /home/test/dst/file.txt)" ]]""")
machine.wait_for_unit("timers.target")
machine.require_unit_state("rsync-job-root.timer", "active")
machine.require_unit_state("rsync-job-user.timer", "active")
machine.shutdown()
'';
}