#pragma once #include "remote-store.hh" #include "local-fs-store.hh" namespace nix { struct UDSRemoteStoreConfig : virtual LocalFSStoreConfig, virtual RemoteStoreConfig { UDSRemoteStoreConfig(const Store::Params & params) : StoreConfig(params) , LocalFSStoreConfig(params) , RemoteStoreConfig(params) { } const std::string name() override { return "Local Daemon Store"; } }; class UDSRemoteStore : public virtual UDSRemoteStoreConfig, public virtual LocalFSStore, public virtual RemoteStore { public: UDSRemoteStore(const Params & params); UDSRemoteStore(const std::string scheme, std::string path, const Params & params); std::string getUri() override; static std::set uriSchemes() { return {"unix"}; } bool sameMachine() override { return true; } ref getFSAccessor() override { return LocalFSStore::getFSAccessor(); } void narFromPath(const StorePath & path, Sink & sink) override { LocalFSStore::narFromPath(path, sink); } private: ref openConnection() override; std::optional path; }; }