#[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct Config { anti_phishing_code: String, keymap: String, modules: String, auths: Vec, networks: Vec, ssh: SSHServer, #[serde(default)] pre_lvm_crypt: Vec, #[serde(default)] lvm: Vec, #[serde(default)] crypt: Vec, bootstrap: Bootstrap, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct Auth { name: String, #[serde(rename = "sshKey")] ssh_key: String, password: String, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct Network { name: String, interfaces: Vec, script: String, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct NetworkInterface { pub var: String, pub n: i16, pub regexps: Vec, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct SSHServer { listen: String, keys: SSHKeys, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct SSHKeys { dsa: String, rsa: String, ecdsa: String, ed25519: String, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct LvmVG { vg: String, pvs: LvmPV, defaults: Option, lvs: Vec, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct LvmLVDefaults { fs: String, raid: Option, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct LvmLV { name: String, fs: String, raid: Option, size: String, extents: String, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct LvmPV { n: i16, regexps: Vec, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct CryptDev { dev: String, prefix: String, name: String, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct Raid { mirrors: u8, stripes: u8, } #[derive(Debug, serde::Deserialize, serde::Serialize)] pub struct Bootstrap { dev: String, seed: String, }