84 lines
2.2 KiB
Nix
84 lines
2.2 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
hostPkgs,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib) types;
|
|
|
|
nodeConfigurationAttrs = lib.mkOption {
|
|
internal = true;
|
|
type = types.attrsOf (
|
|
types.submodule {
|
|
options = {
|
|
name = lib.mkOption {
|
|
internal = true;
|
|
type = types.str;
|
|
};
|
|
start_script = lib.mkOption {
|
|
internal = true;
|
|
type = types.path;
|
|
};
|
|
};
|
|
}
|
|
);
|
|
};
|
|
in
|
|
{
|
|
options = {
|
|
driverConfiguration = lib.mkOption {
|
|
description = "Configuration attribute set for test driver invocation";
|
|
internal = true;
|
|
type = types.submodule {
|
|
options = {
|
|
vms = nodeConfigurationAttrs;
|
|
containers = nodeConfigurationAttrs;
|
|
vlans = lib.mkOption {
|
|
internal = true;
|
|
type = types.listOf types.ints.unsigned;
|
|
};
|
|
global_timeout = lib.mkOption {
|
|
internal = true;
|
|
type = types.ints.unsigned;
|
|
};
|
|
enable_ssh_backdoor = lib.mkOption {
|
|
internal = true;
|
|
type = types.bool;
|
|
};
|
|
test_script = lib.mkOption {
|
|
internal = true;
|
|
type = types.path;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
driverConfigurationFile = lib.mkOption {
|
|
internal = true;
|
|
type = types.path;
|
|
};
|
|
};
|
|
|
|
config = {
|
|
driverConfiguration = {
|
|
vms = lib.mapAttrs (name: value: {
|
|
inherit name;
|
|
start_script = lib.getExe value.system.build.vm;
|
|
}) config.nodes;
|
|
containers = lib.mapAttrs (name: value: {
|
|
inherit name;
|
|
start_script = lib.getExe value.system.build.nspawn;
|
|
}) config.containers;
|
|
vlans = lib.unique (
|
|
lib.concatMap (
|
|
m: (m.virtualisation.vlans ++ (lib.mapAttrsToList (_: v: v.vlan) m.virtualisation.interfaces))
|
|
) (lib.attrValues config.nodes ++ lib.attrValues config.containers)
|
|
);
|
|
global_timeout = config.globalTimeout;
|
|
test_script = hostPkgs.writeText "test-script" config.testScriptString;
|
|
enable_ssh_backdoor = config.sshBackdoor.enable;
|
|
};
|
|
driverConfigurationFile = hostPkgs.writers.writeJSON "driverConfiguration.json" config.driverConfiguration;
|
|
};
|
|
}
|