759f9dbf39
This doesn't require any other corresponding handling *yet*, as the actual replacements happen in the builder logic (which we delegate to cppnix at the moment). Change-Id: I034147c933f05ae427c7a8794647132d108d0ede Reviewed-on: https://cl.tvl.fyi/c/depot/+/7972 Autosubmit: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI Reviewed-by: flokli <flokli@flokli.de>
22 lines
635 B
Rust
22 lines
635 B
Rust
use sha2::{Digest, Sha256};
|
|
|
|
pub mod derivation;
|
|
pub mod nar;
|
|
pub mod nixbase32;
|
|
pub mod store_path;
|
|
|
|
/// Nix placeholders (i.e. values returned by `builtins.placeholder`)
|
|
/// are used to populate outputs with paths that must be
|
|
/// string-replaced with the actual placeholders later, at runtime.
|
|
///
|
|
/// The actual placeholder is basically just a SHA256 hash encoded in
|
|
/// cppnix format.
|
|
pub fn hash_placeholder(name: &str) -> String {
|
|
let digest = {
|
|
let mut hasher = Sha256::new();
|
|
hasher.update(format!("nix-output:{}", name));
|
|
hasher.finalize()
|
|
};
|
|
|
|
format!("/{}", nixbase32::encode(&digest))
|
|
}
|