services: nix: Add extra-options.

* gnu/services/nix.scm (<nix-configuration>)[extra-options]: New field.
(nix-shepherd-service): Add this.
(nix-activation): Add new line to the end of /etc/nix/nix.conf file.
* doc/guix.texi (Miscellaneous Services)[Nix service]: Document this.
This commit is contained in:
Oleg Pykhalov 2020-07-25 11:51:49 +03:00
parent 3601d802d5
commit 64c6282e7f
No known key found for this signature in database
GPG key ID: 167F8EA5001AFA9C
2 changed files with 10 additions and 3 deletions

View file

@ -27637,6 +27637,9 @@ This is a list of strings or objects appended to the
This is a list of strings or objects appended to the configuration file.
It is used to pass extra text to be added verbatim to the configuration
file.
@item @code{extra-options} (default: @code{'()})
Extra command line options for @code{nix-service-type}.
@end table
@end deftp

View file

@ -56,6 +56,8 @@ (define-record-type* <nix-configuration>
(build-sandbox-items nix-configuration-build-sandbox-items ;list of strings
(default '()))
(extra-config nix-configuration-extra-config ;list of strings
(default '()))
(extra-options nix-configuration-extra-options ;list of strings
(default '())))
;; Copied from gnu/services/base.scm
@ -116,19 +118,21 @@ (define nix-activation
'#$(map references-file
(list package)))
'#$build-sandbox-items))
(for-each (cut display <>) '#$extra-config))))))))
(for-each (cut display <>) '#$extra-config)
(newline))))))))
(define nix-shepherd-service
;; Return a <shepherd-service> for Nix.
(match-lambda
(($ <nix-configuration> package _ ...)
(($ <nix-configuration> package _ _ _ extra-options)
(list
(shepherd-service
(provision '(nix-daemon))
(documentation "Run nix-daemon.")
(requirement '())
(start #~(make-forkexec-constructor
(list (string-append #$package "/bin/nix-daemon"))))
(list (string-append #$package "/bin/nix-daemon")
#$@extra-options)))
(respawn? #f)
(stop #~(make-kill-destructor)))))))