diff --git a/appmgr/src/bin/embassy-init.rs b/appmgr/src/bin/embassy-init.rs index b9cd00b3e..d4299c7ef 100644 --- a/appmgr/src/bin/embassy-init.rs +++ b/appmgr/src/bin/embassy-init.rs @@ -48,6 +48,13 @@ async fn init(cfg_path: Option<&str>) -> Result<(), Error> { false, ) .await?; + // cp -r "/var/lib/docker", "/tmp/docker-data" + embassy::disk::util::bind( + "/tmp/docker-data", + "/var/lib/journal", + false, + ) + .await?; embassy::ssh::sync_keys_from_db(todo!(), "/root/.ssh/authorized_keys").await?; todo!("sync wifi"); embassy::hostname::sync_hostname().await?; @@ -92,8 +99,6 @@ async fn inner_main(cfg_path: Option<&str>) -> Result<(), Error> { }) .await .with_kind(embassy::ErrorKind::Network)?; - } else { - embassy::sound::MARIO_COIN.play().await?; } Ok(()) diff --git a/appmgr/src/bin/embassyd.rs b/appmgr/src/bin/embassyd.rs index f25d3f924..9ce39b2af 100644 --- a/appmgr/src/bin/embassyd.rs +++ b/appmgr/src/bin/embassyd.rs @@ -200,6 +200,8 @@ async fn inner_main(cfg_path: Option<&str>) -> Result, Error> { rpc_ctx.shutdown.subscribe(), ); + embassy::sound::MARIO_COIN.play().await?; + futures::try_join!( server.map_err(|e| Error::new(e, ErrorKind::Network)), revision_cache_task.map_err(|e| Error::new( diff --git a/appmgr/src/context/rpc.rs b/appmgr/src/context/rpc.rs index 8e7cccb4c..739f9ad01 100644 --- a/appmgr/src/context/rpc.rs +++ b/appmgr/src/context/rpc.rs @@ -61,9 +61,10 @@ impl RpcContextConfig { .unwrap_or_else(|| Cow::Owned(Path::new("/").join(self.zfs_pool_name()))) } pub async fn db(&self) -> Result { - PatchDb::open(self.datadir().join("main").join("embassy.db")) + let db_path = self.datadir().join("main").join("embassy.db"); + PatchDb::open(&db_path) .await - .map_err(Error::from) + .with_ctx(|_| (crate::ErrorKind::Filesystem, db_path.display().to_string())) } pub async fn secret_store(&self) -> Result { let secret_store_url = format!( diff --git a/appmgr/src/disk/main.rs b/appmgr/src/disk/main.rs index 13153cb22..7d7592069 100644 --- a/appmgr/src/disk/main.rs +++ b/appmgr/src/disk/main.rs @@ -51,7 +51,7 @@ pub async fn create_fs(cfg: &RpcContextConfig) -> Result<(), Error> { .arg("-o") .arg("keylocation=file:///etc/embassy/password") .arg("-o") - .arg("keyformat=password") + .arg("keyformat=passphrase") .arg(format!("{}/main", cfg.zfs_pool_name())) .invoke(crate::ErrorKind::Zfs) .await?; @@ -62,7 +62,7 @@ pub async fn create_fs(cfg: &RpcContextConfig) -> Result<(), Error> { .arg("-o") .arg("keylocation=file:///etc/embassy/password") .arg("-o") - .arg("keyformat=password") + .arg("keyformat=passphrase") .arg(format!("{}/package-data", cfg.zfs_pool_name())) .invoke(crate::ErrorKind::Zfs) .await?; @@ -177,6 +177,11 @@ pub async fn mount(cfg: &RpcContextConfig, password: &str) -> Result<(), Error> .arg(format!("{}/main", cfg.zfs_pool_name())) .invoke(crate::ErrorKind::Zfs) .await?; + Command::new("zfs") + .arg("load-key") + .arg(format!("{}/package-data", cfg.zfs_pool_name())) + .invoke(crate::ErrorKind::Zfs) + .await?; tokio::fs::remove_file(PASSWORD_PATH) .await .with_ctx(|_| (crate::ErrorKind::Filesystem, PASSWORD_PATH))?; diff --git a/appmgr/src/install/mod.rs b/appmgr/src/install/mod.rs index 50bc7d5ab..2bc62e2cc 100644 --- a/appmgr/src/install/mod.rs +++ b/appmgr/src/install/mod.rs @@ -511,6 +511,10 @@ pub async fn install_s9pk( .await?; log::info!("Install {}@{}: Unpacked Docker Images", pkg_id, version,); + log::info!("Install {}@{}: Unpacking Assets", pkg_id, version); + // TODO + log::info!("Install {}@{}: Unpacked Assets", pkg_id, version); + progress.unpack_complete.store(true, Ordering::SeqCst); progress_model.put(&mut ctx.db.handle(), &progress).await?; diff --git a/appmgr/src/net/tor.rs b/appmgr/src/net/tor.rs index 0b0789065..7aa5d6a3f 100644 --- a/appmgr/src/net/tor.rs +++ b/appmgr/src/net/tor.rs @@ -23,7 +23,7 @@ use crate::{Error, ErrorKind, ResultExt as _}; #[test] fn random_key() { - println!("'0x{}'", hex::encode(TorSecretKeyV3::generate().as_bytes())); + println!("x'{}'", hex::encode(TorSecretKeyV3::generate().as_bytes())); } #[command(subcommands(list_services))] diff --git a/appmgr/src/shutdown.rs b/appmgr/src/shutdown.rs index 558922397..2c1decf82 100644 --- a/appmgr/src/shutdown.rs +++ b/appmgr/src/shutdown.rs @@ -24,6 +24,7 @@ impl Shutdown { Command::new("reboot").spawn().unwrap().wait().unwrap(); } else { Command::new("shutdown") + .arg("-h") .arg("now") .spawn() .unwrap() diff --git a/appmgr/src/sound.rs b/appmgr/src/sound.rs index 4cf933e6b..5fcddb752 100644 --- a/appmgr/src/sound.rs +++ b/appmgr/src/sound.rs @@ -20,7 +20,7 @@ lazy_static::lazy_static! { static ref SOUND_MUTEX: Mutex>> = Mutex::new(None); } -pub const SOUND_LOCK_FILE: &'static str = "/TODO/AIDEN/CHANGEME"; +pub const SOUND_LOCK_FILE: &'static str = "/etc/embassy/sound.lock"; struct SoundInterface(Option>>>); impl SoundInterface { diff --git a/ui/package.json b/ui/package.json index 376e4d221..e6552c2fb 100644 --- a/ui/package.json +++ b/ui/package.json @@ -8,7 +8,7 @@ "ng": "ng", "start": "ng serve", "build": "ng build", - "build-prod": "ng build --prod && tsc postprocess.ts && node postprocess.js && git log | head -n1 > www/git-hash.txt", + "build-prod": "ng build --configuration production && tsc postprocess.ts && node postprocess.js && git log | head -n1 > www/git-hash.txt", "lint": "ng lint" }, "dependencies": {