diff --git a/tests/test.nix b/tests/test.nix new file mode 100644 index 0000000..0f875e6 --- /dev/null +++ b/tests/test.nix @@ -0,0 +1,97 @@ +import ({ pkgs, ... }: let + + disko-config = { + type = "devices"; + content = { + vdb = { + type = "table"; + format = "gpt"; + partitions = [ + { + type = "partition"; + part-type = "ESP"; + start = "1MiB"; + end = "100MiB"; + fs-type = "FAT32"; + bootable = true; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + options = [ + "defaults" + ]; + }; + } + { + type = "partition"; + part-type = "primary"; + start = "100MiB"; + end = "100%"; + content = { + type = "luks"; + algo = "aes-xts..."; + name = "crypted"; + keyfile = "/tmp/secret.key"; + extraArgs = [ + "--hash sha512" + "--iter-time 5000" + ]; + content = { + type = "lvm"; + name = "pool"; + lvs = { + root = { + type = "lv"; + size = "100M"; + mountpoint = "/"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + options = [ + "defaults" + ]; + }; + }; + home = { + type = "lv"; + size = "100M"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/home"; + }; + }; + }; + }; + }; + } + ]; + }; + }; + }; + +in { + name = "disko"; + + machine = + { config, pkgs, ... }: + + { + imports = [ + + + ]; + + virtualisation.emptyDiskImages = [ 512 ]; + }; + + testScript = + '' + $machine->succeed("echo 'secret' > /tmp/secret.key"); + $machine->succeed("${pkgs.writeScript "create" ((import ../lib).create disko-config)}"); + $machine->succeed("${pkgs.writeScript "mount" ((import ../lib).mount disko-config)}"); + ''; + +})