aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/build.cc2
-rw-r--r--src/libstore/dummy-store.cc13
-rw-r--r--src/libstore/http-binary-cache-store.cc4
-rw-r--r--src/libstore/legacy-ssh-store.cc3
-rw-r--r--src/libstore/local-binary-cache-store.cc4
-rw-r--r--src/libstore/local-store.cc5
-rw-r--r--src/libstore/local-store.hh15
-rw-r--r--src/libstore/remote-store.cc5
-rw-r--r--src/libstore/remote-store.hh3
-rw-r--r--src/libstore/s3-binary-cache-store.cc4
-rw-r--r--src/libstore/ssh-store.cc7
-rw-r--r--src/libstore/store-api.hh2
12 files changed, 47 insertions, 20 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index ce973862d..4040a3fac 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -2883,7 +2883,7 @@ struct RestrictedStore : public LocalFSStore
DerivationGoal & goal;
RestrictedStore(const Params & params, ref<LocalStore> next, DerivationGoal & goal)
- : Store(params), LocalFSStore(params), next(next), goal(goal)
+ : StoreConfig(params), LocalFSStoreConfig(params), Store(params), LocalFSStore(params), next(next), goal(goal)
{ }
Path getRealStoreDir() override
diff --git a/src/libstore/dummy-store.cc b/src/libstore/dummy-store.cc
index d4560c13d..68d03d934 100644
--- a/src/libstore/dummy-store.cc
+++ b/src/libstore/dummy-store.cc
@@ -2,17 +2,22 @@
namespace nix {
-struct DummyStoreConfig : StoreConfig {};
+struct DummyStoreConfig : StoreConfig {
+ using StoreConfig::StoreConfig;
+};
-struct DummyStore : public Store
+struct DummyStore : public Store, public virtual DummyStoreConfig
{
DummyStore(const std::string uri, const Params & params)
: DummyStore(params)
{ }
DummyStore(const Params & params)
- : Store(params)
- { }
+ : StoreConfig(params)
+ , DummyStoreConfig(params)
+ , Store(params)
+ {
+ }
string getUri() override
{
diff --git a/src/libstore/http-binary-cache-store.cc b/src/libstore/http-binary-cache-store.cc
index c3fb455fa..2c9d61d51 100644
--- a/src/libstore/http-binary-cache-store.cc
+++ b/src/libstore/http-binary-cache-store.cc
@@ -31,7 +31,9 @@ public:
HttpBinaryCacheStore(
const Path & _cacheUri,
const Params & params)
- : BinaryCacheStore(params)
+ : StoreConfig(params)
+ , BinaryCacheStoreConfig(params)
+ , BinaryCacheStore(params)
, HttpBinaryCacheStoreConfig(params)
, cacheUri(_cacheUri)
{
diff --git a/src/libstore/legacy-ssh-store.cc b/src/libstore/legacy-ssh-store.cc
index 5a08fbba3..bbab452ab 100644
--- a/src/libstore/legacy-ssh-store.cc
+++ b/src/libstore/legacy-ssh-store.cc
@@ -44,7 +44,8 @@ struct LegacySSHStore : public Store, public virtual LegacySSHStoreConfig
static std::vector<std::string> uriPrefixes() { return {"ssh"}; }
LegacySSHStore(const string & host, const Params & params)
- : LegacySSHStoreConfig(params)
+ : StoreConfig(params)
+ , LegacySSHStoreConfig(params)
, Store(params)
, host(host)
, connections(make_ref<Pool<Connection>>(
diff --git a/src/libstore/local-binary-cache-store.cc b/src/libstore/local-binary-cache-store.cc
index fc3ae94c2..becd74c75 100644
--- a/src/libstore/local-binary-cache-store.cc
+++ b/src/libstore/local-binary-cache-store.cc
@@ -20,7 +20,9 @@ public:
LocalBinaryCacheStore(
const Path & binaryCacheDir,
const Params & params)
- : LocalBinaryCacheStoreConfig(params)
+ : StoreConfig(params)
+ , BinaryCacheStoreConfig(params)
+ , LocalBinaryCacheStoreConfig(params)
, BinaryCacheStore(params)
, binaryCacheDir(binaryCacheDir)
{
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index 0086bb13e..4e9840f3b 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -42,7 +42,10 @@ namespace nix {
LocalStore::LocalStore(const Params & params)
- : Store(params)
+ : StoreConfig(params)
+ , Store(params)
+ , LocalFSStoreConfig(params)
+ , LocalStoreConfig(params)
, LocalFSStore(params)
, realStoreDir_{this, false, rootDir != "" ? rootDir + "/nix/store" : storeDir, "real",
"physical path to the Nix store"}
diff --git a/src/libstore/local-store.hh b/src/libstore/local-store.hh
index 8b6972847..0265f0837 100644
--- a/src/libstore/local-store.hh
+++ b/src/libstore/local-store.hh
@@ -30,8 +30,17 @@ struct OptimiseStats
uint64_t blocksFreed = 0;
};
+struct LocalStoreConfig : virtual LocalFSStoreConfig
+{
+ using LocalFSStoreConfig::LocalFSStoreConfig;
+
+ Setting<bool> requireSigs{(StoreConfig*) this,
+ settings.requireSigs,
+ "require-sigs", "whether store paths should have a trusted signature on import"};
+};
-class LocalStore : public LocalFSStore
+
+class LocalStore : public LocalFSStore, public virtual LocalStoreConfig
{
private:
@@ -95,10 +104,6 @@ public:
private:
- Setting<bool> requireSigs{(StoreConfig*) this,
- settings.requireSigs,
- "require-sigs", "whether store paths should have a trusted signature on import"};
-
const PublicKeys & getPublicKeys();
public:
diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc
index 619e9a7f1..9bbb69b99 100644
--- a/src/libstore/remote-store.cc
+++ b/src/libstore/remote-store.cc
@@ -124,7 +124,10 @@ ref<RemoteStore::Connection> RemoteStore::openConnectionWrapper()
UDSRemoteStore::UDSRemoteStore(const Params & params)
- : Store(params)
+ : StoreConfig(params)
+ , Store(params)
+ , LocalFSStoreConfig(params)
+ , RemoteStoreConfig(params)
, UDSRemoteStoreConfig(params)
, LocalFSStore(params)
, RemoteStore(params)
diff --git a/src/libstore/remote-store.hh b/src/libstore/remote-store.hh
index ba2f69427..32daab59a 100644
--- a/src/libstore/remote-store.hh
+++ b/src/libstore/remote-store.hh
@@ -148,7 +148,8 @@ private:
struct UDSRemoteStoreConfig : virtual LocalFSStoreConfig, virtual RemoteStoreConfig
{
UDSRemoteStoreConfig(const Store::Params & params)
- : LocalFSStoreConfig(params)
+ : StoreConfig(params)
+ , LocalFSStoreConfig(params)
, RemoteStoreConfig(params)
{
}
diff --git a/src/libstore/s3-binary-cache-store.cc b/src/libstore/s3-binary-cache-store.cc
index b75d05555..30ef4082a 100644
--- a/src/libstore/s3-binary-cache-store.cc
+++ b/src/libstore/s3-binary-cache-store.cc
@@ -199,7 +199,9 @@ struct S3BinaryCacheStoreImpl : public S3BinaryCacheStore, virtual S3BinaryCache
S3BinaryCacheStoreImpl(
const std::string & bucketName,
const Params & params)
- : S3BinaryCacheStoreConfig(params)
+ : StoreConfig(params)
+ , BinaryCacheStoreConfig(params)
+ , S3BinaryCacheStoreConfig(params)
, S3BinaryCacheStore(params)
, bucketName(bucketName)
, s3Helper(profile, region, scheme, endpoint)
diff --git a/src/libstore/ssh-store.cc b/src/libstore/ssh-store.cc
index 2b6e2a298..da201a9c3 100644
--- a/src/libstore/ssh-store.cc
+++ b/src/libstore/ssh-store.cc
@@ -11,20 +11,23 @@ namespace nix {
struct SSHStoreConfig : virtual RemoteStoreConfig
{
using RemoteStoreConfig::RemoteStoreConfig;
+
const Setting<Path> sshKey{(StoreConfig*) this, "", "ssh-key", "path to an SSH private key"};
const Setting<bool> compress{(StoreConfig*) this, false, "compress", "whether to compress the connection"};
const Setting<Path> remoteProgram{(StoreConfig*) this, "nix-daemon", "remote-program", "path to the nix-daemon executable on the remote system"};
const Setting<std::string> remoteStore{(StoreConfig*) this, "", "remote-store", "URI of the store on the remote system"};
};
-class SSHStore : public RemoteStore, public virtual SSHStoreConfig
+class SSHStore : public virtual RemoteStore, public virtual SSHStoreConfig
{
public:
SSHStore(const std::string & host, const Params & params)
- : Store(params)
+ : StoreConfig(params)
+ , Store(params)
, RemoteStoreConfig(params)
, RemoteStore(params)
+ , SSHStoreConfig(params)
, host(host)
, master(
host,
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index 61552f74e..8e9cb786c 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -653,7 +653,7 @@ struct LocalFSStoreConfig : virtual StoreConfig
"log", "directory where Nix will store state"};
};
-class LocalFSStore : public virtual Store, public LocalFSStoreConfig
+class LocalFSStore : public virtual Store, public virtual LocalFSStoreConfig
{
public: