aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/primops/flake.cc
diff options
context:
space:
mode:
authorNick Van den Broeck <nick.van.den.broeck666@gmail.com>2019-03-10 07:05:05 +0100
committerNick Van den Broeck <nick.van.den.broeck666@gmail.com>2019-03-22 15:22:18 +0100
commit5e4d92d267c080bcb81168e37429bbb56bc39fb2 (patch)
treeb784a1643d392a88d7f98f964e55827e19751584 /src/libexpr/primops/flake.cc
parente007f367bd605ad14ddf84d1d5ad611aa427d338 (diff)
Issue #15 is finished
Diffstat (limited to 'src/libexpr/primops/flake.cc')
-rw-r--r--src/libexpr/primops/flake.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/libexpr/primops/flake.cc b/src/libexpr/primops/flake.cc
index 48a036875..b74e0b4b7 100644
--- a/src/libexpr/primops/flake.cc
+++ b/src/libexpr/primops/flake.cc
@@ -12,9 +12,14 @@
namespace nix {
+Path getUserRegistryPath()
+{
+ return getHome() + "/.config/nix/registry.json";
+}
+
/* Read the registry or a lock file. (Currently they have an identical
format. */
-static std::unique_ptr<FlakeRegistry> readRegistry(const Path & path)
+std::unique_ptr<FlakeRegistry> readRegistry(const Path & path)
{
auto registry = std::make_unique<FlakeRegistry>();
@@ -40,7 +45,7 @@ void writeRegistry(FlakeRegistry registry, Path path)
json["version"] = 1;
json["flakes"] = {};
for (auto elem : registry.entries) {
- json["flakes"][elem.first] = elem.second.ref.to_string();
+ json["flakes"][elem.first] = { {"uri", elem.second.ref.to_string()} };
}
writeFile(path, json.dump(4)); // The '4' is the number of spaces used in the indentation in the json file.
}
@@ -183,8 +188,8 @@ Flake getFlake(EvalState & state, const FlakeRef & flakeRef)
if (std::get_if<FlakeRef::IsGitHub>(&newFlakeRef.data)) {
FlakeSourceInfo srcInfo = fetchFlake(state, newFlakeRef);
if (srcInfo.rev) {
- std::string uri = flakeRef.to_string();
- newFlakeRef = FlakeRef(uri + "/" + srcInfo.rev->to_string());
+ std::string uri = flakeRef.baseRef().to_string();
+ newFlakeRef = FlakeRef(uri + "/" + srcInfo.rev->to_string(Base16, false));
}
}