1import ./make-test-python.nix (
2 { lib, ... }:
3 {
4 name = "containers-require-bind-mounts";
5 meta.maintainers = with lib.maintainers; [ kira-bruneau ];
6
7 nodes.machine = {
8 containers.require-bind-mounts = {
9 bindMounts = {
10 "/srv/data" = { };
11 };
12 config = { };
13 };
14
15 virtualisation.fileSystems = {
16 "/srv/data" = {
17 fsType = "tmpfs";
18 options = [ "noauto" ];
19 };
20 };
21 };
22
23 testScript = ''
24 machine.wait_for_unit("default.target")
25
26 assert "require-bind-mounts" in machine.succeed("nixos-container list")
27 assert "down" in machine.succeed("nixos-container status require-bind-mounts")
28 assert "inactive" in machine.fail("systemctl is-active srv-data.mount")
29
30 with subtest("bind mount host paths must be mounted to run container"):
31 machine.succeed("nixos-container start require-bind-mounts")
32 assert "up" in machine.succeed("nixos-container status require-bind-mounts")
33 assert "active" in machine.succeed("systemctl status srv-data.mount")
34
35 machine.succeed("systemctl stop srv-data.mount")
36 assert "down" in machine.succeed("nixos-container status require-bind-mounts")
37 assert "inactive" in machine.fail("systemctl is-active srv-data.mount")
38 '';
39 }
40)