aboutsummaryrefslogtreecommitdiff
path: root/doc/guix.texi
Commit message (Collapse)AuthorAge
* linux-initrd: Return file-like objects instead of monadic values.Ludovic Courtès2018-11-18
| | | | | | | | | | | | | | | | | | | This is an incompatible change visible to users via the 'initrd' field of 'operating-system'. However, assuming the user's 'initrd' value tail-calls to 'raw-initrd' or 'base-initrd', the switch to non-monadic style is invisible. * gnu/system/linux-initrd.scm (expression->initrd): Use 'computed-file' instead of 'gexp->derivation'. (raw-initrd, base-initrd): Adjust docstring to mention non-monadic return. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Adjust accordingly. * gnu/system.scm (operating-system-directory-base-entries) (operating-system-initrd-file) (operating-system-boot-parameters): Adjust accordingly. * doc/guix.texi (operating-system Reference) (Initial RAM Disk): Update.
* doc: Recommend pool.sks-keyservers.net.Ludovic Courtès2018-11-16
| | | | | | | | pgp.mit.edu appears to be unreliable these days. * doc/guix.texi (KEY-SERVER): New variable. (Binary Installation, USB Stick and DVD Installation): Use it in 'gpg --recv-keys' example.
* doc: Fix typo in connman config.Giovanni Biscuolo2018-11-15
| | | | | | | * doc/guix.texi (Networking Services): Fix typo in connman config "disable-vpn?" parameter documentation, semantic is inverted. Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
* services: nscd: Add 'invalidate' and 'statistics' actions.Ludovic Courtès2018-11-13
| | | | | | | | | | * gnu/services/base.scm (nscd-action-procedure, nscd-actions): New procedures. (nscd-shepherd-service): Add 'modules' and 'actions' fields. * gnu/tests/base.scm (run-basic-test)["nscd invalidate action"] ["nscd invalidate action, wrong table"]: New tests. * doc/guix.texi (Services): Mention 'herd doc nscd action'. (Base Services): Document the actions.
* doc: Fix typo.Laura Lazzati2018-11-11
| | | | | | * doc/guix.texi (Porting to a New Platform): Fix typo. Signed-off-by: Ricardo Wurmus <rekado@elephly.net>
* services: dovecot: Allow to set 'process-limit'.Clément Lassieur2018-11-10
| | | | | | | * doc/guix.texi (Mail Services): Update accordingly. * gnu/services/mail.scm (service-configuration)[process-limit]: New field. (dovecot-configuration)[services]: Set 'process-limit' to its correct default value.
* services: dovecot: Allow to set 'client-limit'.Clément Lassieur2018-11-10
| | | | | | | * doc/guix.texi (Mail Services): Update accordingly. * gnu/services/mail.scm (service-configuration)[client-limit]: New field. (dovecot-configuration)[services]: Set 'client-limit' to its correct default value.
* doc: Add index entries.Laura Lazzati2018-11-08
| | | | | | * doc/guix.texi: Added various cindex tags to assist readers. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* services: cuirass: Add 'ttl' configuration field.Ludovic Courtès2018-11-07
| | | | | * gnu/services/cuirass.scm (<cuirass-configuration>)[ttl]: New field. (cuirass-shepherd-service): Honor it.
* services: kmscon: Add an auto-login option.Mathieu Othacehe2018-11-07
| | | | | | | | Add an auto-login option that behaves as the one of mingetty-service. * gnu/services/base.scm (kmscon-configuration)[auto-login]: New field. (kmscon-service-type): Pass it to kmscon command. * doc/guix.texi (Base Services): Document it.
* pull: Make '--dry-run' behave as expected.Ludovic Courtès2018-11-06
| | | | | | | | | * guix/scripts/pull.scm (show-help): Document '--dry-run'. (build-and-install): Add #:dry-run? parameter and honor it. (guix-pull): Remove (assoc-ref opts 'dry-run?) condition. Instead, pass it as #:dry-run? to 'build-and-install'. * doc/guix.texi (Invoking guix pull): Document '--dry-run'. Move '--verbose' to the bottom.
* doc: Fix typo in "Sound Services".Ludovic Courtès2018-11-03
| | | | | | Reported by Jelle Licht <jlicht@fsfe.org>. * doc/guix.texi (Sound Services): Fix typo.
* doc: Remove misleading sentence about TMPDIR.Ludovic Courtès2018-11-03
| | | | | | | | Reported by pelzflorian (Florian Pelz) <pelzflorian@pelzflorian.de>. Fixes <https://bugs.gnu.org/33171>. * doc/guix.texi (Invoking guix-daemon): Remove sentence that suggests that TMPDIR leaks into the build environment.
* doc: Fix typo.Julien Lepiller2018-11-03
| | | | * doc/guix.texi: Fix typo.
* doc: Fix typos.Julien Lepiller2018-11-03
| | | | * doc/guix.texi (Telephony Services): Fix typos.
* doc: Add German translation.Julien Lepiller2018-11-01
| | | | | | | | | | * doc/contributing.de.texi: New file. * doc/guix.de.texi: New file * doc/local.mk (TRANSLATED_INFO): Add them. (info_TEXINFOS): Add guix.de.texi. * po/doc/guix-manual.de.po: New file. * po/doc/local.mk (EXTRA_DIST): Add it. * doc/guix.texi: Document the German translation.
* Add 'guix processes'.Ludovic Courtès2018-10-29
| | | | | | | | | * guix/scripts/processes.scm, tests/processes.scm: New files. * Makefile.am (MODULES): Add the former. (SCM_TESTS): Add the latter. * po/guix/POTFILES.in: Add guix/scripts/processes.scm. * doc/guix.texi (Invoking guix processes): New node. (Invoking guix-daemon): Reference it.
* services: httpd: Allow using it with PHP.Florian Pelz2018-10-27
| | | | | | | * gnu/services/web.scm (httpd): Make existing httpd-module API public. * doc/guix.texi (Apache HTTP Server): Document its usage with PHP-FPM. Signed-off-by: Christopher Baines <mail@cbaines.net>
* services: ntp: Document 'ntp-service-type' and 'ntp-configuration'.Ludovic Courtès2018-10-19
| | | | | | | | | | | * gnu/services/networking.scm (<ntp-configuration>)[servers]: Add default value. (ntp-service-type)[default-value]: New field. (ntp-service): Mark as deprecated. * gnu/services/desktop.scm (%desktop-services): Use (service ntp-service-type) instead of calling 'ntp-service'. * doc/guix.texi (Networking Services): Document 'ntp-service-type' and 'ntp-configuration'.
* services: dhcp-client: Deprecate 'dhcp-client-service' procedure.Ludovic Courtès2018-10-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gnu/services/networking.scm (dhcp-client-service-type): Add default value. * gnu/system/examples/bare-bones.tmpl: Use (service dhcp-client-service-type) instead of (dhcp-client-service). * gnu/system/examples/beaglebone-black.tmpl: Likewise. * gnu/tests/base.scm (%avahi-os): Likewise. * gnu/tests/databases.scm (%memcached-os): Likewise. (%mongodb-os): Likewise. * gnu/tests/dict.scm (%dicod-os): Likewise. * gnu/tests/mail.scm (%opensmtpd-os): Likewise. (%exim-os): Likewise. (%dovecot-os): Likewise. * gnu/tests/messaging.scm (run-xmpp-test): Likewise. (run-bitlbee-test): Likewise. * gnu/tests/monitoring.scm (%prometheus-node-exporter-os): Likewise. * gnu/tests/networking.scm (%inetd-os): Likewise. (run-iptables-test): Likewise. * gnu/tests/nfs.scm (%base-os): Likewise. * gnu/tests/rsync.scm (%rsync-os): Likewise. * gnu/tests/ssh.scm (run-ssh-test): Likewise. * gnu/tests/version-control.scm (%cgit-os): Likewise. (%git-http-os): Likewise. (%gitolite-os): Likewise. * gnu/tests/virtualization.scm (%libvirt-os): Likewise. * gnu/tests/web.scm (%httpd-os): Likewise. (%nginx-os): Likewise. (%varnish-os): Likewise. (%php-fpm-os): Likewise. (%hpcguix-web-os): Likewise. (%tailon-os): Likewise. * tests/guix-system.sh: Likewise. * doc/guix.texi (Networking Services): Document 'dhcp-client-service-type' and remove 'dhcp-client-service'.
* doc: Document 'guix-service-type'.Ludovic Courtès2018-10-18
| | | | | * doc/guix.texi (Base Services): Document 'guix-service-type'. Remove 'guix-service'.
* services: wpa-supplicant: Extend to support configuration parameters.Marius Bakke2018-10-17
| | | | | | | | | | This allows using WPA Supplicant "standalone" without an additional network manager. The default configuration is unchanged. * gnu/services/networking.scm (<wpa-supplicant-configuration>): New record type. (wpa-supplicant-shepherd-service): Pass configuration records to the daemon. (wpa-supplicant-service-type): Adjust accordingly. * doc/guix.texi (Networking Services): Document the new service type.
* pull: Turn ~/.config/guix/current into a symlink to /var/guix/profiles.Ludovic Courtès2018-10-11
| | | | | | | | | | | | | | | | | This is more consistent with what 'guix package' does, more pleasant for users (we no longer clobber ~/.config/guix), and more cluster-friendly (since /var/guix/profiles is usually an NFS share already.) * guix/scripts/pull.scm (%current-profile, %user-profile-directory): New variables. (migrate-generations, ensure-default-profile): New procedures. (guix-pull): Use %CURRENT-PROFILE by default. Call 'ensure-default-profile'. * doc/guix.texi (Invoking guix pull): Adjust 'guix package -p ~/.config/guix/current' example. * guix/scripts.scm (warn-about-old-distro): Check %PROFILE-DIRECTORY "/current-guix".
* guix build: '-f' accepts file-like objects.Ludovic Courtès2018-10-09
| | | | | | | | * guix/scripts/build.scm (options->things-to-build)[validate-type]: Check for 'file-like?'. (options->derivations): Accept 'file-like?'. * tests/guix-build.sh: Add a test with 'computed-file'. * doc/guix.texi (Additional Build Options): Mention file-like objects.
* doc: Add static network example.Simon Josefsson2018-10-02
| | | | | | * doc/guix.texi (Networking Services): Add example for static-networking-service. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* services: Add Gitolite.Christopher Baines2018-10-02
| | | | | | | | | | | * gnu/services/version-control.scm (<gitolite-configuration>, <gitolite-rc-file>): New record types. (gitolite-accounts, gitolite-activation): New procedures. (gitolite-service-type): New variables. * gnu/tests/version-control.scm (%gitolite-test-admin-keypair, %gitolite-os, %test-gitolite): New variables. (run-gitolite-test): New procedure. * doc/guix.texi (Version Control): Document the gitolite service.
* Revert "services: Add Gitolite."Mark H Weaver2018-09-29
| | | | This reverts commit 258a6d944ed891fa92fa87a16731e5dfe0bac477.
* services: Add Gitolite.gitolite-serviceChristopher Baines2018-09-28
| | | | | | | | | | | * gnu/services/version-control.scm (<gitolite-configuration>, <gitolite-rc-file>): New record types. (gitolite-accounts, gitolite-activation): New procedures. (gitolite-service-type): New variables. * gnu/tests/version-control.scm (%gitolite-test-admin-keypair, %gitolite-os, %test-gitolite): New variables. (run-gitolite-test): New procedure. * doc/guix.texi (Version Control): Document the gitolite service.
* guix system: Load all services on reconfigure, not just stopped ones.Carlo Zancanaro2018-09-26
| | | | | | | | | | | | | | | | | This uses the 'replacement' service slot introduced in the Shepherd version 0.5.0. * gnu/services/shepherd.scm (shepherd-service-upgrade): Return a list of services that need to be restarted to complete their upgrade. * guix/scripts/system.scm (call-with-service-upgrade-info): Rename an internal variable to reflect the change to shepherd-service-upgrade. (upgrade-shepherd-services): Call 'load-services/safe' instead of 'load-services'. Print a message about services that need to be manually restarted. * gnu/services/herd.scm (load-services/safe): New procedure. * doc/guix.texi (Invoking guix system): Document the new behaviour. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* services: Add Varnish service.Marius Bakke2018-09-26
| | | | | | | | | * gnu/services/web.scm (<varnish-configuration>): New record type. (%varnish-accounts, %varnish-service-type): New variables. (varnish-shepherd-service): New procedure. * gnu/tests/web.scm (%varnish-vcl, %varnish-os): New variables. (%test-varnish): New test. * doc/guix.texi (Web Services): Document it.
* doc: Add section about inferiors.Ludovic Courtès2018-09-21
| | | | | * doc/guix.texi (Inferiors): New node. (Channels): Add xref to "Inferiors".
* gnu: services: Add iptables service.Arun Isaac2018-09-20
| | | | | | | | * gnu/services/networking.scm (<iptables-configuration>): New record type. (iptables-service-type): New variable. * gnu/tests/networking.scm (run-iptables-test): New procedure. (%test-iptables): New variable. * doc/guix.texi (Networking Services): Document it.
* gnupg: Use 'gpgv' and keybox files; adjust 'guix refresh' accordingly.Ludovic Courtès2018-09-16
| | | | | | | | | | | | * guix/gnupg.scm (%gpgv-command, current-keyring): New variables (gnupg-verify): Add optional 'keyring' parameter. Use 'gpgv' instead of 'gpg' and pass it '--keyring'. (gnupg-receive-keys): Add optional 'keyring' parameter and honor it. (gnupg-verify*): Add #:keyring and honor it. * guix/scripts/refresh.scm (%options, show-help): Add '--keyring'. (guix-refresh): Parameterize CURRENT-KEYRING. * doc/guix.texi (Invoking guix refresh): Document '--keyring' and the keybox format.
* graph: Add '--system'.Ludovic Courtès2018-09-16
| | | | | | * guix/scripts/graph.scm (%options, show-help): Add '--system'. (%default-options): Add 'system'. (guix-graph): Pass #:system to 'run-with-store'.
* hydra: Add support for manifests.Clément Lassieur2018-09-13
| | | | | | | * build-aux/hydra/gnu-system.scm (arguments->manifests, manifests->packages): New procedures. (hydra-jobs): Add a "manifests" subset. * doc/guix.texi (Continuous Integration): Update accordingly.
* Add 'guix describe'.Ludovic Courtès2018-09-07
| | | | | | | | | | | | | | * guix/scripts/describe.scm: New file. * Makefile.am (MODULES): Add it. (SH_TESTS): Add tests/guix-describe.sh. * po/guix/POTFILES.in: Add it. * guix/scripts/pull.scm (display-profile-content): Export. * guix/describe.scm (current-profile, current-profile-entries): Export. * tests/guix-describe.sh: New file. * doc/guix.texi (Features): Mention 'guix pull' and provenance tracking. (Invoking guix pull): Link to 'guix describe'. (Channels): Likewise. (Invoking guix describe): New node.
* pull: Add '--profile'.Ludovic Courtès2018-09-07
| | | | | | | * guix/scripts/pull.scm (show-help, %options): Add '--profile'. (build-and-install): Change 'config-dir' argument to 'profile'. (guix-pull): Honor '--profile'. * doc/guix.texi (Invoking guix pull): Document it.
* doc: Update hpcguix-web configuration documentation.Ludovic Courtès2018-09-06
| | | | | * doc/guix.texi (Web Services): Document 'channels' and 'package-list-expiration'.
* services: hpcguix-web: Set SSL_CERT_DIR.Ludovic Courtès2018-09-06
| | | | | | | | | | | Previously Git pulls over HTTPS would fail with: guix/git.scm:132:7: In procedure update-cached-checkout: Throw to key `git-error' with args `(#<<git-error> code: -17 message: "the SSL certificate is invalid" class: 16>)'. * gnu/services/web.scm (hpcguix-web-shepherd-service): Pass "SSL_CERT_DIR=/etc/ssl/certs". * doc/guix.texi (Web Services): Mention certificates.
* Switch to Guile-Gcrypt.Ludovic Courtès2018-09-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This removes (guix hash) and (guix pk-crypto), which now live as part of Guile-Gcrypt (version 0.1.0.) * guix/gcrypt.scm, guix/hash.scm, guix/pk-crypto.scm, tests/hash.scm, tests/pk-crypto.scm: Remove. * configure.ac: Test for Guile-Gcrypt. Remove LIBGCRYPT and LIBGCRYPT_LIBDIR assignments. * m4/guix.m4 (GUIX_ASSERT_LIBGCRYPT_USABLE): Remove. * README: Add Guile-Gcrypt to the dependencies; move libgcrypt as "required unless --disable-daemon". * doc/guix.texi (Requirements): Likewise. * gnu/packages/bash.scm, guix/derivations.scm, guix/docker.scm, guix/git.scm, guix/http-client.scm, guix/import/cpan.scm, guix/import/cran.scm, guix/import/crate.scm, guix/import/elpa.scm, guix/import/gnu.scm, guix/import/hackage.scm, guix/import/texlive.scm, guix/import/utils.scm, guix/nar.scm, guix/pki.scm, guix/scripts/archive.scm, guix/scripts/authenticate.scm, guix/scripts/download.scm, guix/scripts/hash.scm, guix/scripts/pack.scm, guix/scripts/publish.scm, guix/scripts/refresh.scm, guix/scripts/substitute.scm, guix/store.scm, guix/store/deduplication.scm, guix/tests.scm, tests/base32.scm, tests/builders.scm, tests/challenge.scm, tests/cpan.scm, tests/crate.scm, tests/derivations.scm, tests/gem.scm, tests/nar.scm, tests/opam.scm, tests/pki.scm, tests/publish.scm, tests/pypi.scm, tests/store-deduplication.scm, tests/store.scm, tests/substitute.scm: Adjust imports. * gnu/system/vm.scm: Likewise. (guile-sqlite3&co): Rename to... (gcrypt-sqlite3&co): ... this. Add GUILE-GCRYPT. (expression->derivation-in-linux-vm)[config]: Remove. (iso9660-image)[config]: Remove. (qemu-image)[config]: Remove. (system-docker-image)[config]: Remove. * guix/scripts/pack.scm: Adjust imports. (guile-sqlite3&co): Rename to... (gcrypt-sqlite3&co): ... this. Add GUILE-GCRYPT. (self-contained-tarball)[build]: Call 'make-config.scm' without #:libgcrypt argument. (squashfs-image)[libgcrypt]: Remove. [build]: Call 'make-config.scm' without #:libgcrypt. (docker-image)[config, json]: Remove. [build]: Add GUILE-GCRYPT to the extensions Remove (guix config) from the imported modules. * guix/self.scm (specification->package): Remove "libgcrypt", add "guile-gcrypt". (compiled-guix): Remove #:libgcrypt. [guile-gcrypt]: New variable. [dependencies]: Add it. [*core-modules*]: Remove #:libgcrypt from 'make-config.scm' call. Add #:extensions. [*config*]: Remove #:libgcrypt from 'make-config.scm' call. (%dependency-variables): Remove %libgcrypt. (make-config.scm): Remove #:libgcrypt. * build-aux/build-self.scm (guile-gcrypt): New variable. (make-config.scm): Remove #:libgcrypt. (build-program)[fake-gcrypt-hash]: New variable. Add (gcrypt hash) to the imported modules. Adjust load path assignments. * gnu/packages/package-management.scm (guix)[propagated-inputs]: Add GUILE-GCRYPT. [arguments]: In 'wrap-program' phase, add GUILE-GCRYPT to the search path.
* Fix some typos.Tobias Geerinckx-Rice2018-09-03
| | | | | | | | * doc/guix.texi (Sound Services, DNS Services): Fix typos. * gnu/packages/cpp.scm (json-modern-cxx)[description]: Likewise. * gnu/packages/emacs.scm (emacs-fancy-narrow)[synopsis, description]: Likewise. Edit & mark up while we're here. * gnu/packages/mail.scm (alot)[synopsis, description]: Ditto.
* Add (guix channels) and use it in (guix scripts pull).Ludovic Courtès2018-09-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | * guix/channels.scm: New file. * Makefile.am (MODULES): Add it. * guix/scripts/pull.scm: Use it. (%default-options): Remove 'repository-url' and 'ref'. (show-help, %options): Add '--channels'. (%self-build-file, %pull-version, build-from-source) (whole-package-for-legacy, derivation->manifest-entry): Remove. These now exist in a similar form in (guix channels). (build-and-install): Change 'source' to 'instances'. Remove #:url, #:branch, and #:commit. Rewrite using 'channel-instances->manifest'. (channel-list): New procedure. (guix-pull): Parameterize %REPOSITORY-CACHE-DIRECTORY. Call 'honor-lets-encrypt-certificates!' unconditionally. Load ~/.config/guix/channels.scm. Rewrite to use (guix channels). [use-le-certs?]: Remove. * po/guix/POTFILES.in: Add (guix channels). * doc/guix.texi (Invoking guix pull): Group the description of '--url', '--commit', and '--branch'. Remove mention of 'GUIX_PULL_URL'. Add references to "Channels". Document '--channels'. (Channels): New node. (Defining Packages): Link to "Channels" instead of "Package Modules". (Invoking guix edit): Link to "Package Modules" instead of "Defining Packages". (Package Modules): Document both GUIX_PACKAGE_PATH and channels.
* import: pypi: Support recursive importing.Ricardo Wurmus2018-08-30
| | | | | | | | | | | | * guix/import/pypi.scm (guess-requirements): Use upstream names. (compute-inputs): Return the upstream dependency names as an additional value. (make-pypi-sexp): Likewise. (pypi->guix-package): Memoize it. (pypi-recursive-import): New procedure. * guix/scripts/import/pypi.scm (show-help, %options): Accept "recursive" option. (guix-import-pypi): Use pypi-recursive-import. * doc/guix.texi (Invoking guix import): Document it.
* import: stackage: Support recursive importing.Ricardo Wurmus2018-08-30
| | | | | | | | | | * guix/import/hackage.scm (hackage-name->package-name): Export procedure. * guix/import/stackage.scm (lts-info-packages-lts-info): Fix match expression. (stackage-recursive-import): New procedure. (stackage->guix-package): Memoize results. * guix/scripts/import/stackage.scm (show-help, %options, guix-import-stackage): Support recursive importing. * doc/guix.texi (Invoking guix import): Document option.
* services: Add ddclient service.Oleg Pykhalov2018-08-30
| | | | | | | | | | * gnu/services/dns.scm (ddclient-configuration, ddclient-service-type): New variables. (uglify-field-name, serialize-field, serialize-boolean, serialize-integer, serialize-string, serialize-list, serialize-extra-options, ddclient-activation, ddclient-shepherd-service, generate-ddclient-documentation): New procedures. * doc/guix.texi (DNS Services): Document it.
* services: openssh: Add 'log-level' field.Ludovic Courtès2018-08-28
| | | | | | * gnu/services/ssh.scm (<openssh-configuration>)[log-level]: New field. (openssh-config-file): Honor it. * doc/guix.texi (Networking Services): Document it.
* services: tor: Make it easier to use UNIX sockets.Chris Marusich2018-08-28
| | | | | | | | | | | | * doc/guix.texi (Networking Services): Document it, and mention that tor-service is deprecated. * gnu/services/networking.scm (<tor-configuration>) <socks-socket-type>: New field. (tor-configuration->torrc): When socks-socket-type is 'unix, set SocksPort to UNIX domain socket /var/run/tor/socks-sock and set UnixSocksGroupWritable to 1. * gnu/tests/networking.scm (%tor-os/unix-socks-socket): Instead of using a custom config file, just set socks-socket-type to 'unix.
* doc: Remove extra space before colon in menu entries.Ludovic Courtès2018-08-20
| | | | | | | | Fixes <https://bugs.gnu.org/32473>. Reported by HiPhish <hiphish@posteo.de>. * doc/guix.texi (Top, Defining Packages): In menu, remove extra space before "::".
* doc: Fix typo.Julien Lepiller2018-08-16
| | | | | * doc/guix.texi (Using the Configuration System): Add missing 'you' and fix word order.
* gnu: services: Add pcscd service.Arun Isaac2018-08-16
| | | | | | | * gnu/services/security-token.scm: New file. * gnu/tests/security-token.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Register new files. * doc/guix.texi (Miscellaneous Services): Document the service.