1{ pkgs, ... }:
2{
3 name = "overlayfs";
4 meta.maintainers = with pkgs.lib.maintainers; [ bachp ];
5
6 nodes.machine =
7 { pkgs, ... }:
8 {
9 virtualisation.emptyDiskImages = [ 512 ];
10 networking.hostId = "deadbeef";
11 environment.systemPackages = with pkgs; [ parted ];
12 };
13
14 testScript = ''
15 machine.succeed("ls /dev")
16
17 machine.succeed("mkdir -p /tmp/mnt")
18
19 # Test ext4 + overlayfs
20 machine.succeed(
21 'mkfs.ext4 -F -L overlay-ext4 /dev/vdb',
22 'mount -t ext4 /dev/vdb /tmp/mnt',
23 'mkdir -p /tmp/mnt/upper /tmp/mnt/lower /tmp/mnt/work /tmp/mnt/merged',
24 # Setup some existing files
25 'echo Replace > /tmp/mnt/lower/replace.txt',
26 'echo Append > /tmp/mnt/lower/append.txt',
27 'echo Overwrite > /tmp/mnt/lower/overwrite.txt',
28 'mount -t overlay overlay -o lowerdir=/tmp/mnt/lower,upperdir=/tmp/mnt/upper,workdir=/tmp/mnt/work /tmp/mnt/merged',
29 # Test new
30 'echo New > /tmp/mnt/merged/new.txt',
31 '[[ "$(cat /tmp/mnt/merged/new.txt)" == New ]]',
32 # Test replace
33 '[[ "$(cat /tmp/mnt/merged/replace.txt)" == Replace ]]',
34 'echo Replaced > /tmp/mnt/merged/replace-tmp.txt',
35 'mv /tmp/mnt/merged/replace-tmp.txt /tmp/mnt/merged/replace.txt',
36 '[[ "$(cat /tmp/mnt/merged/replace.txt)" == Replaced ]]',
37 # Overwrite
38 '[[ "$(cat /tmp/mnt/merged/overwrite.txt)" == Overwrite ]]',
39 'echo Overwritten > /tmp/mnt/merged/overwrite.txt',
40 '[[ "$(cat /tmp/mnt/merged/overwrite.txt)" == Overwritten ]]',
41 # Test append
42 '[[ "$(cat /tmp/mnt/merged/append.txt)" == Append ]]',
43 'echo ed >> /tmp/mnt/merged/append.txt',
44 '[[ "$(cat /tmp/mnt/merged/append.txt)" == "Append\ned" ]]',
45 'umount /tmp/mnt/merged',
46 'umount /tmp/mnt',
47 'udevadm settle',
48 )
49 '';
50}