summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-03-22 14:00:06 +0100
committerLudovic Courtès <ludo@gnu.org>2017-03-22 14:05:59 +0100
commit4bb5e0aeb3b7f5396dff1fcd2b85b65af5e07038 (patch)
treead9e934e9ef76951fbc0354f2afb160599b298ae
parentcdd7a7d2106d295ca10fc23a94b6e9d1c8b5a82a (diff)
downloadguix-4bb5e0aeb3b7f5396dff1fcd2b85b65af5e07038.tar.gz
publish: Add '--nar-path'.
* guix/scripts/publish.scm (show-help, %options): Add '--nar-path'.
(%default-options): Add 'nar-path'.
(guix-publish): Honor it.
-rw-r--r--doc/guix.texi8
-rw-r--r--guix/scripts/publish.scm10
2 files changed, 18 insertions, 0 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 6c4e1800c1..b57e219562 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -6523,6 +6523,14 @@ This allows the user's Guix to keep substitute information in cache for
 guarantee that the store items it provides will indeed remain available
 for as long as @var{ttl}.
 
+@item --nar-path=@var{path}
+Use @var{path} as the prefix for the URLs of ``nar'' files
+(@pxref{Invoking guix archive, normalized archives}).
+
+By default, nars are served at a URL such as
+@code{/nar/gzip/@dots{}-coreutils-8.25}.  This option allows you to
+change the @code{/nar} part to @var{path}.
+
 @item --public-key=@var{file}
 @itemx --private-key=@var{file}
 Use the specific @var{file}s as the public/private key pair used to sign
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index ba5be04818..d8ac72f4ef 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -72,6 +72,8 @@ Publish ~a over HTTP.\n") %store-directory)
   (display (_ "
       --ttl=TTL          announce narinfos can be cached for TTL seconds"))
   (display (_ "
+      --nar-path=PATH    use PATH as the prefix for nar URLs"))
+  (display (_ "
       --public-key=FILE  use FILE as the public key for signatures"))
   (display (_ "
       --private-key=FILE use FILE as the private key for signatures"))
@@ -152,6 +154,9 @@ compression disabled~%"))
                       (leave (_ "~a: invalid duration~%") arg))
                     (alist-cons 'narinfo-ttl (time-second duration)
                                 result))))
+        (option '("nar-path") #t #f
+                (lambda (opt name arg result)
+                  (alist-cons 'nar-path arg result)))
         (option '("public-key") #t #f
                 (lambda (opt name arg result)
                   (alist-cons 'public-key-file arg result)))
@@ -167,6 +172,9 @@ compression disabled~%"))
 (define %default-options
   `((port . 8080)
 
+    ;; By default, serve nars under "/nar".
+    (nar-path . "nar")
+
     (public-key-file . ,%public-key-file)
     (private-key-file . ,%private-key-file)
 
@@ -589,6 +597,7 @@ blocking."
                                            (sockaddr:addr addr)
                                            port)))
            (socket  (open-server-socket address))
+           (nar-path  (assoc-ref opts 'nar-path))
            (repl-port (assoc-ref opts 'repl))
 
            ;; Read the key right away so that (1) we fail early on if we can't
@@ -615,5 +624,6 @@ consider using the '--user' option!~%")))
           (repl:spawn-server (repl:make-tcp-server-socket #:port repl-port)))
         (with-store store
           (run-publish-server socket store
+                              #:nar-path nar-path
                               #:compression compression
                               #:narinfo-ttl ttl))))))