summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix/store.scm12
1 files changed, 8 insertions, 4 deletions
diff --git a/guix/store.scm b/guix/store.scm
index 2b924db213..1731c14f27 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -797,17 +797,21 @@ signing them if SIGN? is true."
(loop tail)))))))
(define* (register-path path
- #:key (references '()) deriver)
+ #:key (references '()) deriver store)
"Register PATH as a valid store file, with REFERENCES as its list of
-references, and DERIVER as its deriver (.drv that led to it.) Return #t on
-success.
+references, and DERIVER as its deriver (.drv that led to it.) If STORE is not
+#f, it must be a string denoting the directory name of the new store to
+initialize. Return #t on success.
Use with care as it directly modifies the store! This is primarily meant to
be used internally by the daemon's build hook."
;; Currently this is implemented by calling out to the fine C++ blob.
(catch 'system-error
(lambda ()
- (let ((pipe (open-pipe* OPEN_WRITE %guix-register-program)))
+ (let ((pipe (apply open-pipe* OPEN_WRITE %guix-register-program
+ (if store
+ `("--prefix" ,store)
+ '()))))
(and pipe
(begin
(format pipe "~a~%~a~%~a~%"