mirror of
https://github.com/NixOS/nix.git
synced 2025-11-20 09:19:36 +01:00
Init local overlay store
This commit is contained in:
parent
d62f6da81f
commit
f0a176e2f1
3 changed files with 97 additions and 0 deletions
74
src/libstore/local-overlay-store.hh
Normal file
74
src/libstore/local-overlay-store.hh
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
#include "local-store.hh"
|
||||
|
||||
namespace nix {
|
||||
|
||||
/**
|
||||
* Configuration for `LocalOverlayStore`.
|
||||
*/
|
||||
struct LocalOverlayStoreConfig : virtual LocalStoreConfig
|
||||
{
|
||||
// FIXME why doesn't this work?
|
||||
// using LocalStoreConfig::LocalStoreConfig;
|
||||
|
||||
LocalOverlayStoreConfig(const StringMap & params)
|
||||
: StoreConfig(params)
|
||||
, LocalFSStoreConfig(params)
|
||||
, LocalStoreConfig(params)
|
||||
{ }
|
||||
|
||||
const Setting<std::string> lowerStoreUri{(StoreConfig*) this, "", "lower-store",
|
||||
R"(
|
||||
[Store URL](@docroot@/command-ref/new-cli/nix3-help-stores.md#store-url-format)
|
||||
for the lower store. The default is `auto` (i.e. use the Nix daemon or `/nix/store` directly).
|
||||
|
||||
Must be a store with a store dir on the file system.
|
||||
)"};
|
||||
|
||||
const std::string name() override { return "Experimental Local Overlay Store"; }
|
||||
|
||||
std::string doc() override
|
||||
{
|
||||
return
|
||||
""
|
||||
// FIXME write docs
|
||||
//#include "local-overlay-store.md"
|
||||
;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Variation of local store using overlayfs for the store dir.
|
||||
*/
|
||||
class LocalOverlayStore : public virtual LocalOverlayStoreConfig, public virtual LocalStore
|
||||
{
|
||||
/**
|
||||
* The store beneath us.
|
||||
*
|
||||
* Our store dir should be an overlay fs where the lower layer
|
||||
* is that store's store dir, and the upper layer is some
|
||||
* scratch storage just for us.
|
||||
*/
|
||||
ref<LocalFSStore> lowerStore;
|
||||
|
||||
public:
|
||||
LocalOverlayStore(const Params & params);
|
||||
|
||||
LocalOverlayStore(std::string scheme, std::string path, const Params & params)
|
||||
: LocalOverlayStore(params)
|
||||
{
|
||||
throw UnimplementedError("LocalOverlayStore");
|
||||
}
|
||||
|
||||
static std::set<std::string> uriSchemes()
|
||||
{ return {}; }
|
||||
|
||||
std::string getUri() override
|
||||
{
|
||||
return "local-overlay";
|
||||
}
|
||||
|
||||
private:
|
||||
// Overridden methods…
|
||||
};
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue