summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--example/config.nix117
-rw-r--r--tests/default.nix11
2 files changed, 72 insertions, 56 deletions
diff --git a/example/config.nix b/example/config.nix
index 1a64b1c..f75ec63 100644
--- a/example/config.nix
+++ b/example/config.nix
@@ -1,67 +1,74 @@
# usage: nix-instantiate --eval --json --strict example/config.nix | jq .
{
- type = "devices";
- content = {
- sda = {
- type = "table";
- format = "gpt";
- partitions = [
- {
- type = "partition";
- part-type = "ESP";
- start = "1MiB";
- end = "1024MiB";
- fs-type = "fat32";
- bootable = true;
+ lvm_vg = {
+ pool = {
+ type = "lvm_vg";
+ lvs = {
+ root = {
+ type = "lv";
+ size = "10G";
content = {
type = "filesystem";
- format = "vfat";
- mountpoint = "/boot";
+ format = "ext4";
+ mountpoint = "/";
};
- }
- {
- type = "partition";
- part-type = "primary";
- start = "1024MiB";
- end = "100%";
- flags = [ "bios_grub" ];
+ };
+ home = {
+ type = "lv";
+ size = "10G";
content = {
- type = "luks";
- algo = "aes-xts...";
- name = "crypted";
- keyfile = "/tmp/secret.key";
- extraArgs = [
- "--hash sha512"
- "--iter-time 5000"
- ];
+ type = "filesystem";
+ format = "ext4";
+ mountpoint = "/home";
+ };
+ };
+ };
+ };
+ };
+ disk = {
+ sda = {
+ device = "/dev/sda";
+ content = {
+ type = "table";
+ format = "gpt";
+ partitions = [
+ {
+ name = "boot";
+ type = "partition";
+ part-type = "ESP";
+ start = "1MiB";
+ end = "1024MiB";
+ fs-type = "fat32";
+ bootable = true;
+ content = {
+ type = "filesystem";
+ format = "vfat";
+ mountpoint = "/boot";
+ };
+ }
+ {
+ name = "crypt_root";
+ type = "partition";
+ part-type = "primary";
+ start = "1024MiB";
+ end = "100%";
+ flags = ["bios_grub"];
content = {
- type = "lvm";
- name = "pool";
- lvs = {
- root = {
- type = "lv";
- size = "10G";
- mountpoint = "/";
- content = {
- type = "filesystem";
- format = "ext4";
- mountpoint = "/";
- };
- };
- home = {
- type = "lv";
- size = "10G";
- content = {
- type = "filesystem";
- format = "ext4";
- mountpoint = "/home";
- };
- };
+ type = "luks";
+ name = "crypted";
+ keyFile = "/tmp/secret.key";
+ extraArgs = [
+ "--hash sha512"
+ "--iter-time 5000"
+ ];
+ content = {
+ type = "lvm_pv";
+ vg = "pool";
};
};
- };
- }
- ];
+ }
+ ];
+ };
};
};
}
diff --git a/tests/default.nix b/tests/default.nix
index 525f936..3118624 100644
--- a/tests/default.nix
+++ b/tests/default.nix
@@ -4,6 +4,14 @@
let
lib = pkgs.lib;
makeDiskoTest = (pkgs.callPackage ./lib.nix { inherit makeTest; }).makeDiskoTest;
+
+ evalTest = name: configFile: let
+ disko-config = import configFile;
+ in {
+ "${name}-tsp-create" = pkgs.writeScript "create" ((pkgs.callPackage ../. { }).create disko-config);
+ "${name}-tsp-mount" = pkgs.writeScript "mount" ((pkgs.callPackage ../. { }).mount disko-config);
+ };
+
allTestFilenames =
builtins.map (lib.removeSuffix ".nix") (
builtins.filter
@@ -11,6 +19,7 @@ let
(lib.attrNames (builtins.readDir ./.))
);
- allTests = lib.genAttrs (allTestFilenames) (test: import (./. + "/${test}.nix") { inherit makeDiskoTest; });
+ allTests = lib.genAttrs (allTestFilenames) (test: import (./. + "/${test}.nix") { inherit makeDiskoTest; }) //
+ evalTest "lvm-luks-example" ../example/config.nix;
in
allTests