services: Add options to 'guix-service'.

* gnu/services/base.scm (guix-service): Add #:use-substitutes? and
  #:extra-options parameters, and honor them.
* doc/guix.texi (Base Services): Adjust accordingly.
This commit is contained in:
Ludovic Courtès 2014-07-14 15:51:22 +02:00
parent 55e70e655d
commit c11a6eb1e5
2 changed files with 25 additions and 4 deletions

View File

@ -3434,13 +3434,21 @@ settings.
@deffn {Monadic Procedure} guix-service [#:guix guix] @ @deffn {Monadic Procedure} guix-service [#:guix guix] @
[#:builder-group "guixbuild"] [#:build-accounts 10] @ [#:builder-group "guixbuild"] [#:build-accounts 10] @
[#:authorize-hydra-key? #f] [#:authorize-hydra-key? #f] [#:use-substitutes? #t] @
[#:extra-options '()]
Return a service that runs the build daemon from @var{guix}, and has Return a service that runs the build daemon from @var{guix}, and has
@var{build-accounts} user accounts available under @var{builder-group}. @var{build-accounts} user accounts available under @var{builder-group}.
When @var{authorize-hydra-key?} is true, the @code{hydra.gnu.org} public key When @var{authorize-hydra-key?} is true, the @code{hydra.gnu.org} public key
provided by @var{guix} is authorized upon activation, meaning that substitutes provided by @var{guix} is authorized upon activation, meaning that substitutes
from @code{hydra.gnu.org} are used by default. from @code{hydra.gnu.org} are used by default.
If @var{use-substitutes?} is false, the daemon is run with
@option{--no-substitutes} (@pxref{Invoking guix-daemon,
@option{--no-substitutes}}).
Finally, @var{extra-options} is a list of additional command-line options
passed to @command{guix-daemon}.
@end deffn @end deffn
@deffn {Monadic Procedure} udev-service [#:udev udev] @deffn {Monadic Procedure} udev-service [#:udev udev]

View File

@ -368,13 +368,22 @@ GUIX."
failed to register hydra.gnu.org public key: ~a~%" status)))))))) failed to register hydra.gnu.org public key: ~a~%" status))))))))
(define* (guix-service #:key (guix guix) (builder-group "guixbuild") (define* (guix-service #:key (guix guix) (builder-group "guixbuild")
(build-accounts 10) authorize-hydra-key?) (build-accounts 10) authorize-hydra-key?
(use-substitutes? #t)
(extra-options '()))
"Return a service that runs the build daemon from @var{guix}, and has "Return a service that runs the build daemon from @var{guix}, and has
@var{build-accounts} user accounts available under @var{builder-group}. @var{build-accounts} user accounts available under @var{builder-group}.
When @var{authorize-hydra-key?} is true, the @code{hydra.gnu.org} public key When @var{authorize-hydra-key?} is true, the @code{hydra.gnu.org} public key
provided by @var{guix} is authorized upon activation, meaning that substitutes provided by @var{guix} is authorized upon activation, meaning that substitutes
from @code{hydra.gnu.org} are used by default." from @code{hydra.gnu.org} are used by default.
If @var{use-substitutes?} is false, the daemon is run with
@option{--no-substitutes} (@pxref{Invoking guix-daemon,
@option{--no-substitutes}}).
Finally, @var{extra-options} is a list of additional command-line options
passed to @command{guix-daemon}."
(define activate (define activate
;; Assume that the store has BUILDER-GROUP as its group. We could ;; Assume that the store has BUILDER-GROUP as its group. We could
;; otherwise call 'chown' here, but the problem is that on a COW unionfs, ;; otherwise call 'chown' here, but the problem is that on a COW unionfs,
@ -392,7 +401,11 @@ from @code{hydra.gnu.org} are used by default."
(start (start
#~(make-forkexec-constructor #~(make-forkexec-constructor
(list (string-append #$guix "/bin/guix-daemon") (list (string-append #$guix "/bin/guix-daemon")
"--build-users-group" #$builder-group))) "--build-users-group" #$builder-group
#$@(if use-substitutes?
'()
'("--no-substitutes"))
#$@extra-options)))
(stop #~(make-kill-destructor)) (stop #~(make-kill-destructor))
(user-accounts accounts) (user-accounts accounts)
(user-groups (list (user-group (user-groups (list (user-group