use object_store::aws::{AmazonS3, AmazonS3Builder}; use serde::Deserialize; use std::path::PathBuf; #[derive(Debug, Deserialize)] pub struct MirrorConfig { /// URI to Hydra instance pub hydra_uri: String, /// URI to the binary cache binary_cache_uri: String, /// A path to a checkout of nixpkgs nixpkgs_dir: PathBuf, /// S3 releases bucket URL s3_release_bucket_uri: String, /// S3 channels bucket URL s3_channel_bucket_uri: String, } impl MirrorConfig { pub fn release_bucket(&self) -> AmazonS3 { AmazonS3Builder::from_env() .with_bucket_name(&self.s3_release_bucket_uri) .build() .expect("Failed to connect to the S3 release bucket") } pub fn channel_bucket(&self) -> AmazonS3 { AmazonS3Builder::from_env() .with_bucket_name(&self.s3_channel_bucket_uri) .build() .expect("Failed to connect to the S3 channel bucket") } }