use nix_compat::store_path::compress_hash; use sha2::{Digest as _, Sha256}; pub fn sha256_hex(data: &[u8]) -> String { let mut hasher = Sha256::new(); hasher.update(data); hex::encode(hasher.finalize()) } pub fn make_store_path(store_dir: &str, ty: &str, hash_hex: &str, name: &str) -> String { let s = format!("{}:sha256:{}:{}:{}", ty, hash_hex, store_dir, name); let mut hasher = Sha256::new(); hasher.update(s.as_bytes()); let hash: [u8; 32] = hasher.finalize().into(); let compressed = compress_hash::<20>(&hash); let encoded = nix_compat::nixbase32::encode(&compressed); format!("{}/{}-{}", store_dir, encoded, name) }