1import ./make-test.nix ({ ... }:
2{
3 name = "snapper";
4
5 machine = { pkgs, lib, ... }: {
6 boot.initrd.postDeviceCommands = ''
7 ${pkgs.btrfs-progs}/bin/mkfs.btrfs -f -L aux /dev/vdb
8 '';
9
10 virtualisation.emptyDiskImages = [ 4096 ];
11
12 fileSystems = lib.mkVMOverride {
13 "/home" = {
14 device = "/dev/disk/by-label/aux";
15 fsType = "btrfs";
16 };
17 };
18 services.snapper.configs.home.subvolume = "/home";
19 services.snapper.filters = "/nix";
20 };
21
22 testScript = ''
23 $machine->succeed("btrfs subvolume create /home/.snapshots");
24
25 $machine->succeed("snapper -c home list");
26
27 $machine->succeed("snapper -c home create --description empty");
28
29 $machine->succeed("echo test > /home/file");
30 $machine->succeed("snapper -c home create --description file");
31
32 $machine->succeed("snapper -c home status 1..2");
33
34 $machine->succeed("snapper -c home undochange 1..2");
35 $machine->fail("ls /home/file");
36
37 $machine->succeed("snapper -c home delete 2");
38
39 $machine->succeed("systemctl --wait start snapper-timeline.service");
40
41 $machine->succeed("systemctl --wait start snapper-cleanup.service");
42 '';
43})