summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2023-07-05 11:49:34 +0200
committerLudovic Courtès <ludo@gnu.org>2023-08-07 15:11:45 +0200
commitb3a2b3e7238161ebd86c7609f68e8f1e9c1dd6b7 (patch)
treed95589f566956e3e26c787d3f5099da188aa57ba /doc
parente63c87020d10f90d5461cec2b7f83f5d20773603 (diff)
services: Add 'package-database' service.
* gnu/services/admin.scm (%default-package-database-update-schedule): New variable. (<package-database-configuration>): New record type. (package-database-mcron-jobs): New procedure. (package-database-service-type): New variable. * doc/guix.texi (File Search Services): Document it.
Diffstat (limited to 'doc')
-rw-r--r--doc/guix.texi49
1 files changed, 48 insertions, 1 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index cbec8b0708..65ca18a1be 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -4481,7 +4481,9 @@ database, usually under @file{/var/cache/guix/locate}; if it does not
exist or is too old, it falls back to the per-user database, by default
under @file{~/.cache/guix/locate}. On a multi-user system,
administrators may want to periodically update the system-wide database
-so that all users can benefit from it.
+so that all users can benefit from it, for instance by setting up
+@code{package-database-service-type} (@pxref{File Search Services,
+@code{package-database-service-type}}).
The general syntax is:
@@ -25000,6 +25002,51 @@ GNU@tie{}Findutils}).
@end table
@end deftp
+The second service, @code{package-database-service-type}, builds the
+database used by @command{guix locate}, which lets you search for
+packages that contain a given file (@pxref{Invoking guix locate}). The
+service periodically updates a system-wide database, which will be
+readily available to anyone running @command{guix locate} on the system.
+To use this service with its default settings, add this snippet to your
+service list:
+
+@lisp
+(service package-database-service-type)
+@end lisp
+
+This will run @command{guix locate --update} once a week.
+
+@defvar package-database-service-type
+This is the service type for periodic @command{guix locate} updates
+(@pxref{Invoking guix locate}). Its value must be a
+@code{package-database-configuration} record, as shown below.
+@end defvar
+
+@deftp {Data Type} package-database-configuration
+Data type to configure periodic package database updates. It has the
+following fields:
+
+@table @asis
+@item @code{package} (default: @code{guix})
+The Guix package to use.
+
+@item @code{schedule} (default: @code{%default-package-database-update-schedule})
+String or G-exp denoting an mcron schedule for the periodic
+@command{guix locate --update} job (@pxref{Guile Syntax,,, mcron,
+GNU@tie{}mcron}).
+
+@item @code{method} (default: @code{'store})
+Indexing method for @command{guix locate}. The default value,
+@code{'store}, yields a more complete database but is relatively
+expensive in terms of CPU and input/output.
+
+@item @code{channels} (default: @code{#~%default-channels})
+G-exp denoting the channels to use when updating the database
+(@pxref{Channels}).
+@end table
+@end deftp
+
+
@node Database Services
@subsection Database Services