From d7481b4b635b14c34d09f1f48b50f745eb868381 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Wed, 14 May 2025 18:21:39 -0400 Subject: [PATCH] Factor out `resolveStoreConfig` Leverage #10766 to show how we can now resolve a store configuration without actually opening the store for that resolved configuration. Co-authored-by: Robert Hensing --- src/libstore/include/nix/store/store-open.hh | 5 +++++ src/libstore/store-registration.cc | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/libstore/include/nix/store/store-open.hh b/src/libstore/include/nix/store/store-open.hh index 8b3460cbf..7c1cda5be 100644 --- a/src/libstore/include/nix/store/store-open.hh +++ b/src/libstore/include/nix/store/store-open.hh @@ -15,6 +15,11 @@ namespace nix { +/** + * @return The store config denoted by `storeURI` (slight misnomer...). + */ +ref resolveStoreConfig(StoreReference && storeURI); + /** * @return a Store object to access the Nix store denoted by * ‘uri’ (slight misnomer...). diff --git a/src/libstore/store-registration.cc b/src/libstore/store-registration.cc index 81cb80cc0..6362ac036 100644 --- a/src/libstore/store-registration.cc +++ b/src/libstore/store-registration.cc @@ -11,6 +11,13 @@ ref openStore(const std::string & uri, const Store::Config::Params & extr } ref openStore(StoreReference && storeURI) +{ + auto store = resolveStoreConfig(std::move(storeURI))->openStore(); + store->init(); + return store; +} + +ref resolveStoreConfig(StoreReference && storeURI) { auto & params = storeURI.params; @@ -58,10 +65,7 @@ ref openStore(StoreReference && storeURI) experimentalFeatureSettings.require(storeConfig->experimentalFeature()); storeConfig->warnUnknownSettings(); - auto store = storeConfig->openStore(); - store->init(); - - return store; + return storeConfig; } std::list> getDefaultSubstituters()