#pragma once #include #include #include "fs-accessor.hh" namespace nix { struct Source; /* Return an object that provides access to the contents of a NAR file. */ ref makeNarAccessor(std::string && nar); ref makeNarAccessor(Source & source); /* Create a NAR accessor from a NAR listing (in the format produced by listNar()). The callback getNarBytes(offset, length) is used by the readFile() method of the accessor to get the contents of files inside the NAR. */ typedef std::function GetNarBytes; ref makeLazyNarAccessor( const std::string & listing, GetNarBytes getNarBytes); /* Write a JSON representation of the contents of a NAR (except file contents). */ nlohmann::json listNar(ref accessor, const Path & path, bool recurse); }