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