1{ lib, pkgs, ... }:
2{
3 name = "btrbk-no-timer";
4 meta.maintainers = with lib.maintainers; [ oxalica ];
5
6 nodes.machine =
7 { ... }:
8 {
9 environment.systemPackages = with pkgs; [ btrfs-progs ];
10 services.btrbk.instances.local = {
11 onCalendar = null;
12 settings.volume."/mnt" = {
13 snapshot_dir = "btrbk/local";
14 subvolume = "to_backup";
15 };
16 };
17 };
18
19 testScript = ''
20 start_all()
21
22 # Create btrfs partition at /mnt
23 machine.succeed("truncate --size=128M /data_fs")
24 machine.succeed("mkfs.btrfs /data_fs")
25 machine.succeed("mkdir /mnt")
26 machine.succeed("mount /data_fs /mnt")
27 machine.succeed("btrfs subvolume create /mnt/to_backup")
28 machine.succeed("mkdir -p /mnt/btrbk/local")
29
30 # The service should not have any triggering timer.
31 unit = machine.get_unit_info('btrbk-local.service')
32 assert "TriggeredBy" not in unit
33
34 # Manually starting the service should still work.
35 machine.succeed("echo foo > /mnt/to_backup/bar")
36 machine.start_job("btrbk-local.service")
37 machine.wait_until_succeeds("cat /mnt/btrbk/local/*/bar | grep foo")
38 '';
39}