1use crate::{2 db::{keys::list_hosts, secret::SecretDb, Db, DbData},3 nix::{NixBuild, NixCopy, HOSTS_ATTRIBUTE, SYSTEMS_ATTRIBUTE},4};5use anyhow::Result;6use clap::Clap;7use log::info;89#[derive(Clap)]10pub struct BuildSystems {}1112impl BuildSystems {13 pub fn run(self) -> Result<()> {14 let db = Db::new(".fleet")?;15 let hosts = list_hosts()?;16 let data = SecretDb::open(&db)?.generate_nix_data()?;1718 for host in hosts.iter() {19 info!("Building host {}", host);20 let path = NixBuild::new(format!(21 "{}.{}.config.system.build.toplevel",22 SYSTEMS_ATTRIBUTE, host,23 ))24 .env("SECRET_DATA".into(), data.clone())25 .run()?;26 info!("{:?}", path.path());27 NixCopy::new(path.path().to_owned()).to(format!("ssh://root@{}", host))?;28 std::thread::sleep_ms(9999999)29 }30 Ok(())31 }32}