query
On this page

hashFile

builtins.hashFile

Primop
Docs pulled from | This Revision | 3 days ago


Nix manual

Takes 2 arguments

type, p

Return a base-16 representation of the cryptographic hash of the file at path p. The hash algorithm specified by type must be one of "md5", "sha1", "sha256" or "sha512".

Noogle detected

Aliases

Detected Type
hashFile :: String -> Path -> String

Implementation

This function is implemented in c++ and is part of the native nix runtime.

src/libexpr/primops.cc:2349

static void prim_hashFile(EvalState & state, const PosIdx pos, Value ** args, Value & v)
{
    auto algo =
        state.forceStringNoCtx(*args[0], pos, "while evaluating the first argument passed to builtins.hashFile");
    std::optional<HashAlgorithm> ha = parseHashAlgo(algo);
    if (!ha)
        state.error<EvalError>("unknown hash algorithm '%1%'", algo).atPos(pos).debugThrow();

    auto path = state.realisePath(pos, *args[1]);

    v.mkString(hashString(*ha, path.readFile()).to_string(HashFormat::Base16, false), state.mem);
}