nls: Add Slovak translation.
[jackhill/guix/guix.git] / po / doc / guix-manual.sk.po
1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR the authors of Guix (msgids)
3 # This file is distributed under the same license as the guix manual package.
4 # Marek Felšöci <marek@felsoci.sk>, 2021.
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: guix manual checkout\n"
8 "Report-Msgid-Bugs-To: bug-guix@gnu.org\n"
9 "POT-Creation-Date: 2021-04-13 01:18+0200\n"
10 "PO-Revision-Date: 2021-04-17 23:47+0000\n"
11 "Last-Translator: Marek Felšöci <marek@felsoci.sk>\n"
12 "Language-Team: Slovak <https://translate.fedoraproject.org/projects/guix/documentation-manual/sk/>\n"
13 "Language: sk\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18 "X-Generator: Weblate 4.5.3\n"
19
20 #. #-#-#-#-# contributing.pot (guix manual checkout) #-#-#-#-#
21 #. type: chapter
22 #. #-#-#-#-# guix.pot (guix manual checkout) #-#-#-#-#
23 #. type: menuentry
24 #: guix-git/doc/contributing.texi:1 guix-git/doc/contributing.texi:2
25 #: guix-git/doc/guix.texi:168
26 #, no-wrap
27 msgid "Contributing"
28 msgstr "Zapojiť sa"
29
30 #. type: Plain text
31 #: guix-git/doc/contributing.texi:9
32 msgid "This project is a cooperative effort, and we need your help to make it grow! Please get in touch with us on @email{guix-devel@@gnu.org} and @code{#guix} on the Freenode IRC network. We welcome ideas, bug reports, patches, and anything that may be helpful to the project. We particularly welcome help on packaging (@pxref{Packaging Guidelines})."
33 msgstr "Tento projekt je výsledkom spoločného úsilia a potrebujeme vašu pomoc pri jeho rozširovaní! Spojte sa s nami prostredníctvom @email{guix-devel@@gnu.org} alebo @code{#guix} na sieti IRC Freenode. Radi privítame vaše nápady, hlásenia chýb, záplaty a čokoľvek čo môže projektu pomôcť. Zvlášť radi privítame vašu pomoc s pridávaním balíkov (@pxref{Packaging Guidelines})."
34
35 #. type: cindex
36 #: guix-git/doc/contributing.texi:10
37 #, fuzzy, no-wrap
38 msgid "code of conduct, of contributors"
39 msgstr "pravidlá pre spoluprácu"
40
41 #. type: cindex
42 #: guix-git/doc/contributing.texi:11
43 #, no-wrap
44 msgid "contributor covenant"
45 msgstr "záväzok prispievateľa"
46
47 #. type: Plain text
48 #: guix-git/doc/contributing.texi:17
49 msgid "We want to provide a warm, friendly, and harassment-free environment, so that anyone can contribute to the best of their abilities. To this end our project uses a ``Contributor Covenant'', which was adapted from @url{https://contributor-covenant.org/}. You can find a local version in the @file{CODE-OF-CONDUCT} file in the source tree."
50 msgstr "Chceme vám poskytnúť príjemné a priateľské prostredie bez obťažovania, aby sa každý mohol zapojiť najlepšie ako vie. Preto sa náš projekt riadi „záväzkom prispievateľa“ založeným na @url{https://contributor-covenant.org/}. Úplné znenie záväzku nájdete v súbore @file{CODE-OF-CONDUCT} v strome zdrojových súborov."
51
52 #. type: Plain text
53 #: guix-git/doc/contributing.texi:21
54 msgid "Contributors are not required to use their legal name in patches and on-line communication; they can use any name or pseudonym of their choice."
55 msgstr "Prispievatelia nemusia používať ich ozajstné meno v záplatách a online dokumentácii; môžu používať ľubovoľné meno alebo prezývku."
56
57 #. type: section
58 #: guix-git/doc/contributing.texi:32 guix-git/doc/contributing.texi:34
59 #: guix-git/doc/contributing.texi:35
60 #, no-wrap
61 msgid "Building from Git"
62 msgstr "Zostavenie z Gitu"
63
64 #. type: menuentry
65 #: guix-git/doc/contributing.texi:32
66 msgid "The latest and greatest."
67 msgstr "Vždy ten najnovší."
68
69 #. type: section
70 #: guix-git/doc/contributing.texi:32 guix-git/doc/contributing.texi:160
71 #: guix-git/doc/contributing.texi:161
72 #, no-wrap
73 msgid "Running Guix Before It Is Installed"
74 msgstr "Spúšťanie Guixu ešte pred inštaláciou"
75
76 #. type: menuentry
77 #: guix-git/doc/contributing.texi:32
78 msgid "Hacker tricks."
79 msgstr "Finty pre hackerov."
80
81 #. type: section
82 #: guix-git/doc/contributing.texi:32 guix-git/doc/contributing.texi:234
83 #: guix-git/doc/contributing.texi:235
84 #, no-wrap
85 msgid "The Perfect Setup"
86 msgstr "Dokonalé nastavenie"
87
88 #. type: menuentry
89 #: guix-git/doc/contributing.texi:32
90 msgid "The right tools."
91 msgstr "Správne nástroje."
92
93 #. type: section
94 #: guix-git/doc/contributing.texi:32 guix-git/doc/contributing.texi:325
95 #: guix-git/doc/contributing.texi:326
96 #, no-wrap
97 msgid "Packaging Guidelines"
98 msgstr ""
99
100 #. type: menuentry
101 #: guix-git/doc/contributing.texi:32
102 msgid "Growing the distribution."
103 msgstr ""
104
105 #. type: section
106 #: guix-git/doc/contributing.texi:32 guix-git/doc/contributing.texi:873
107 #: guix-git/doc/contributing.texi:874
108 #, no-wrap
109 msgid "Coding Style"
110 msgstr ""
111
112 #. type: menuentry
113 #: guix-git/doc/contributing.texi:32
114 msgid "Hygiene of the contributor."
115 msgstr ""
116
117 #. type: section
118 #: guix-git/doc/contributing.texi:32 guix-git/doc/contributing.texi:972
119 #: guix-git/doc/contributing.texi:973
120 #, no-wrap
121 msgid "Submitting Patches"
122 msgstr ""
123
124 #. type: menuentry
125 #: guix-git/doc/contributing.texi:32
126 msgid "Share your work."
127 msgstr ""
128
129 #. type: section
130 #: guix-git/doc/contributing.texi:32 guix-git/doc/contributing.texi:1198
131 #: guix-git/doc/contributing.texi:1199
132 #, no-wrap
133 msgid "Tracking Bugs and Patches"
134 msgstr ""
135
136 #. type: menuentry
137 #: guix-git/doc/contributing.texi:32
138 msgid "Using Debbugs."
139 msgstr ""
140
141 #. type: section
142 #: guix-git/doc/contributing.texi:32 guix-git/doc/contributing.texi:1249
143 #: guix-git/doc/contributing.texi:1250
144 #, no-wrap
145 msgid "Commit Access"
146 msgstr ""
147
148 #. type: menuentry
149 #: guix-git/doc/contributing.texi:32
150 msgid "Pushing to the official repository."
151 msgstr ""
152
153 #. type: section
154 #: guix-git/doc/contributing.texi:32 guix-git/doc/contributing.texi:1396
155 #: guix-git/doc/contributing.texi:1397
156 #, no-wrap
157 msgid "Updating the Guix Package"
158 msgstr ""
159
160 #. type: menuentry
161 #: guix-git/doc/contributing.texi:32
162 msgid "Updating the Guix package definition."
163 msgstr ""
164
165 #. type: Plain text
166 #: guix-git/doc/contributing.texi:39
167 msgid "If you want to hack Guix itself, it is recommended to use the latest version from the Git repository:"
168 msgstr ""
169
170 #. type: example
171 #: guix-git/doc/contributing.texi:42
172 #, no-wrap
173 msgid "git clone https://git.savannah.gnu.org/git/guix.git\n"
174 msgstr ""
175
176 #. type: cindex
177 #: guix-git/doc/contributing.texi:44
178 #, no-wrap
179 msgid "authentication, of a Guix checkout"
180 msgstr ""
181
182 #. type: Plain text
183 #: guix-git/doc/contributing.texi:49
184 msgid "How do you ensure that you obtained a genuine copy of the repository? To do that, run @command{guix git authenticate}, passing it the commit and OpenPGP fingerprint of the @dfn{channel introduction} (@pxref{Invoking guix git authenticate}):"
185 msgstr ""
186
187 #. type: example
188 #: guix-git/doc/contributing.texi:56
189 #, no-wrap
190 msgid ""
191 "git fetch origin keyring:keyring\n"
192 "guix git authenticate 9edb3f66fd807b096b48283debdcddccfea34bad \\\n"
193 " \"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA\"\n"
194 msgstr ""
195
196 #. type: Plain text
197 #: guix-git/doc/contributing.texi:61
198 msgid "This command completes with exit code zero on success; it prints an error message and exits with a non-zero code otherwise."
199 msgstr ""
200
201 #. type: Plain text
202 #: guix-git/doc/contributing.texi:68
203 msgid "As you can see, there is a chicken-and-egg problem: you first need to have Guix installed. Typically you would install Guix System (@pxref{System Installation}) or Guix on top of another distro (@pxref{Binary Installation}); in either case, you would verify the OpenPGP signature on the installation medium. This ``bootstraps'' the trust chain."
204 msgstr ""
205
206 #. type: Plain text
207 #: guix-git/doc/contributing.texi:73
208 msgid "The easiest way to set up a development environment for Guix is, of course, by using Guix! The following command starts a new shell where all the dependencies and appropriate environment variables are set up to hack on Guix:"
209 msgstr ""
210
211 #. type: example
212 #: guix-git/doc/contributing.texi:76
213 #, no-wrap
214 msgid "guix environment guix --pure\n"
215 msgstr ""
216
217 #. type: Plain text
218 #: guix-git/doc/contributing.texi:79
219 msgid "@xref{Invoking guix environment}, for more information on that command."
220 msgstr ""
221
222 #. type: Plain text
223 #: guix-git/doc/contributing.texi:83
224 msgid "If you are unable to use Guix when building Guix from a checkout, the following are the required packages in addition to those mentioned in the installation instructions (@pxref{Requirements})."
225 msgstr ""
226
227 #. type: item
228 #: guix-git/doc/contributing.texi:85
229 #, no-wrap
230 msgid "@url{https://gnu.org/software/autoconf/, GNU Autoconf};"
231 msgstr ""
232
233 #. type: item
234 #: guix-git/doc/contributing.texi:86
235 #, no-wrap
236 msgid "@url{https://gnu.org/software/automake/, GNU Automake};"
237 msgstr ""
238
239 #. type: item
240 #: guix-git/doc/contributing.texi:87
241 #, no-wrap
242 msgid "@url{https://gnu.org/software/gettext/, GNU Gettext};"
243 msgstr ""
244
245 #. type: item
246 #: guix-git/doc/contributing.texi:88
247 #, no-wrap
248 msgid "@url{https://gnu.org/software/texinfo/, GNU Texinfo};"
249 msgstr ""
250
251 #. type: item
252 #: guix-git/doc/contributing.texi:89
253 #, no-wrap
254 msgid "@url{https://www.graphviz.org/, Graphviz};"
255 msgstr ""
256
257 #. type: item
258 #: guix-git/doc/contributing.texi:90
259 #, no-wrap
260 msgid "@url{https://www.gnu.org/software/help2man/, GNU Help2man (optional)}."
261 msgstr ""
262
263 #. type: Plain text
264 #: guix-git/doc/contributing.texi:95
265 msgid "On Guix, extra dependencies can be added by instead running @command{guix environment} with @option{--ad-hoc}:"
266 msgstr ""
267
268 #. type: example
269 #: guix-git/doc/contributing.texi:98
270 #, no-wrap
271 msgid "guix environment guix --pure --ad-hoc help2man git strace\n"
272 msgstr ""
273
274 #. type: Plain text
275 #: guix-git/doc/contributing.texi:102
276 msgid "Run @command{./bootstrap} to generate the build system infrastructure using Autoconf and Automake. If you get an error like this one:"
277 msgstr ""
278
279 #. type: example
280 #: guix-git/doc/contributing.texi:105
281 #, no-wrap
282 msgid "configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES\n"
283 msgstr ""
284
285 #. type: Plain text
286 #: guix-git/doc/contributing.texi:114
287 msgid "it probably means that Autoconf couldn’t find @file{pkg.m4}, which is provided by pkg-config. Make sure that @file{pkg.m4} is available. The same holds for the @file{guile.m4} set of macros provided by Guile. For instance, if you installed Automake in @file{/usr/local}, it wouldn’t look for @file{.m4} files in @file{/usr/share}. In that case, you have to invoke the following command:"
288 msgstr ""
289
290 #. type: example
291 #: guix-git/doc/contributing.texi:117
292 #, no-wrap
293 msgid "export ACLOCAL_PATH=/usr/share/aclocal\n"
294 msgstr ""
295
296 #. type: Plain text
297 #: guix-git/doc/contributing.texi:121
298 msgid "@xref{Macro Search Path,,, automake, The GNU Automake Manual}, for more information."
299 msgstr ""
300
301 #. type: Plain text
302 #: guix-git/doc/contributing.texi:128
303 msgid "Then, run @command{./configure} as usual. Make sure to pass @code{--localstatedir=@var{directory}} where @var{directory} is the @code{localstatedir} value used by your current installation (@pxref{The Store}, for information about this), usually @file{/var}. Note that you will probably not run @command{make install} at the end (you don't have to) but it's still important to pass the right @code{localstatedir}."
304 msgstr ""
305
306 #. type: Plain text
307 #: guix-git/doc/contributing.texi:133
308 msgid "Finally, you have to invoke @code{make && make check} to build Guix and run the tests (@pxref{Running the Test Suite}). If anything fails, take a look at installation instructions (@pxref{Installation}) or send a message to the @email{guix-devel@@gnu.org, mailing list}."
309 msgstr ""
310
311 #. type: Plain text
312 #: guix-git/doc/contributing.texi:136
313 msgid "From there on, you can authenticate all the commits included in your checkout by running:"
314 msgstr ""
315
316 #. type: example
317 #: guix-git/doc/contributing.texi:139
318 #, no-wrap
319 msgid "make authenticate\n"
320 msgstr ""
321
322 #. type: Plain text
323 #: guix-git/doc/contributing.texi:142
324 msgid "The first run takes a couple of minutes, but subsequent runs are faster."
325 msgstr ""
326
327 #. type: Plain text
328 #: guix-git/doc/contributing.texi:148
329 msgid "Or, when your configuration for your local Git repository doesn't match the default one, you can provide the reference for the @code{keyring} branch through the variable @code{GUIX_GIT_KEYRING}. The following example assumes that you have a Git remote called @samp{myremote} pointing to the official repository:"
330 msgstr ""
331
332 #. type: example
333 #: guix-git/doc/contributing.texi:151
334 #, no-wrap
335 msgid "make authenticate GUIX_GIT_KEYRING=myremote/keyring\n"
336 msgstr ""
337
338 #. type: quotation
339 #: guix-git/doc/contributing.texi:153 guix-git/doc/contributing.texi:1316
340 #: guix-git/doc/guix.texi:565 guix-git/doc/guix.texi:614
341 #: guix-git/doc/guix.texi:1763 guix-git/doc/guix.texi:2010
342 #: guix-git/doc/guix.texi:2218 guix-git/doc/guix.texi:2439
343 #: guix-git/doc/guix.texi:2640 guix-git/doc/guix.texi:3757
344 #: guix-git/doc/guix.texi:4493 guix-git/doc/guix.texi:4507
345 #: guix-git/doc/guix.texi:4589 guix-git/doc/guix.texi:4819
346 #: guix-git/doc/guix.texi:5669 guix-git/doc/guix.texi:5915
347 #: guix-git/doc/guix.texi:6036 guix-git/doc/guix.texi:6088
348 #: guix-git/doc/guix.texi:8775 guix-git/doc/guix.texi:8845
349 #: guix-git/doc/guix.texi:10510 guix-git/doc/guix.texi:10550
350 #: guix-git/doc/guix.texi:10823 guix-git/doc/guix.texi:10835
351 #: guix-git/doc/guix.texi:13080 guix-git/doc/guix.texi:13707
352 #: guix-git/doc/guix.texi:14490 guix-git/doc/guix.texi:15465
353 #: guix-git/doc/guix.texi:17781 guix-git/doc/guix.texi:17930
354 #: guix-git/doc/guix.texi:25526 guix-git/doc/guix.texi:29135
355 #: guix-git/doc/guix.texi:31092 guix-git/doc/guix.texi:32585
356 #: guix-git/doc/guix.texi:32819 guix-git/doc/guix.texi:32989
357 #: guix-git/doc/guix.texi:33142 guix-git/doc/guix.texi:33244
358 #: guix-git/doc/guix.texi:33345
359 #, no-wrap
360 msgid "Note"
361 msgstr ""
362
363 #. type: quotation
364 #: guix-git/doc/contributing.texi:157
365 msgid "You are advised to run @command{make authenticate} after every @command{git pull} invocation. This ensures you keep receiving valid changes to the repository."
366 msgstr ""
367
368 #. type: Plain text
369 #: guix-git/doc/contributing.texi:167
370 msgid "In order to keep a sane working environment, you will find it useful to test the changes made in your local source tree checkout without actually installing them. So that you can distinguish between your ``end-user'' hat and your ``motley'' costume."
371 msgstr ""
372
373 #. type: Plain text
374 #: guix-git/doc/contributing.texi:178
375 msgid "To that end, all the command-line tools can be used even if you have not run @code{make install}. To do that, you first need to have an environment with all the dependencies available (@pxref{Building from Git}), and then simply prefix each command with @command{./pre-inst-env} (the @file{pre-inst-env} script lives in the top build tree of Guix; it is generated by running @command{./bootstrap} followed by @command{./configure}). As an example, here is how you would build the @code{hello} package as defined in your working tree (this assumes @command{guix-daemon} is already running on your system; it's OK if it's a different version):"
376 msgstr ""
377
378 #. type: example
379 #: guix-git/doc/contributing.texi:181
380 #, no-wrap
381 msgid "$ ./pre-inst-env guix build hello\n"
382 msgstr ""
383
384 #. type: Plain text
385 #: guix-git/doc/contributing.texi:185
386 msgid "Similarly, an example for a Guile session using the Guix modules:"
387 msgstr ""
388
389 #. type: example
390 #: guix-git/doc/contributing.texi:188
391 #, no-wrap
392 msgid ""
393 "$ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))'\n"
394 "\n"
395 msgstr ""
396
397 #. type: example
398 #: guix-git/doc/contributing.texi:190
399 #, no-wrap
400 msgid ";;; (\"x86_64-linux\")\n"
401 msgstr ""
402
403 #. type: cindex
404 #: guix-git/doc/contributing.texi:193
405 #, no-wrap
406 msgid "REPL"
407 msgstr ""
408
409 #. type: cindex
410 #: guix-git/doc/contributing.texi:194
411 #, no-wrap
412 msgid "read-eval-print loop"
413 msgstr ""
414
415 #. type: Plain text
416 #: guix-git/doc/contributing.texi:197
417 msgid "@dots{} and for a REPL (@pxref{Using Guile Interactively,,, guile, Guile Reference Manual}):"
418 msgstr ""
419
420 #. type: example
421 #: guix-git/doc/contributing.texi:212
422 #, no-wrap
423 msgid ""
424 "$ ./pre-inst-env guile\n"
425 "scheme@@(guile-user)> ,use(guix)\n"
426 "scheme@@(guile-user)> ,use(gnu)\n"
427 "scheme@@(guile-user)> (define snakes\n"
428 " (fold-packages\n"
429 " (lambda (package lst)\n"
430 " (if (string-prefix? \"python\"\n"
431 " (package-name package))\n"
432 " (cons package lst)\n"
433 " lst))\n"
434 " '()))\n"
435 "scheme@@(guile-user)> (length snakes)\n"
436 "$1 = 361\n"
437 msgstr ""
438
439 #. type: Plain text
440 #: guix-git/doc/contributing.texi:220
441 msgid "If you are hacking on the daemon and its supporting code or if @command{guix-daemon} is not already running on your system, you can launch it straight from the build tree@footnote{The @option{-E} flag to @command{sudo} guarantees that @code{GUILE_LOAD_PATH} is correctly set such that @command{guix-daemon} and the tools it uses can find the Guile modules they need.}:"
442 msgstr ""
443
444 #. type: example
445 #: guix-git/doc/contributing.texi:223
446 #, no-wrap
447 msgid "$ sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild\n"
448 msgstr ""
449
450 #. type: Plain text
451 #: guix-git/doc/contributing.texi:227
452 msgid "The @command{pre-inst-env} script sets up all the environment variables necessary to support this, including @env{PATH} and @env{GUILE_LOAD_PATH}."
453 msgstr ""
454
455 #. type: Plain text
456 #: guix-git/doc/contributing.texi:232
457 msgid "Note that @command{./pre-inst-env guix pull} does @emph{not} upgrade the local source tree; it simply updates the @file{~/.config/guix/current} symlink (@pxref{Invoking guix pull}). Run @command{git pull} instead if you want to upgrade your local source tree."
458 msgstr ""
459
460 #. type: Plain text
461 #: guix-git/doc/contributing.texi:242
462 msgid "The Perfect Setup to hack on Guix is basically the perfect setup used for Guile hacking (@pxref{Using Guile in Emacs,,, guile, Guile Reference Manual}). First, you need more than an editor, you need @url{https://www.gnu.org/software/emacs, Emacs}, empowered by the wonderful @url{https://nongnu.org/geiser/, Geiser}. To set that up, run:"
463 msgstr ""
464
465 #. type: example
466 #: guix-git/doc/contributing.texi:245
467 #, no-wrap
468 msgid "guix package -i emacs guile emacs-geiser\n"
469 msgstr ""
470
471 #. type: Plain text
472 #: guix-git/doc/contributing.texi:254
473 msgid "Geiser allows for interactive and incremental development from within Emacs: code compilation and evaluation from within buffers, access to on-line documentation (docstrings), context-sensitive completion, @kbd{M-.} to jump to an object definition, a REPL to try out your code, and more (@pxref{Introduction,,, geiser, Geiser User Manual}). For convenient Guix development, make sure to augment Guile’s load path so that it finds source files from your checkout:"
474 msgstr ""
475
476 #. type: lisp
477 #: guix-git/doc/contributing.texi:259
478 #, no-wrap
479 msgid ""
480 ";; @r{Assuming the Guix checkout is in ~/src/guix.}\n"
481 "(with-eval-after-load 'geiser-guile\n"
482 " (add-to-list 'geiser-guile-load-path \"~/src/guix\"))\n"
483 msgstr ""
484
485 #. type: Plain text
486 #: guix-git/doc/contributing.texi:267
487 msgid "To actually edit the code, Emacs already has a neat Scheme mode. But in addition to that, you must not miss @url{https://www.emacswiki.org/emacs/ParEdit, Paredit}. It provides facilities to directly operate on the syntax tree, such as raising an s-expression or wrapping it, swallowing or rejecting the following s-expression, etc."
488 msgstr ""
489
490 #. type: cindex
491 #: guix-git/doc/contributing.texi:268
492 #, no-wrap
493 msgid "code snippets"
494 msgstr ""
495
496 #. type: cindex
497 #: guix-git/doc/contributing.texi:269
498 #, no-wrap
499 msgid "templates"
500 msgstr ""
501
502 #. type: cindex
503 #: guix-git/doc/contributing.texi:270
504 #, no-wrap
505 msgid "reducing boilerplate"
506 msgstr ""
507
508 #. type: Plain text
509 #: guix-git/doc/contributing.texi:277
510 msgid "We also provide templates for common git commit messages and package definitions in the @file{etc/snippets} directory. These templates can be used with @url{https://joaotavora.github.io/yasnippet/, YASnippet} to expand short trigger strings to interactive text snippets. You may want to add the snippets directory to the @var{yas-snippet-dirs} variable in Emacs."
511 msgstr ""
512
513 #. type: lisp
514 #: guix-git/doc/contributing.texi:282
515 #, no-wrap
516 msgid ""
517 ";; @r{Assuming the Guix checkout is in ~/src/guix.}\n"
518 "(with-eval-after-load 'yasnippet\n"
519 " (add-to-list 'yas-snippet-dirs \"~/src/guix/etc/snippets\"))\n"
520 msgstr ""
521
522 #. type: Plain text
523 #: guix-git/doc/contributing.texi:290
524 msgid "The commit message snippets depend on @url{https://magit.vc/, Magit} to display staged files. When editing a commit message type @code{add} followed by @kbd{TAB} to insert a commit message template for adding a package; type @code{update} followed by @kbd{TAB} to insert a template for updating a package; type @code{https} followed by @kbd{TAB} to insert a template for changing the home page URI of a package to HTTPS."
525 msgstr ""
526
527 #. type: Plain text
528 #: guix-git/doc/contributing.texi:296
529 msgid "The main snippet for @code{scheme-mode} is triggered by typing @code{package...} followed by @kbd{TAB}. This snippet also inserts the trigger string @code{origin...}, which can be expanded further. The @code{origin} snippet in turn may insert other trigger strings ending on @code{...}, which also can be expanded further."
530 msgstr ""
531
532 #. type: cindex
533 #: guix-git/doc/contributing.texi:297
534 #, no-wrap
535 msgid "insert or update copyright"
536 msgstr ""
537
538 #. type: code{#1}
539 #: guix-git/doc/contributing.texi:298
540 #, no-wrap
541 msgid "M-x guix-copyright"
542 msgstr ""
543
544 #. type: code{#1}
545 #: guix-git/doc/contributing.texi:299
546 #, no-wrap
547 msgid "M-x copyright-update"
548 msgstr ""
549
550 #. type: Plain text
551 #: guix-git/doc/contributing.texi:303
552 msgid "We additionally provide insertion and automatic update of a copyright in @file{etc/copyright.el}. You may want to set your full name, mail, and load a file."
553 msgstr ""
554
555 #. type: lisp
556 #: guix-git/doc/contributing.texi:309
557 #, no-wrap
558 msgid ""
559 "(setq user-full-name \"Alice Doe\")\n"
560 "(setq user-mail-address \"alice@@mail.org\")\n"
561 ";; @r{Assuming the Guix checkout is in ~/src/guix.}\n"
562 "(load-file \"~/src/guix/etc/copyright.el\")\n"
563 msgstr ""
564
565 #. type: Plain text
566 #: guix-git/doc/contributing.texi:312
567 msgid "To insert a copyright at the current line invoke @code{M-x guix-copyright}."
568 msgstr ""
569
570 #. type: Plain text
571 #: guix-git/doc/contributing.texi:314
572 msgid "To update a copyright you need to specify a @code{copyright-names-regexp}."
573 msgstr ""
574
575 #. type: lisp
576 #: guix-git/doc/contributing.texi:318
577 #, no-wrap
578 msgid ""
579 "(setq copyright-names-regexp\n"
580 " (format \"%s <%s>\" user-full-name user-mail-address))\n"
581 msgstr ""
582
583 #. type: Plain text
584 #: guix-git/doc/contributing.texi:324
585 msgid "You can check if your copyright is up to date by evaluating @code{M-x copyright-update}. If you want to do it automatically after each buffer save then add @code{(add-hook 'after-save-hook 'copyright-update)} in Emacs."
586 msgstr ""
587
588 #. type: cindex
589 #: guix-git/doc/contributing.texi:328
590 #, no-wrap
591 msgid "packages, creating"
592 msgstr ""
593
594 #. type: Plain text
595 #: guix-git/doc/contributing.texi:332
596 msgid "The GNU distribution is nascent and may well lack some of your favorite packages. This section describes how you can help make the distribution grow."
597 msgstr ""
598
599 #. type: Plain text
600 #: guix-git/doc/contributing.texi:340
601 msgid "Free software packages are usually distributed in the form of @dfn{source code tarballs}---typically @file{tar.gz} files that contain all the source files. Adding a package to the distribution means essentially two things: adding a @dfn{recipe} that describes how to build the package, including a list of other packages required to build it, and adding @dfn{package metadata} along with that recipe, such as a description and licensing information."
602 msgstr ""
603
604 #. type: Plain text
605 #: guix-git/doc/contributing.texi:349
606 msgid "In Guix all this information is embodied in @dfn{package definitions}. Package definitions provide a high-level view of the package. They are written using the syntax of the Scheme programming language; in fact, for each package we define a variable bound to the package definition, and export that variable from a module (@pxref{Package Modules}). However, in-depth Scheme knowledge is @emph{not} a prerequisite for creating packages. For more information on package definitions, @pxref{Defining Packages}."
607 msgstr ""
608
609 #. type: Plain text
610 #: guix-git/doc/contributing.texi:355
611 msgid "Once a package definition is in place, stored in a file in the Guix source tree, it can be tested using the @command{guix build} command (@pxref{Invoking guix build}). For example, assuming the new package is called @code{gnew}, you may run this command from the Guix build tree (@pxref{Running Guix Before It Is Installed}):"
612 msgstr ""
613
614 #. type: example
615 #: guix-git/doc/contributing.texi:358
616 #, no-wrap
617 msgid "./pre-inst-env guix build gnew --keep-failed\n"
618 msgstr ""
619
620 #. type: Plain text
621 #: guix-git/doc/contributing.texi:364
622 msgid "Using @code{--keep-failed} makes it easier to debug build failures since it provides access to the failed build tree. Another useful command-line option when debugging is @code{--log-file}, to access the build log."
623 msgstr ""
624
625 #. type: Plain text
626 #: guix-git/doc/contributing.texi:369
627 msgid "If the package is unknown to the @command{guix} command, it may be that the source file contains a syntax error, or lacks a @code{define-public} clause to export the package variable. To figure it out, you may load the module from Guile to get more information about the actual error:"
628 msgstr ""
629
630 #. type: example
631 #: guix-git/doc/contributing.texi:372
632 #, no-wrap
633 msgid "./pre-inst-env guile -c '(use-modules (gnu packages gnew))'\n"
634 msgstr ""
635
636 #. type: Plain text
637 #: guix-git/doc/contributing.texi:379
638 msgid "Once your package builds correctly, please send us a patch (@pxref{Submitting Patches}). Well, if you need help, we will be happy to help you too. Once the patch is committed in the Guix repository, the new package automatically gets built on the supported platforms by @url{@value{SUBSTITUTE-URL}, our continuous integration system}."
639 msgstr ""
640
641 #. type: cindex
642 #: guix-git/doc/contributing.texi:380
643 #, no-wrap
644 msgid "substituter"
645 msgstr ""
646
647 #. type: Plain text
648 #: guix-git/doc/contributing.texi:387
649 msgid "Users can obtain the new package definition simply by running @command{guix pull} (@pxref{Invoking guix pull}). When @code{@value{SUBSTITUTE-SERVER}} is done building the package, installing the package automatically downloads binaries from there (@pxref{Substitutes}). The only place where human intervention is needed is to review and apply the patch."
650 msgstr ""
651
652 #. type: subsection
653 #: guix-git/doc/contributing.texi:401 guix-git/doc/contributing.texi:403
654 #: guix-git/doc/contributing.texi:404
655 #, no-wrap
656 msgid "Software Freedom"
657 msgstr ""
658
659 #. type: menuentry
660 #: guix-git/doc/contributing.texi:401
661 msgid "What may go into the distribution."
662 msgstr ""
663
664 #. type: subsection
665 #: guix-git/doc/contributing.texi:401 guix-git/doc/contributing.texi:431
666 #: guix-git/doc/contributing.texi:432
667 #, no-wrap
668 msgid "Package Naming"
669 msgstr ""
670
671 #. type: menuentry
672 #: guix-git/doc/contributing.texi:401
673 msgid "What's in a name?"
674 msgstr ""
675
676 #. type: subsection
677 #: guix-git/doc/contributing.texi:401 guix-git/doc/contributing.texi:464
678 #: guix-git/doc/contributing.texi:465
679 #, no-wrap
680 msgid "Version Numbers"
681 msgstr ""
682
683 #. type: menuentry
684 #: guix-git/doc/contributing.texi:401
685 msgid "When the name is not enough."
686 msgstr ""
687
688 #. type: subsection
689 #: guix-git/doc/contributing.texi:401 guix-git/doc/contributing.texi:555
690 #: guix-git/doc/contributing.texi:556
691 #, no-wrap
692 msgid "Synopses and Descriptions"
693 msgstr ""
694
695 #. type: menuentry
696 #: guix-git/doc/contributing.texi:401
697 msgid "Helping users find the right package."
698 msgstr ""
699
700 #. type: subsection
701 #: guix-git/doc/contributing.texi:401 guix-git/doc/contributing.texi:634
702 #: guix-git/doc/contributing.texi:635
703 #, no-wrap
704 msgid "Snippets versus Phases"
705 msgstr ""
706
707 #. type: menuentry
708 #: guix-git/doc/contributing.texi:401
709 msgid "Whether to use a snippet, or a build phase."
710 msgstr ""
711
712 #. type: subsection
713 #: guix-git/doc/contributing.texi:401 guix-git/doc/contributing.texi:649
714 #: guix-git/doc/contributing.texi:650 guix-git/doc/guix.texi:1945
715 #, no-wrap
716 msgid "Emacs Packages"
717 msgstr ""
718
719 #. type: menuentry
720 #: guix-git/doc/contributing.texi:401
721 msgid "Your Elisp fix."
722 msgstr ""
723
724 #. type: subsection
725 #: guix-git/doc/contributing.texi:401 guix-git/doc/contributing.texi:689
726 #: guix-git/doc/contributing.texi:690
727 #, no-wrap
728 msgid "Python Modules"
729 msgstr ""
730
731 #. type: menuentry
732 #: guix-git/doc/contributing.texi:401
733 msgid "A touch of British comedy."
734 msgstr ""
735
736 #. type: subsection
737 #: guix-git/doc/contributing.texi:401 guix-git/doc/contributing.texi:765
738 #: guix-git/doc/contributing.texi:766
739 #, no-wrap
740 msgid "Perl Modules"
741 msgstr ""
742
743 #. type: menuentry
744 #: guix-git/doc/contributing.texi:401
745 msgid "Little pearls."
746 msgstr ""
747
748 #. type: subsection
749 #: guix-git/doc/contributing.texi:401 guix-git/doc/contributing.texi:781
750 #: guix-git/doc/contributing.texi:782
751 #, no-wrap
752 msgid "Java Packages"
753 msgstr ""
754
755 #. type: menuentry
756 #: guix-git/doc/contributing.texi:401
757 msgid "Coffee break."
758 msgstr ""
759
760 #. type: subsection
761 #: guix-git/doc/contributing.texi:401 guix-git/doc/contributing.texi:801
762 #: guix-git/doc/contributing.texi:802
763 #, no-wrap
764 msgid "Rust Crates"
765 msgstr ""
766
767 #. type: menuentry
768 #: guix-git/doc/contributing.texi:401
769 msgid "Beware of oxidation."
770 msgstr ""
771
772 #. type: subsection
773 #: guix-git/doc/contributing.texi:401 guix-git/doc/contributing.texi:835
774 #: guix-git/doc/contributing.texi:836
775 #, no-wrap
776 msgid "Fonts"
777 msgstr ""
778
779 #. type: menuentry
780 #: guix-git/doc/contributing.texi:401
781 msgid "Fond of fonts."
782 msgstr ""
783
784 #. type: cindex
785 #: guix-git/doc/contributing.texi:407
786 #, no-wrap
787 msgid "free software"
788 msgstr ""
789
790 #. type: Plain text
791 #: guix-git/doc/contributing.texi:415
792 msgid "The GNU operating system has been developed so that users can have freedom in their computing. GNU is @dfn{free software}, meaning that users have the @url{https://www.gnu.org/philosophy/free-sw.html,four essential freedoms}: to run the program, to study and change the program in source code form, to redistribute exact copies, and to distribute modified versions. Packages found in the GNU distribution provide only software that conveys these four freedoms."
793 msgstr ""
794
795 #. type: Plain text
796 #: guix-git/doc/contributing.texi:421
797 msgid "In addition, the GNU distribution follow the @url{https://www.gnu.org/distros/free-system-distribution-guidelines.html,free software distribution guidelines}. Among other things, these guidelines reject non-free firmware, recommendations of non-free software, and discuss ways to deal with trademarks and patents."
798 msgstr ""
799
800 #. type: Plain text
801 #: guix-git/doc/contributing.texi:429
802 msgid "Some otherwise free upstream package sources contain a small and optional subset that violates the above guidelines, for instance because this subset is itself non-free code. When that happens, the offending items are removed with appropriate patches or code snippets in the @code{origin} form of the package (@pxref{Defining Packages}). This way, @code{guix build --source} returns the ``freed'' source rather than the unmodified upstream source."
803 msgstr ""
804
805 #. type: cindex
806 #: guix-git/doc/contributing.texi:434
807 #, no-wrap
808 msgid "package name"
809 msgstr ""
810
811 #. type: Plain text
812 #: guix-git/doc/contributing.texi:442
813 msgid "A package actually has two names associated with it. First, there is the name of the @emph{Scheme variable}, the one following @code{define-public}. By this name, the package can be made known in the Scheme code, for instance as input to another package. Second, there is the string in the @code{name} field of a package definition. This name is used by package management commands such as @command{guix package} and @command{guix build}."
814 msgstr ""
815
816 #. type: Plain text
817 #: guix-git/doc/contributing.texi:447
818 msgid "Both are usually the same and correspond to the lowercase conversion of the project name chosen upstream, with underscores replaced with hyphens. For instance, GNUnet is available as @code{gnunet}, and SDL_net as @code{sdl-net}."
819 msgstr ""
820
821 #. type: Plain text
822 #: guix-git/doc/contributing.texi:455
823 msgid "A noteworthy exception to this rule is when the project name is only a single character, or if an older maintained project with the same name already exists---regardless of whether it has already been packaged for Guix. Use common sense to make such names unambiguous and meaningful. For example, Guix's package for the shell called ``s'' upstream is @code{s-shell} and @emph{not} @code{s}. Feel free to ask your fellow hackers for inspiration."
824 msgstr ""
825
826 #. type: Plain text
827 #: guix-git/doc/contributing.texi:460
828 msgid "We do not add @code{lib} prefixes for library packages, unless these are already part of the official project name. But @pxref{Python Modules} and @ref{Perl Modules} for special rules concerning modules for the Python and Perl languages."
829 msgstr ""
830
831 #. type: Plain text
832 #: guix-git/doc/contributing.texi:462
833 msgid "Font package names are handled differently, @pxref{Fonts}."
834 msgstr ""
835
836 #. type: cindex
837 #: guix-git/doc/contributing.texi:467
838 #, no-wrap
839 msgid "package version"
840 msgstr ""
841
842 #. type: Plain text
843 #: guix-git/doc/contributing.texi:476
844 msgid "We usually package only the latest version of a given free software project. But sometimes, for instance for incompatible library versions, two (or more) versions of the same package are needed. These require different Scheme variable names. We use the name as defined in @ref{Package Naming} for the most recent version; previous versions use the same name, suffixed by @code{-} and the smallest prefix of the version number that may distinguish the two versions."
845 msgstr ""
846
847 #. type: Plain text
848 #: guix-git/doc/contributing.texi:479
849 msgid "The name inside the package definition is the same for all versions of a package and does not contain any version number."
850 msgstr ""
851
852 #. type: Plain text
853 #: guix-git/doc/contributing.texi:481
854 msgid "For instance, the versions 2.24.20 and 3.9.12 of GTK+ may be packaged as follows:"
855 msgstr ""
856
857 #. type: lisp
858 #: guix-git/doc/contributing.texi:493
859 #, no-wrap
860 msgid ""
861 "(define-public gtk+\n"
862 " (package\n"
863 " (name \"gtk+\")\n"
864 " (version \"3.9.12\")\n"
865 " ...))\n"
866 "(define-public gtk+-2\n"
867 " (package\n"
868 " (name \"gtk+\")\n"
869 " (version \"2.24.20\")\n"
870 " ...))\n"
871 msgstr ""
872
873 #. type: Plain text
874 #: guix-git/doc/contributing.texi:495
875 msgid "If we also wanted GTK+ 3.8.2, this would be packaged as"
876 msgstr ""
877
878 #. type: lisp
879 #: guix-git/doc/contributing.texi:501
880 #, no-wrap
881 msgid ""
882 "(define-public gtk+-3.8\n"
883 " (package\n"
884 " (name \"gtk+\")\n"
885 " (version \"3.8.2\")\n"
886 " ...))\n"
887 msgstr ""
888
889 #. type: cindex
890 #: guix-git/doc/contributing.texi:505
891 #, no-wrap
892 msgid "version number, for VCS snapshots"
893 msgstr ""
894
895 #. type: Plain text
896 #: guix-git/doc/contributing.texi:511
897 msgid "Occasionally, we package snapshots of upstream's version control system (VCS) instead of formal releases. This should remain exceptional, because it is up to upstream developers to clarify what the stable release is. Yet, it is sometimes necessary. So, what should we put in the @code{version} field?"
898 msgstr ""
899
900 #. type: Plain text
901 #: guix-git/doc/contributing.texi:519
902 msgid "Clearly, we need to make the commit identifier of the VCS snapshot visible in the version string, but we also need to make sure that the version string is monotonically increasing so that @command{guix package --upgrade} can determine which version is newer. Since commit identifiers, notably with Git, are not monotonically increasing, we add a revision number that we increase each time we upgrade to a newer snapshot. The resulting version string looks like this:"
903 msgstr ""
904
905 #. type: example
906 #: guix-git/doc/contributing.texi:528
907 #, no-wrap
908 msgid ""
909 "2.0.11-3.cabba9e\n"
910 " ^ ^ ^\n"
911 " | | `-- upstream commit ID\n"
912 " | |\n"
913 " | `--- Guix package revision\n"
914 " |\n"
915 "latest upstream version\n"
916 msgstr ""
917
918 #. type: Plain text
919 #: guix-git/doc/contributing.texi:537
920 msgid "It is a good idea to strip commit identifiers in the @code{version} field to, say, 7 digits. It avoids an aesthetic annoyance (assuming aesthetics have a role to play here) as well as problems related to OS limits such as the maximum shebang length (127 bytes for the Linux kernel). It is best to use the full commit identifiers in @code{origin}s, though, to avoid ambiguities. A typical package definition may look like this:"
921 msgstr ""
922
923 #. type: lisp
924 #: guix-git/doc/contributing.texi:553
925 #, no-wrap
926 msgid ""
927 "(define my-package\n"
928 " (let ((commit \"c3f29bc928d5900971f65965feaae59e1272a3f7\")\n"
929 " (revision \"1\")) ;Guix package revision\n"
930 " (package\n"
931 " (version (git-version \"0.9\" revision commit))\n"
932 " (source (origin\n"
933 " (method git-fetch)\n"
934 " (uri (git-reference\n"
935 " (url \"git://example.org/my-package.git\")\n"
936 " (commit commit)))\n"
937 " (sha256 (base32 \"1mbikn@dots{}\"))\n"
938 " (file-name (git-file-name name version))))\n"
939 " ;; @dots{}\n"
940 " )))\n"
941 msgstr ""
942
943 #. type: cindex
944 #: guix-git/doc/contributing.texi:558
945 #, no-wrap
946 msgid "package description"
947 msgstr ""
948
949 #. type: cindex
950 #: guix-git/doc/contributing.texi:559
951 #, no-wrap
952 msgid "package synopsis"
953 msgstr ""
954
955 #. type: Plain text
956 #: guix-git/doc/contributing.texi:566
957 msgid "As we have seen before, each package in GNU@tie{}Guix includes a synopsis and a description (@pxref{Defining Packages}). Synopses and descriptions are important: They are what @command{guix package --search} searches, and a crucial piece of information to help users determine whether a given package suits their needs. Consequently, packagers should pay attention to what goes into them."
958 msgstr ""
959
960 #. type: Plain text
961 #: guix-git/doc/contributing.texi:574
962 msgid "Synopses must start with a capital letter and must not end with a period. They must not start with ``a'' or ``the'', which usually does not bring anything; for instance, prefer ``File-frobbing tool'' over ``A tool that frobs files''. The synopsis should say what the package is---e.g., ``Core GNU utilities (file, text, shell)''---or what it is used for---e.g., the synopsis for GNU@tie{}grep is ``Print lines matching a pattern''."
963 msgstr ""
964
965 #. type: Plain text
966 #: guix-git/doc/contributing.texi:584
967 msgid "Keep in mind that the synopsis must be meaningful for a very wide audience. For example, ``Manipulate alignments in the SAM format'' might make sense for a seasoned bioinformatics researcher, but might be fairly unhelpful or even misleading to a non-specialized audience. It is a good idea to come up with a synopsis that gives an idea of the application domain of the package. In this example, this might give something like ``Manipulate nucleotide sequence alignments'', which hopefully gives the user a better idea of whether this is what they are looking for."
968 msgstr ""
969
970 #. type: Plain text
971 #: guix-git/doc/contributing.texi:592
972 msgid "Descriptions should take between five and ten lines. Use full sentences, and avoid using acronyms without first introducing them. Please avoid marketing phrases such as ``world-leading'', ``industrial-strength'', and ``next-generation'', and avoid superlatives like ``the most advanced''---they are not helpful to users looking for a package and may even sound suspicious. Instead, try to be factual, mentioning use cases and features."
973 msgstr ""
974
975 #. type: cindex
976 #: guix-git/doc/contributing.texi:593
977 #, no-wrap
978 msgid "Texinfo markup, in package descriptions"
979 msgstr ""
980
981 #. type: Plain text
982 #: guix-git/doc/contributing.texi:602
983 msgid "Descriptions can include Texinfo markup, which is useful to introduce ornaments such as @code{@@code} or @code{@@dfn}, bullet lists, or hyperlinks (@pxref{Overview,,, texinfo, GNU Texinfo}). However you should be careful when using some characters for example @samp{@@} and curly braces which are the basic special characters in Texinfo (@pxref{Special Characters,,, texinfo, GNU Texinfo}). User interfaces such as @command{guix package --show} take care of rendering it appropriately."
984 msgstr ""
985
986 #. type: Plain text
987 #: guix-git/doc/contributing.texi:608
988 msgid "Synopses and descriptions are translated by volunteers @uref{https://translate.fedoraproject.org/projects/guix/packages, at Weblate} so that as many users as possible can read them in their native language. User interfaces search them and display them in the language specified by the current locale."
989 msgstr ""
990
991 #. type: Plain text
992 #: guix-git/doc/contributing.texi:613
993 msgid "To allow @command{xgettext} to extract them as translatable strings, synopses and descriptions @emph{must be literal strings}. This means that you cannot use @code{string-append} or @code{format} to construct these strings:"
994 msgstr ""
995
996 #. type: lisp
997 #: guix-git/doc/contributing.texi:619
998 #, no-wrap
999 msgid ""
1000 "(package\n"
1001 " ;; @dots{}\n"
1002 " (synopsis \"This is translatable\")\n"
1003 " (description (string-append \"This is \" \"*not*\" \" translatable.\")))\n"
1004 msgstr ""
1005
1006 #. type: Plain text
1007 #: guix-git/doc/contributing.texi:627
1008 msgid "Translation is a lot of work so, as a packager, please pay even more attention to your synopses and descriptions as every change may entail additional work for translators. In order to help them, it is possible to make recommendations or instructions visible to them by inserting special comments like this (@pxref{xgettext Invocation,,, gettext, GNU Gettext}):"
1009 msgstr ""
1010
1011 #. type: lisp
1012 #: guix-git/doc/contributing.texi:632
1013 #, no-wrap
1014 msgid ""
1015 ";; TRANSLATORS: \"X11 resize-and-rotate\" should not be translated.\n"
1016 "(description \"ARandR is designed to provide a simple visual front end\n"
1017 "for the X11 resize-and-rotate (RandR) extension. @dots{}\")\n"
1018 msgstr ""
1019
1020 #. type: cindex
1021 #: guix-git/doc/contributing.texi:637
1022 #, no-wrap
1023 msgid "snippets, when to use"
1024 msgstr ""
1025
1026 #. type: Plain text
1027 #: guix-git/doc/contributing.texi:648
1028 msgid "The boundary between using an origin snippet versus a build phase to modify the sources of a package can be elusive. Origin snippets are typically used to remove unwanted files such as bundled libraries, nonfree sources, or to apply simple substitutions. The source derived from an origin should produce a source that can be used to build the package on any system that the upstream package supports (i.e., act as the corresponding source). In particular, origin snippets must not embed store items in the sources; such patching should rather be done using build phases. Refer to the @code{origin} record documentation for more information (@pxref{origin Reference})."
1029 msgstr ""
1030
1031 #. type: cindex
1032 #: guix-git/doc/contributing.texi:652
1033 #, no-wrap
1034 msgid "emacs, packaging"
1035 msgstr ""
1036
1037 #. type: cindex
1038 #: guix-git/doc/contributing.texi:653
1039 #, no-wrap
1040 msgid "elisp, packaging"
1041 msgstr ""
1042
1043 #. type: Plain text
1044 #: guix-git/doc/contributing.texi:665
1045 msgid "Emacs packages should preferably use the Emacs build system (@pxref{emacs-build-system}), for uniformity and the benefits provided by its build phases, such as the auto-generation of the autoloads file and the byte compilation of the sources. Because there is no standardized way to run a test suite for Emacs packages, tests are disabled by default. When a test suite is available, it should be enabled by setting the @code{#:tests?} argument to @code{#true}. By default, the command to run the test is @command{make check}, but any command can be specified via the @code{#:test-command} argument. The @code{#:test-command} argument expects a list containing a command and its arguments, to be invoked during the @code{check} phase."
1046 msgstr ""
1047
1048 #. type: Plain text
1049 #: guix-git/doc/contributing.texi:670
1050 msgid "The Elisp dependencies of Emacs packages are typically provided as @code{propagated-inputs} when required at run time. As for other packages, build or test dependencies should be specified as @code{native-inputs}."
1051 msgstr ""
1052
1053 #. type: Plain text
1054 #: guix-git/doc/contributing.texi:679
1055 msgid "Emacs packages sometimes depend on resources directories that should be installed along the Elisp files. The @code{#:include} argument can be used for that purpose, by specifying a list of regexps to match. The best practice when using the @code{#:include} argument is to extend rather than override its default value (accessible via the @code{%default-include} variable). As an example, a yasnippet extension package typically include a @file{snippets} directory, which could be copied to the installation directory using:"
1056 msgstr ""
1057
1058 #. type: lisp
1059 #: guix-git/doc/contributing.texi:682
1060 #, no-wrap
1061 msgid "#:include (cons \"^snippets/\" %default-include))\n"
1062 msgstr ""
1063
1064 #. type: Plain text
1065 #: guix-git/doc/contributing.texi:688
1066 msgid "When encountering problems, it is wise to check for the presence of the @code{Package-Requires} extension header in the package main source file, and whether any dependencies and their versions listed therein are satisfied."
1067 msgstr ""
1068
1069 #. type: cindex
1070 #: guix-git/doc/contributing.texi:692
1071 #, no-wrap
1072 msgid "python"
1073 msgstr ""
1074
1075 #. type: Plain text
1076 #: guix-git/doc/contributing.texi:698
1077 msgid "We currently package Python 2 and Python 3, under the Scheme variable names @code{python-2} and @code{python} as explained in @ref{Version Numbers}. To avoid confusion and naming clashes with other programming languages, it seems desirable that the name of a package for a Python module contains the word @code{python}."
1078 msgstr ""
1079
1080 #. type: Plain text
1081 #: guix-git/doc/contributing.texi:705
1082 msgid "Some modules are compatible with only one version of Python, others with both. If the package Foo is compiled with Python 3, we name it @code{python-foo}. If it is compiled with Python 2, we name it @code{python2-foo}. Packages should be added when they are necessary; we don't add Python 2 variants of the package unless we are going to use them."
1083 msgstr ""
1084
1085 #. type: Plain text
1086 #: guix-git/doc/contributing.texi:711
1087 msgid "If a project already contains the word @code{python}, we drop this; for instance, the module python-dateutil is packaged under the names @code{python-dateutil} and @code{python2-dateutil}. If the project name starts with @code{py} (e.g.@: @code{pytz}), we keep it and prefix it as described above."
1088 msgstr ""
1089
1090 #. type: subsubsection
1091 #: guix-git/doc/contributing.texi:712
1092 #, no-wrap
1093 msgid "Specifying Dependencies"
1094 msgstr ""
1095
1096 #. type: cindex
1097 #: guix-git/doc/contributing.texi:713
1098 #, no-wrap
1099 msgid "inputs, for Python packages"
1100 msgstr ""
1101
1102 #. type: Plain text
1103 #: guix-git/doc/contributing.texi:718
1104 msgid "Dependency information for Python packages is usually available in the package source tree, with varying degrees of accuracy: in the @file{setup.py} file, in @file{requirements.txt}, or in @file{tox.ini}."
1105 msgstr ""
1106
1107 #. type: Plain text
1108 #: guix-git/doc/contributing.texi:724
1109 msgid "Your mission, when writing a recipe for a Python package, is to map these dependencies to the appropriate type of ``input'' (@pxref{package Reference, inputs}). Although the @code{pypi} importer normally does a good job (@pxref{Invoking guix import}), you may want to check the following check list to determine which dependency goes where."
1110 msgstr ""
1111
1112 #. type: itemize
1113 #: guix-git/doc/contributing.texi:732
1114 msgid "We currently package Python 2 with @code{setuptools} and @code{pip} installed like Python 3.4 has per default. Thus you don't need to specify either of these as an input. @command{guix lint} will warn you if you do."
1115 msgstr ""
1116
1117 #. type: itemize
1118 #: guix-git/doc/contributing.texi:738
1119 msgid "Python dependencies required at run time go into @code{propagated-inputs}. They are typically defined with the @code{install_requires} keyword in @file{setup.py}, or in the @file{requirements.txt} file."
1120 msgstr ""
1121
1122 #. type: itemize
1123 #: guix-git/doc/contributing.texi:746
1124 msgid "Python packages required only at build time---e.g., those listed with the @code{setup_requires} keyword in @file{setup.py}---or only for testing---e.g., those in @code{tests_require}---go into @code{native-inputs}. The rationale is that (1) they do not need to be propagated because they are not needed at run time, and (2) in a cross-compilation context, it's the ``native'' input that we'd want."
1125 msgstr ""
1126
1127 #. type: itemize
1128 #: guix-git/doc/contributing.texi:750
1129 msgid "Examples are the @code{pytest}, @code{mock}, and @code{nose} test frameworks. Of course if any of these packages is also required at run-time, it needs to go to @code{propagated-inputs}."
1130 msgstr ""
1131
1132 #. type: itemize
1133 #: guix-git/doc/contributing.texi:755
1134 msgid "Anything that does not fall in the previous categories goes to @code{inputs}, for example programs or C libraries required for building Python packages containing C extensions."
1135 msgstr ""
1136
1137 #. type: itemize
1138 #: guix-git/doc/contributing.texi:761
1139 msgid "If a Python package has optional dependencies (@code{extras_require}), it is up to you to decide whether to add them or not, based on their usefulness/overhead ratio (@pxref{Submitting Patches, @command{guix size}})."
1140 msgstr ""
1141
1142 #. type: cindex
1143 #: guix-git/doc/contributing.texi:768
1144 #, no-wrap
1145 msgid "perl"
1146 msgstr ""
1147
1148 #. type: Plain text
1149 #: guix-git/doc/contributing.texi:779
1150 msgid "Perl programs standing for themselves are named as any other package, using the lowercase upstream name. For Perl packages containing a single class, we use the lowercase class name, replace all occurrences of @code{::} by dashes and prepend the prefix @code{perl-}. So the class @code{XML::Parser} becomes @code{perl-xml-parser}. Modules containing several classes keep their lowercase upstream name and are also prepended by @code{perl-}. Such modules tend to have the word @code{perl} somewhere in their name, which gets dropped in favor of the prefix. For instance, @code{libwww-perl} becomes @code{perl-libwww}."
1151 msgstr ""
1152
1153 #. type: cindex
1154 #: guix-git/doc/contributing.texi:784
1155 #, no-wrap
1156 msgid "java"
1157 msgstr ""
1158
1159 #. type: Plain text
1160 #: guix-git/doc/contributing.texi:787
1161 msgid "Java programs standing for themselves are named as any other package, using the lowercase upstream name."
1162 msgstr ""
1163
1164 #. type: Plain text
1165 #: guix-git/doc/contributing.texi:793
1166 msgid "To avoid confusion and naming clashes with other programming languages, it is desirable that the name of a package for a Java package is prefixed with @code{java-}. If a project already contains the word @code{java}, we drop this; for instance, the package @code{ngsjava} is packaged under the name @code{java-ngs}."
1167 msgstr ""
1168
1169 #. type: Plain text
1170 #: guix-git/doc/contributing.texi:799
1171 msgid "For Java packages containing a single class or a small class hierarchy, we use the lowercase class name, replace all occurrences of @code{.} by dashes and prepend the prefix @code{java-}. So the class @code{apache.commons.cli} becomes package @code{java-apache-commons-cli}."
1172 msgstr ""
1173
1174 #. type: cindex
1175 #: guix-git/doc/contributing.texi:804
1176 #, no-wrap
1177 msgid "rust"
1178 msgstr ""
1179
1180 #. type: Plain text
1181 #: guix-git/doc/contributing.texi:807
1182 msgid "Rust programs standing for themselves are named as any other package, using the lowercase upstream name."
1183 msgstr ""
1184
1185 #. type: Plain text
1186 #: guix-git/doc/contributing.texi:811
1187 msgid "To prevent namespace collisions we prefix all other Rust packages with the @code{rust-} prefix. The name should be changed to lowercase as appropriate and dashes should remain in place."
1188 msgstr ""
1189
1190 #. type: Plain text
1191 #: guix-git/doc/contributing.texi:817
1192 msgid "In the rust ecosystem it is common for multiple incompatible versions of a package to be used at any given time, so all package definitions should have a versioned suffix. The versioned suffix is the left-most non-zero digit (and any leading zeros, of course). This follows the ``caret'' version scheme intended by Cargo. Examples@: @code{rust-clap-2}, @code{rust-rand-0.6}."
1193 msgstr ""
1194
1195 #. type: Plain text
1196 #: guix-git/doc/contributing.texi:827
1197 msgid "Because of the difficulty in reusing rust packages as pre-compiled inputs for other packages the Cargo build system (@pxref{Build Systems, @code{cargo-build-system}}) presents the @code{#:cargo-inputs} and @code{cargo-development-inputs} keywords as build system arguments. It would be helpful to think of these as similar to @code{propagated-inputs} and @code{native-inputs}. Rust @code{dependencies} and @code{build-dependencies} should go in @code{#:cargo-inputs}, and @code{dev-dependencies} should go in @code{#:cargo-development-inputs}. If a Rust package links to other libraries then the standard placement in @code{inputs} and the like should be used."
1198 msgstr ""
1199
1200 #. type: Plain text
1201 #: guix-git/doc/contributing.texi:833
1202 msgid "Care should be taken to ensure the correct version of dependencies are used; to this end we try to refrain from skipping the tests or using @code{#:skip-build?} when possible. Of course this is not always possible, as the package may be developed for a different Operating System, depend on features from the Nightly Rust compiler, or the test suite may have atrophied since it was released."
1203 msgstr ""
1204
1205 #. type: cindex
1206 #: guix-git/doc/contributing.texi:838 guix-git/doc/guix.texi:1880
1207 #, no-wrap
1208 msgid "fonts"
1209 msgstr ""
1210
1211 #. type: Plain text
1212 #: guix-git/doc/contributing.texi:844
1213 msgid "For fonts that are in general not installed by a user for typesetting purposes, or that are distributed as part of a larger software package, we rely on the general packaging rules for software; for instance, this applies to the fonts delivered as part of the X.Org system or fonts that are part of TeX Live."
1214 msgstr ""
1215
1216 #. type: Plain text
1217 #: guix-git/doc/contributing.texi:848
1218 msgid "To make it easier for a user to search for fonts, names for other packages containing only fonts are constructed as follows, independently of the upstream package name."
1219 msgstr ""
1220
1221 #. type: Plain text
1222 #: guix-git/doc/contributing.texi:856
1223 msgid "The name of a package containing only one font family starts with @code{font-}; it is followed by the foundry name and a dash @code{-} if the foundry is known, and the font family name, in which spaces are replaced by dashes (and as usual, all upper case letters are transformed to lower case). For example, the Gentium font family by SIL is packaged under the name @code{font-sil-gentium}."
1224 msgstr ""
1225
1226 #. type: Plain text
1227 #: guix-git/doc/contributing.texi:865
1228 msgid "For a package containing several font families, the name of the collection is used in the place of the font family name. For instance, the Liberation fonts consist of three families, Liberation Sans, Liberation Serif and Liberation Mono. These could be packaged separately under the names @code{font-liberation-sans} and so on; but as they are distributed together under a common name, we prefer to package them together as @code{font-liberation}."
1229 msgstr ""
1230
1231 #. type: Plain text
1232 #: guix-git/doc/contributing.texi:871
1233 msgid "In the case where several formats of the same font family or font collection are packaged separately, a short form of the format, prepended by a dash, is added to the package name. We use @code{-ttf} for TrueType fonts, @code{-otf} for OpenType fonts and @code{-type1} for PostScript Type 1 fonts."
1234 msgstr ""
1235
1236 #. type: Plain text
1237 #: guix-git/doc/contributing.texi:879
1238 msgid "In general our code follows the GNU Coding Standards (@pxref{Top,,, standards, GNU Coding Standards}). However, they do not say much about Scheme, so here are some additional rules."
1239 msgstr ""
1240
1241 #. type: subsection
1242 #: guix-git/doc/contributing.texi:885 guix-git/doc/contributing.texi:887
1243 #: guix-git/doc/contributing.texi:888
1244 #, no-wrap
1245 msgid "Programming Paradigm"
1246 msgstr ""
1247
1248 #. type: menuentry
1249 #: guix-git/doc/contributing.texi:885
1250 msgid "How to compose your elements."
1251 msgstr ""
1252
1253 #. type: subsection
1254 #: guix-git/doc/contributing.texi:885 guix-git/doc/contributing.texi:894
1255 #: guix-git/doc/contributing.texi:895
1256 #, no-wrap
1257 msgid "Modules"
1258 msgstr ""
1259
1260 #. type: menuentry
1261 #: guix-git/doc/contributing.texi:885
1262 msgid "Where to store your code?"
1263 msgstr ""
1264
1265 #. type: subsection
1266 #: guix-git/doc/contributing.texi:885 guix-git/doc/contributing.texi:905
1267 #: guix-git/doc/contributing.texi:906
1268 #, no-wrap
1269 msgid "Data Types and Pattern Matching"
1270 msgstr ""
1271
1272 #. type: menuentry
1273 #: guix-git/doc/contributing.texi:885
1274 msgid "Implementing data structures."
1275 msgstr ""
1276
1277 #. type: subsection
1278 #: guix-git/doc/contributing.texi:885 guix-git/doc/contributing.texi:920
1279 #: guix-git/doc/contributing.texi:921
1280 #, no-wrap
1281 msgid "Formatting Code"
1282 msgstr ""
1283
1284 #. type: menuentry
1285 #: guix-git/doc/contributing.texi:885
1286 msgid "Writing conventions."
1287 msgstr ""
1288
1289 #. type: Plain text
1290 #: guix-git/doc/contributing.texi:893
1291 msgid "Scheme code in Guix is written in a purely functional style. One exception is code that involves input/output, and procedures that implement low-level concepts, such as the @code{memoize} procedure."
1292 msgstr ""
1293
1294 #. type: Plain text
1295 #: guix-git/doc/contributing.texi:901
1296 msgid "Guile modules that are meant to be used on the builder side must live in the @code{(guix build @dots{})} name space. They must not refer to other Guix or GNU modules. However, it is OK for a ``host-side'' module to use a build-side module."
1297 msgstr ""
1298
1299 #. type: Plain text
1300 #: guix-git/doc/contributing.texi:904
1301 msgid "Modules that deal with the broader GNU system should be in the @code{(gnu @dots{})} name space rather than @code{(guix @dots{})}."
1302 msgstr ""
1303
1304 #. type: Plain text
1305 #: guix-git/doc/contributing.texi:913
1306 msgid "The tendency in classical Lisp is to use lists to represent everything, and then to browse them ``by hand'' using @code{car}, @code{cdr}, @code{cadr}, and co. There are several problems with that style, notably the fact that it is hard to read, error-prone, and a hindrance to proper type error reports."
1307 msgstr ""
1308
1309 #. type: Plain text
1310 #: guix-git/doc/contributing.texi:919
1311 msgid "Guix code should define appropriate data types (for instance, using @code{define-record-type*}) rather than abuse lists. In addition, it should use pattern matching, via Guile’s @code{(ice-9 match)} module, especially when matching lists (@pxref{Pattern Matching,,, guile, GNU Guile Reference Manual})."
1312 msgstr ""
1313
1314 #. type: cindex
1315 #: guix-git/doc/contributing.texi:923
1316 #, no-wrap
1317 msgid "formatting code"
1318 msgstr ""
1319
1320 #. type: cindex
1321 #: guix-git/doc/contributing.texi:924
1322 #, no-wrap
1323 msgid "coding style"
1324 msgstr ""
1325
1326 #. type: Plain text
1327 #: guix-git/doc/contributing.texi:931
1328 msgid "When writing Scheme code, we follow common wisdom among Scheme programmers. In general, we follow the @url{https://mumble.net/~campbell/scheme/style.txt, Riastradh's Lisp Style Rules}. This document happens to describe the conventions mostly used in Guile’s code too. It is very thoughtful and well written, so please do read it."
1329 msgstr ""
1330
1331 #. type: Plain text
1332 #: guix-git/doc/contributing.texi:938
1333 msgid "Some special forms introduced in Guix, such as the @code{substitute*} macro, have special indentation rules. These are defined in the @file{.dir-locals.el} file, which Emacs automatically uses. Also note that Emacs-Guix provides @code{guix-devel-mode} mode that indents and highlights Guix code properly (@pxref{Development,,, emacs-guix, The Emacs-Guix Reference Manual})."
1334 msgstr ""
1335
1336 #. type: cindex
1337 #: guix-git/doc/contributing.texi:939
1338 #, no-wrap
1339 msgid "indentation, of code"
1340 msgstr ""
1341
1342 #. type: cindex
1343 #: guix-git/doc/contributing.texi:940
1344 #, no-wrap
1345 msgid "formatting, of code"
1346 msgstr ""
1347
1348 #. type: Plain text
1349 #: guix-git/doc/contributing.texi:943
1350 msgid "If you do not use Emacs, please make sure to let your editor knows these rules. To automatically indent a package definition, you can also run:"
1351 msgstr ""
1352
1353 #. type: example
1354 #: guix-git/doc/contributing.texi:946
1355 #, no-wrap
1356 msgid "./etc/indent-code.el gnu/packages/@var{file}.scm @var{package}\n"
1357 msgstr ""
1358
1359 #. type: Plain text
1360 #: guix-git/doc/contributing.texi:952
1361 msgid "This automatically indents the definition of @var{package} in @file{gnu/packages/@var{file}.scm} by running Emacs in batch mode. To indent a whole file, omit the second argument:"
1362 msgstr ""
1363
1364 #. type: example
1365 #: guix-git/doc/contributing.texi:955
1366 #, no-wrap
1367 msgid "./etc/indent-code.el gnu/services/@var{file}.scm\n"
1368 msgstr ""
1369
1370 #. type: cindex
1371 #: guix-git/doc/contributing.texi:957
1372 #, no-wrap
1373 msgid "Vim, Scheme code editing"
1374 msgstr ""
1375
1376 #. type: Plain text
1377 #: guix-git/doc/contributing.texi:963
1378 msgid "If you are editing code with Vim, we recommend that you run @code{:set autoindent} so that your code is automatically indented as you type. Additionally, @uref{https://www.vim.org/scripts/script.php?script_id=3998, @code{paredit.vim}} may help you deal with all these parentheses."
1379 msgstr ""
1380
1381 #. type: Plain text
1382 #: guix-git/doc/contributing.texi:967
1383 msgid "We require all top-level procedures to carry a docstring. This requirement can be relaxed for simple private procedures in the @code{(guix build @dots{})} name space, though."
1384 msgstr ""
1385
1386 #. type: Plain text
1387 #: guix-git/doc/contributing.texi:970
1388 msgid "Procedures should not have more than four positional parameters. Use keyword parameters for procedures that take more than four parameters."
1389 msgstr ""
1390
1391 #. type: Plain text
1392 #: guix-git/doc/contributing.texi:981
1393 msgid "Development is done using the Git distributed version control system. Thus, access to the repository is not strictly necessary. We welcome contributions in the form of patches as produced by @code{git format-patch} sent to the @email{guix-patches@@gnu.org} mailing list. Seasoned Guix developers may also want to look at the section on commit access (@pxref{Commit Access})."
1394 msgstr ""
1395
1396 #. type: Plain text
1397 #: guix-git/doc/contributing.texi:988
1398 msgid "This mailing list is backed by a Debbugs instance, which allows us to keep track of submissions (@pxref{Tracking Bugs and Patches}). Each message sent to that mailing list gets a new tracking number assigned; people can then follow up on the submission by sending email to @code{@var{NNN}@@debbugs.gnu.org}, where @var{NNN} is the tracking number (@pxref{Sending a Patch Series})."
1399 msgstr ""
1400
1401 #. type: Plain text
1402 #: guix-git/doc/contributing.texi:992
1403 msgid "Please write commit logs in the ChangeLog format (@pxref{Change Logs,,, standards, GNU Coding Standards}); you can check the commit history for examples."
1404 msgstr ""
1405
1406 #. type: Plain text
1407 #: guix-git/doc/contributing.texi:995
1408 msgid "Before submitting a patch that adds or modifies a package definition, please run through this check list:"
1409 msgstr ""
1410
1411 #. type: enumerate
1412 #: guix-git/doc/contributing.texi:1002
1413 msgid "If the authors of the packaged software provide a cryptographic signature for the release tarball, make an effort to verify the authenticity of the archive. For a detached GPG signature file this would be done with the @code{gpg --verify} command."
1414 msgstr ""
1415
1416 #. type: enumerate
1417 #: guix-git/doc/contributing.texi:1006
1418 msgid "Take some time to provide an adequate synopsis and description for the package. @xref{Synopses and Descriptions}, for some guidelines."
1419 msgstr ""
1420
1421 #. type: enumerate
1422 #: guix-git/doc/contributing.texi:1011
1423 msgid "Run @code{guix lint @var{package}}, where @var{package} is the name of the new or modified package, and fix any errors it reports (@pxref{Invoking guix lint})."
1424 msgstr ""
1425
1426 #. type: enumerate
1427 #: guix-git/doc/contributing.texi:1015
1428 msgid "Make sure the package builds on your platform, using @code{guix build @var{package}}."
1429 msgstr ""
1430
1431 #. type: enumerate
1432 #: guix-git/doc/contributing.texi:1022
1433 msgid "We recommend you also try building the package on other supported platforms. As you may not have access to actual hardware platforms, we recommend using the @code{qemu-binfmt-service-type} to emulate them. In order to enable it, add the following service to the list of services in your @code{operating-system} configuration:"
1434 msgstr ""
1435
1436 #. type: lisp
1437 #: guix-git/doc/contributing.texi:1027
1438 #, no-wrap
1439 msgid ""
1440 "(service qemu-binfmt-service-type\n"
1441 " (qemu-binfmt-configuration\n"
1442 " (platforms (lookup-qemu-platforms \"arm\" \"aarch64\"))\n"
1443 msgstr ""
1444
1445 #. type: enumerate
1446 #: guix-git/doc/contributing.texi:1030
1447 msgid "Then reconfigure your system."
1448 msgstr ""
1449
1450 #. type: enumerate
1451 #: guix-git/doc/contributing.texi:1035
1452 msgid "You can then build packages for different platforms by specifying the @code{--system} option. For example, to build the \"hello\" package for the armhf, aarch64, or mips64 architectures, you would run the following commands, respectively:"
1453 msgstr ""
1454
1455 #. type: example
1456 #: guix-git/doc/contributing.texi:1038
1457 #, no-wrap
1458 msgid ""
1459 "guix build --system=armhf-linux --rounds=2 hello\n"
1460 "guix build --system=aarch64-linux --rounds=2 hello\n"
1461 msgstr ""
1462
1463 #. type: cindex
1464 #: guix-git/doc/contributing.texi:1041
1465 #, no-wrap
1466 msgid "bundling"
1467 msgstr ""
1468
1469 #. type: enumerate
1470 #: guix-git/doc/contributing.texi:1044
1471 msgid "Make sure the package does not use bundled copies of software already available as separate packages."
1472 msgstr ""
1473
1474 #. type: enumerate
1475 #: guix-git/doc/contributing.texi:1053
1476 msgid "Sometimes, packages include copies of the source code of their dependencies as a convenience for users. However, as a distribution, we want to make sure that such packages end up using the copy we already have in the distribution, if there is one. This improves resource usage (the dependency is built and stored only once), and allows the distribution to make transverse changes such as applying security updates for a given software package in a single place and have them affect the whole system---something that bundled copies prevent."
1477 msgstr ""
1478
1479 #. type: enumerate
1480 #: guix-git/doc/contributing.texi:1062
1481 msgid "Take a look at the profile reported by @command{guix size} (@pxref{Invoking guix size}). This will allow you to notice references to other packages unwillingly retained. It may also help determine whether to split the package (@pxref{Packages with Multiple Outputs}), and which optional dependencies should be used. In particular, avoid adding @code{texlive} as a dependency: because of its extreme size, use the @code{texlive-tiny} package or @code{texlive-union} procedure instead."
1482 msgstr ""
1483
1484 #. type: enumerate
1485 #: guix-git/doc/contributing.texi:1067
1486 msgid "For important changes, check that dependent package (if applicable) are not affected by the change; @code{guix refresh --list-dependent @var{package}} will help you do that (@pxref{Invoking guix refresh})."
1487 msgstr ""
1488
1489 #. type: cindex
1490 #: guix-git/doc/contributing.texi:1069
1491 #, no-wrap
1492 msgid "branching strategy"
1493 msgstr ""
1494
1495 #. type: cindex
1496 #: guix-git/doc/contributing.texi:1070
1497 #, no-wrap
1498 msgid "rebuild scheduling strategy"
1499 msgstr ""
1500
1501 #. type: enumerate
1502 #: guix-git/doc/contributing.texi:1073
1503 msgid "Depending on the number of dependent packages and thus the amount of rebuilding induced, commits go to different branches, along these lines:"
1504 msgstr ""
1505
1506 #. type: item
1507 #: guix-git/doc/contributing.texi:1075
1508 #, no-wrap
1509 msgid "300 dependent packages or less"
1510 msgstr ""
1511
1512 #. type: table
1513 #: guix-git/doc/contributing.texi:1077
1514 msgid "@code{master} branch (non-disruptive changes)."
1515 msgstr ""
1516
1517 #. type: item
1518 #: guix-git/doc/contributing.texi:1078
1519 #, no-wrap
1520 msgid "between 300 and 1,800 dependent packages"
1521 msgstr ""
1522
1523 #. type: table
1524 #: guix-git/doc/contributing.texi:1083
1525 msgid "@code{staging} branch (non-disruptive changes). This branch is intended to be merged in @code{master} every 6 weeks or so. Topical changes (e.g., an update of the GNOME stack) can instead go to a specific branch (say, @code{gnome-updates})."
1526 msgstr ""
1527
1528 #. type: item
1529 #: guix-git/doc/contributing.texi:1084
1530 #, no-wrap
1531 msgid "more than 1,800 dependent packages"
1532 msgstr ""
1533
1534 #. type: table
1535 #: guix-git/doc/contributing.texi:1088
1536 msgid "@code{core-updates} branch (may include major and potentially disruptive changes). This branch is intended to be merged in @code{master} every 6 months or so."
1537 msgstr ""
1538
1539 #. type: enumerate
1540 #: guix-git/doc/contributing.texi:1095
1541 msgid "All these branches are @uref{@value{SUBSTITUTE-URL}, tracked by our build farm} and merged into @code{master} once everything has been successfully built. This allows us to fix issues before they hit users, and to reduce the window during which pre-built binaries are not available."
1542 msgstr ""
1543
1544 #. type: enumerate
1545 #: guix-git/doc/contributing.texi:1104
1546 msgid "When we decide to start building the @code{staging} or @code{core-updates} branches, they will be forked and renamed with the suffix @code{-frozen}, at which time only bug fixes may be pushed to the frozen branches. The @code{core-updates} and @code{staging} branches will remain open to accept patches for the next cycle. Please ask on the mailing list or IRC if unsure where to place a patch."
1547 msgstr ""
1548
1549 #. type: cindex
1550 #: guix-git/doc/contributing.texi:1106
1551 #, no-wrap
1552 msgid "determinism, of build processes"
1553 msgstr ""
1554
1555 #. type: cindex
1556 #: guix-git/doc/contributing.texi:1107
1557 #, no-wrap
1558 msgid "reproducible builds, checking"
1559 msgstr ""
1560
1561 #. type: enumerate
1562 #: guix-git/doc/contributing.texi:1111
1563 msgid "Check whether the package's build process is deterministic. This typically means checking whether an independent build of the package yields the exact same result that you obtained, bit for bit."
1564 msgstr ""
1565
1566 #. type: enumerate
1567 #: guix-git/doc/contributing.texi:1114
1568 msgid "A simple way to do that is by building the same package several times in a row on your machine (@pxref{Invoking guix build}):"
1569 msgstr ""
1570
1571 #. type: example
1572 #: guix-git/doc/contributing.texi:1117
1573 #, no-wrap
1574 msgid "guix build --rounds=2 my-package\n"
1575 msgstr ""
1576
1577 #. type: enumerate
1578 #: guix-git/doc/contributing.texi:1121
1579 msgid "This is enough to catch a class of common non-determinism issues, such as timestamps or randomly-generated output in the build result."
1580 msgstr ""
1581
1582 #. type: enumerate
1583 #: guix-git/doc/contributing.texi:1131
1584 msgid "Another option is to use @command{guix challenge} (@pxref{Invoking guix challenge}). You may run it once the package has been committed and built by @code{@value{SUBSTITUTE-SERVER}} to check whether it obtains the same result as you did. Better yet: Find another machine that can build it and run @command{guix publish}. Since the remote build machine is likely different from yours, this can catch non-determinism issues related to the hardware---e.g., use of different instruction set extensions---or to the operating system kernel---e.g., reliance on @code{uname} or @file{/proc} files."
1585 msgstr ""
1586
1587 #. type: enumerate
1588 #: guix-git/doc/contributing.texi:1137
1589 msgid "When writing documentation, please use gender-neutral wording when referring to people, such as @uref{https://en.wikipedia.org/wiki/Singular_they, singular ``they''@comma{} ``their''@comma{} ``them''}, and so forth."
1590 msgstr ""
1591
1592 #. type: enumerate
1593 #: guix-git/doc/contributing.texi:1141
1594 msgid "Verify that your patch contains only one set of related changes. Bundling unrelated changes together makes reviewing harder and slower."
1595 msgstr ""
1596
1597 #. type: enumerate
1598 #: guix-git/doc/contributing.texi:1144
1599 msgid "Examples of unrelated changes include the addition of several packages, or a package update along with fixes to that package."
1600 msgstr ""
1601
1602 #. type: enumerate
1603 #: guix-git/doc/contributing.texi:1149
1604 msgid "Please follow our code formatting rules, possibly running the @command{etc/indent-code.el} script to do that automatically for you (@pxref{Formatting Code})."
1605 msgstr ""
1606
1607 #. type: enumerate
1608 #: guix-git/doc/contributing.texi:1157
1609 msgid "When possible, use mirrors in the source URL (@pxref{Invoking guix download}). Use reliable URLs, not generated ones. For instance, GitHub archives are not necessarily identical from one generation to the next, so in this case it's often better to clone the repository. Don't use the @command{name} field in the URL: it is not very useful and if the name changes, the URL will probably be wrong."
1610 msgstr ""
1611
1612 #. type: enumerate
1613 #: guix-git/doc/contributing.texi:1161
1614 msgid "Check if Guix builds (@pxref{Building from Git}) and address the warnings, especially those about use of undefined symbols."
1615 msgstr ""
1616
1617 #. type: enumerate
1618 #: guix-git/doc/contributing.texi:1164
1619 msgid "Make sure your changes do not break Guix and simulate a @code{guix pull} with:"
1620 msgstr ""
1621
1622 #. type: example
1623 #: guix-git/doc/contributing.texi:1166
1624 #, no-wrap
1625 msgid "guix pull --url=/path/to/your/checkout --profile=/tmp/guix.master\n"
1626 msgstr ""
1627
1628 #. type: Plain text
1629 #: guix-git/doc/contributing.texi:1179
1630 msgid "When posting a patch to the mailing list, use @samp{[PATCH] @dots{}} as a subject, if your patch is to be applied on a branch other than @code{master}, say @code{core-updates}, specify it in the subject like @samp{[PATCH core-updates] @dots{}}. You may use your email client or the @command{git send-email} command (@pxref{Sending a Patch Series}). We prefer to get patches in plain text messages, either inline or as MIME attachments. You are advised to pay attention if your email client changes anything like line breaks or indentation which could potentially break the patches."
1631 msgstr ""
1632
1633 #. type: Plain text
1634 #: guix-git/doc/contributing.texi:1182
1635 msgid "When a bug is resolved, please close the thread by sending an email to @email{@var{NNN}-done@@debbugs.gnu.org}."
1636 msgstr ""
1637
1638 #. type: anchor{#1}
1639 #: guix-git/doc/contributing.texi:1183 guix-git/doc/contributing.texi:1185
1640 #, no-wrap
1641 msgid "Sending a Patch Series"
1642 msgstr ""
1643
1644 #. type: cindex
1645 #: guix-git/doc/contributing.texi:1185
1646 #, no-wrap
1647 msgid "patch series"
1648 msgstr ""
1649
1650 #. type: code{#1}
1651 #: guix-git/doc/contributing.texi:1186
1652 #, no-wrap
1653 msgid "git send-email"
1654 msgstr ""
1655
1656 #. type: code{#1}
1657 #: guix-git/doc/contributing.texi:1187
1658 #, no-wrap
1659 msgid "git-send-email"
1660 msgstr ""
1661
1662 #. type: Plain text
1663 #: guix-git/doc/contributing.texi:1197
1664 msgid "When sending a patch series (e.g., using @code{git send-email}), please first send one message to @email{guix-patches@@gnu.org}, and then send subsequent patches to @email{@var{NNN}@@debbugs.gnu.org} to make sure they are kept together. See @uref{https://debbugs.gnu.org/Advanced.html, the Debbugs documentation} for more information. You can install @command{git send-email} with @command{guix install git:send-email}."
1665 msgstr ""
1666
1667 #. type: cindex
1668 #: guix-git/doc/contributing.texi:1201
1669 #, no-wrap
1670 msgid "bug reports, tracking"
1671 msgstr ""
1672
1673 #. type: cindex
1674 #: guix-git/doc/contributing.texi:1202
1675 #, no-wrap
1676 msgid "patch submissions, tracking"
1677 msgstr ""
1678
1679 #. type: cindex
1680 #: guix-git/doc/contributing.texi:1203
1681 #, no-wrap
1682 msgid "issue tracking"
1683 msgstr ""
1684
1685 #. type: cindex
1686 #: guix-git/doc/contributing.texi:1204
1687 #, no-wrap
1688 msgid "Debbugs, issue tracking system"
1689 msgstr ""
1690
1691 #. type: Plain text
1692 #: guix-git/doc/contributing.texi:1211
1693 msgid "Bug reports and patch submissions are currently tracked using the Debbugs instance at @uref{https://bugs.gnu.org}. Bug reports are filed against the @code{guix} ``package'' (in Debbugs parlance), by sending email to @email{bug-guix@@gnu.org}, while patch submissions are filed against the @code{guix-patches} package by sending email to @email{guix-patches@@gnu.org} (@pxref{Submitting Patches})."
1694 msgstr ""
1695
1696 #. type: Plain text
1697 #: guix-git/doc/contributing.texi:1214
1698 msgid "A web interface (actually @emph{two} web interfaces!) are available to browse issues:"
1699 msgstr ""
1700
1701 #. type: itemize
1702 #: guix-git/doc/contributing.texi:1223
1703 msgid "@url{https://issues.guix.gnu.org} provides a pleasant interface@footnote{The web interface at @url{https://issues.guix.gnu.org} is powered by Mumi, a nice piece of software written in Guile, and you can help! See @url{https://git.elephly.net/gitweb.cgi?p=software/mumi.git}.} to browse bug reports and patches, and to participate in discussions;"
1704 msgstr ""
1705
1706 #. type: itemize
1707 #: guix-git/doc/contributing.texi:1225
1708 msgid "@url{https://bugs.gnu.org/guix} lists bug reports;"
1709 msgstr ""
1710
1711 #. type: itemize
1712 #: guix-git/doc/contributing.texi:1227
1713 msgid "@url{https://bugs.gnu.org/guix-patches} lists patch submissions."
1714 msgstr ""
1715
1716 #. type: Plain text
1717 #: guix-git/doc/contributing.texi:1232
1718 msgid "To view discussions related to issue number @var{n}, go to @indicateurl{https://issues.guix.gnu.org/@var{n}} or @indicateurl{https://bugs.gnu.org/@var{n}}."
1719 msgstr ""
1720
1721 #. type: Plain text
1722 #: guix-git/doc/contributing.texi:1235
1723 msgid "If you use Emacs, you may find it more convenient to interact with issues using @file{debbugs.el}, which you can install with:"
1724 msgstr ""
1725
1726 #. type: example
1727 #: guix-git/doc/contributing.texi:1238
1728 #, no-wrap
1729 msgid "guix install emacs-debbugs\n"
1730 msgstr ""
1731
1732 #. type: Plain text
1733 #: guix-git/doc/contributing.texi:1241
1734 msgid "For example, to list all open issues on @code{guix-patches}, hit:"
1735 msgstr ""
1736
1737 #. type: example
1738 #: guix-git/doc/contributing.texi:1244
1739 #, no-wrap
1740 msgid "@kbd{C-u} @kbd{M-x} debbugs-gnu @kbd{RET} @kbd{RET} guix-patches @kbd{RET} n y\n"
1741 msgstr ""
1742
1743 #. type: Plain text
1744 #: guix-git/doc/contributing.texi:1248
1745 msgid "@xref{Top,,, debbugs-ug, Debbugs User Guide}, for more information on this nifty tool!"
1746 msgstr ""
1747
1748 #. type: cindex
1749 #: guix-git/doc/contributing.texi:1252
1750 #, no-wrap
1751 msgid "commit access, for developers"
1752 msgstr ""
1753
1754 #. type: Plain text
1755 #: guix-git/doc/contributing.texi:1256
1756 msgid "For frequent contributors, having write access to the repository is convenient. When you deem it necessary, consider applying for commit access by following these steps:"
1757 msgstr ""
1758
1759 #. type: enumerate
1760 #: guix-git/doc/contributing.texi:1265
1761 msgid "Find three committers who would vouch for you. You can view the list of committers at @url{https://savannah.gnu.org/project/memberlist.php?group=guix}. Each of them should email a statement to @email{guix-maintainers@@gnu.org} (a private alias for the collective of maintainers), signed with their OpenPGP key."
1762 msgstr ""
1763
1764 #. type: enumerate
1765 #: guix-git/doc/contributing.texi:1271
1766 msgid "Committers are expected to have had some interactions with you as a contributor and to be able to judge whether you are sufficiently familiar with the project's practices. It is @emph{not} a judgment on the value of your work, so a refusal should rather be interpreted as ``let's try again later''."
1767 msgstr ""
1768
1769 #. type: enumerate
1770 #: guix-git/doc/contributing.texi:1278
1771 msgid "Send @email{guix-maintainers@@gnu.org} a message stating your intent, listing the three committers who support your application, signed with the OpenPGP key you will use to sign commits, and giving its fingerprint (see below). See @uref{https://emailselfdefense.fsf.org/en/}, for an introduction to public-key cryptography with GnuPG."
1772 msgstr ""
1773
1774 #. type: enumerate
1775 #: guix-git/doc/contributing.texi:1284
1776 msgid "Set up GnuPG such that it never uses the SHA1 hash algorithm for digital signatures, which is known to be unsafe since 2019, for instance by adding the following line to @file{~/.gnupg/gpg.conf} (@pxref{GPG Esoteric Options,,, gnupg, The GNU Privacy Guard Manual}):"
1777 msgstr ""
1778
1779 #. type: example
1780 #: guix-git/doc/contributing.texi:1287
1781 #, no-wrap
1782 msgid "digest-algo sha512\n"
1783 msgstr ""
1784
1785 #. type: enumerate
1786 #: guix-git/doc/contributing.texi:1292
1787 msgid "Maintainers ultimately decide whether to grant you commit access, usually following your referrals' recommendation."
1788 msgstr ""
1789
1790 #. type: cindex
1791 #: guix-git/doc/contributing.texi:1294
1792 #, no-wrap
1793 msgid "OpenPGP, signed commits"
1794 msgstr ""
1795
1796 #. type: enumerate
1797 #: guix-git/doc/contributing.texi:1299
1798 msgid "If and once you've been given access, please send a message to @email{guix-devel@@gnu.org} to say so, again signed with the OpenPGP key you will use to sign commits (do that before pushing your first commit). That way, everyone can notice and ensure you control that OpenPGP key."
1799 msgstr ""
1800
1801 #. type: quotation
1802 #: guix-git/doc/contributing.texi:1300
1803 #, no-wrap
1804 msgid "Important"
1805 msgstr ""
1806
1807 #. type: quotation
1808 #: guix-git/doc/contributing.texi:1302
1809 msgid "Before you can push for the first time, maintainers must:"
1810 msgstr ""
1811
1812 #. type: enumerate
1813 #: guix-git/doc/contributing.texi:1306
1814 msgid "add your OpenPGP key to the @code{keyring} branch;"
1815 msgstr ""
1816
1817 #. type: enumerate
1818 #: guix-git/doc/contributing.texi:1309
1819 msgid "add your OpenPGP fingerprint to the @file{.guix-authorizations} file of the branch(es) you will commit to."
1820 msgstr ""
1821
1822 #. type: enumerate
1823 #: guix-git/doc/contributing.texi:1314
1824 msgid "Make sure to read the rest of this section and... profit!"
1825 msgstr ""
1826
1827 #. type: quotation
1828 #: guix-git/doc/contributing.texi:1320
1829 msgid "Maintainers are happy to give commit access to people who have been contributing for some time and have a track record---don't be shy and don't underestimate your work!"
1830 msgstr ""
1831
1832 #. type: quotation
1833 #: guix-git/doc/contributing.texi:1324
1834 msgid "However, note that the project is working towards a more automated patch review and merging system, which, as a consequence, may lead us to have fewer people with commit access to the main repository. Stay tuned!"
1835 msgstr ""
1836
1837 #. type: Plain text
1838 #: guix-git/doc/contributing.texi:1329
1839 msgid "If you get commit access, please make sure to follow the policy below (discussions of the policy can take place on @email{guix-devel@@gnu.org})."
1840 msgstr ""
1841
1842 #. type: Plain text
1843 #: guix-git/doc/contributing.texi:1334
1844 msgid "Non-trivial patches should always be posted to @email{guix-patches@@gnu.org} (trivial patches include fixing typos, etc.). This mailing list fills the patch-tracking database (@pxref{Tracking Bugs and Patches})."
1845 msgstr ""
1846
1847 #. type: Plain text
1848 #: guix-git/doc/contributing.texi:1343
1849 msgid "For patches that just add a new package, and a simple one, it's OK to commit, if you're confident (which means you successfully built it in a chroot setup, and have done a reasonable copyright and license auditing). Likewise for package upgrades, except upgrades that trigger a lot of rebuilds (for example, upgrading GnuTLS or GLib). We have a mailing list for commit notifications (@email{guix-commits@@gnu.org}), so people can notice. Before pushing your changes, make sure to run @code{git pull --rebase}."
1850 msgstr ""
1851
1852 #. type: Plain text
1853 #: guix-git/doc/contributing.texi:1349
1854 msgid "All commits that are pushed to the central repository on Savannah must be signed with an OpenPGP key, and the public key should be uploaded to your user account on Savannah and to public key servers, such as @code{keys.openpgp.org}. To configure Git to automatically sign commits, run:"
1855 msgstr ""
1856
1857 #. type: example
1858 #: guix-git/doc/contributing.texi:1353
1859 #, no-wrap
1860 msgid ""
1861 "git config commit.gpgsign true\n"
1862 "git config user.signingkey CABBA6EA1DC0FF33\n"
1863 msgstr ""
1864
1865 #. type: Plain text
1866 #: guix-git/doc/contributing.texi:1358
1867 msgid "You can prevent yourself from accidentally pushing unsigned commits to Savannah by using the pre-push Git hook called located at @file{etc/git/pre-push}:"
1868 msgstr ""
1869
1870 #. type: example
1871 #: guix-git/doc/contributing.texi:1361
1872 #, no-wrap
1873 msgid "cp etc/git/pre-push .git/hooks/pre-push\n"
1874 msgstr ""
1875
1876 #. type: Plain text
1877 #: guix-git/doc/contributing.texi:1367
1878 msgid "When pushing a commit on behalf of somebody else, please add a @code{Signed-off-by} line at the end of the commit log message---e.g., with @command{git am --signoff}. This improves tracking of who did what."
1879 msgstr ""
1880
1881 #. type: Plain text
1882 #: guix-git/doc/contributing.texi:1371
1883 msgid "When adding channel news entries (@pxref{Channels, Writing Channel News}), make sure they are well-formed by running the following command right before pushing:"
1884 msgstr ""
1885
1886 #. type: example
1887 #: guix-git/doc/contributing.texi:1374
1888 #, no-wrap
1889 msgid "make check-channel-news\n"
1890 msgstr ""
1891
1892 #. type: Plain text
1893 #: guix-git/doc/contributing.texi:1380
1894 msgid "For anything else, please post to @email{guix-patches@@gnu.org} and leave time for a review, without committing anything (@pxref{Submitting Patches}). If you didn’t receive any reply after two weeks, and if you're confident, it's OK to commit."
1895 msgstr ""
1896
1897 #. type: Plain text
1898 #: guix-git/doc/contributing.texi:1383
1899 msgid "That last part is subject to being adjusted, allowing individuals to commit directly on non-controversial changes on parts they’re familiar with."
1900 msgstr ""
1901
1902 #. type: Plain text
1903 #: guix-git/doc/contributing.texi:1389
1904 msgid "In order to reduce the possibility of mistakes, committers will have their Savannah account removed from the Guix Savannah project and their key removed from @file{.guix-authorizations} after 12 months of inactivity; they can ask to regain commit access by emailing the maintainers, without going through the vouching process."
1905 msgstr ""
1906
1907 #. type: Plain text
1908 #: guix-git/doc/contributing.texi:1395
1909 msgid "One last thing: the project keeps moving forward because committers not only push their own awesome changes, but also offer some of their time @emph{reviewing} and pushing other people's changes. As a committer, you're welcome to use your expertise and commit rights to help other contributors, too!"
1910 msgstr ""
1911
1912 #. type: cindex
1913 #: guix-git/doc/contributing.texi:1399
1914 #, no-wrap
1915 msgid "update-guix-package, updating the guix package"
1916 msgstr ""
1917
1918 #. type: Plain text
1919 #: guix-git/doc/contributing.texi:1405
1920 msgid "It is sometimes desirable to update the @code{guix} package itself (the package defined in @code{(gnu packages package-management)}), for example to make new daemon features available for use by the @code{guix-service-type} service type. In order to simplify this task, the following command can be used:"
1921 msgstr ""
1922
1923 #. type: example
1924 #: guix-git/doc/contributing.texi:1408
1925 #, no-wrap
1926 msgid "make update-guix-package\n"
1927 msgstr ""
1928
1929 #. type: Plain text
1930 #: guix-git/doc/contributing.texi:1415
1931 msgid "The @code{update-guix-package} make target will use the last known @emph{commit} corresponding to @code{HEAD} in your Guix checkout, compute the hash of the Guix sources corresponding to that commit and update the @code{commit}, @code{revision} and hash of the @code{guix} package definition."
1932 msgstr ""
1933
1934 #. type: Plain text
1935 #: guix-git/doc/contributing.texi:1419
1936 msgid "To validate that the updated @code{guix} package hashes are correct and that it can be built successfully, the following command can be run from the directory of your Guix checkout:"
1937 msgstr ""
1938
1939 #. type: example
1940 #: guix-git/doc/contributing.texi:1422
1941 #, no-wrap
1942 msgid "./pre-inst-env guix build guix\n"
1943 msgstr ""
1944
1945 #. type: Plain text
1946 #: guix-git/doc/contributing.texi:1427
1947 msgid "To guard against accidentally updating the @code{guix} package to a commit that others can't refer to, a check is made that the commit used has already been pushed to the Savannah-hosted Guix git repository."
1948 msgstr ""
1949
1950 #. type: Plain text
1951 #: guix-git/doc/contributing.texi:1431
1952 msgid "This check can be disabled, @emph{at your own peril}, by setting the @code{GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT} environment variable. When this variable is set, the updated package source is also added to the store. This is used as part of the release process of Guix."
1953 msgstr ""
1954
1955 #. type: Plain text
1956 #: guix-git/doc/guix.texi:7
1957 msgid "@documentencoding UTF-8"
1958 msgstr ""
1959
1960 #. type: title
1961 #: guix-git/doc/guix.texi:7 guix-git/doc/guix.texi:118
1962 #, no-wrap
1963 msgid "GNU Guix Reference Manual"
1964 msgstr ""
1965
1966 #. type: include
1967 #: guix-git/doc/guix.texi:10
1968 #, no-wrap
1969 msgid "version.texi"
1970 msgstr "version-sk.texi"
1971
1972 #. type: copying
1973 #: guix-git/doc/guix.texi:91
1974 msgid "Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès@* Copyright @copyright{} 2013, 2014, 2016 Andreas Enge@* Copyright @copyright{} 2013 Nikita Karetnikov@* Copyright @copyright{} 2014, 2015, 2016 Alex Kost@* Copyright @copyright{} 2015, 2016 Mathieu Lirzin@* Copyright @copyright{} 2014 Pierre-Antoine Rault@* Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer@* Copyright @copyright{} 2015, 2016, 2017, 2019, 2020, 2021 Leo Famulari@* Copyright @copyright{} 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus@* Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{} 2016, 2017, 2018, 2021 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright @copyright{} 2016, 2017 Nikita Gillmann@* Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Jan Nieuwenhuizen@* Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Julien Lepiller@* Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Christopher Baines@* Copyright @copyright{} 2017, 2018, 2019 Clément Lassieur@* Copyright @copyright{} 2017, 2018, 2020, 2021 Mathieu Othacehe@* Copyright @copyright{} 2017 Federico Beffa@* Copyright @copyright{} 2017, 2018 Carlo Zancanaro@* Copyright @copyright{} 2017 Thomas Danckaert@* Copyright @copyright{} 2017 humanitiesNerd@* Copyright @copyright{} 2017, 2021 Christopher Lemmer Webber@* Copyright @copyright{} 2017, 2018, 2019, 2020 Marius Bakke@* Copyright @copyright{} 2017, 2019, 2020 Hartmut Goebel@* Copyright @copyright{} 2017, 2019, 2020, 2021 Maxim Cournoyer@* Copyright @copyright{} 2017, 2018, 2019, 2020, 2021 Tobias Geerinckx-Rice@* Copyright @copyright{} 2017 George Clemmer@* Copyright @copyright{} 2017 Andy Wingo@* Copyright @copyright{} 2017, 2018, 2019, 2020 Arun Isaac@* Copyright @copyright{} 2017 nee@* Copyright @copyright{} 2018 Rutger Helling@* Copyright @copyright{} 2018, 2021 Oleg Pykhalov@* Copyright @copyright{} 2018 Mike Gerwitz@* Copyright @copyright{} 2018 Pierre-Antoine Rouby@* Copyright @copyright{} 2018, 2019 Gábor Boskovits@* Copyright @copyright{} 2018, 2019, 2020 Florian Pelz@* Copyright @copyright{} 2018 Laura Lazzati@* Copyright @copyright{} 2018 Alex Vong@* Copyright @copyright{} 2019 Josh Holland@* Copyright @copyright{} 2019, 2020 Diego Nicola Barbato@* Copyright @copyright{} 2019 Ivan Petkov@* Copyright @copyright{} 2019 Jakob L. Kreuze@* Copyright @copyright{} 2019 Kyle Andrews@* Copyright @copyright{} 2019 Alex Griffin@* Copyright @copyright{} 2019, 2020 Guillaume Le Vaillant@* Copyright @copyright{} 2020 Leo Prikler@* Copyright @copyright{} 2019, 2020 Simon Tournier@* Copyright @copyright{} 2020 Wiktor Żelazny@* Copyright @copyright{} 2020 Damien Cassou@* Copyright @copyright{} 2020 Jakub Kądziołka@* Copyright @copyright{} 2020 Jack Hill@* Copyright @copyright{} 2020 Naga Malleswari@* Copyright @copyright{} 2020 Brice Waegeneire@* Copyright @copyright{} 2020 R Veera Kumar@* Copyright @copyright{} 2020 Pierre Langlois@* Copyright @copyright{} 2020 pinoaffe@* Copyright @copyright{} 2020 André Batista@* Copyright @copyright{} 2020, 2021 Alexandru-Sergiu Marton@* Copyright @copyright{} 2020 raingloom@* Copyright @copyright{} 2020 Daniel Brooks@* Copyright @copyright{} 2020 John Soo@* Copyright @copyright{} 2020 Jonathan Brielmaier@* Copyright @copyright{} 2020 Edgar Vincent@* Copyright @copyright{} 2021 Maxime Devos@*"
1975 msgstr ""
1976
1977 #. type: copying
1978 #: guix-git/doc/guix.texi:98
1979 msgid "Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''."
1980 msgstr ""
1981
1982 #. type: dircategory
1983 #: guix-git/doc/guix.texi:100
1984 #, no-wrap
1985 msgid "System administration"
1986 msgstr ""
1987
1988 #. type: menuentry
1989 #: guix-git/doc/guix.texi:108
1990 msgid "Guix: (guix)"
1991 msgstr ""
1992
1993 #. type: menuentry
1994 #: guix-git/doc/guix.texi:108
1995 msgid "Manage installed software and system configuration."
1996 msgstr ""
1997
1998 #. type: menuentry
1999 #: guix-git/doc/guix.texi:108
2000 msgid "guix package: (guix)Invoking guix package"
2001 msgstr ""
2002
2003 #. type: menuentry
2004 #: guix-git/doc/guix.texi:108
2005 msgid "Installing, removing, and upgrading packages."
2006 msgstr ""
2007
2008 #. type: menuentry
2009 #: guix-git/doc/guix.texi:108
2010 msgid "guix gc: (guix)Invoking guix gc"
2011 msgstr ""
2012
2013 #. type: menuentry
2014 #: guix-git/doc/guix.texi:108
2015 msgid "Reclaiming unused disk space."
2016 msgstr ""
2017
2018 #. type: menuentry
2019 #: guix-git/doc/guix.texi:108
2020 msgid "guix pull: (guix)Invoking guix pull"
2021 msgstr ""
2022
2023 #. type: menuentry
2024 #: guix-git/doc/guix.texi:108
2025 msgid "Update the list of available packages."
2026 msgstr ""
2027
2028 #. type: menuentry
2029 #: guix-git/doc/guix.texi:108
2030 msgid "guix system: (guix)Invoking guix system"
2031 msgstr ""
2032
2033 #. type: menuentry
2034 #: guix-git/doc/guix.texi:108
2035 msgid "Manage the operating system configuration."
2036 msgstr ""
2037
2038 #. type: menuentry
2039 #: guix-git/doc/guix.texi:108
2040 msgid "guix deploy: (guix)Invoking guix deploy"
2041 msgstr ""
2042
2043 #. type: menuentry
2044 #: guix-git/doc/guix.texi:108
2045 msgid "Manage operating system configurations for remote hosts."
2046 msgstr ""
2047
2048 #. type: dircategory
2049 #: guix-git/doc/guix.texi:110
2050 #, no-wrap
2051 msgid "Software development"
2052 msgstr ""
2053
2054 #. type: menuentry
2055 #: guix-git/doc/guix.texi:115
2056 msgid "guix environment: (guix)Invoking guix environment"
2057 msgstr ""
2058
2059 #. type: menuentry
2060 #: guix-git/doc/guix.texi:115
2061 msgid "Building development environments with Guix."
2062 msgstr ""
2063
2064 #. type: menuentry
2065 #: guix-git/doc/guix.texi:115
2066 msgid "guix build: (guix)Invoking guix build"
2067 msgstr ""
2068
2069 #. type: menuentry
2070 #: guix-git/doc/guix.texi:115
2071 msgid "Building packages."
2072 msgstr ""
2073
2074 #. type: menuentry
2075 #: guix-git/doc/guix.texi:115
2076 msgid "guix pack: (guix)Invoking guix pack"
2077 msgstr ""
2078
2079 #. type: menuentry
2080 #: guix-git/doc/guix.texi:115
2081 msgid "Creating binary bundles."
2082 msgstr ""
2083
2084 #. type: subtitle
2085 #: guix-git/doc/guix.texi:119
2086 #, no-wrap
2087 msgid "Using the GNU Guix Functional Package Manager"
2088 msgstr ""
2089
2090 #. type: author
2091 #: guix-git/doc/guix.texi:120
2092 #, no-wrap
2093 msgid "The GNU Guix Developers"
2094 msgstr ""
2095
2096 #. type: titlepage
2097 #: guix-git/doc/guix.texi:126
2098 msgid "Edition @value{EDITION} @* @value{UPDATED} @*"
2099 msgstr ""
2100
2101 #. type: node
2102 #: guix-git/doc/guix.texi:133
2103 #, no-wrap
2104 msgid "Top"
2105 msgstr ""
2106
2107 #. type: top
2108 #: guix-git/doc/guix.texi:134
2109 #, no-wrap
2110 msgid "GNU Guix"
2111 msgstr ""
2112
2113 #. type: Plain text
2114 #: guix-git/doc/guix.texi:138
2115 msgid "This document describes GNU Guix version @value{VERSION}, a functional package management tool written for the GNU system."
2116 msgstr ""
2117
2118 #. You can replace the following paragraph with information on
2119 #. type: Plain text
2120 #: guix-git/doc/guix.texi:150
2121 msgid "This manual is also available in Simplified Chinese (@pxref{Top,,, guix.zh_CN, GNU Guix参考手册}), French (@pxref{Top,,, guix.fr, Manuel de référence de GNU Guix}), German (@pxref{Top,,, guix.de, Referenzhandbuch zu GNU Guix}), Spanish (@pxref{Top,,, guix.es, Manual de referencia de GNU Guix}), and Russian (@pxref{Top,,, guix.ru, Руководство GNU Guix}). If you would like to translate it in your native language, consider joining @uref{https://translate.fedoraproject.org/projects/guix/documentation-manual, Weblate}."
2122 msgstr ""
2123
2124 #. type: chapter
2125 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:178
2126 #: guix-git/doc/guix.texi:379 guix-git/doc/guix.texi:380
2127 #, no-wrap
2128 msgid "Introduction"
2129 msgstr ""
2130
2131 #. type: menuentry
2132 #: guix-git/doc/guix.texi:168
2133 msgid "What is Guix about?"
2134 msgstr ""
2135
2136 #. type: chapter
2137 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:183
2138 #: guix-git/doc/guix.texi:560 guix-git/doc/guix.texi:561
2139 #, no-wrap
2140 msgid "Installation"
2141 msgstr ""
2142
2143 #. type: menuentry
2144 #: guix-git/doc/guix.texi:168
2145 msgid "Installing Guix."
2146 msgstr ""
2147
2148 #. type: chapter
2149 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:199
2150 #: guix-git/doc/guix.texi:1999 guix-git/doc/guix.texi:2000
2151 #, no-wrap
2152 msgid "System Installation"
2153 msgstr ""
2154
2155 #. type: menuentry
2156 #: guix-git/doc/guix.texi:168
2157 msgid "Installing the whole operating system."
2158 msgstr ""
2159
2160 #. type: chapter
2161 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:2740
2162 #: guix-git/doc/guix.texi:2741
2163 #, no-wrap
2164 msgid "Getting Started"
2165 msgstr ""
2166
2167 #. type: menuentry
2168 #: guix-git/doc/guix.texi:168
2169 msgid "Your first steps."
2170 msgstr ""
2171
2172 #. type: chapter
2173 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:216
2174 #: guix-git/doc/guix.texi:2948 guix-git/doc/guix.texi:2949
2175 #, no-wrap
2176 msgid "Package Management"
2177 msgstr ""
2178
2179 #. type: menuentry
2180 #: guix-git/doc/guix.texi:168
2181 msgid "Package installation, upgrade, etc."
2182 msgstr ""
2183
2184 #. type: chapter
2185 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:239
2186 #: guix-git/doc/guix.texi:4998 guix-git/doc/guix.texi:4999
2187 #, no-wrap
2188 msgid "Channels"
2189 msgstr ""
2190
2191 #. type: menuentry
2192 #: guix-git/doc/guix.texi:168
2193 msgid "Customizing the package collection."
2194 msgstr ""
2195
2196 #. type: chapter
2197 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:253
2198 #: guix-git/doc/guix.texi:5526 guix-git/doc/guix.texi:5527
2199 #, no-wrap
2200 msgid "Development"
2201 msgstr ""
2202
2203 #. type: menuentry
2204 #: guix-git/doc/guix.texi:168
2205 msgid "Guix-aided software development."
2206 msgstr ""
2207
2208 #. type: chapter
2209 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:260
2210 #: guix-git/doc/guix.texi:6352 guix-git/doc/guix.texi:6353
2211 #, no-wrap
2212 msgid "Programming Interface"
2213 msgstr ""
2214
2215 #. type: menuentry
2216 #: guix-git/doc/guix.texi:168
2217 msgid "Using Guix in Scheme."
2218 msgstr ""
2219
2220 #. type: chapter
2221 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:279
2222 #: guix-git/doc/guix.texi:10148 guix-git/doc/guix.texi:10149
2223 #, no-wrap
2224 msgid "Utilities"
2225 msgstr ""
2226
2227 #. type: menuentry
2228 #: guix-git/doc/guix.texi:168
2229 msgid "Package management commands."
2230 msgstr ""
2231
2232 #. type: chapter
2233 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:304
2234 #: guix-git/doc/guix.texi:13358 guix-git/doc/guix.texi:13359
2235 #, no-wrap
2236 msgid "System Configuration"
2237 msgstr ""
2238
2239 #. type: menuentry
2240 #: guix-git/doc/guix.texi:168
2241 msgid "Configuring the operating system."
2242 msgstr ""
2243
2244 #. type: chapter
2245 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:34389
2246 #: guix-git/doc/guix.texi:34390
2247 #, no-wrap
2248 msgid "Documentation"
2249 msgstr ""
2250
2251 #. type: menuentry
2252 #: guix-git/doc/guix.texi:168
2253 msgid "Browsing software user manuals."
2254 msgstr ""
2255
2256 #. type: chapter
2257 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:366
2258 #: guix-git/doc/guix.texi:34453 guix-git/doc/guix.texi:34454
2259 #, no-wrap
2260 msgid "Installing Debugging Files"
2261 msgstr ""
2262
2263 #. type: menuentry
2264 #: guix-git/doc/guix.texi:168
2265 msgid "Feeding the debugger."
2266 msgstr ""
2267
2268 #. type: chapter
2269 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:34594
2270 #: guix-git/doc/guix.texi:34595
2271 #, no-wrap
2272 msgid "Security Updates"
2273 msgstr ""
2274
2275 #. type: menuentry
2276 #: guix-git/doc/guix.texi:168
2277 msgid "Deploying security fixes quickly."
2278 msgstr ""
2279
2280 #. type: chapter
2281 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:371
2282 #: guix-git/doc/guix.texi:34709 guix-git/doc/guix.texi:34710
2283 #, no-wrap
2284 msgid "Bootstrapping"
2285 msgstr ""
2286
2287 #. type: menuentry
2288 #: guix-git/doc/guix.texi:168
2289 msgid "GNU/Linux built from scratch."
2290 msgstr ""
2291
2292 #. type: node
2293 #: guix-git/doc/guix.texi:168 guix-git/doc/guix.texi:35001
2294 #, no-wrap
2295 msgid "Porting"
2296 msgstr ""
2297
2298 #. type: menuentry
2299 #: guix-git/doc/guix.texi:168
2300 msgid "Targeting another platform or kernel."
2301 msgstr ""
2302
2303 #. type: menuentry
2304 #: guix-git/doc/guix.texi:168
2305 msgid "Your help needed!"
2306 msgstr ""
2307
2308 #. type: chapter
2309 #: guix-git/doc/guix.texi:173 guix-git/doc/guix.texi:35049
2310 #: guix-git/doc/guix.texi:35050
2311 #, no-wrap
2312 msgid "Acknowledgments"
2313 msgstr ""
2314
2315 #. type: menuentry
2316 #: guix-git/doc/guix.texi:173
2317 msgid "Thanks!"
2318 msgstr ""
2319
2320 #. type: appendix
2321 #: guix-git/doc/guix.texi:173 guix-git/doc/guix.texi:35071
2322 #: guix-git/doc/guix.texi:35072
2323 #, no-wrap
2324 msgid "GNU Free Documentation License"
2325 msgstr ""
2326
2327 #. type: menuentry
2328 #: guix-git/doc/guix.texi:173
2329 msgid "The license of this manual."
2330 msgstr ""
2331
2332 #. type: unnumbered
2333 #: guix-git/doc/guix.texi:173 guix-git/doc/guix.texi:35077
2334 #: guix-git/doc/guix.texi:35078
2335 #, no-wrap
2336 msgid "Concept Index"
2337 msgstr ""
2338
2339 #. type: menuentry
2340 #: guix-git/doc/guix.texi:173
2341 msgid "Concepts."
2342 msgstr ""
2343
2344 #. type: unnumbered
2345 #: guix-git/doc/guix.texi:173 guix-git/doc/guix.texi:35081
2346 #: guix-git/doc/guix.texi:35082
2347 #, no-wrap
2348 msgid "Programming Index"
2349 msgstr ""
2350
2351 #. type: menuentry
2352 #: guix-git/doc/guix.texi:173
2353 msgid "Data types, functions, and variables."
2354 msgstr ""
2355
2356 #. type: menuentry
2357 #: guix-git/doc/guix.texi:176
2358 msgid "--- The Detailed Node Listing ---"
2359 msgstr ""
2360
2361 #. type: section
2362 #: guix-git/doc/guix.texi:181 guix-git/doc/guix.texi:406
2363 #: guix-git/doc/guix.texi:408 guix-git/doc/guix.texi:409
2364 #, no-wrap
2365 msgid "Managing Software the Guix Way"
2366 msgstr ""
2367
2368 #. type: menuentry
2369 #: guix-git/doc/guix.texi:181 guix-git/doc/guix.texi:406
2370 msgid "What's special."
2371 msgstr ""
2372
2373 #. type: section
2374 #: guix-git/doc/guix.texi:181 guix-git/doc/guix.texi:406
2375 #: guix-git/doc/guix.texi:463 guix-git/doc/guix.texi:464
2376 #, no-wrap
2377 msgid "GNU Distribution"
2378 msgstr ""
2379
2380 #. type: menuentry
2381 #: guix-git/doc/guix.texi:181 guix-git/doc/guix.texi:406
2382 msgid "The packages and tools."
2383 msgstr ""
2384
2385 #. type: section
2386 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:600
2387 #: guix-git/doc/guix.texi:602 guix-git/doc/guix.texi:603
2388 #, no-wrap
2389 msgid "Binary Installation"
2390 msgstr ""
2391
2392 #. type: menuentry
2393 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:600
2394 msgid "Getting Guix running in no time!"
2395 msgstr ""
2396
2397 #. type: section
2398 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:600
2399 #: guix-git/doc/guix.texi:820 guix-git/doc/guix.texi:821
2400 #, no-wrap
2401 msgid "Requirements"
2402 msgstr ""
2403
2404 #. type: menuentry
2405 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:600
2406 msgid "Software needed to build and run Guix."
2407 msgstr ""
2408
2409 #. type: section
2410 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:600
2411 #: guix-git/doc/guix.texi:908 guix-git/doc/guix.texi:909
2412 #, no-wrap
2413 msgid "Running the Test Suite"
2414 msgstr ""
2415
2416 #. type: menuentry
2417 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:600
2418 msgid "Testing Guix."
2419 msgstr ""
2420
2421 #. type: section
2422 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:193
2423 #: guix-git/doc/guix.texi:600 guix-git/doc/guix.texi:1005
2424 #: guix-git/doc/guix.texi:1006
2425 #, no-wrap
2426 msgid "Setting Up the Daemon"
2427 msgstr ""
2428
2429 #. type: menuentry
2430 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:600
2431 msgid "Preparing the build daemon's environment."
2432 msgstr ""
2433
2434 #. type: node
2435 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:600
2436 #: guix-git/doc/guix.texi:1475
2437 #, no-wrap
2438 msgid "Invoking guix-daemon"
2439 msgstr ""
2440
2441 #. type: menuentry
2442 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:600
2443 msgid "Running the build daemon."
2444 msgstr ""
2445
2446 #. type: section
2447 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:600
2448 #: guix-git/doc/guix.texi:1777 guix-git/doc/guix.texi:1778
2449 #, no-wrap
2450 msgid "Application Setup"
2451 msgstr ""
2452
2453 #. type: menuentry
2454 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:600
2455 msgid "Application-specific setup."
2456 msgstr ""
2457
2458 #. type: section
2459 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:600
2460 #: guix-git/doc/guix.texi:1962 guix-git/doc/guix.texi:1963
2461 #, no-wrap
2462 msgid "Upgrading Guix"
2463 msgstr ""
2464
2465 #. type: menuentry
2466 #: guix-git/doc/guix.texi:191 guix-git/doc/guix.texi:600
2467 msgid "Upgrading Guix and its build daemon."
2468 msgstr ""
2469
2470 #. type: subsection
2471 #: guix-git/doc/guix.texi:197 guix-git/doc/guix.texi:1025
2472 #: guix-git/doc/guix.texi:1027 guix-git/doc/guix.texi:1028
2473 #, no-wrap
2474 msgid "Build Environment Setup"
2475 msgstr ""
2476
2477 #. type: menuentry
2478 #: guix-git/doc/guix.texi:197 guix-git/doc/guix.texi:1025
2479 msgid "Preparing the isolated build environment."
2480 msgstr ""
2481
2482 #. type: node
2483 #: guix-git/doc/guix.texi:197 guix-git/doc/guix.texi:1025
2484 #: guix-git/doc/guix.texi:1146
2485 #, no-wrap
2486 msgid "Daemon Offload Setup"
2487 msgstr ""
2488
2489 #. type: menuentry
2490 #: guix-git/doc/guix.texi:197 guix-git/doc/guix.texi:1025
2491 msgid "Offloading builds to remote machines."
2492 msgstr ""
2493
2494 #. type: subsection
2495 #: guix-git/doc/guix.texi:197 guix-git/doc/guix.texi:1025
2496 #: guix-git/doc/guix.texi:1384 guix-git/doc/guix.texi:1385
2497 #, no-wrap
2498 msgid "SELinux Support"
2499 msgstr ""
2500
2501 #. type: menuentry
2502 #: guix-git/doc/guix.texi:197 guix-git/doc/guix.texi:1025
2503 msgid "Using an SELinux policy for the daemon."
2504 msgstr ""
2505
2506 #. type: section
2507 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:1420
2508 #: guix-git/doc/guix.texi:2033 guix-git/doc/guix.texi:2035
2509 #: guix-git/doc/guix.texi:2036
2510 #, no-wrap
2511 msgid "Limitations"
2512 msgstr ""
2513
2514 #. type: menuentry
2515 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2516 msgid "What you can expect."
2517 msgstr ""
2518
2519 #. type: section
2520 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2521 #: guix-git/doc/guix.texi:2061 guix-git/doc/guix.texi:2062
2522 #, no-wrap
2523 msgid "Hardware Considerations"
2524 msgstr ""
2525
2526 #. type: menuentry
2527 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2528 msgid "Supported hardware."
2529 msgstr ""
2530
2531 #. type: section
2532 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2533 #: guix-git/doc/guix.texi:2096 guix-git/doc/guix.texi:2097
2534 #, no-wrap
2535 msgid "USB Stick and DVD Installation"
2536 msgstr ""
2537
2538 #. type: menuentry
2539 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2540 msgid "Preparing the installation medium."
2541 msgstr ""
2542
2543 #. type: section
2544 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2545 #: guix-git/doc/guix.texi:2201 guix-git/doc/guix.texi:2202
2546 #, no-wrap
2547 msgid "Preparing for Installation"
2548 msgstr ""
2549
2550 #. type: menuentry
2551 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2552 msgid "Networking, partitioning, etc."
2553 msgstr ""
2554
2555 #. type: section
2556 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2557 #: guix-git/doc/guix.texi:2224 guix-git/doc/guix.texi:2225
2558 #, no-wrap
2559 msgid "Guided Graphical Installation"
2560 msgstr ""
2561
2562 #. type: menuentry
2563 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2564 msgid "Easy graphical installation."
2565 msgstr ""
2566
2567 #. type: section
2568 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:211
2569 #: guix-git/doc/guix.texi:2033 guix-git/doc/guix.texi:2255
2570 #: guix-git/doc/guix.texi:2256
2571 #, no-wrap
2572 msgid "Manual Installation"
2573 msgstr ""
2574
2575 #. type: menuentry
2576 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2577 msgid "Manual installation for wizards."
2578 msgstr ""
2579
2580 #. type: section
2581 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2582 #: guix-git/doc/guix.texi:2623 guix-git/doc/guix.texi:2624
2583 #, no-wrap
2584 msgid "After System Installation"
2585 msgstr ""
2586
2587 #. type: menuentry
2588 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2589 msgid "When installation succeeded."
2590 msgstr ""
2591
2592 #. type: node
2593 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2594 #: guix-git/doc/guix.texi:2657
2595 #, no-wrap
2596 msgid "Installing Guix in a VM"
2597 msgstr ""
2598
2599 #. type: menuentry
2600 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2601 msgid "Guix System playground."
2602 msgstr ""
2603
2604 #. type: section
2605 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2606 #: guix-git/doc/guix.texi:2708 guix-git/doc/guix.texi:2709
2607 #, no-wrap
2608 msgid "Building the Installation Image"
2609 msgstr ""
2610
2611 #. type: menuentry
2612 #: guix-git/doc/guix.texi:209 guix-git/doc/guix.texi:2033
2613 msgid "How this comes to be."
2614 msgstr ""
2615
2616 #. type: node
2617 #: guix-git/doc/guix.texi:214 guix-git/doc/guix.texi:2273
2618 #: guix-git/doc/guix.texi:2275
2619 #, no-wrap
2620 msgid "Keyboard Layout and Networking and Partitioning"
2621 msgstr ""
2622
2623 #. type: menuentry
2624 #: guix-git/doc/guix.texi:214 guix-git/doc/guix.texi:2273
2625 msgid "Initial setup."
2626 msgstr ""
2627
2628 #. type: subsection
2629 #: guix-git/doc/guix.texi:214 guix-git/doc/guix.texi:2273
2630 #: guix-git/doc/guix.texi:2535 guix-git/doc/guix.texi:2536
2631 #, no-wrap
2632 msgid "Proceeding with the Installation"
2633 msgstr ""
2634
2635 #. type: menuentry
2636 #: guix-git/doc/guix.texi:214 guix-git/doc/guix.texi:2273
2637 msgid "Installing."
2638 msgstr ""
2639
2640 #. type: section
2641 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2642 #: guix-git/doc/guix.texi:2982 guix-git/doc/guix.texi:2983
2643 #, no-wrap
2644 msgid "Features"
2645 msgstr ""
2646
2647 #. type: menuentry
2648 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2649 msgid "How Guix will make your life brighter."
2650 msgstr ""
2651
2652 #. type: node
2653 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2654 #: guix-git/doc/guix.texi:3072
2655 #, no-wrap
2656 msgid "Invoking guix package"
2657 msgstr ""
2658
2659 #. type: menuentry
2660 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2661 msgid "Package installation, removal, etc."
2662 msgstr ""
2663
2664 #. type: section
2665 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:229
2666 #: guix-git/doc/guix.texi:2980 guix-git/doc/guix.texi:3688
2667 #: guix-git/doc/guix.texi:3689
2668 #, no-wrap
2669 msgid "Substitutes"
2670 msgstr ""
2671
2672 #. type: menuentry
2673 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2674 msgid "Downloading pre-built binaries."
2675 msgstr ""
2676
2677 #. type: section
2678 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2679 #: guix-git/doc/guix.texi:4019 guix-git/doc/guix.texi:4020
2680 #, no-wrap
2681 msgid "Packages with Multiple Outputs"
2682 msgstr ""
2683
2684 #. type: menuentry
2685 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2686 msgid "Single source package, multiple outputs."
2687 msgstr ""
2688
2689 #. type: node
2690 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2691 #: guix-git/doc/guix.texi:4073
2692 #, no-wrap
2693 msgid "Invoking guix gc"
2694 msgstr ""
2695
2696 #. type: menuentry
2697 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2698 msgid "Running the garbage collector."
2699 msgstr ""
2700
2701 #. type: node
2702 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2703 #: guix-git/doc/guix.texi:4283
2704 #, no-wrap
2705 msgid "Invoking guix pull"
2706 msgstr ""
2707
2708 #. type: menuentry
2709 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2710 msgid "Fetching the latest Guix and distribution."
2711 msgstr ""
2712
2713 #. type: node
2714 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2715 #: guix-git/doc/guix.texi:4530
2716 #, no-wrap
2717 msgid "Invoking guix time-machine"
2718 msgstr ""
2719
2720 #. type: menuentry
2721 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2722 msgid "Running an older revision of Guix."
2723 msgstr ""
2724
2725 #. type: section
2726 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2727 #: guix-git/doc/guix.texi:4585 guix-git/doc/guix.texi:4586
2728 #, no-wrap
2729 msgid "Inferiors"
2730 msgstr ""
2731
2732 #. type: menuentry
2733 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2734 msgid "Interacting with another revision of Guix."
2735 msgstr ""
2736
2737 #. type: node
2738 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2739 #: guix-git/doc/guix.texi:4713
2740 #, no-wrap
2741 msgid "Invoking guix describe"
2742 msgstr ""
2743
2744 #. type: menuentry
2745 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2746 msgid "Display information about your Guix revision."
2747 msgstr ""
2748
2749 #. type: node
2750 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2751 #: guix-git/doc/guix.texi:4808
2752 #, no-wrap
2753 msgid "Invoking guix archive"
2754 msgstr ""
2755
2756 #. type: menuentry
2757 #: guix-git/doc/guix.texi:227 guix-git/doc/guix.texi:2980
2758 msgid "Exporting and importing store files."
2759 msgstr ""
2760
2761 #. type: subsection
2762 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2763 #: guix-git/doc/guix.texi:3714 guix-git/doc/guix.texi:3715
2764 #, no-wrap
2765 msgid "Official Substitute Server"
2766 msgstr ""
2767
2768 #. type: menuentry
2769 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2770 msgid "One particular source of substitutes."
2771 msgstr ""
2772
2773 #. type: subsection
2774 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2775 #: guix-git/doc/guix.texi:3743 guix-git/doc/guix.texi:3744
2776 #, no-wrap
2777 msgid "Substitute Server Authorization"
2778 msgstr ""
2779
2780 #. type: menuentry
2781 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2782 msgid "How to enable or disable substitutes."
2783 msgstr ""
2784
2785 #. type: subsection
2786 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2787 #: guix-git/doc/guix.texi:3812 guix-git/doc/guix.texi:3813
2788 #, no-wrap
2789 msgid "Getting Substitutes from Other Servers"
2790 msgstr ""
2791
2792 #. type: menuentry
2793 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2794 msgid "Substitute diversity."
2795 msgstr ""
2796
2797 #. type: subsection
2798 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2799 #: guix-git/doc/guix.texi:3914 guix-git/doc/guix.texi:3915
2800 #, no-wrap
2801 msgid "Substitute Authentication"
2802 msgstr ""
2803
2804 #. type: menuentry
2805 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2806 msgid "How Guix verifies substitutes."
2807 msgstr ""
2808
2809 #. type: subsection
2810 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2811 #: guix-git/doc/guix.texi:3949 guix-git/doc/guix.texi:3950
2812 #, no-wrap
2813 msgid "Proxy Settings"
2814 msgstr ""
2815
2816 #. type: menuentry
2817 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2818 msgid "How to get substitutes via proxy."
2819 msgstr ""
2820
2821 #. type: subsection
2822 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2823 #: guix-git/doc/guix.texi:3961 guix-git/doc/guix.texi:3962
2824 #, no-wrap
2825 msgid "Substitution Failure"
2826 msgstr ""
2827
2828 #. type: menuentry
2829 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2830 msgid "What happens when substitution fails."
2831 msgstr ""
2832
2833 #. type: subsection
2834 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2835 #: guix-git/doc/guix.texi:3989 guix-git/doc/guix.texi:3990
2836 #, no-wrap
2837 msgid "On Trusting Binaries"
2838 msgstr ""
2839
2840 #. type: menuentry
2841 #: guix-git/doc/guix.texi:237 guix-git/doc/guix.texi:3712
2842 msgid "How can you trust that binary blob?"
2843 msgstr ""
2844
2845 #. type: section
2846 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2847 #: guix-git/doc/guix.texi:5031 guix-git/doc/guix.texi:5032
2848 #, no-wrap
2849 msgid "Specifying Additional Channels"
2850 msgstr ""
2851
2852 #. type: menuentry
2853 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2854 msgid "Extending the package collection."
2855 msgstr ""
2856
2857 #. type: section
2858 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2859 #: guix-git/doc/guix.texi:5081 guix-git/doc/guix.texi:5082
2860 #, no-wrap
2861 msgid "Using a Custom Guix Channel"
2862 msgstr ""
2863
2864 #. type: menuentry
2865 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2866 msgid "Using a customized Guix."
2867 msgstr ""
2868
2869 #. type: section
2870 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2871 #: guix-git/doc/guix.texi:5103 guix-git/doc/guix.texi:5104
2872 #, no-wrap
2873 msgid "Replicating Guix"
2874 msgstr ""
2875
2876 #. type: menuentry
2877 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2878 msgid "Running the @emph{exact same} Guix."
2879 msgstr ""
2880
2881 #. type: section
2882 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2883 #: guix-git/doc/guix.texi:5144 guix-git/doc/guix.texi:5145
2884 #, no-wrap
2885 msgid "Channel Authentication"
2886 msgstr ""
2887
2888 #. type: menuentry
2889 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2890 msgid "How Guix verifies what it fetches."
2891 msgstr ""
2892
2893 #. type: section
2894 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2895 #: guix-git/doc/guix.texi:5184 guix-git/doc/guix.texi:5185
2896 #, no-wrap
2897 msgid "Channels with Substitutes"
2898 msgstr ""
2899
2900 #. type: menuentry
2901 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2902 msgid "Using channels with available substitutes."
2903 msgstr ""
2904
2905 #. type: section
2906 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2907 #: guix-git/doc/guix.texi:5209 guix-git/doc/guix.texi:5210
2908 #, no-wrap
2909 msgid "Creating a Channel"
2910 msgstr ""
2911
2912 #. type: menuentry
2913 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2914 msgid "How to write your custom channel."
2915 msgstr ""
2916
2917 #. type: section
2918 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2919 #: guix-git/doc/guix.texi:5276 guix-git/doc/guix.texi:5277
2920 #, no-wrap
2921 msgid "Package Modules in a Sub-directory"
2922 msgstr ""
2923
2924 #. type: menuentry
2925 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2926 msgid "Specifying the channel's package modules location."
2927 msgstr ""
2928
2929 #. type: section
2930 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2931 #: guix-git/doc/guix.texi:5290 guix-git/doc/guix.texi:5291
2932 #, no-wrap
2933 msgid "Declaring Channel Dependencies"
2934 msgstr ""
2935
2936 #. type: menuentry
2937 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2938 msgid "How to depend on other channels."
2939 msgstr ""
2940
2941 #. type: section
2942 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2943 #: guix-git/doc/guix.texi:5332 guix-git/doc/guix.texi:5333
2944 #, no-wrap
2945 msgid "Specifying Channel Authorizations"
2946 msgstr ""
2947
2948 #. type: menuentry
2949 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2950 msgid "Defining channel authors authorizations."
2951 msgstr ""
2952
2953 #. type: section
2954 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2955 #: guix-git/doc/guix.texi:5433 guix-git/doc/guix.texi:5434
2956 #, no-wrap
2957 msgid "Primary URL"
2958 msgstr ""
2959
2960 #. type: menuentry
2961 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2962 msgid "Distinguishing mirror to original."
2963 msgstr ""
2964
2965 #. type: section
2966 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2967 #: guix-git/doc/guix.texi:5456 guix-git/doc/guix.texi:5457
2968 #, no-wrap
2969 msgid "Writing Channel News"
2970 msgstr ""
2971
2972 #. type: menuentry
2973 #: guix-git/doc/guix.texi:251 guix-git/doc/guix.texi:5029
2974 msgid "Communicating information to channel's users."
2975 msgstr ""
2976
2977 #. type: node
2978 #: guix-git/doc/guix.texi:258 guix-git/doc/guix.texi:5545
2979 #: guix-git/doc/guix.texi:5547
2980 #, no-wrap
2981 msgid "Invoking guix environment"
2982 msgstr ""
2983
2984 #. type: menuentry
2985 #: guix-git/doc/guix.texi:258 guix-git/doc/guix.texi:5545
2986 msgid "Setting up development environments."
2987 msgstr ""
2988
2989 #. type: node
2990 #: guix-git/doc/guix.texi:258 guix-git/doc/guix.texi:5545
2991 #: guix-git/doc/guix.texi:5907
2992 #, no-wrap
2993 msgid "Invoking guix pack"
2994 msgstr ""
2995
2996 #. type: menuentry
2997 #: guix-git/doc/guix.texi:258 guix-git/doc/guix.texi:5545
2998 msgid "Creating software bundles."
2999 msgstr ""
3000
3001 #. type: section
3002 #: guix-git/doc/guix.texi:258 guix-git/doc/guix.texi:5545
3003 #: guix-git/doc/guix.texi:6264 guix-git/doc/guix.texi:6265
3004 #, no-wrap
3005 msgid "The GCC toolchain"
3006 msgstr ""
3007
3008 #. type: menuentry
3009 #: guix-git/doc/guix.texi:258 guix-git/doc/guix.texi:5545
3010 msgid "Working with languages supported by GCC."
3011 msgstr ""
3012
3013 #. type: node
3014 #: guix-git/doc/guix.texi:258 guix-git/doc/guix.texi:5545
3015 #: guix-git/doc/guix.texi:6290
3016 #, no-wrap
3017 msgid "Invoking guix git authenticate"
3018 msgstr ""
3019
3020 #. type: menuentry
3021 #: guix-git/doc/guix.texi:258 guix-git/doc/guix.texi:5545
3022 msgid "Authenticating Git repositories."
3023 msgstr ""
3024
3025 #. type: section
3026 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3027 #: guix-git/doc/guix.texi:6394 guix-git/doc/guix.texi:6395
3028 #, no-wrap
3029 msgid "Package Modules"
3030 msgstr ""
3031
3032 #. type: menuentry
3033 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3034 msgid "Packages from the programmer's viewpoint."
3035 msgstr ""
3036
3037 #. type: section
3038 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:274
3039 #: guix-git/doc/guix.texi:6392 guix-git/doc/guix.texi:6456
3040 #: guix-git/doc/guix.texi:6457
3041 #, no-wrap
3042 msgid "Defining Packages"
3043 msgstr ""
3044
3045 #. type: menuentry
3046 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3047 msgid "Defining new packages."
3048 msgstr ""
3049
3050 #. type: section
3051 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3052 #: guix-git/doc/guix.texi:7024 guix-git/doc/guix.texi:7025
3053 #, no-wrap
3054 msgid "Defining Package Variants"
3055 msgstr ""
3056
3057 #. type: menuentry
3058 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3059 msgid "Customizing packages."
3060 msgstr ""
3061
3062 #. type: section
3063 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3064 #: guix-git/doc/guix.texi:7256 guix-git/doc/guix.texi:7257
3065 #, no-wrap
3066 msgid "Build Systems"
3067 msgstr ""
3068
3069 #. type: menuentry
3070 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3071 msgid "Specifying how packages are built."
3072 msgstr ""
3073
3074 #. type: subsection
3075 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3076 #: guix-git/doc/guix.texi:8272 guix-git/doc/guix.texi:8273
3077 #: guix-git/doc/guix.texi:8676
3078 #, no-wrap
3079 msgid "Build Phases"
3080 msgstr ""
3081
3082 #. type: menuentry
3083 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3084 msgid "Phases of the build process of a package."
3085 msgstr ""
3086
3087 #. type: section
3088 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3089 #: guix-git/doc/guix.texi:8466 guix-git/doc/guix.texi:8467
3090 #, no-wrap
3091 msgid "Build Utilities"
3092 msgstr ""
3093
3094 #. type: menuentry
3095 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3096 msgid "Helpers for your package definitions and more."
3097 msgstr ""
3098
3099 #. type: section
3100 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3101 #: guix-git/doc/guix.texi:8753 guix-git/doc/guix.texi:8754
3102 #, no-wrap
3103 msgid "The Store"
3104 msgstr ""
3105
3106 #. type: menuentry
3107 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3108 msgid "Manipulating the package store."
3109 msgstr ""
3110
3111 #. type: section
3112 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3113 #: guix-git/doc/guix.texi:8906 guix-git/doc/guix.texi:8907
3114 #, no-wrap
3115 msgid "Derivations"
3116 msgstr ""
3117
3118 #. type: menuentry
3119 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3120 msgid "Low-level interface to package derivations."
3121 msgstr ""
3122
3123 #. type: section
3124 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3125 #: guix-git/doc/guix.texi:9100 guix-git/doc/guix.texi:9101
3126 #, no-wrap
3127 msgid "The Store Monad"
3128 msgstr ""
3129
3130 #. type: menuentry
3131 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3132 msgid "Purely functional interface to the store."
3133 msgstr ""
3134
3135 #. type: section
3136 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3137 #: guix-git/doc/guix.texi:9419 guix-git/doc/guix.texi:9420
3138 #, no-wrap
3139 msgid "G-Expressions"
3140 msgstr ""
3141
3142 #. type: menuentry
3143 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3144 msgid "Manipulating build expressions."
3145 msgstr ""
3146
3147 #. type: node
3148 #: guix-git/doc/guix.texi:272 guix-git/doc/guix.texi:6392
3149 #: guix-git/doc/guix.texi:10048
3150 #, no-wrap
3151 msgid "Invoking guix repl"
3152 msgstr ""
3153
3154 #. type: menuentry
3155 #: guix-git/doc/guix.texi:272
3156 msgid "Programming Guix in Guile."
3157 msgstr ""
3158
3159 #. type: node
3160 #: guix-git/doc/guix.texi:277 guix-git/doc/guix.texi:6659
3161 #: guix-git/doc/guix.texi:6662
3162 #, no-wrap
3163 msgid "package Reference"
3164 msgstr ""
3165
3166 #. type: menuentry
3167 #: guix-git/doc/guix.texi:277 guix-git/doc/guix.texi:6659
3168 msgid "The package data type."
3169 msgstr ""
3170
3171 #. type: node
3172 #: guix-git/doc/guix.texi:277 guix-git/doc/guix.texi:6659
3173 #: guix-git/doc/guix.texi:6833
3174 #, no-wrap
3175 msgid "origin Reference"
3176 msgstr ""
3177
3178 #. type: menuentry
3179 #: guix-git/doc/guix.texi:277 guix-git/doc/guix.texi:6659
3180 msgid "The origin data type."
3181 msgstr ""
3182
3183 #. type: node
3184 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3185 #: guix-git/doc/guix.texi:10174
3186 #, no-wrap
3187 msgid "Invoking guix build"
3188 msgstr ""
3189
3190 #. type: menuentry
3191 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3192 msgid "Building packages from the command line."
3193 msgstr ""
3194
3195 #. type: node
3196 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3197 #: guix-git/doc/guix.texi:11010
3198 #, no-wrap
3199 msgid "Invoking guix edit"
3200 msgstr ""
3201
3202 #. type: menuentry
3203 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3204 msgid "Editing package definitions."
3205 msgstr ""
3206
3207 #. type: node
3208 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3209 #: guix-git/doc/guix.texi:11040
3210 #, no-wrap
3211 msgid "Invoking guix download"
3212 msgstr ""
3213
3214 #. type: menuentry
3215 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3216 msgid "Downloading a file and printing its hash."
3217 msgstr ""
3218
3219 #. type: node
3220 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3221 #: guix-git/doc/guix.texi:11098
3222 #, no-wrap
3223 msgid "Invoking guix hash"
3224 msgstr ""
3225
3226 #. type: menuentry
3227 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3228 msgid "Computing the cryptographic hash of a file."
3229 msgstr ""
3230
3231 #. type: node
3232 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3233 #: guix-git/doc/guix.texi:11170
3234 #, no-wrap
3235 msgid "Invoking guix import"
3236 msgstr ""
3237
3238 #. type: menuentry
3239 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3240 msgid "Importing package definitions."
3241 msgstr ""
3242
3243 #. type: node
3244 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3245 #: guix-git/doc/guix.texi:11655
3246 #, no-wrap
3247 msgid "Invoking guix refresh"
3248 msgstr ""
3249
3250 #. type: menuentry
3251 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3252 msgid "Updating package definitions."
3253 msgstr ""
3254
3255 #. type: node
3256 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3257 #: guix-git/doc/guix.texi:11991
3258 #, no-wrap
3259 msgid "Invoking guix lint"
3260 msgstr ""
3261
3262 #. type: menuentry
3263 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3264 msgid "Finding errors in package definitions."
3265 msgstr ""
3266
3267 #. type: node
3268 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3269 #: guix-git/doc/guix.texi:12160
3270 #, no-wrap
3271 msgid "Invoking guix size"
3272 msgstr ""
3273
3274 #. type: menuentry
3275 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3276 msgid "Profiling disk usage."
3277 msgstr ""
3278
3279 #. type: node
3280 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3281 #: guix-git/doc/guix.texi:12304
3282 #, no-wrap
3283 msgid "Invoking guix graph"
3284 msgstr ""
3285
3286 #. type: menuentry
3287 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3288 msgid "Visualizing the graph of packages."
3289 msgstr ""
3290
3291 #. type: node
3292 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3293 #: guix-git/doc/guix.texi:12571
3294 #, no-wrap
3295 msgid "Invoking guix publish"
3296 msgstr ""
3297
3298 #. type: menuentry
3299 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3300 msgid "Sharing substitutes."
3301 msgstr ""
3302
3303 #. type: node
3304 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3305 #: guix-git/doc/guix.texi:12830
3306 #, no-wrap
3307 msgid "Invoking guix challenge"
3308 msgstr ""
3309
3310 #. type: menuentry
3311 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3312 msgid "Challenging substitute servers."
3313 msgstr ""
3314
3315 #. type: node
3316 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3317 #: guix-git/doc/guix.texi:13013
3318 #, no-wrap
3319 msgid "Invoking guix copy"
3320 msgstr ""
3321
3322 #. type: menuentry
3323 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3324 msgid "Copying to and from a remote store."
3325 msgstr ""
3326
3327 #. type: node
3328 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3329 #: guix-git/doc/guix.texi:13076
3330 #, no-wrap
3331 msgid "Invoking guix container"
3332 msgstr ""
3333
3334 #. type: menuentry
3335 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3336 msgid "Process isolation."
3337 msgstr ""
3338
3339 #. type: node
3340 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3341 #: guix-git/doc/guix.texi:13130
3342 #, no-wrap
3343 msgid "Invoking guix weather"
3344 msgstr ""
3345
3346 #. type: menuentry
3347 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3348 msgid "Assessing substitute availability."
3349 msgstr ""
3350
3351 #. type: node
3352 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3353 #: guix-git/doc/guix.texi:13260
3354 #, no-wrap
3355 msgid "Invoking guix processes"
3356 msgstr ""
3357
3358 #. type: menuentry
3359 #: guix-git/doc/guix.texi:295 guix-git/doc/guix.texi:10172
3360 msgid "Listing client processes."
3361 msgstr ""
3362
3363 #. type: section
3364 #: guix-git/doc/guix.texi:297 guix-git/doc/guix.texi:10175
3365 #, no-wrap
3366 msgid "Invoking @command{guix build}"
3367 msgstr ""
3368
3369 #. type: subsection
3370 #: guix-git/doc/guix.texi:302 guix-git/doc/guix.texi:10226
3371 #: guix-git/doc/guix.texi:10228 guix-git/doc/guix.texi:10229
3372 #, no-wrap
3373 msgid "Common Build Options"
3374 msgstr ""
3375
3376 #. type: menuentry
3377 #: guix-git/doc/guix.texi:302 guix-git/doc/guix.texi:10226
3378 msgid "Build options for most commands."
3379 msgstr ""
3380
3381 #. type: subsection
3382 #: guix-git/doc/guix.texi:302 guix-git/doc/guix.texi:10226
3383 #: guix-git/doc/guix.texi:10383 guix-git/doc/guix.texi:10384
3384 #, no-wrap
3385 msgid "Package Transformation Options"
3386 msgstr ""
3387
3388 #. type: menuentry
3389 #: guix-git/doc/guix.texi:302 guix-git/doc/guix.texi:10226
3390 msgid "Creating variants of packages."
3391 msgstr ""
3392
3393 #. type: subsection
3394 #: guix-git/doc/guix.texi:302 guix-git/doc/guix.texi:10226
3395 #: guix-git/doc/guix.texi:10692 guix-git/doc/guix.texi:10693
3396 #, no-wrap
3397 msgid "Additional Build Options"
3398 msgstr ""
3399
3400 #. type: menuentry
3401 #: guix-git/doc/guix.texi:302 guix-git/doc/guix.texi:10226
3402 msgid "Options specific to 'guix build'."
3403 msgstr ""
3404
3405 #. type: subsection
3406 #: guix-git/doc/guix.texi:302 guix-git/doc/guix.texi:10226
3407 #: guix-git/doc/guix.texi:10930 guix-git/doc/guix.texi:10931
3408 #, no-wrap
3409 msgid "Debugging Build Failures"
3410 msgstr ""
3411
3412 #. type: menuentry
3413 #: guix-git/doc/guix.texi:302 guix-git/doc/guix.texi:10226
3414 msgid "Real life packaging experience."
3415 msgstr ""
3416
3417 #. type: section
3418 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3419 #: guix-git/doc/guix.texi:13403 guix-git/doc/guix.texi:13404
3420 #, no-wrap
3421 msgid "Using the Configuration System"
3422 msgstr ""
3423
3424 #. type: menuentry
3425 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3426 msgid "Customizing your GNU system."
3427 msgstr ""
3428
3429 #. type: node
3430 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3431 #: guix-git/doc/guix.texi:13651
3432 #, no-wrap
3433 msgid "operating-system Reference"
3434 msgstr ""
3435
3436 #. type: menuentry
3437 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3438 msgid "Detail of operating-system declarations."
3439 msgstr ""
3440
3441 #. type: section
3442 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3443 #: guix-git/doc/guix.texi:13903 guix-git/doc/guix.texi:13904
3444 #, no-wrap
3445 msgid "File Systems"
3446 msgstr ""
3447
3448 #. type: menuentry
3449 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3450 msgid "Configuring file system mounts."
3451 msgstr ""
3452
3453 #. type: section
3454 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3455 #: guix-git/doc/guix.texi:14226 guix-git/doc/guix.texi:14227
3456 #, no-wrap
3457 msgid "Mapped Devices"
3458 msgstr ""
3459
3460 #. type: menuentry
3461 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3462 msgid "Block device extra processing."
3463 msgstr ""
3464
3465 #. type: section
3466 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3467 #: guix-git/doc/guix.texi:14374 guix-git/doc/guix.texi:14375
3468 #, no-wrap
3469 msgid "User Accounts"
3470 msgstr ""
3471
3472 #. type: menuentry
3473 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3474 msgid "Specifying user accounts."
3475 msgstr ""
3476
3477 #. type: section
3478 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:2282
3479 #: guix-git/doc/guix.texi:13401 guix-git/doc/guix.texi:14550
3480 #: guix-git/doc/guix.texi:14551
3481 #, no-wrap
3482 msgid "Keyboard Layout"
3483 msgstr ""
3484
3485 #. type: menuentry
3486 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3487 msgid "How the system interprets key strokes."
3488 msgstr ""
3489
3490 #. type: section
3491 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:1785
3492 #: guix-git/doc/guix.texi:13401 guix-git/doc/guix.texi:14696
3493 #: guix-git/doc/guix.texi:14697
3494 #, no-wrap
3495 msgid "Locales"
3496 msgstr ""
3497
3498 #. type: menuentry
3499 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3500 msgid "Language and cultural convention settings."
3501 msgstr ""
3502
3503 #. type: section
3504 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:324
3505 #: guix-git/doc/guix.texi:13401 guix-git/doc/guix.texi:14836
3506 #: guix-git/doc/guix.texi:14837
3507 #, no-wrap
3508 msgid "Services"
3509 msgstr ""
3510
3511 #. type: menuentry
3512 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3513 msgid "Specifying system services."
3514 msgstr ""
3515
3516 #. type: section
3517 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3518 #: guix-git/doc/guix.texi:32033 guix-git/doc/guix.texi:32034
3519 #, no-wrap
3520 msgid "Setuid Programs"
3521 msgstr ""
3522
3523 #. type: menuentry
3524 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3525 msgid "Programs running with root privileges."
3526 msgstr ""
3527
3528 #. type: section
3529 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:1934
3530 #: guix-git/doc/guix.texi:13401 guix-git/doc/guix.texi:32079
3531 #: guix-git/doc/guix.texi:32080
3532 #, no-wrap
3533 msgid "X.509 Certificates"
3534 msgstr ""
3535
3536 #. type: menuentry
3537 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3538 msgid "Authenticating HTTPS servers."
3539 msgstr ""
3540
3541 #. type: section
3542 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:1828
3543 #: guix-git/doc/guix.texi:13401 guix-git/doc/guix.texi:32142
3544 #: guix-git/doc/guix.texi:32143
3545 #, no-wrap
3546 msgid "Name Service Switch"
3547 msgstr ""
3548
3549 #. type: menuentry
3550 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3551 msgid "Configuring libc's name service switch."
3552 msgstr ""
3553
3554 #. type: section
3555 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3556 #: guix-git/doc/guix.texi:32280 guix-git/doc/guix.texi:32281
3557 #, no-wrap
3558 msgid "Initial RAM Disk"
3559 msgstr ""
3560
3561 #. type: menuentry
3562 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3563 msgid "Linux-Libre bootstrapping."
3564 msgstr ""
3565
3566 #. type: section
3567 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3568 #: guix-git/doc/guix.texi:32456 guix-git/doc/guix.texi:32457
3569 #, no-wrap
3570 msgid "Bootloader Configuration"
3571 msgstr ""
3572
3573 #. type: menuentry
3574 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3575 msgid "Configuring the boot loader."
3576 msgstr ""
3577
3578 #. type: node
3579 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3580 #: guix-git/doc/guix.texi:32750
3581 #, no-wrap
3582 msgid "Invoking guix system"
3583 msgstr ""
3584
3585 #. type: menuentry
3586 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3587 msgid "Instantiating a system configuration."
3588 msgstr ""
3589
3590 #. type: node
3591 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3592 #: guix-git/doc/guix.texi:33335
3593 #, no-wrap
3594 msgid "Invoking guix deploy"
3595 msgstr ""
3596
3597 #. type: menuentry
3598 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3599 msgid "Deploying a system configuration to a remote host."
3600 msgstr ""
3601
3602 #. type: node
3603 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3604 #: guix-git/doc/guix.texi:33541
3605 #, no-wrap
3606 msgid "Running Guix in a VM"
3607 msgstr ""
3608
3609 #. type: menuentry
3610 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3611 msgid "How to run Guix System in a virtual machine."
3612 msgstr ""
3613
3614 #. type: section
3615 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:359
3616 #: guix-git/doc/guix.texi:13401 guix-git/doc/guix.texi:33671
3617 #: guix-git/doc/guix.texi:33672
3618 #, no-wrap
3619 msgid "Defining Services"
3620 msgstr ""
3621
3622 #. type: menuentry
3623 #: guix-git/doc/guix.texi:322 guix-git/doc/guix.texi:13401
3624 msgid "Adding new service definitions."
3625 msgstr ""
3626
3627 #. type: subsection
3628 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3629 #: guix-git/doc/guix.texi:14921 guix-git/doc/guix.texi:14922
3630 #, no-wrap
3631 msgid "Base Services"
3632 msgstr ""
3633
3634 #. type: menuentry
3635 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3636 msgid "Essential system services."
3637 msgstr ""
3638
3639 #. type: subsection
3640 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3641 #: guix-git/doc/guix.texi:15837 guix-git/doc/guix.texi:15838
3642 #, no-wrap
3643 msgid "Scheduled Job Execution"
3644 msgstr ""
3645
3646 #. type: menuentry
3647 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3648 msgid "The mcron service."
3649 msgstr ""
3650
3651 #. type: subsection
3652 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3653 #: guix-git/doc/guix.texi:15978 guix-git/doc/guix.texi:15979
3654 #, no-wrap
3655 msgid "Log Rotation"
3656 msgstr ""
3657
3658 #. type: menuentry
3659 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3660 msgid "The rottlog service."
3661 msgstr ""
3662
3663 #. type: subsection
3664 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3665 #: guix-git/doc/guix.texi:16091 guix-git/doc/guix.texi:16092
3666 #, no-wrap
3667 msgid "Networking Services"
3668 msgstr ""
3669
3670 #. type: menuentry
3671 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3672 msgid "Network setup, SSH daemon, etc."
3673 msgstr ""
3674
3675 #. type: subsection
3676 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3677 #: guix-git/doc/guix.texi:17661 guix-git/doc/guix.texi:17662
3678 #, no-wrap
3679 msgid "Unattended Upgrades"
3680 msgstr ""
3681
3682 #. type: menuentry
3683 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3684 msgid "Automated system upgrades."
3685 msgstr ""
3686
3687 #. type: subsection
3688 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3689 #: guix-git/doc/guix.texi:17799 guix-git/doc/guix.texi:17800
3690 #, no-wrap
3691 msgid "X Window"
3692 msgstr ""
3693
3694 #. type: menuentry
3695 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3696 msgid "Graphical display."
3697 msgstr ""
3698
3699 #. type: subsection
3700 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3701 #: guix-git/doc/guix.texi:18176 guix-git/doc/guix.texi:18177
3702 #, no-wrap
3703 msgid "Printing Services"
3704 msgstr ""
3705
3706 #. type: menuentry
3707 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3708 msgid "Local and remote printer support."
3709 msgstr ""
3710
3711 #. type: subsection
3712 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3713 #: guix-git/doc/guix.texi:19029 guix-git/doc/guix.texi:19030
3714 #, no-wrap
3715 msgid "Desktop Services"
3716 msgstr ""
3717
3718 #. type: menuentry
3719 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3720 msgid "D-Bus and desktop services."
3721 msgstr ""
3722
3723 #. type: subsection
3724 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3725 #: guix-git/doc/guix.texi:19547 guix-git/doc/guix.texi:19548
3726 #, no-wrap
3727 msgid "Sound Services"
3728 msgstr ""
3729
3730 #. type: menuentry
3731 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3732 msgid "ALSA and Pulseaudio services."
3733 msgstr ""
3734
3735 #. type: subsection
3736 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3737 #: guix-git/doc/guix.texi:19687 guix-git/doc/guix.texi:19688
3738 #, no-wrap
3739 msgid "Database Services"
3740 msgstr ""
3741
3742 #. type: menuentry
3743 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3744 msgid "SQL databases, key-value stores, etc."
3745 msgstr ""
3746
3747 #. type: subsection
3748 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3749 #: guix-git/doc/guix.texi:20019 guix-git/doc/guix.texi:20020
3750 #, no-wrap
3751 msgid "Mail Services"
3752 msgstr ""
3753
3754 #. type: menuentry
3755 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3756 msgid "IMAP, POP3, SMTP, and all that."
3757 msgstr ""
3758
3759 #. type: subsection
3760 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3761 #: guix-git/doc/guix.texi:21835 guix-git/doc/guix.texi:21836
3762 #, no-wrap
3763 msgid "Messaging Services"
3764 msgstr ""
3765
3766 #. type: menuentry
3767 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3768 msgid "Messaging services."
3769 msgstr ""
3770
3771 #. type: subsection
3772 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3773 #: guix-git/doc/guix.texi:22338 guix-git/doc/guix.texi:22339
3774 #, no-wrap
3775 msgid "Telephony Services"
3776 msgstr ""
3777
3778 #. type: menuentry
3779 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3780 msgid "Telephony services."
3781 msgstr ""
3782
3783 #. type: subsection
3784 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3785 #: guix-git/doc/guix.texi:23341 guix-git/doc/guix.texi:23342
3786 #, no-wrap
3787 msgid "Monitoring Services"
3788 msgstr ""
3789
3790 #. type: menuentry
3791 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3792 msgid "Monitoring services."
3793 msgstr ""
3794
3795 #. type: subsection
3796 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3797 #: guix-git/doc/guix.texi:23852 guix-git/doc/guix.texi:23853
3798 #, no-wrap
3799 msgid "Kerberos Services"
3800 msgstr ""
3801
3802 #. type: menuentry
3803 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3804 msgid "Kerberos services."
3805 msgstr ""
3806
3807 #. type: subsection
3808 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3809 #: guix-git/doc/guix.texi:23978 guix-git/doc/guix.texi:23979
3810 #, no-wrap
3811 msgid "LDAP Services"
3812 msgstr ""
3813
3814 #. type: menuentry
3815 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3816 msgid "LDAP services."
3817 msgstr ""
3818
3819 #. type: subsection
3820 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3821 #: guix-git/doc/guix.texi:24457 guix-git/doc/guix.texi:24458
3822 #, no-wrap
3823 msgid "Web Services"
3824 msgstr ""
3825
3826 #. type: menuentry
3827 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3828 msgid "Web servers."
3829 msgstr ""
3830
3831 #. type: subsection
3832 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3833 #: guix-git/doc/guix.texi:25658 guix-git/doc/guix.texi:25659
3834 #, no-wrap
3835 msgid "Certificate Services"
3836 msgstr ""
3837
3838 #. type: menuentry
3839 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3840 msgid "TLS certificates via Let's Encrypt."
3841 msgstr ""
3842
3843 #. type: subsection
3844 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3845 #: guix-git/doc/guix.texi:25831 guix-git/doc/guix.texi:25832
3846 #, no-wrap
3847 msgid "DNS Services"
3848 msgstr ""
3849
3850 #. type: menuentry
3851 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3852 msgid "DNS daemons."
3853 msgstr ""
3854
3855 #. type: subsection
3856 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3857 #: guix-git/doc/guix.texi:26579 guix-git/doc/guix.texi:26580
3858 #, no-wrap
3859 msgid "VPN Services"
3860 msgstr ""
3861
3862 #. type: menuentry
3863 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3864 msgid "VPN daemons."
3865 msgstr ""
3866
3867 #. type: subsection
3868 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3869 #: guix-git/doc/guix.texi:27034 guix-git/doc/guix.texi:27035
3870 #, no-wrap
3871 msgid "Network File System"
3872 msgstr ""
3873
3874 #. type: menuentry
3875 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3876 msgid "NFS related services."
3877 msgstr ""
3878
3879 #. type: subsection
3880 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3881 #: guix-git/doc/guix.texi:27230 guix-git/doc/guix.texi:27231
3882 #, no-wrap
3883 msgid "Continuous Integration"
3884 msgstr ""
3885
3886 #. type: menuentry
3887 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3888 msgid "Cuirass and Laminar services."
3889 msgstr ""
3890
3891 #. type: subsection
3892 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3893 #: guix-git/doc/guix.texi:27508 guix-git/doc/guix.texi:27509
3894 #, no-wrap
3895 msgid "Power Management Services"
3896 msgstr ""
3897
3898 #. type: menuentry
3899 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3900 msgid "Extending battery life."
3901 msgstr ""
3902
3903 #. type: subsection
3904 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3905 #: guix-git/doc/guix.texi:28042 guix-git/doc/guix.texi:28043
3906 #, no-wrap
3907 msgid "Audio Services"
3908 msgstr ""
3909
3910 #. type: menuentry
3911 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3912 msgid "The MPD."
3913 msgstr ""
3914
3915 #. type: subsection
3916 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3917 #: guix-git/doc/guix.texi:28161 guix-git/doc/guix.texi:28162
3918 #, no-wrap
3919 msgid "Virtualization Services"
3920 msgstr ""
3921
3922 #. type: menuentry
3923 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3924 msgid "Virtualization services."
3925 msgstr ""
3926
3927 #. type: subsection
3928 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3929 #: guix-git/doc/guix.texi:29775 guix-git/doc/guix.texi:29776
3930 #, no-wrap
3931 msgid "Version Control Services"
3932 msgstr ""
3933
3934 #. type: menuentry
3935 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3936 msgid "Providing remote access to Git repositories."
3937 msgstr ""
3938
3939 #. type: subsection
3940 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3941 #: guix-git/doc/guix.texi:30967 guix-git/doc/guix.texi:30968
3942 #, no-wrap
3943 msgid "Game Services"
3944 msgstr ""
3945
3946 #. type: menuentry
3947 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3948 msgid "Game servers."
3949 msgstr ""
3950
3951 #. type: subsection
3952 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3953 #: guix-git/doc/guix.texi:30999 guix-git/doc/guix.texi:31000
3954 #, no-wrap
3955 msgid "PAM Mount Service"
3956 msgstr ""
3957
3958 #. type: menuentry
3959 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3960 msgid "Service to mount volumes when logging in."
3961 msgstr ""
3962
3963 #. type: subsection
3964 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3965 #: guix-git/doc/guix.texi:31082 guix-git/doc/guix.texi:31083
3966 #, no-wrap
3967 msgid "Guix Services"
3968 msgstr ""
3969
3970 #. type: menuentry
3971 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3972 msgid "Services relating specifically to Guix."
3973 msgstr ""
3974
3975 #. type: subsection
3976 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3977 #: guix-git/doc/guix.texi:31357 guix-git/doc/guix.texi:31358
3978 #, no-wrap
3979 msgid "Linux Services"
3980 msgstr ""
3981
3982 #. type: menuentry
3983 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3984 msgid "Services tied to the Linux kernel."
3985 msgstr ""
3986
3987 #. type: subsection
3988 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3989 #: guix-git/doc/guix.texi:31504 guix-git/doc/guix.texi:31505
3990 #, no-wrap
3991 msgid "Hurd Services"
3992 msgstr ""
3993
3994 #. type: menuentry
3995 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
3996 msgid "Services specific for a Hurd System."
3997 msgstr ""
3998
3999 #. type: subsection
4000 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
4001 #: guix-git/doc/guix.texi:31546 guix-git/doc/guix.texi:31547
4002 #, no-wrap
4003 msgid "Miscellaneous Services"
4004 msgstr ""
4005
4006 #. type: menuentry
4007 #: guix-git/doc/guix.texi:357 guix-git/doc/guix.texi:14919
4008 msgid "Other services."
4009 msgstr ""
4010
4011 #. type: subsection
4012 #: guix-git/doc/guix.texi:364 guix-git/doc/guix.texi:33683
4013 #: guix-git/doc/guix.texi:33685 guix-git/doc/guix.texi:33686
4014 #, no-wrap
4015 msgid "Service Composition"
4016 msgstr ""
4017
4018 #. type: menuentry
4019 #: guix-git/doc/guix.texi:364 guix-git/doc/guix.texi:33683
4020 msgid "The model for composing services."
4021 msgstr ""
4022
4023 #. type: subsection
4024 #: guix-git/doc/guix.texi:364 guix-git/doc/guix.texi:33683
4025 #: guix-git/doc/guix.texi:33741 guix-git/doc/guix.texi:33742
4026 #, no-wrap
4027 msgid "Service Types and Services"
4028 msgstr ""
4029
4030 #. type: menuentry
4031 #: guix-git/doc/guix.texi:364 guix-git/doc/guix.texi:33683
4032 msgid "Types and services."
4033 msgstr ""
4034
4035 #. type: subsection
4036 #: guix-git/doc/guix.texi:364 guix-git/doc/guix.texi:33683
4037 #: guix-git/doc/guix.texi:33878 guix-git/doc/guix.texi:33879
4038 #, no-wrap
4039 msgid "Service Reference"
4040 msgstr ""
4041
4042 #. type: menuentry
4043 #: guix-git/doc/guix.texi:364 guix-git/doc/guix.texi:33683
4044 msgid "API reference."
4045 msgstr ""
4046
4047 #. type: subsection
4048 #: guix-git/doc/guix.texi:364 guix-git/doc/guix.texi:33683
4049 #: guix-git/doc/guix.texi:34169 guix-git/doc/guix.texi:34170
4050 #, no-wrap
4051 msgid "Shepherd Services"
4052 msgstr ""
4053
4054 #. type: menuentry
4055 #: guix-git/doc/guix.texi:364 guix-git/doc/guix.texi:33683
4056 msgid "A particular type of service."
4057 msgstr ""
4058
4059 #. type: section
4060 #: guix-git/doc/guix.texi:369 guix-git/doc/guix.texi:34470
4061 #: guix-git/doc/guix.texi:34472 guix-git/doc/guix.texi:34473
4062 #, no-wrap
4063 msgid "Separate Debug Info"
4064 msgstr ""
4065
4066 #. type: menuentry
4067 #: guix-git/doc/guix.texi:369 guix-git/doc/guix.texi:34470
4068 msgid "Installing 'debug' outputs."
4069 msgstr ""
4070
4071 #. type: section
4072 #: guix-git/doc/guix.texi:369 guix-git/doc/guix.texi:34470
4073 #: guix-git/doc/guix.texi:34531 guix-git/doc/guix.texi:34532
4074 #, no-wrap
4075 msgid "Rebuilding Debug Info"
4076 msgstr ""
4077
4078 #. type: menuentry
4079 #: guix-git/doc/guix.texi:369 guix-git/doc/guix.texi:34470
4080 msgid "Building missing debug info."
4081 msgstr ""
4082
4083 #. type: node
4084 #: guix-git/doc/guix.texi:374 guix-git/doc/guix.texi:34748
4085 #: guix-git/doc/guix.texi:34750
4086 #, no-wrap
4087 msgid "Reduced Binary Seed Bootstrap"
4088 msgstr ""
4089
4090 #. type: menuentry
4091 #: guix-git/doc/guix.texi:374 guix-git/doc/guix.texi:34748
4092 msgid "A Bootstrap worthy of GNU."
4093 msgstr ""
4094
4095 #. type: section
4096 #: guix-git/doc/guix.texi:374 guix-git/doc/guix.texi:34748
4097 #: guix-git/doc/guix.texi:34825 guix-git/doc/guix.texi:34826
4098 #, no-wrap
4099 msgid "Preparing to Use the Bootstrap Binaries"
4100 msgstr ""
4101
4102 #. type: menuentry
4103 #: guix-git/doc/guix.texi:374 guix-git/doc/guix.texi:34748
4104 msgid "Building that what matters most."
4105 msgstr ""
4106
4107 #. type: cindex
4108 #: guix-git/doc/guix.texi:382
4109 #, no-wrap
4110 msgid "purpose"
4111 msgstr ""
4112
4113 #. type: Plain text
4114 #: guix-git/doc/guix.texi:390
4115 msgid "GNU Guix@footnote{``Guix'' is pronounced like ``geeks'', or ``ɡiːks'' using the international phonetic alphabet (IPA).} is a package management tool for and distribution of the GNU system. Guix makes it easy for unprivileged users to install, upgrade, or remove software packages, to roll back to a previous package set, to build packages from source, and generally assists with the creation and maintenance of software environments."
4116 msgstr ""
4117
4118 #. type: cindex
4119 #: guix-git/doc/guix.texi:391 guix-git/doc/guix.texi:466
4120 #, no-wrap
4121 msgid "Guix System"
4122 msgstr ""
4123
4124 #. type: cindex
4125 #: guix-git/doc/guix.texi:392
4126 #, no-wrap
4127 msgid "GuixSD, now Guix System"
4128 msgstr ""
4129
4130 #. type: cindex
4131 #: guix-git/doc/guix.texi:393
4132 #, no-wrap
4133 msgid "Guix System Distribution, now Guix System"
4134 msgstr ""
4135
4136 #. type: Plain text
4137 #: guix-git/doc/guix.texi:402
4138 msgid "You can install GNU@tie{}Guix on top of an existing GNU/Linux system where it complements the available tools without interference (@pxref{Installation}), or you can use it as a standalone operating system distribution, @dfn{Guix@tie{}System}@footnote{We used to refer to Guix System as ``Guix System Distribution'' or ``GuixSD''. We now consider it makes more sense to group everything under the ``Guix'' banner since, after all, Guix System is readily available through the @command{guix system} command, even if you're using a different distro underneath!}. @xref{GNU Distribution}."
4139 msgstr ""
4140
4141 #. type: cindex
4142 #: guix-git/doc/guix.texi:411
4143 #, no-wrap
4144 msgid "user interfaces"
4145 msgstr ""
4146
4147 #. type: Plain text
4148 #: guix-git/doc/guix.texi:417
4149 msgid "Guix provides a command-line package management interface (@pxref{Package Management}), tools to help with software development (@pxref{Development}), command-line utilities for more advanced usage (@pxref{Utilities}), as well as Scheme programming interfaces (@pxref{Programming Interface})."
4150 msgstr ""
4151
4152 #. type: cindex
4153 #: guix-git/doc/guix.texi:417
4154 #, no-wrap
4155 msgid "build daemon"
4156 msgstr ""
4157
4158 #. type: Plain text
4159 #: guix-git/doc/guix.texi:421
4160 msgid "Its @dfn{build daemon} is responsible for building packages on behalf of users (@pxref{Setting Up the Daemon}) and for downloading pre-built binaries from authorized sources (@pxref{Substitutes})."
4161 msgstr ""
4162
4163 #. type: cindex
4164 #: guix-git/doc/guix.texi:422
4165 #, no-wrap
4166 msgid "extensibility of the distribution"
4167 msgstr ""
4168
4169 #. type: cindex
4170 #: guix-git/doc/guix.texi:423 guix-git/doc/guix.texi:6416
4171 #, no-wrap
4172 msgid "customization, of packages"
4173 msgstr ""
4174
4175 #. type: Plain text
4176 #: guix-git/doc/guix.texi:432
4177 msgid "Guix includes package definitions for many GNU and non-GNU packages, all of which @uref{https://www.gnu.org/philosophy/free-sw.html, respect the user's computing freedom}. It is @emph{extensible}: users can write their own package definitions (@pxref{Defining Packages}) and make them available as independent package modules (@pxref{Package Modules}). It is also @emph{customizable}: users can @emph{derive} specialized package definitions from existing ones, including from the command line (@pxref{Package Transformation Options})."
4178 msgstr ""
4179
4180 #. type: cindex
4181 #: guix-git/doc/guix.texi:433
4182 #, no-wrap
4183 msgid "functional package management"
4184 msgstr ""
4185
4186 #. type: cindex
4187 #: guix-git/doc/guix.texi:434
4188 #, no-wrap
4189 msgid "isolation"
4190 msgstr ""
4191
4192 #. type: Plain text
4193 #: guix-git/doc/guix.texi:449
4194 msgid "Under the hood, Guix implements the @dfn{functional package management} discipline pioneered by Nix (@pxref{Acknowledgments}). In Guix, the package build and installation process is seen as a @emph{function}, in the mathematical sense. That function takes inputs, such as build scripts, a compiler, and libraries, and returns an installed package. As a pure function, its result depends solely on its inputs---for instance, it cannot refer to software or scripts that were not explicitly passed as inputs. A build function always produces the same result when passed a given set of inputs. It cannot alter the environment of the running system in any way; for instance, it cannot create, modify, or delete files outside of its build and installation directories. This is achieved by running build processes in isolated environments (or @dfn{containers}), where only their explicit inputs are visible."
4195 msgstr ""
4196
4197 #. type: cindex
4198 #: guix-git/doc/guix.texi:450 guix-git/doc/guix.texi:8756
4199 #, no-wrap
4200 msgid "store"
4201 msgstr ""
4202
4203 #. type: Plain text
4204 #: guix-git/doc/guix.texi:457
4205 msgid "The result of package build functions is @dfn{cached} in the file system, in a special directory called @dfn{the store} (@pxref{The Store}). Each package is installed in a directory of its own in the store---by default under @file{/gnu/store}. The directory name contains a hash of all the inputs used to build that package; thus, changing an input yields a different directory name."
4206 msgstr ""
4207
4208 #. type: Plain text
4209 #: guix-git/doc/guix.texi:461
4210 msgid "This approach is the foundation for the salient features of Guix: support for transactional package upgrade and rollback, per-user installation, and garbage collection of packages (@pxref{Features})."
4211 msgstr ""
4212
4213 #. type: Plain text
4214 #: guix-git/doc/guix.texi:476
4215 msgid "Guix comes with a distribution of the GNU system consisting entirely of free software@footnote{The term ``free'' here refers to the @url{https://www.gnu.org/philosophy/free-sw.html,freedom provided to users of that software}.}. The distribution can be installed on its own (@pxref{System Installation}), but it is also possible to install Guix as a package manager on top of an installed GNU/Linux system (@pxref{Installation}). When we need to distinguish between the two, we refer to the standalone distribution as Guix@tie{}System."
4216 msgstr ""
4217
4218 #. type: Plain text
4219 #: guix-git/doc/guix.texi:482
4220 msgid "The distribution provides core GNU packages such as GNU libc, GCC, and Binutils, as well as many GNU and non-GNU applications. The complete list of available packages can be browsed @url{https://www.gnu.org/software/guix/packages,on-line} or by running @command{guix package} (@pxref{Invoking guix package}):"
4221 msgstr ""
4222
4223 #. type: example
4224 #: guix-git/doc/guix.texi:485
4225 #, no-wrap
4226 msgid "guix package --list-available\n"
4227 msgstr ""
4228
4229 #. type: Plain text
4230 #: guix-git/doc/guix.texi:491
4231 msgid "Our goal is to provide a practical 100% free software distribution of Linux-based and other variants of GNU, with a focus on the promotion and tight integration of GNU components, and an emphasis on programs and tools that help users exert that freedom."
4232 msgstr ""
4233
4234 #. type: Plain text
4235 #: guix-git/doc/guix.texi:493
4236 msgid "Packages are currently available on the following platforms:"
4237 msgstr ""
4238
4239 #. type: item
4240 #: guix-git/doc/guix.texi:496 guix-git/doc/guix.texi:2105
4241 #, no-wrap
4242 msgid "x86_64-linux"
4243 msgstr ""
4244
4245 #. type: table
4246 #: guix-git/doc/guix.texi:498
4247 msgid "Intel/AMD @code{x86_64} architecture, Linux-Libre kernel."
4248 msgstr ""
4249
4250 #. type: item
4251 #: guix-git/doc/guix.texi:499 guix-git/doc/guix.texi:2108
4252 #, no-wrap
4253 msgid "i686-linux"
4254 msgstr ""
4255
4256 #. type: table
4257 #: guix-git/doc/guix.texi:501
4258 msgid "Intel 32-bit architecture (IA32), Linux-Libre kernel."
4259 msgstr ""
4260
4261 #. type: item
4262 #: guix-git/doc/guix.texi:502
4263 #, no-wrap
4264 msgid "armhf-linux"
4265 msgstr ""
4266
4267 #. type: table
4268 #: guix-git/doc/guix.texi:506
4269 msgid "ARMv7-A architecture with hard float, Thumb-2 and NEON, using the EABI hard-float application binary interface (ABI), and Linux-Libre kernel."
4270 msgstr ""
4271
4272 #. type: item
4273 #: guix-git/doc/guix.texi:507
4274 #, no-wrap
4275 msgid "aarch64-linux"
4276 msgstr ""
4277
4278 #. type: table
4279 #: guix-git/doc/guix.texi:509
4280 msgid "little-endian 64-bit ARMv8-A processors, Linux-Libre kernel."
4281 msgstr ""
4282
4283 #. type: item
4284 #: guix-git/doc/guix.texi:510
4285 #, no-wrap
4286 msgid "i586-gnu"
4287 msgstr ""
4288
4289 #. type: table
4290 #: guix-git/doc/guix.texi:513
4291 msgid "@uref{https://hurd.gnu.org, GNU/Hurd} on the Intel 32-bit architecture (IA32)."
4292 msgstr ""
4293
4294 #. type: table
4295 #: guix-git/doc/guix.texi:519
4296 msgid "This configuration is experimental and under development. The easiest way for you to give it a try is by setting up an instance of @code{hurd-vm-service-type} on your GNU/Linux machine (@pxref{transparent-emulation-qemu, @code{hurd-vm-service-type}}). @xref{Contributing}, on how to help!"
4297 msgstr ""
4298
4299 #. type: item
4300 #: guix-git/doc/guix.texi:520
4301 #, no-wrap
4302 msgid "mips64el-linux (deprecated)"
4303 msgstr ""
4304
4305 #. type: table
4306 #: guix-git/doc/guix.texi:526
4307 msgid "little-endian 64-bit MIPS processors, specifically the Loongson series, n32 ABI, and Linux-Libre kernel. This configuration is no longer fully supported; in particular, there is no ongoing work to ensure that this architecture still works. Should someone decide they wish to revive this architecture then the code is still available."
4308 msgstr ""
4309
4310 #. type: item
4311 #: guix-git/doc/guix.texi:527
4312 #, no-wrap
4313 msgid "powerpc64le-linux"
4314 msgstr ""
4315
4316 #. type: table
4317 #: guix-git/doc/guix.texi:537
4318 msgid "little-endian 64-bit Power ISA processors, Linux-Libre kernel. This includes POWER9 systems such as the @uref{https://www.fsf.org/news/talos-ii-mainboard-and-talos-ii-lite-mainboard-now-fsf-certified-to-respect-your-freedom, RYF Talos II mainboard}. This platform is available as a \"technology preview\": although it is supported, substitutes are not yet available from the build farm (@pxref{Substitutes}), and some packages may fail to build (@pxref{Tracking Bugs and Patches}). That said, the Guix community is actively working on improving this support, and now is a great time to try it and get involved!"
4319 msgstr ""
4320
4321 #. type: Plain text
4322 #: guix-git/doc/guix.texi:547
4323 msgid "With Guix@tie{}System, you @emph{declare} all aspects of the operating system configuration and Guix takes care of instantiating the configuration in a transactional, reproducible, and stateless fashion (@pxref{System Configuration}). Guix System uses the Linux-libre kernel, the Shepherd initialization system (@pxref{Introduction,,, shepherd, The GNU Shepherd Manual}), the well-known GNU utilities and tool chain, as well as the graphical environment or system services of your choice."
4324 msgstr ""
4325
4326 #. type: Plain text
4327 #: guix-git/doc/guix.texi:550
4328 msgid "Guix System is available on all the above platforms except @code{mips64el-linux} and @code{powerpc64le-linux}."
4329 msgstr ""
4330
4331 #. type: Plain text
4332 #: guix-git/doc/guix.texi:554
4333 msgid "For information on porting to other architectures or kernels, @pxref{Porting}."
4334 msgstr ""
4335
4336 #. type: Plain text
4337 #: guix-git/doc/guix.texi:557
4338 msgid "Building this distribution is a cooperative effort, and you are invited to join! @xref{Contributing}, for information about how you can help."
4339 msgstr ""
4340
4341 #. type: cindex
4342 #: guix-git/doc/guix.texi:563
4343 #, no-wrap
4344 msgid "installing Guix"
4345 msgstr ""
4346
4347 #. type: quotation
4348 #: guix-git/doc/guix.texi:575
4349 msgid "We recommend the use of this @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, shell installer script} to install Guix on top of a running GNU/Linux system, thereafter called a @dfn{foreign distro}.@footnote{This section is concerned with the installation of the package manager, which can be done on top of a running GNU/Linux system. If, instead, you want to install the complete GNU operating system, @pxref{System Installation}.} The script automates the download, installation, and initial configuration of Guix. It should be run as the root user."
4350 msgstr ""
4351
4352 #. type: cindex
4353 #: guix-git/doc/guix.texi:577 guix-git/doc/guix.texi:1780
4354 #, no-wrap
4355 msgid "foreign distro"
4356 msgstr ""
4357
4358 #. type: cindex
4359 #: guix-git/doc/guix.texi:578
4360 #, no-wrap
4361 msgid "directories related to foreign distro"
4362 msgstr ""
4363
4364 #. type: Plain text
4365 #: guix-git/doc/guix.texi:583
4366 msgid "When installed on a foreign distro, GNU@tie{}Guix complements the available tools without interference. Its data lives exclusively in two directories, usually @file{/gnu/store} and @file{/var/guix}; other files on your system, such as @file{/etc}, are left untouched."
4367 msgstr ""
4368
4369 #. type: Plain text
4370 #: guix-git/doc/guix.texi:586
4371 msgid "Once installed, Guix can be updated by running @command{guix pull} (@pxref{Invoking guix pull})."
4372 msgstr ""
4373
4374 #. type: Plain text
4375 #: guix-git/doc/guix.texi:591
4376 msgid "If you prefer to perform the installation steps manually or want to tweak them, you may find the following subsections useful. They describe the software requirements of Guix, as well as how to install it manually and get ready to use it."
4377 msgstr ""
4378
4379 #. type: cindex
4380 #: guix-git/doc/guix.texi:605
4381 #, no-wrap
4382 msgid "installing Guix from binaries"
4383 msgstr ""
4384
4385 #. type: cindex
4386 #: guix-git/doc/guix.texi:606
4387 #, no-wrap
4388 msgid "installer script"
4389 msgstr ""
4390
4391 #. type: Plain text
4392 #: guix-git/doc/guix.texi:612
4393 msgid "This section describes how to install Guix on an arbitrary system from a self-contained tarball providing binaries for Guix and for all its dependencies. This is often quicker than installing from source, which is described in the next sections. The only requirement is to have GNU@tie{}tar and Xz."
4394 msgstr ""
4395
4396 #. type: quotation
4397 #: guix-git/doc/guix.texi:620
4398 msgid "We recommend the use of this @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, shell installer script}. The script automates the download, installation, and initial configuration steps described below. It should be run as the root user. As root, you can thus run this:"
4399 msgstr ""
4400
4401 #. type: example
4402 #: guix-git/doc/guix.texi:626
4403 #, no-wrap
4404 msgid ""
4405 "cd /tmp\n"
4406 "wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh\n"
4407 "chmod +x guix-install.sh\n"
4408 "./guix-install.sh\n"
4409 msgstr ""
4410
4411 #. type: quotation
4412 #: guix-git/doc/guix.texi:630
4413 msgid "When you're done, @pxref{Application Setup} for extra configuration you might need, and @ref{Getting Started} for your first steps!"
4414 msgstr ""
4415
4416 #. type: Plain text
4417 #: guix-git/doc/guix.texi:633
4418 msgid "Installing goes along these lines:"
4419 msgstr ""
4420
4421 #. type: cindex
4422 #: guix-git/doc/guix.texi:636
4423 #, no-wrap
4424 msgid "downloading Guix binary"
4425 msgstr ""
4426
4427 #. type: enumerate
4428 #: guix-git/doc/guix.texi:642
4429 msgid "Download the binary tarball from @indicateurl{@value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz}, where @code{x86_64-linux} can be replaced with @code{i686-linux} for an @code{i686} (32-bits) machine already running the kernel Linux, and so on (@pxref{GNU Distribution})."
4430 msgstr ""
4431
4432 #. type: enumerate
4433 #: guix-git/doc/guix.texi:646
4434 msgid "Make sure to download the associated @file{.sig} file and to verify the authenticity of the tarball against it, along these lines:"
4435 msgstr ""
4436
4437 #. type: example
4438 #: guix-git/doc/guix.texi:650
4439 #, no-wrap
4440 msgid ""
4441 "$ wget @value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig\n"
4442 "$ gpg --verify guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig\n"
4443 msgstr ""
4444
4445 #. type: Plain text
4446 #: guix-git/doc/guix.texi:654 guix-git/doc/guix.texi:2123
4447 msgid "If that command fails because you do not have the required public key, then run this command to import it:"
4448 msgstr ""
4449
4450 #. type: example
4451 #: guix-git/doc/guix.texi:658
4452 #, no-wrap
4453 msgid ""
4454 "$ wget '@value{OPENPGP-SIGNING-KEY-URL}' \\\n"
4455 " -qO - | gpg --import -\n"
4456 msgstr ""
4457
4458 #. type: Plain text
4459 #: guix-git/doc/guix.texi:662 guix-git/doc/guix.texi:2131
4460 msgid "and rerun the @code{gpg --verify} command."
4461 msgstr ""
4462
4463 #. type: Plain text
4464 #: guix-git/doc/guix.texi:665 guix-git/doc/guix.texi:2134
4465 msgid "Take note that a warning like ``This key is not certified with a trusted signature!'' is normal."
4466 msgstr ""
4467
4468 #. type: enumerate
4469 #: guix-git/doc/guix.texi:671
4470 msgid "Now, you need to become the @code{root} user. Depending on your distribution, you may have to run @code{su -} or @code{sudo -i}. As @code{root}, run:"
4471 msgstr ""
4472
4473 #. type: example
4474 #: guix-git/doc/guix.texi:677
4475 #, no-wrap
4476 msgid ""
4477 "# cd /tmp\n"
4478 "# tar --warning=no-timestamp -xf \\\n"
4479 " /path/to/guix-binary-@value{VERSION}.x86_64-linux.tar.xz\n"
4480 "# mv var/guix /var/ && mv gnu /\n"
4481 msgstr ""
4482
4483 #. type: enumerate
4484 #: guix-git/doc/guix.texi:682
4485 msgid "This creates @file{/gnu/store} (@pxref{The Store}) and @file{/var/guix}. The latter contains a ready-to-use profile for @code{root} (see next step)."
4486 msgstr ""
4487
4488 #. type: enumerate
4489 #: guix-git/doc/guix.texi:685
4490 msgid "Do @emph{not} unpack the tarball on a working Guix system since that would overwrite its own essential files."
4491 msgstr ""
4492
4493 #. type: enumerate
4494 #: guix-git/doc/guix.texi:695
4495 msgid "The @option{--warning=no-timestamp} option makes sure GNU@tie{}tar does not emit warnings about ``implausibly old time stamps'' (such warnings were triggered by GNU@tie{}tar 1.26 and older; recent versions are fine). They stem from the fact that all the files in the archive have their modification time set to 1 (which means January 1st, 1970). This is done on purpose to make sure the archive content is independent of its creation time, thus making it reproducible."
4496 msgstr ""
4497
4498 #. type: enumerate
4499 #: guix-git/doc/guix.texi:699
4500 msgid "Make the profile available under @file{~root/.config/guix/current}, which is where @command{guix pull} will install updates (@pxref{Invoking guix pull}):"
4501 msgstr ""
4502
4503 #. type: example
4504 #: guix-git/doc/guix.texi:704
4505 #, no-wrap
4506 msgid ""
4507 "# mkdir -p ~root/.config/guix\n"
4508 "# ln -sf /var/guix/profiles/per-user/root/current-guix \\\n"
4509 " ~root/.config/guix/current\n"
4510 msgstr ""
4511
4512 #. type: enumerate
4513 #: guix-git/doc/guix.texi:708
4514 msgid "Source @file{etc/profile} to augment @env{PATH} and other relevant environment variables:"
4515 msgstr ""
4516
4517 #. type: example
4518 #: guix-git/doc/guix.texi:712
4519 #, no-wrap
4520 msgid ""
4521 "# GUIX_PROFILE=\"`echo ~root`/.config/guix/current\" ; \\\n"
4522 " source $GUIX_PROFILE/etc/profile\n"
4523 msgstr ""
4524
4525 #. type: enumerate
4526 #: guix-git/doc/guix.texi:717
4527 msgid "Create the group and user accounts for build users as explained below (@pxref{Build Environment Setup})."
4528 msgstr ""
4529
4530 #. type: enumerate
4531 #: guix-git/doc/guix.texi:720
4532 msgid "Run the daemon, and set it to automatically start on boot."
4533 msgstr ""
4534
4535 #. type: enumerate
4536 #: guix-git/doc/guix.texi:723
4537 msgid "If your host distro uses the systemd init system, this can be achieved with these commands:"
4538 msgstr ""
4539
4540 #. type: example
4541 #: guix-git/doc/guix.texi:736
4542 #, no-wrap
4543 msgid ""
4544 "# cp ~root/.config/guix/current/lib/systemd/system/gnu-store.mount \\\n"
4545 " ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \\\n"
4546 " /etc/systemd/system/\n"
4547 "# systemctl enable --now gnu-store.mount guix-daemon\n"
4548 msgstr ""
4549
4550 #. type: itemize
4551 #: guix-git/doc/guix.texi:739 guix-git/doc/guix.texi:12820
4552 msgid "If your host distro uses the Upstart init system:"
4553 msgstr ""
4554
4555 #. type: example
4556 #: guix-git/doc/guix.texi:745
4557 #, no-wrap
4558 msgid ""
4559 "# initctl reload-configuration\n"
4560 "# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \\\n"
4561 " /etc/init/\n"
4562 "# start guix-daemon\n"
4563 msgstr ""
4564
4565 #. type: enumerate
4566 #: guix-git/doc/guix.texi:748
4567 msgid "Otherwise, you can still start the daemon manually with:"
4568 msgstr ""
4569
4570 #. type: example
4571 #: guix-git/doc/guix.texi:752
4572 #, no-wrap
4573 msgid ""
4574 "# ~root/.config/guix/current/bin/guix-daemon \\\n"
4575 " --build-users-group=guixbuild\n"
4576 msgstr ""
4577
4578 #. type: enumerate
4579 #: guix-git/doc/guix.texi:757
4580 msgid "Make the @command{guix} command available to other users on the machine, for instance with:"
4581 msgstr ""
4582
4583 #. type: example
4584 #: guix-git/doc/guix.texi:762
4585 #, no-wrap
4586 msgid ""
4587 "# mkdir -p /usr/local/bin\n"
4588 "# cd /usr/local/bin\n"
4589 "# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix\n"
4590 msgstr ""
4591
4592 #. type: enumerate
4593 #: guix-git/doc/guix.texi:766
4594 msgid "It is also a good idea to make the Info version of this manual available there:"
4595 msgstr ""
4596
4597 #. type: example
4598 #: guix-git/doc/guix.texi:772
4599 #, no-wrap
4600 msgid ""
4601 "# mkdir -p /usr/local/share/info\n"
4602 "# cd /usr/local/share/info\n"
4603 "# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ;\n"
4604 " do ln -s $i ; done\n"
4605 msgstr ""
4606
4607 #. type: enumerate
4608 #: guix-git/doc/guix.texi:778
4609 msgid "That way, assuming @file{/usr/local/share/info} is in the search path, running @command{info guix} will open this manual (@pxref{Other Info Directories,,, texinfo, GNU Texinfo}, for more details on changing the Info search path)."
4610 msgstr ""
4611
4612 #. type: cindex
4613 #: guix-git/doc/guix.texi:780 guix-git/doc/guix.texi:3747
4614 #: guix-git/doc/guix.texi:15454
4615 #, no-wrap
4616 msgid "substitutes, authorization thereof"
4617 msgstr ""
4618
4619 #. type: enumerate
4620 #: guix-git/doc/guix.texi:783
4621 msgid "To use substitutes from @code{@value{SUBSTITUTE-SERVER}} or one of its mirrors (@pxref{Substitutes}), authorize them:"
4622 msgstr ""
4623
4624 #. type: example
4625 #: guix-git/doc/guix.texi:787
4626 #, no-wrap
4627 msgid ""
4628 "# guix archive --authorize < \\\n"
4629 " ~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER}.pub\n"
4630 msgstr ""
4631
4632 #. type: enumerate
4633 #: guix-git/doc/guix.texi:792
4634 msgid "Each user may need to perform a few additional steps to make their Guix environment ready for use, @pxref{Application Setup}."
4635 msgstr ""
4636
4637 #. type: Plain text
4638 #: guix-git/doc/guix.texi:795
4639 msgid "Voilà, the installation is complete!"
4640 msgstr ""
4641
4642 #. type: Plain text
4643 #: guix-git/doc/guix.texi:798
4644 msgid "You can confirm that Guix is working by installing a sample package into the root profile:"
4645 msgstr ""
4646
4647 #. type: example
4648 #: guix-git/doc/guix.texi:801
4649 #, no-wrap
4650 msgid "# guix install hello\n"
4651 msgstr ""
4652
4653 #. type: Plain text
4654 #: guix-git/doc/guix.texi:805
4655 msgid "The binary installation tarball can be (re)produced and verified simply by running the following command in the Guix source tree:"
4656 msgstr ""
4657
4658 #. type: example
4659 #: guix-git/doc/guix.texi:808
4660 #, no-wrap
4661 msgid "make guix-binary.@var{system}.tar.xz\n"
4662 msgstr ""
4663
4664 #. type: Plain text
4665 #: guix-git/doc/guix.texi:812
4666 msgid "...@: which, in turn, runs:"
4667 msgstr ""
4668
4669 #. type: example
4670 #: guix-git/doc/guix.texi:816
4671 #, no-wrap
4672 msgid ""
4673 "guix pack -s @var{system} --localstatedir \\\n"
4674 " --profile-name=current-guix guix\n"
4675 msgstr ""
4676
4677 #. type: Plain text
4678 #: guix-git/doc/guix.texi:819
4679 msgid "@xref{Invoking guix pack}, for more info on this handy tool."
4680 msgstr ""
4681
4682 #. type: Plain text
4683 #: guix-git/doc/guix.texi:827
4684 msgid "This section lists requirements when building Guix from source. The build procedure for Guix is the same as for other GNU software, and is not covered here. Please see the files @file{README} and @file{INSTALL} in the Guix source tree for additional details."
4685 msgstr ""
4686
4687 #. type: cindex
4688 #: guix-git/doc/guix.texi:828
4689 #, no-wrap
4690 msgid "official website"
4691 msgstr ""
4692
4693 #. type: Plain text
4694 #: guix-git/doc/guix.texi:831
4695 msgid "GNU Guix is available for download from its website at @url{https://www.gnu.org/software/guix/}."
4696 msgstr ""
4697
4698 #. type: Plain text
4699 #: guix-git/doc/guix.texi:833
4700 msgid "GNU Guix depends on the following packages:"
4701 msgstr ""
4702
4703 #. type: item
4704 #: guix-git/doc/guix.texi:835
4705 #, no-wrap
4706 msgid "@url{https://gnu.org/software/guile/, GNU Guile}, version 3.0.x or"
4707 msgstr ""
4708
4709 #. type: itemize
4710 #: guix-git/doc/guix.texi:837
4711 msgid "2.2.x;"
4712 msgstr ""
4713
4714 #. type: item
4715 #: guix-git/doc/guix.texi:837
4716 #, no-wrap
4717 msgid "@url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, version"
4718 msgstr ""
4719
4720 #. type: itemize
4721 #: guix-git/doc/guix.texi:839
4722 msgid "0.1.0 or later;"
4723 msgstr ""
4724
4725 #. type: itemize
4726 #: guix-git/doc/guix.texi:843
4727 msgid "@uref{https://gnutls.org/, GnuTLS}, specifically its Guile bindings (@pxref{Guile Preparations, how to install the GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile});"
4728 msgstr ""
4729
4730 #. type: itemize
4731 #: guix-git/doc/guix.texi:846
4732 msgid "@uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3}, version 0.1.0 or later;"
4733 msgstr ""
4734
4735 #. type: item
4736 #: guix-git/doc/guix.texi:846
4737 #, no-wrap
4738 msgid "@uref{https://notabug.org/guile-zlib/guile-zlib, Guile-zlib},"
4739 msgstr ""
4740
4741 #. type: itemize
4742 #: guix-git/doc/guix.texi:848
4743 msgid "version 0.1.0 or later;"
4744 msgstr ""
4745
4746 #. type: item
4747 #: guix-git/doc/guix.texi:848
4748 #, no-wrap
4749 msgid "@uref{https://notabug.org/guile-lzlib/guile-lzlib, Guile-lzlib};"
4750 msgstr ""
4751
4752 #. type: item
4753 #: guix-git/doc/guix.texi:849
4754 #, no-wrap
4755 msgid "@uref{https://www.nongnu.org/guile-avahi/, Guile-Avahi};"
4756 msgstr ""
4757
4758 #. type: itemize
4759 #: guix-git/doc/guix.texi:854
4760 msgid "@uref{https://gitlab.com/guile-git/guile-git, Guile-Git}, version 0.3.0 or later;"
4761 msgstr ""
4762
4763 #. type: item
4764 #: guix-git/doc/guix.texi:854
4765 #, no-wrap
4766 msgid "@uref{https://savannah.nongnu.org/projects/guile-json/, Guile-JSON}"
4767 msgstr ""
4768
4769 #. type: itemize
4770 #: guix-git/doc/guix.texi:856
4771 msgid "4.3.0 or later;"
4772 msgstr ""
4773
4774 #. type: item
4775 #: guix-git/doc/guix.texi:856
4776 #, no-wrap
4777 msgid "@url{https://www.gnu.org/software/make/, GNU Make}."
4778 msgstr ""
4779
4780 #. type: Plain text
4781 #: guix-git/doc/guix.texi:860
4782 msgid "The following dependencies are optional:"
4783 msgstr ""
4784
4785 #. type: itemize
4786 #: guix-git/doc/guix.texi:868
4787 msgid "Support for build offloading (@pxref{Daemon Offload Setup}) and @command{guix copy} (@pxref{Invoking guix copy}) depends on @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH}, version 0.13.0 or later."
4788 msgstr ""
4789
4790 #. type: itemize
4791 #: guix-git/doc/guix.texi:873
4792 msgid "@uref{https://notabug.org/guile-zstd/guile-zstd, Guile-zstd}, for zstd compression and decompression in @command{guix publish} and for substitutes (@pxref{Invoking guix publish})."
4793 msgstr ""
4794
4795 #. type: itemize
4796 #: guix-git/doc/guix.texi:877
4797 msgid "@uref{https://ngyro.com/software/guile-semver.html, Guile-Semver} for the @code{crate} importer (@pxref{Invoking guix import})."
4798 msgstr ""
4799
4800 #. type: itemize
4801 #: guix-git/doc/guix.texi:882
4802 msgid "@uref{https://www.nongnu.org/guile-lib/doc/ref/htmlprag/, Guile-Lib} for the @code{go} importer (@pxref{Invoking guix import}) and for some of the ``updaters'' (@pxref{Invoking guix refresh})."
4803 msgstr ""
4804
4805 #. type: itemize
4806 #: guix-git/doc/guix.texi:886
4807 msgid "When @url{http://www.bzip.org, libbz2} is available, @command{guix-daemon} can use it to compress build logs."
4808 msgstr ""
4809
4810 #. type: Plain text
4811 #: guix-git/doc/guix.texi:890
4812 msgid "Unless @option{--disable-daemon} was passed to @command{configure}, the following packages are also needed:"
4813 msgstr ""
4814
4815 #. type: item
4816 #: guix-git/doc/guix.texi:892
4817 #, no-wrap
4818 msgid "@url{https://gnupg.org/, GNU libgcrypt};"
4819 msgstr ""
4820
4821 #. type: item
4822 #: guix-git/doc/guix.texi:893
4823 #, no-wrap
4824 msgid "@url{https://sqlite.org, SQLite 3};"
4825 msgstr ""
4826
4827 #. type: item
4828 #: guix-git/doc/guix.texi:894
4829 #, no-wrap
4830 msgid "@url{https://gcc.gnu.org, GCC's g++}, with support for the"
4831 msgstr ""
4832
4833 #. type: itemize
4834 #: guix-git/doc/guix.texi:896
4835 msgid "C++11 standard."
4836 msgstr ""
4837
4838 #. type: cindex
4839 #: guix-git/doc/guix.texi:898
4840 #, no-wrap
4841 msgid "state directory"
4842 msgstr ""
4843
4844 #. type: Plain text
4845 #: guix-git/doc/guix.texi:907
4846 msgid "When configuring Guix on a system that already has a Guix installation, be sure to specify the same state directory as the existing installation using the @option{--localstatedir} option of the @command{configure} script (@pxref{Directory Variables, @code{localstatedir},, standards, GNU Coding Standards}). Usually, this @var{localstatedir} option is set to the value @file{/var}. The @command{configure} script protects against unintended misconfiguration of @var{localstatedir} so you do not inadvertently corrupt your store (@pxref{The Store})."
4847 msgstr ""
4848
4849 #. type: cindex
4850 #: guix-git/doc/guix.texi:911
4851 #, no-wrap
4852 msgid "test suite"
4853 msgstr ""
4854
4855 #. type: Plain text
4856 #: guix-git/doc/guix.texi:917
4857 msgid "After a successful @command{configure} and @code{make} run, it is a good idea to run the test suite. It can help catch issues with the setup or environment, or bugs in Guix itself---and really, reporting test failures is a good way to help improve the software. To run the test suite, type:"
4858 msgstr ""
4859
4860 #. type: example
4861 #: guix-git/doc/guix.texi:920
4862 #, no-wrap
4863 msgid "make check\n"
4864 msgstr ""
4865
4866 #. type: Plain text
4867 #: guix-git/doc/guix.texi:927
4868 msgid "Test cases can run in parallel: you can use the @code{-j} option of GNU@tie{}make to speed things up. The first run may take a few minutes on a recent machine; subsequent runs will be faster because the store that is created for test purposes will already have various things in cache."
4869 msgstr ""
4870
4871 #. type: Plain text
4872 #: guix-git/doc/guix.texi:930
4873 msgid "It is also possible to run a subset of the tests by defining the @code{TESTS} makefile variable as in this example:"
4874 msgstr ""
4875
4876 #. type: example
4877 #: guix-git/doc/guix.texi:933
4878 #, no-wrap
4879 msgid "make check TESTS=\"tests/store.scm tests/cpio.scm\"\n"
4880 msgstr ""
4881
4882 #. type: Plain text
4883 #: guix-git/doc/guix.texi:938
4884 msgid "By default, tests results are displayed at a file level. In order to see the details of every individual test cases, it is possible to define the @code{SCM_LOG_DRIVER_FLAGS} makefile variable as in this example:"
4885 msgstr ""
4886
4887 #. type: example
4888 #: guix-git/doc/guix.texi:941
4889 #, no-wrap
4890 msgid "make check TESTS=\"tests/base64.scm\" SCM_LOG_DRIVER_FLAGS=\"--brief=no\"\n"
4891 msgstr ""
4892
4893 #. type: Plain text
4894 #: guix-git/doc/guix.texi:949
4895 msgid "The underlying SRFI 64 custom Automake test driver used for the 'check' test suite (located at @file{build-aux/test-driver.scm}) also allows selecting which test cases to run at a finer level, via its @option{--select} and @option{--exclude} options. Here's an example, to run all the test cases from the @file{tests/packages.scm} test file whose names start with ``transaction-upgrade-entry'':"
4896 msgstr ""
4897
4898 #. type: example
4899 #: guix-git/doc/guix.texi:953
4900 #, no-wrap
4901 msgid ""
4902 "export SCM_LOG_DRIVER_FLAGS=\"--select=^transaction-upgrade-entry\"\n"
4903 "make check TESTS=\"tests/packages.scm\"\n"
4904 msgstr ""
4905
4906 #. type: Plain text
4907 #: guix-git/doc/guix.texi:959
4908 msgid "Those wishing to inspect the results of failed tests directly from the command line can add the @option{--errors-only=yes} option to the @code{SCM_LOG_DRIVER_FLAGS} makefile variable and set the @code{VERBOSE} Automake makefile variable, as in:"
4909 msgstr ""
4910
4911 #. type: example
4912 #: guix-git/doc/guix.texi:962
4913 #, no-wrap
4914 msgid "make check SCM_LOG_DRIVER_FLAGS=\"--brief=no --errors-only=yes\" VERBOSE=1\n"
4915 msgstr ""
4916
4917 #. type: Plain text
4918 #: guix-git/doc/guix.texi:967
4919 msgid "The @option{--show-duration=yes} option can be used to print the duration of the individual test cases, when used in combination with @option{--brief=no}:"
4920 msgstr ""
4921
4922 #. type: example
4923 #: guix-git/doc/guix.texi:970
4924 #, no-wrap
4925 msgid "make check SCM_LOG_DRIVER_FLAGS=\"--brief=no --show-duration=yes\"\n"
4926 msgstr ""
4927
4928 #. type: Plain text
4929 #: guix-git/doc/guix.texi:974
4930 msgid "@xref{Parallel Test Harness,,,automake,GNU Automake} for more information about the Automake Parallel Test Harness."
4931 msgstr ""
4932
4933 #. type: Plain text
4934 #: guix-git/doc/guix.texi:979
4935 msgid "Upon failure, please email @email{bug-guix@@gnu.org} and attach the @file{test-suite.log} file. Please specify the Guix version being used as well as version numbers of the dependencies (@pxref{Requirements}) in your message."
4936 msgstr ""
4937
4938 #. type: Plain text
4939 #: guix-git/doc/guix.texi:983
4940 msgid "Guix also comes with a whole-system test suite that tests complete Guix System instances. It can only run on systems where Guix is already installed, using:"
4941 msgstr ""
4942
4943 #. type: example
4944 #: guix-git/doc/guix.texi:986
4945 #, no-wrap
4946 msgid "make check-system\n"
4947 msgstr ""
4948
4949 #. type: Plain text
4950 #: guix-git/doc/guix.texi:990
4951 msgid "or, again, by defining @code{TESTS} to select a subset of tests to run:"
4952 msgstr ""
4953
4954 #. type: example
4955 #: guix-git/doc/guix.texi:993
4956 #, no-wrap
4957 msgid "make check-system TESTS=\"basic mcron\"\n"
4958 msgstr ""
4959
4960 #. type: Plain text
4961 #: guix-git/doc/guix.texi:1001
4962 msgid "These system tests are defined in the @code{(gnu tests @dots{})} modules. They work by running the operating systems under test with lightweight instrumentation in a virtual machine (VM). They can be computationally intensive or rather cheap, depending on whether substitutes are available for their dependencies (@pxref{Substitutes}). Some of them require a lot of storage space to hold VM images."
4963 msgstr ""
4964
4965 #. type: Plain text
4966 #: guix-git/doc/guix.texi:1004
4967 msgid "Again in case of test failures, please send @email{bug-guix@@gnu.org} all the details."
4968 msgstr ""
4969
4970 #. type: cindex
4971 #: guix-git/doc/guix.texi:1008
4972 #, no-wrap
4973 msgid "daemon"
4974 msgstr ""
4975
4976 #. type: Plain text
4977 #: guix-git/doc/guix.texi:1016
4978 msgid "Operations such as building a package or running the garbage collector are all performed by a specialized process, the @dfn{build daemon}, on behalf of clients. Only the daemon may access the store and its associated database. Thus, any operation that manipulates the store goes through the daemon. For instance, command-line tools such as @command{guix package} and @command{guix build} communicate with the daemon (@i{via} remote procedure calls) to instruct it what to do."
4979 msgstr ""
4980
4981 #. type: Plain text
4982 #: guix-git/doc/guix.texi:1020
4983 msgid "The following sections explain how to prepare the build daemon's environment. See also @ref{Substitutes}, for information on how to allow the daemon to download pre-built binaries."
4984 msgstr ""
4985
4986 #. type: cindex
4987 #: guix-git/doc/guix.texi:1030 guix-git/doc/guix.texi:1492
4988 #, no-wrap
4989 msgid "build environment"
4990 msgstr ""
4991
4992 #. type: Plain text
4993 #: guix-git/doc/guix.texi:1038
4994 msgid "In a standard multi-user setup, Guix and its daemon---the @command{guix-daemon} program---are installed by the system administrator; @file{/gnu/store} is owned by @code{root} and @command{guix-daemon} runs as @code{root}. Unprivileged users may use Guix tools to build packages or otherwise access the store, and the daemon will do it on their behalf, ensuring that the store is kept in a consistent state, and allowing built packages to be shared among users."
4995 msgstr ""
4996
4997 #. type: cindex
4998 #: guix-git/doc/guix.texi:1039
4999 #, no-wrap
5000 msgid "build users"
5001 msgstr ""
5002
5003 #. type: Plain text
5004 #: guix-git/doc/guix.texi:1050
5005 msgid "When @command{guix-daemon} runs as @code{root}, you may not want package build processes themselves to run as @code{root} too, for obvious security reasons. To avoid that, a special pool of @dfn{build users} should be created for use by build processes started by the daemon. These build users need not have a shell and a home directory: they will just be used when the daemon drops @code{root} privileges in build processes. Having several such users allows the daemon to launch distinct build processes under separate UIDs, which guarantees that they do not interfere with each other---an essential feature since builds are regarded as pure functions (@pxref{Introduction})."
5006 msgstr ""
5007
5008 #. type: Plain text
5009 #: guix-git/doc/guix.texi:1053
5010 msgid "On a GNU/Linux system, a build user pool may be created like this (using Bash syntax and the @code{shadow} commands):"
5011 msgstr ""
5012
5013 #. type: example
5014 #: guix-git/doc/guix.texi:1065
5015 #, no-wrap
5016 msgid ""
5017 "# groupadd --system guixbuild\n"
5018 "# for i in $(seq -w 1 10);\n"
5019 " do\n"
5020 " useradd -g guixbuild -G guixbuild \\\n"
5021 " -d /var/empty -s $(which nologin) \\\n"
5022 " -c \"Guix build user $i\" --system \\\n"
5023 " guixbuilder$i;\n"
5024 " done\n"
5025 msgstr ""
5026
5027 #. type: Plain text
5028 #: guix-git/doc/guix.texi:1075
5029 msgid "The number of build users determines how many build jobs may run in parallel, as specified by the @option{--max-jobs} option (@pxref{Invoking guix-daemon, @option{--max-jobs}}). To use @command{guix system vm} and related commands, you may need to add the build users to the @code{kvm} group so they can access @file{/dev/kvm}, using @code{-G guixbuild,kvm} instead of @code{-G guixbuild} (@pxref{Invoking guix system})."
5030 msgstr ""
5031
5032 #. type: Plain text
5033 #: guix-git/doc/guix.texi:1084
5034 msgid "The @code{guix-daemon} program may then be run as @code{root} with the following command@footnote{If your machine uses the systemd init system, dropping the @file{@var{prefix}/lib/systemd/system/guix-daemon.service} file in @file{/etc/systemd/system} will ensure that @command{guix-daemon} is automatically started. Similarly, if your machine uses the Upstart init system, drop the @file{@var{prefix}/lib/upstart/system/guix-daemon.conf} file in @file{/etc/init}.}:"
5035 msgstr ""
5036
5037 #. type: example
5038 #: guix-git/doc/guix.texi:1087 guix-git/doc/guix.texi:1485
5039 #, no-wrap
5040 msgid "# guix-daemon --build-users-group=guixbuild\n"
5041 msgstr ""
5042
5043 #. type: cindex
5044 #: guix-git/doc/guix.texi:1089 guix-git/doc/guix.texi:1490
5045 #, no-wrap
5046 msgid "chroot"
5047 msgstr ""
5048
5049 #. type: Plain text
5050 #: guix-git/doc/guix.texi:1094
5051 msgid "This way, the daemon starts build processes in a chroot, under one of the @code{guixbuilder} users. On GNU/Linux, by default, the chroot environment contains nothing but:"
5052 msgstr ""
5053
5054 #. type: itemize
5055 #: guix-git/doc/guix.texi:1102
5056 msgid "a minimal @code{/dev} directory, created mostly independently from the host @code{/dev}@footnote{``Mostly'', because while the set of files that appear in the chroot's @code{/dev} is fixed, most of these files can only be created if the host has them.};"
5057 msgstr ""
5058
5059 #. type: itemize
5060 #: guix-git/doc/guix.texi:1106
5061 msgid "the @code{/proc} directory; it only shows the processes of the container since a separate PID name space is used;"
5062 msgstr ""
5063
5064 #. type: itemize
5065 #: guix-git/doc/guix.texi:1110
5066 msgid "@file{/etc/passwd} with an entry for the current user and an entry for user @file{nobody};"
5067 msgstr ""
5068
5069 #. type: itemize
5070 #: guix-git/doc/guix.texi:1113
5071 msgid "@file{/etc/group} with an entry for the user's group;"
5072 msgstr ""
5073
5074 #. type: itemize
5075 #: guix-git/doc/guix.texi:1117
5076 msgid "@file{/etc/hosts} with an entry that maps @code{localhost} to @code{127.0.0.1};"
5077 msgstr ""
5078
5079 #. type: itemize
5080 #: guix-git/doc/guix.texi:1120
5081 msgid "a writable @file{/tmp} directory."
5082 msgstr ""
5083
5084 #. type: Plain text
5085 #: guix-git/doc/guix.texi:1129
5086 msgid "You can influence the directory where the daemon stores build trees @i{via} the @env{TMPDIR} environment variable. However, the build tree within the chroot is always called @file{/tmp/guix-build-@var{name}.drv-0}, where @var{name} is the derivation name---e.g., @code{coreutils-8.24}. This way, the value of @env{TMPDIR} does not leak inside build environments, which avoids discrepancies in cases where build processes capture the name of their build tree."
5087 msgstr ""
5088
5089 #. type: vindex
5090 #: guix-git/doc/guix.texi:1130 guix-git/doc/guix.texi:3952
5091 #, no-wrap
5092 msgid "http_proxy"
5093 msgstr ""
5094
5095 #. type: vindex
5096 #: guix-git/doc/guix.texi:1131 guix-git/doc/guix.texi:3953
5097 #, no-wrap
5098 msgid "https_proxy"
5099 msgstr ""
5100
5101 #. type: Plain text
5102 #: guix-git/doc/guix.texi:1136
5103 msgid "The daemon also honors the @env{http_proxy} and @env{https_proxy} environment variables for HTTP and HTTPS downloads it performs, be it for fixed-output derivations (@pxref{Derivations}) or for substitutes (@pxref{Substitutes})."
5104 msgstr ""
5105
5106 #. type: Plain text
5107 #: guix-git/doc/guix.texi:1144
5108 msgid "If you are installing Guix as an unprivileged user, it is still possible to run @command{guix-daemon} provided you pass @option{--disable-chroot}. However, build processes will not be isolated from one another, and not from the rest of the system. Thus, build processes may interfere with each other, and may access programs, libraries, and other files available on the system---making it much harder to view them as @emph{pure} functions."
5109 msgstr ""
5110
5111 #. type: subsection
5112 #: guix-git/doc/guix.texi:1147
5113 #, no-wrap
5114 msgid "Using the Offload Facility"
5115 msgstr ""
5116
5117 #. type: cindex
5118 #: guix-git/doc/guix.texi:1149 guix-git/doc/guix.texi:1551
5119 #, no-wrap
5120 msgid "offloading"
5121 msgstr ""
5122
5123 #. type: cindex
5124 #: guix-git/doc/guix.texi:1150
5125 #, no-wrap
5126 msgid "build hook"
5127 msgstr ""
5128
5129 #. type: Plain text
5130 #: guix-git/doc/guix.texi:1169
5131 msgid "When desired, the build daemon can @dfn{offload} derivation builds to other machines running Guix, using the @code{offload} @dfn{build hook}@footnote{This feature is available only when @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH} is present.}. When that feature is enabled, a list of user-specified build machines is read from @file{/etc/guix/machines.scm}; every time a build is requested, for instance via @code{guix build}, the daemon attempts to offload it to one of the machines that satisfy the constraints of the derivation, in particular its system types---e.g., @code{x86_64-linux}. A single machine can have multiple system types, either because its architecture natively supports it, via emulation (@pxref{transparent-emulation-qemu, Transparent Emulation with QEMU}), or both. Missing prerequisites for the build are copied over SSH to the target machine, which then proceeds with the build; upon success the output(s) of the build are copied back to the initial machine. The offload facility comes with a basic scheduler that attempts to select the best machine. The best machine is chosen among the available machines based on criteria such as:"
5132 msgstr ""
5133
5134 #. type: enumerate
5135 #: guix-git/doc/guix.texi:1175
5136 msgid "The availability of a build slot. A build machine can have as many build slots (connections) as the value of the @code{parallel-builds} field of its @code{build-machine} object."
5137 msgstr ""
5138
5139 #. type: enumerate
5140 #: guix-git/doc/guix.texi:1179
5141 msgid "Its relative speed, as defined via the @code{speed} field of its @code{build-machine} object."
5142 msgstr ""
5143
5144 #. type: enumerate
5145 #: guix-git/doc/guix.texi:1184
5146 msgid "Its load. The normalized machine load must be lower than a threshold value, configurable via the @code{overload-threshold} field of its @code{build-machine} object."
5147 msgstr ""
5148
5149 #. type: enumerate
5150 #: guix-git/doc/guix.texi:1187
5151 msgid "Disk space availability. More than a 100 MiB must be available."
5152 msgstr ""
5153
5154 #. type: Plain text
5155 #: guix-git/doc/guix.texi:1190
5156 msgid "The @file{/etc/guix/machines.scm} file typically looks like this:"
5157 msgstr ""
5158
5159 #. type: lisp
5160 #: guix-git/doc/guix.texi:1198
5161 #, no-wrap
5162 msgid ""
5163 "(list (build-machine\n"
5164 " (name \"eightysix.example.org\")\n"
5165 " (systems (list \"x86_64-linux\" \"i686-linux\"))\n"
5166 " (host-key \"ssh-ed25519 AAAAC3Nza@dots{}\")\n"
5167 " (user \"bob\")\n"
5168 " (speed 2.)) ;incredibly fast!\n"
5169 "\n"
5170 msgstr ""
5171
5172 #. type: lisp
5173 #: guix-git/doc/guix.texi:1207
5174 #, no-wrap
5175 msgid ""
5176 " (build-machine\n"
5177 " (name \"armeight.example.org\")\n"
5178 " (systems (list \"aarch64-linux\"))\n"
5179 " (host-key \"ssh-rsa AAAAB3Nza@dots{}\")\n"
5180 " (user \"alice\")\n"
5181 " (private-key\n"
5182 " (string-append (getenv \"HOME\")\n"
5183 " \"/.ssh/identity-for-guix\"))))\n"
5184 msgstr ""
5185
5186 #. type: Plain text
5187 #: guix-git/doc/guix.texi:1213
5188 msgid "In the example above we specify a list of two build machines, one for the @code{x86_64} and @code{i686} architectures and one for the @code{aarch64} architecture."
5189 msgstr ""
5190
5191 #. type: Plain text
5192 #: guix-git/doc/guix.texi:1222
5193 msgid "In fact, this file is---not surprisingly!---a Scheme file that is evaluated when the @code{offload} hook is started. Its return value must be a list of @code{build-machine} objects. While this example shows a fixed list of build machines, one could imagine, say, using DNS-SD to return a list of potential build machines discovered in the local network (@pxref{Introduction, Guile-Avahi,, guile-avahi, Using Avahi in Guile Scheme Programs}). The @code{build-machine} data type is detailed below."
5194 msgstr ""
5195
5196 #. type: deftp
5197 #: guix-git/doc/guix.texi:1223
5198 #, no-wrap
5199 msgid "{Data Type} build-machine"
5200 msgstr ""
5201
5202 #. type: deftp
5203 #: guix-git/doc/guix.texi:1226
5204 msgid "This data type represents build machines to which the daemon may offload builds. The important fields are:"
5205 msgstr ""
5206
5207 #. type: item
5208 #: guix-git/doc/guix.texi:1229 guix-git/doc/guix.texi:6672
5209 #: guix-git/doc/guix.texi:14420 guix-git/doc/guix.texi:14514
5210 #: guix-git/doc/guix.texi:14755 guix-git/doc/guix.texi:16704
5211 #: guix-git/doc/guix.texi:19888 guix-git/doc/guix.texi:22524
5212 #: guix-git/doc/guix.texi:23913 guix-git/doc/guix.texi:24525
5213 #: guix-git/doc/guix.texi:24877 guix-git/doc/guix.texi:24918
5214 #: guix-git/doc/guix.texi:27017 guix-git/doc/guix.texi:29286
5215 #: guix-git/doc/guix.texi:29306 guix-git/doc/guix.texi:31753
5216 #: guix-git/doc/guix.texi:31770 guix-git/doc/guix.texi:32259
5217 #: guix-git/doc/guix.texi:33991 guix-git/doc/guix.texi:34299
5218 #, no-wrap
5219 msgid "name"
5220 msgstr ""
5221
5222 #. type: table
5223 #: guix-git/doc/guix.texi:1231
5224 msgid "The host name of the remote machine."
5225 msgstr ""
5226
5227 #. type: item
5228 #: guix-git/doc/guix.texi:1232
5229 #, no-wrap
5230 msgid "systems"
5231 msgstr ""
5232
5233 #. type: table
5234 #: guix-git/doc/guix.texi:1235
5235 msgid "The system types the remote machine supports---e.g., @code{(list \"x86_64-linux\" \"i686-linux\")}."
5236 msgstr ""
5237
5238 #. type: code{#1}
5239 #: guix-git/doc/guix.texi:1236 guix-git/doc/guix.texi:16714
5240 #, no-wrap
5241 msgid "user"
5242 msgstr ""
5243
5244 #. type: table
5245 #: guix-git/doc/guix.texi:1240
5246 msgid "The user account to use when connecting to the remote machine over SSH. Note that the SSH key pair must @emph{not} be passphrase-protected, to allow non-interactive logins."
5247 msgstr ""
5248
5249 #. type: item
5250 #: guix-git/doc/guix.texi:1241
5251 #, no-wrap
5252 msgid "host-key"
5253 msgstr ""
5254
5255 #. type: table
5256 #: guix-git/doc/guix.texi:1245
5257 msgid "This must be the machine's SSH @dfn{public host key} in OpenSSH format. This is used to authenticate the machine when we connect to it. It is a long string that looks like this:"
5258 msgstr ""
5259
5260 #. type: example
5261 #: guix-git/doc/guix.texi:1248
5262 #, no-wrap
5263 msgid "ssh-ed25519 AAAAC3NzaC@dots{}mde+UhL hint@@example.org\n"
5264 msgstr ""
5265
5266 #. type: table
5267 #: guix-git/doc/guix.texi:1253
5268 msgid "If the machine is running the OpenSSH daemon, @command{sshd}, the host key can be found in a file such as @file{/etc/ssh/ssh_host_ed25519_key.pub}."
5269 msgstr ""
5270
5271 #. type: table
5272 #: guix-git/doc/guix.texi:1258
5273 msgid "If the machine is running the SSH daemon of GNU@tie{}lsh, @command{lshd}, the host key is in @file{/etc/lsh/host-key.pub} or a similar file. It can be converted to the OpenSSH format using @command{lsh-export-key} (@pxref{Converting keys,,, lsh, LSH Manual}):"
5274 msgstr ""
5275
5276 #. type: example
5277 #: guix-git/doc/guix.texi:1262
5278 #, no-wrap
5279 msgid ""
5280 "$ lsh-export-key --openssh < /etc/lsh/host-key.pub\n"
5281 "ssh-rsa AAAAB3NzaC1yc2EAAAAEOp8FoQAAAQEAs1eB46LV@dots{}\n"
5282 msgstr ""
5283
5284 #. type: deftp
5285 #: guix-git/doc/guix.texi:1267
5286 msgid "A number of optional fields may be specified:"
5287 msgstr ""
5288
5289 #. type: item
5290 #: guix-git/doc/guix.texi:1270 guix-git/doc/guix.texi:33491
5291 #, no-wrap
5292 msgid "@code{port} (default: @code{22})"
5293 msgstr ""
5294
5295 #. type: table
5296 #: guix-git/doc/guix.texi:1272
5297 msgid "Port number of SSH server on the machine."
5298 msgstr ""
5299
5300 #. type: item
5301 #: guix-git/doc/guix.texi:1273
5302 #, no-wrap
5303 msgid "@code{private-key} (default: @file{~root/.ssh/id_rsa})"
5304 msgstr ""
5305
5306 #. type: table
5307 #: guix-git/doc/guix.texi:1276
5308 msgid "The SSH private key file to use when connecting to the machine, in OpenSSH format. This key must not be protected with a passphrase."
5309 msgstr ""
5310
5311 #. type: table
5312 #: guix-git/doc/guix.texi:1279
5313 msgid "Note that the default value is the private key @emph{of the root account}. Make sure it exists if you use the default."
5314 msgstr ""
5315
5316 #. type: item
5317 #: guix-git/doc/guix.texi:1280
5318 #, no-wrap
5319 msgid "@code{compression} (default: @code{\"zlib@@openssh.com,zlib\"})"
5320 msgstr ""
5321
5322 #. type: itemx
5323 #: guix-git/doc/guix.texi:1281
5324 #, no-wrap
5325 msgid "@code{compression-level} (default: @code{3})"
5326 msgstr ""
5327
5328 #. type: table
5329 #: guix-git/doc/guix.texi:1283
5330 msgid "The SSH-level compression methods and compression level requested."
5331 msgstr ""
5332
5333 #. type: table
5334 #: guix-git/doc/guix.texi:1286
5335 msgid "Note that offloading relies on SSH compression to reduce bandwidth usage when transferring files to and from build machines."
5336 msgstr ""
5337
5338 #. type: item
5339 #: guix-git/doc/guix.texi:1287
5340 #, no-wrap
5341 msgid "@code{daemon-socket} (default: @code{\"/var/guix/daemon-socket/socket\"})"
5342 msgstr ""
5343
5344 #. type: table
5345 #: guix-git/doc/guix.texi:1290
5346 msgid "File name of the Unix-domain socket @command{guix-daemon} is listening to on that machine."
5347 msgstr ""
5348
5349 #. type: item
5350 #: guix-git/doc/guix.texi:1291
5351 #, no-wrap
5352 msgid "@code{overload-threshold} (default: @code{0.6})"
5353 msgstr ""
5354
5355 #. type: table
5356 #: guix-git/doc/guix.texi:1297
5357 msgid "The load threshold above which a potential offload machine is disregarded by the offload scheduler. The value roughly translates to the total processor usage of the build machine, ranging from 0.0 (0%) to 1.0 (100%). It can also be disabled by setting @code{overload-threshold} to @code{#f}."
5358 msgstr ""
5359
5360 #. type: item
5361 #: guix-git/doc/guix.texi:1298
5362 #, no-wrap
5363 msgid "@code{parallel-builds} (default: @code{1})"
5364 msgstr ""
5365
5366 #. type: table
5367 #: guix-git/doc/guix.texi:1300
5368 msgid "The number of builds that may run in parallel on the machine."
5369 msgstr ""
5370
5371 #. type: item
5372 #: guix-git/doc/guix.texi:1301
5373 #, no-wrap
5374 msgid "@code{speed} (default: @code{1.0})"
5375 msgstr ""
5376
5377 #. type: table
5378 #: guix-git/doc/guix.texi:1304
5379 msgid "A ``relative speed factor''. The offload scheduler will tend to prefer machines with a higher speed factor."
5380 msgstr ""
5381
5382 #. type: item
5383 #: guix-git/doc/guix.texi:1305
5384 #, no-wrap
5385 msgid "@code{features} (default: @code{'()})"
5386 msgstr ""
5387
5388 #. type: table
5389 #: guix-git/doc/guix.texi:1310
5390 msgid "A list of strings denoting specific features supported by the machine. An example is @code{\"kvm\"} for machines that have the KVM Linux modules and corresponding hardware support. Derivations can request features by name, and they will be scheduled on matching build machines."
5391 msgstr ""
5392
5393 #. type: Plain text
5394 #: guix-git/doc/guix.texi:1316
5395 msgid "The @command{guix} command must be in the search path on the build machines. You can check whether this is the case by running:"
5396 msgstr ""
5397
5398 #. type: example
5399 #: guix-git/doc/guix.texi:1319
5400 #, no-wrap
5401 msgid "ssh build-machine guix repl --version\n"
5402 msgstr ""
5403
5404 #. type: Plain text
5405 #: guix-git/doc/guix.texi:1326
5406 msgid "There is one last thing to do once @file{machines.scm} is in place. As explained above, when offloading, files are transferred back and forth between the machine stores. For this to work, you first need to generate a key pair on each machine to allow the daemon to export signed archives of files from the store (@pxref{Invoking guix archive}):"
5407 msgstr ""
5408
5409 #. type: example
5410 #: guix-git/doc/guix.texi:1329 guix-git/doc/guix.texi:33419
5411 #, no-wrap
5412 msgid "# guix archive --generate-key\n"
5413 msgstr ""
5414
5415 #. type: Plain text
5416 #: guix-git/doc/guix.texi:1334
5417 msgid "Each build machine must authorize the key of the master machine so that it accepts store items it receives from the master:"
5418 msgstr ""
5419
5420 #. type: example
5421 #: guix-git/doc/guix.texi:1337
5422 #, no-wrap
5423 msgid "# guix archive --authorize < master-public-key.txt\n"
5424 msgstr ""
5425
5426 #. type: Plain text
5427 #: guix-git/doc/guix.texi:1341
5428 msgid "Likewise, the master machine must authorize the key of each build machine."
5429 msgstr ""
5430
5431 #. type: Plain text
5432 #: guix-git/doc/guix.texi:1347
5433 msgid "All the fuss with keys is here to express pairwise mutual trust relations between the master and the build machines. Concretely, when the master receives files from a build machine (and @i{vice versa}), its build daemon can make sure they are genuine, have not been tampered with, and that they are signed by an authorized key."
5434 msgstr ""
5435
5436 #. type: cindex
5437 #: guix-git/doc/guix.texi:1348
5438 #, no-wrap
5439 msgid "offload test"
5440 msgstr ""
5441
5442 #. type: Plain text
5443 #: guix-git/doc/guix.texi:1351
5444 msgid "To test whether your setup is operational, run this command on the master node:"
5445 msgstr ""
5446
5447 #. type: example
5448 #: guix-git/doc/guix.texi:1354
5449 #, no-wrap
5450 msgid "# guix offload test\n"
5451 msgstr ""
5452
5453 #. type: Plain text
5454 #: guix-git/doc/guix.texi:1360
5455 msgid "This will attempt to connect to each of the build machines specified in @file{/etc/guix/machines.scm}, make sure Guix is available on each machine, attempt to export to the machine and import from it, and report any error in the process."
5456 msgstr ""
5457
5458 #. type: Plain text
5459 #: guix-git/doc/guix.texi:1363
5460 msgid "If you want to test a different machine file, just specify it on the command line:"
5461 msgstr ""
5462
5463 #. type: example
5464 #: guix-git/doc/guix.texi:1366
5465 #, no-wrap
5466 msgid "# guix offload test machines-qualif.scm\n"
5467 msgstr ""
5468
5469 #. type: Plain text
5470 #: guix-git/doc/guix.texi:1370
5471 msgid "Last, you can test the subset of the machines whose name matches a regular expression like this:"
5472 msgstr ""
5473
5474 #. type: example
5475 #: guix-git/doc/guix.texi:1373
5476 #, no-wrap
5477 msgid "# guix offload test machines.scm '\\.gnu\\.org$'\n"
5478 msgstr ""
5479
5480 #. type: cindex
5481 #: guix-git/doc/guix.texi:1375
5482 #, no-wrap
5483 msgid "offload status"
5484 msgstr ""
5485
5486 #. type: Plain text
5487 #: guix-git/doc/guix.texi:1378
5488 msgid "To display the current load of all build hosts, run this command on the main node:"
5489 msgstr ""
5490
5491 #. type: example
5492 #: guix-git/doc/guix.texi:1381
5493 #, no-wrap
5494 msgid "# guix offload status\n"
5495 msgstr ""
5496
5497 #. type: cindex
5498 #: guix-git/doc/guix.texi:1387
5499 #, no-wrap
5500 msgid "SELinux, daemon policy"
5501 msgstr ""
5502
5503 #. type: cindex
5504 #: guix-git/doc/guix.texi:1388
5505 #, no-wrap
5506 msgid "mandatory access control, SELinux"
5507 msgstr ""
5508
5509 #. type: cindex
5510 #: guix-git/doc/guix.texi:1389
5511 #, no-wrap
5512 msgid "security, guix-daemon"
5513 msgstr ""
5514
5515 #. type: Plain text
5516 #: guix-git/doc/guix.texi:1395
5517 msgid "Guix includes an SELinux policy file at @file{etc/guix-daemon.cil} that can be installed on a system where SELinux is enabled, in order to label Guix files and to specify the expected behavior of the daemon. Since Guix System does not provide an SELinux base policy, the daemon policy cannot be used on Guix System."
5518 msgstr ""
5519
5520 #. type: subsubsection
5521 #: guix-git/doc/guix.texi:1396
5522 #, no-wrap
5523 msgid "Installing the SELinux policy"
5524 msgstr ""
5525
5526 #. type: cindex
5527 #: guix-git/doc/guix.texi:1397
5528 #, no-wrap
5529 msgid "SELinux, policy installation"
5530 msgstr ""
5531
5532 #. type: Plain text
5533 #: guix-git/doc/guix.texi:1399
5534 msgid "To install the policy run this command as root:"
5535 msgstr ""
5536
5537 #. type: example
5538 #: guix-git/doc/guix.texi:1402
5539 #, no-wrap
5540 msgid "semodule -i etc/guix-daemon.cil\n"
5541 msgstr ""
5542
5543 #. type: Plain text
5544 #: guix-git/doc/guix.texi:1406
5545 msgid "Then relabel the file system with @code{restorecon} or by a different mechanism provided by your system."
5546 msgstr ""
5547
5548 #. type: Plain text
5549 #: guix-git/doc/guix.texi:1411
5550 msgid "Once the policy is installed, the file system has been relabeled, and the daemon has been restarted, it should be running in the @code{guix_daemon_t} context. You can confirm this with the following command:"
5551 msgstr ""
5552
5553 #. type: example
5554 #: guix-git/doc/guix.texi:1414
5555 #, no-wrap
5556 msgid "ps -Zax | grep guix-daemon\n"
5557 msgstr ""
5558
5559 #. type: Plain text
5560 #: guix-git/doc/guix.texi:1419
5561 msgid "Monitor the SELinux log files as you run a command like @code{guix build hello} to convince yourself that SELinux permits all necessary operations."
5562 msgstr ""
5563
5564 #. type: cindex
5565 #: guix-git/doc/guix.texi:1421
5566 #, no-wrap
5567 msgid "SELinux, limitations"
5568 msgstr ""
5569
5570 #. type: Plain text
5571 #: guix-git/doc/guix.texi:1426
5572 msgid "This policy is not perfect. Here is a list of limitations or quirks that should be considered when deploying the provided SELinux policy for the Guix daemon."
5573 msgstr ""
5574
5575 #. type: enumerate
5576 #: guix-git/doc/guix.texi:1433
5577 msgid "@code{guix_daemon_socket_t} isn’t actually used. None of the socket operations involve contexts that have anything to do with @code{guix_daemon_socket_t}. It doesn’t hurt to have this unused label, but it would be preferable to define socket rules for only this label."
5578 msgstr ""
5579
5580 #. type: enumerate
5581 #: guix-git/doc/guix.texi:1444
5582 msgid "@code{guix gc} cannot access arbitrary links to profiles. By design, the file label of the destination of a symlink is independent of the file label of the link itself. Although all profiles under $localstatedir are labelled, the links to these profiles inherit the label of the directory they are in. For links in the user’s home directory this will be @code{user_home_t}. But for links from the root user’s home directory, or @file{/tmp}, or the HTTP server’s working directory, etc, this won’t work. @code{guix gc} would be prevented from reading and following these links."
5583 msgstr ""
5584
5585 #. type: enumerate
5586 #: guix-git/doc/guix.texi:1449
5587 msgid "The daemon’s feature to listen for TCP connections might no longer work. This might require extra rules, because SELinux treats network sockets differently from files."
5588 msgstr ""
5589
5590 #. type: enumerate
5591 #: guix-git/doc/guix.texi:1460
5592 msgid "Currently all files with a name matching the regular expression @code{/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon} are assigned the label @code{guix_daemon_exec_t}; this means that @emph{any} file with that name in any profile would be permitted to run in the @code{guix_daemon_t} domain. This is not ideal. An attacker could build a package that provides this executable and convince a user to install and run it, which lifts it into the @code{guix_daemon_t} domain. At that point SELinux could not prevent it from accessing files that are allowed for processes in that domain."
5593 msgstr ""
5594
5595 #. type: enumerate
5596 #: guix-git/doc/guix.texi:1465
5597 msgid "You will need to relabel the store directory after all upgrades to @file{guix-daemon}, such as after running @code{guix pull}. Assuming the store is in @file{/gnu}, you can do this with @code{restorecon -vR /gnu}, or by other means provided by your operating system."
5598 msgstr ""
5599
5600 #. type: enumerate
5601 #: guix-git/doc/guix.texi:1473
5602 msgid "We could generate a much more restrictive policy at installation time, so that only the @emph{exact} file name of the currently installed @code{guix-daemon} executable would be labelled with @code{guix_daemon_exec_t}, instead of using a broad regular expression. The downside is that root would have to install or upgrade the policy at installation time whenever the Guix package that provides the effectively running @code{guix-daemon} executable is upgraded."
5603 msgstr ""
5604
5605 #. type: section
5606 #: guix-git/doc/guix.texi:1476
5607 #, no-wrap
5608 msgid "Invoking @command{guix-daemon}"
5609 msgstr ""
5610
5611 #. type: Plain text
5612 #: guix-git/doc/guix.texi:1482
5613 msgid "The @command{guix-daemon} program implements all the functionality to access the store. This includes launching build processes, running the garbage collector, querying the availability of a build result, etc. It is normally run as @code{root} like this:"
5614 msgstr ""
5615
5616 #. type: Plain text
5617 #: guix-git/doc/guix.texi:1489
5618 msgid "For details on how to set it up, @pxref{Setting Up the Daemon}."
5619 msgstr ""
5620
5621 #. type: cindex
5622 #: guix-git/doc/guix.texi:1491
5623 #, no-wrap
5624 msgid "container, build environment"
5625 msgstr ""
5626
5627 #. type: cindex
5628 #: guix-git/doc/guix.texi:1493 guix-git/doc/guix.texi:3034
5629 #: guix-git/doc/guix.texi:3933 guix-git/doc/guix.texi:12833
5630 #, no-wrap
5631 msgid "reproducible builds"
5632 msgstr ""
5633
5634 #. type: Plain text
5635 #: guix-git/doc/guix.texi:1505
5636 msgid "By default, @command{guix-daemon} launches build processes under different UIDs, taken from the build group specified with @option{--build-users-group}. In addition, each build process is run in a chroot environment that only contains the subset of the store that the build process depends on, as specified by its derivation (@pxref{Programming Interface, derivation}), plus a set of specific system directories. By default, the latter contains @file{/dev} and @file{/dev/pts}. Furthermore, on GNU/Linux, the build environment is a @dfn{container}: in addition to having its own file system tree, it has a separate mount name space, its own PID name space, network name space, etc. This helps achieve reproducible builds (@pxref{Features})."
5637 msgstr ""
5638
5639 #. type: Plain text
5640 #: guix-git/doc/guix.texi:1511
5641 msgid "When the daemon performs a build on behalf of the user, it creates a build directory under @file{/tmp} or under the directory specified by its @env{TMPDIR} environment variable. This directory is shared with the container for the duration of the build, though within the container, the build tree is always called @file{/tmp/guix-build-@var{name}.drv-0}."
5642 msgstr ""
5643
5644 #. type: Plain text
5645 #: guix-git/doc/guix.texi:1515
5646 msgid "The build directory is automatically deleted upon completion, unless the build failed and the client specified @option{--keep-failed} (@pxref{Common Build Options, @option{--keep-failed}})."
5647 msgstr ""
5648
5649 #. type: Plain text
5650 #: guix-git/doc/guix.texi:1521
5651 msgid "The daemon listens for connections and spawns one sub-process for each session started by a client (one of the @command{guix} sub-commands). The @command{guix processes} command allows you to get an overview of the activity on your system by viewing each of the active sessions and clients. @xref{Invoking guix processes}, for more information."
5652 msgstr ""
5653
5654 #. type: Plain text
5655 #: guix-git/doc/guix.texi:1523
5656 msgid "The following command-line options are supported:"
5657 msgstr ""
5658
5659 #. type: item
5660 #: guix-git/doc/guix.texi:1525
5661 #, no-wrap
5662 msgid "--build-users-group=@var{group}"
5663 msgstr ""
5664
5665 #. type: table
5666 #: guix-git/doc/guix.texi:1528
5667 msgid "Take users from @var{group} to run build processes (@pxref{Setting Up the Daemon, build users})."
5668 msgstr ""
5669
5670 #. type: item
5671 #: guix-git/doc/guix.texi:1529 guix-git/doc/guix.texi:10288
5672 #, no-wrap
5673 msgid "--no-substitutes"
5674 msgstr ""
5675
5676 #. type: cindex
5677 #: guix-git/doc/guix.texi:1530 guix-git/doc/guix.texi:3046
5678 #: guix-git/doc/guix.texi:3691
5679 #, no-wrap
5680 msgid "substitutes"
5681 msgstr ""
5682
5683 #. type: table
5684 #: guix-git/doc/guix.texi:1534 guix-git/doc/guix.texi:10292
5685 msgid "Do not use substitutes for build products. That is, always build things locally instead of allowing downloads of pre-built binaries (@pxref{Substitutes})."
5686 msgstr ""
5687
5688 #. type: table
5689 #: guix-git/doc/guix.texi:1538
5690 msgid "When the daemon runs with @option{--no-substitutes}, clients can still explicitly enable substitution @i{via} the @code{set-build-options} remote procedure call (@pxref{The Store})."
5691 msgstr ""
5692
5693 #. type: anchor{#1}
5694 #: guix-git/doc/guix.texi:1540
5695 msgid "daemon-substitute-urls"
5696 msgstr ""
5697
5698 #. type: item
5699 #: guix-git/doc/guix.texi:1540 guix-git/doc/guix.texi:10275
5700 #: guix-git/doc/guix.texi:12264 guix-git/doc/guix.texi:12979
5701 #: guix-git/doc/guix.texi:13204
5702 #, no-wrap
5703 msgid "--substitute-urls=@var{urls}"
5704 msgstr ""
5705
5706 #. type: table
5707 #: guix-git/doc/guix.texi:1544
5708 msgid "Consider @var{urls} the default whitespace-separated list of substitute source URLs. When this option is omitted, @indicateurl{https://@value{SUBSTITUTE-SERVER}} is used."
5709 msgstr ""
5710
5711 #. type: table
5712 #: guix-git/doc/guix.texi:1547
5713 msgid "This means that substitutes may be downloaded from @var{urls}, as long as they are signed by a trusted signature (@pxref{Substitutes})."
5714 msgstr ""
5715
5716 #. type: table
5717 #: guix-git/doc/guix.texi:1550
5718 msgid "@xref{Getting Substitutes from Other Servers}, for more information on how to configure the daemon to get substitutes from other servers."
5719 msgstr ""
5720
5721 #. type: item
5722 #: guix-git/doc/guix.texi:1552 guix-git/doc/guix.texi:10311
5723 #, no-wrap
5724 msgid "--no-offload"
5725 msgstr ""
5726
5727 #. type: table
5728 #: guix-git/doc/guix.texi:1556 guix-git/doc/guix.texi:10315
5729 msgid "Do not use offload builds to other machines (@pxref{Daemon Offload Setup}). That is, always build things locally instead of offloading builds to remote machines."
5730 msgstr ""
5731
5732 #. type: item
5733 #: guix-git/doc/guix.texi:1557
5734 #, no-wrap
5735 msgid "--cache-failures"
5736 msgstr ""
5737
5738 #. type: table
5739 #: guix-git/doc/guix.texi:1559
5740 msgid "Cache build failures. By default, only successful builds are cached."
5741 msgstr ""
5742
5743 #. type: table
5744 #: guix-git/doc/guix.texi:1564
5745 msgid "When this option is used, @command{guix gc --list-failures} can be used to query the set of store items marked as failed; @command{guix gc --clear-failures} removes store items from the set of cached failures. @xref{Invoking guix gc}."
5746 msgstr ""
5747
5748 #. type: item
5749 #: guix-git/doc/guix.texi:1565 guix-git/doc/guix.texi:10341
5750 #, no-wrap
5751 msgid "--cores=@var{n}"
5752 msgstr ""
5753
5754 #. type: itemx
5755 #: guix-git/doc/guix.texi:1566 guix-git/doc/guix.texi:10342
5756 #, no-wrap
5757 msgid "-c @var{n}"
5758 msgstr ""
5759
5760 #. type: table
5761 #: guix-git/doc/guix.texi:1569
5762 msgid "Use @var{n} CPU cores to build each derivation; @code{0} means as many as available."
5763 msgstr ""
5764
5765 #. type: table
5766 #: guix-git/doc/guix.texi:1573
5767 msgid "The default value is @code{0}, but it may be overridden by clients, such as the @option{--cores} option of @command{guix build} (@pxref{Invoking guix build})."
5768 msgstr ""
5769
5770 #. type: table
5771 #: guix-git/doc/guix.texi:1577
5772 msgid "The effect is to define the @env{NIX_BUILD_CORES} environment variable in the build process, which can then use it to exploit internal parallelism---for instance, by running @code{make -j$NIX_BUILD_CORES}."
5773 msgstr ""
5774
5775 #. type: item
5776 #: guix-git/doc/guix.texi:1578 guix-git/doc/guix.texi:10346
5777 #, no-wrap
5778 msgid "--max-jobs=@var{n}"
5779 msgstr ""
5780
5781 #. type: itemx
5782 #: guix-git/doc/guix.texi:1579 guix-git/doc/guix.texi:10347
5783 #, no-wrap
5784 msgid "-M @var{n}"
5785 msgstr ""
5786
5787 #. type: table
5788 #: guix-git/doc/guix.texi:1584
5789 msgid "Allow at most @var{n} build jobs in parallel. The default value is @code{1}. Setting it to @code{0} means that no builds will be performed locally; instead, the daemon will offload builds (@pxref{Daemon Offload Setup}), or simply fail."
5790 msgstr ""
5791
5792 #. type: item
5793 #: guix-git/doc/guix.texi:1585 guix-git/doc/guix.texi:10316
5794 #, no-wrap
5795 msgid "--max-silent-time=@var{seconds}"
5796 msgstr ""
5797
5798 #. type: table
5799 #: guix-git/doc/guix.texi:1588 guix-git/doc/guix.texi:10319
5800 msgid "When the build or substitution process remains silent for more than @var{seconds}, terminate it and report a build failure."
5801 msgstr ""
5802
5803 #. type: table
5804 #: guix-git/doc/guix.texi:1590 guix-git/doc/guix.texi:1599
5805 msgid "The default value is @code{0}, which disables the timeout."
5806 msgstr ""
5807
5808 #. type: table
5809 #: guix-git/doc/guix.texi:1593
5810 msgid "The value specified here can be overridden by clients (@pxref{Common Build Options, @option{--max-silent-time}})."
5811 msgstr ""
5812
5813 #. type: item
5814 #: guix-git/doc/guix.texi:1594 guix-git/doc/guix.texi:10323
5815 #, no-wrap
5816 msgid "--timeout=@var{seconds}"
5817 msgstr ""
5818
5819 #. type: table
5820 #: guix-git/doc/guix.texi:1597 guix-git/doc/guix.texi:10326
5821 msgid "Likewise, when the build or substitution process lasts for more than @var{seconds}, terminate it and report a build failure."
5822 msgstr ""
5823
5824 #. type: table
5825 #: guix-git/doc/guix.texi:1602
5826 msgid "The value specified here can be overridden by clients (@pxref{Common Build Options, @option{--timeout}})."
5827 msgstr ""
5828
5829 #. type: item
5830 #: guix-git/doc/guix.texi:1603
5831 #, no-wrap
5832 msgid "--rounds=@var{N}"
5833 msgstr ""
5834
5835 #. type: table
5836 #: guix-git/doc/guix.texi:1608
5837 msgid "Build each derivation @var{n} times in a row, and raise an error if consecutive build results are not bit-for-bit identical. Note that this setting can be overridden by clients such as @command{guix build} (@pxref{Invoking guix build})."
5838 msgstr ""
5839
5840 #. type: table
5841 #: guix-git/doc/guix.texi:1612 guix-git/doc/guix.texi:10310
5842 #: guix-git/doc/guix.texi:10872
5843 msgid "When used in conjunction with @option{--keep-failed}, the differing output is kept in the store, under @file{/gnu/store/@dots{}-check}. This makes it easy to look for differences between the two results."
5844 msgstr ""
5845
5846 #. type: item
5847 #: guix-git/doc/guix.texi:1613
5848 #, no-wrap
5849 msgid "--debug"
5850 msgstr ""
5851
5852 #. type: table
5853 #: guix-git/doc/guix.texi:1615
5854 msgid "Produce debugging output."
5855 msgstr ""
5856
5857 #. type: table
5858 #: guix-git/doc/guix.texi:1619
5859 msgid "This is useful to debug daemon start-up issues, but then it may be overridden by clients, for example the @option{--verbosity} option of @command{guix build} (@pxref{Invoking guix build})."
5860 msgstr ""
5861
5862 #. type: item
5863 #: guix-git/doc/guix.texi:1620
5864 #, no-wrap
5865 msgid "--chroot-directory=@var{dir}"
5866 msgstr ""
5867
5868 #. type: table
5869 #: guix-git/doc/guix.texi:1622
5870 msgid "Add @var{dir} to the build chroot."
5871 msgstr ""
5872
5873 #. type: table
5874 #: guix-git/doc/guix.texi:1628
5875 msgid "Doing this may change the result of build processes---for instance if they use optional dependencies found in @var{dir} when it is available, and not otherwise. For that reason, it is not recommended to do so. Instead, make sure that each derivation declares all the inputs that it needs."
5876 msgstr ""
5877
5878 #. type: item
5879 #: guix-git/doc/guix.texi:1629
5880 #, no-wrap
5881 msgid "--disable-chroot"
5882 msgstr ""
5883
5884 #. type: table
5885 #: guix-git/doc/guix.texi:1631
5886 msgid "Disable chroot builds."
5887 msgstr ""
5888
5889 #. type: table
5890 #: guix-git/doc/guix.texi:1636
5891 msgid "Using this option is not recommended since, again, it would allow build processes to gain access to undeclared dependencies. It is necessary, though, when @command{guix-daemon} is running under an unprivileged user account."
5892 msgstr ""
5893
5894 #. type: item
5895 #: guix-git/doc/guix.texi:1637
5896 #, no-wrap
5897 msgid "--log-compression=@var{type}"
5898 msgstr ""
5899
5900 #. type: table
5901 #: guix-git/doc/guix.texi:1640
5902 msgid "Compress build logs according to @var{type}, one of @code{gzip}, @code{bzip2}, or @code{none}."
5903 msgstr ""
5904
5905 #. type: table
5906 #: guix-git/doc/guix.texi:1644
5907 msgid "Unless @option{--lose-logs} is used, all the build logs are kept in the @var{localstatedir}. To save space, the daemon automatically compresses them with Bzip2 by default."
5908 msgstr ""
5909
5910 #. type: item
5911 #: guix-git/doc/guix.texi:1645
5912 #, no-wrap
5913 msgid "--discover[=yes|no]"
5914 msgstr ""
5915
5916 #. type: table
5917 #: guix-git/doc/guix.texi:1648 guix-git/doc/guix.texi:15520
5918 msgid "Whether to discover substitute servers on the local network using mDNS and DNS-SD."
5919 msgstr ""
5920
5921 #. type: table
5922 #: guix-git/doc/guix.texi:1651
5923 msgid "This feature is still experimental. However, here are a few considerations."
5924 msgstr ""
5925
5926 #. type: enumerate
5927 #: guix-git/doc/guix.texi:1655
5928 msgid "It might be faster/less expensive than fetching from remote servers;"
5929 msgstr ""
5930
5931 #. type: enumerate
5932 #: guix-git/doc/guix.texi:1658
5933 msgid "There are no security risks, only genuine substitutes will be used (@pxref{Substitute Authentication});"
5934 msgstr ""
5935
5936 #. type: enumerate
5937 #: guix-git/doc/guix.texi:1662
5938 msgid "An attacker advertising @command{guix publish} on your LAN cannot serve you malicious binaries, but they can learn what software you’re installing;"
5939 msgstr ""
5940
5941 #. type: enumerate
5942 #: guix-git/doc/guix.texi:1665
5943 msgid "Servers may serve substitute over HTTP, unencrypted, so anyone on the LAN can see what software you’re installing."
5944 msgstr ""
5945
5946 #. type: table
5947 #: guix-git/doc/guix.texi:1669
5948 msgid "It is also possible to enable or disable substitute server discovery at run-time by running:"
5949 msgstr ""
5950
5951 #. type: example
5952 #: guix-git/doc/guix.texi:1673
5953 #, no-wrap
5954 msgid ""
5955 "herd discover guix-daemon on\n"
5956 "herd discover guix-daemon off\n"
5957 msgstr ""
5958
5959 #. type: item
5960 #: guix-git/doc/guix.texi:1675
5961 #, no-wrap
5962 msgid "--disable-deduplication"
5963 msgstr ""
5964
5965 #. type: cindex
5966 #: guix-git/doc/guix.texi:1676 guix-git/doc/guix.texi:4271
5967 #, no-wrap
5968 msgid "deduplication"
5969 msgstr ""
5970
5971 #. type: table
5972 #: guix-git/doc/guix.texi:1678
5973 msgid "Disable automatic file ``deduplication'' in the store."
5974 msgstr ""
5975
5976 #. type: table
5977 #: guix-git/doc/guix.texi:1685
5978 msgid "By default, files added to the store are automatically ``deduplicated'': if a newly added file is identical to another one found in the store, the daemon makes the new file a hard link to the other file. This can noticeably reduce disk usage, at the expense of slightly increased input/output load at the end of a build process. This option disables this optimization."
5979 msgstr ""
5980
5981 #. type: item
5982 #: guix-git/doc/guix.texi:1686
5983 #, no-wrap
5984 msgid "--gc-keep-outputs[=yes|no]"
5985 msgstr ""
5986
5987 #. type: table
5988 #: guix-git/doc/guix.texi:1689
5989 msgid "Tell whether the garbage collector (GC) must keep outputs of live derivations."
5990 msgstr ""
5991
5992 #. type: cindex
5993 #: guix-git/doc/guix.texi:1690 guix-git/doc/guix.texi:4084
5994 #, no-wrap
5995 msgid "GC roots"
5996 msgstr ""
5997
5998 #. type: cindex
5999 #: guix-git/doc/guix.texi:1691 guix-git/doc/guix.texi:4085
6000 #, no-wrap
6001 msgid "garbage collector roots"
6002 msgstr ""
6003
6004 #. type: table
6005 #: guix-git/doc/guix.texi:1697
6006 msgid "When set to @code{yes}, the GC will keep the outputs of any live derivation available in the store---the @file{.drv} files. The default is @code{no}, meaning that derivation outputs are kept only if they are reachable from a GC root. @xref{Invoking guix gc}, for more on GC roots."
6007 msgstr ""
6008
6009 #. type: item
6010 #: guix-git/doc/guix.texi:1698
6011 #, no-wrap
6012 msgid "--gc-keep-derivations[=yes|no]"
6013 msgstr ""
6014
6015 #. type: table
6016 #: guix-git/doc/guix.texi:1701
6017 msgid "Tell whether the garbage collector (GC) must keep derivations corresponding to live outputs."
6018 msgstr ""
6019
6020 #. type: table
6021 #: guix-git/doc/guix.texi:1707
6022 msgid "When set to @code{yes}, as is the case by default, the GC keeps derivations---i.e., @file{.drv} files---as long as at least one of their outputs is live. This allows users to keep track of the origins of items in their store. Setting it to @code{no} saves a bit of disk space."
6023 msgstr ""
6024
6025 #. type: table
6026 #: guix-git/doc/guix.texi:1716
6027 msgid "In this way, setting @option{--gc-keep-derivations} to @code{yes} causes liveness to flow from outputs to derivations, and setting @option{--gc-keep-outputs} to @code{yes} causes liveness to flow from derivations to outputs. When both are set to @code{yes}, the effect is to keep all the build prerequisites (the sources, compiler, libraries, and other build-time tools) of live objects in the store, regardless of whether these prerequisites are reachable from a GC root. This is convenient for developers since it saves rebuilds or downloads."
6028 msgstr ""
6029
6030 #. type: item
6031 #: guix-git/doc/guix.texi:1717
6032 #, no-wrap
6033 msgid "--impersonate-linux-2.6"
6034 msgstr ""
6035
6036 #. type: table
6037 #: guix-git/doc/guix.texi:1720
6038 msgid "On Linux-based systems, impersonate Linux 2.6. This means that the kernel's @command{uname} system call will report 2.6 as the release number."
6039 msgstr ""
6040
6041 #. type: table
6042 #: guix-git/doc/guix.texi:1723
6043 msgid "This might be helpful to build programs that (usually wrongfully) depend on the kernel version number."
6044 msgstr ""
6045
6046 #. type: item
6047 #: guix-git/doc/guix.texi:1724
6048 #, no-wrap
6049 msgid "--lose-logs"
6050 msgstr ""
6051
6052 #. type: table
6053 #: guix-git/doc/guix.texi:1727
6054 msgid "Do not keep build logs. By default they are kept under @file{@var{localstatedir}/guix/log}."
6055 msgstr ""
6056
6057 #. type: item
6058 #: guix-git/doc/guix.texi:1728 guix-git/doc/guix.texi:4512
6059 #: guix-git/doc/guix.texi:5811 guix-git/doc/guix.texi:6182
6060 #: guix-git/doc/guix.texi:10816 guix-git/doc/guix.texi:12291
6061 #: guix-git/doc/guix.texi:12542 guix-git/doc/guix.texi:13209
6062 #: guix-git/doc/guix.texi:32362 guix-git/doc/guix.texi:33161
6063 #, no-wrap
6064 msgid "--system=@var{system}"
6065 msgstr ""
6066
6067 #. type: table
6068 #: guix-git/doc/guix.texi:1732
6069 msgid "Assume @var{system} as the current system type. By default it is the architecture/kernel pair found at configure time, such as @code{x86_64-linux}."
6070 msgstr ""
6071
6072 #. type: item
6073 #: guix-git/doc/guix.texi:1733 guix-git/doc/guix.texi:10121
6074 #, no-wrap
6075 msgid "--listen=@var{endpoint}"
6076 msgstr ""
6077
6078 #. type: table
6079 #: guix-git/doc/guix.texi:1738
6080 msgid "Listen for connections on @var{endpoint}. @var{endpoint} is interpreted as the file name of a Unix-domain socket if it starts with @code{/} (slash sign). Otherwise, @var{endpoint} is interpreted as a host name or host name and port to listen to. Here are a few examples:"
6081 msgstr ""
6082
6083 #. type: item
6084 #: guix-git/doc/guix.texi:1740
6085 #, no-wrap
6086 msgid "--listen=/gnu/var/daemon"
6087 msgstr ""
6088
6089 #. type: table
6090 #: guix-git/doc/guix.texi:1743
6091 msgid "Listen for connections on the @file{/gnu/var/daemon} Unix-domain socket, creating it if needed."
6092 msgstr ""
6093
6094 #. type: item
6095 #: guix-git/doc/guix.texi:1744
6096 #, no-wrap
6097 msgid "--listen=localhost"
6098 msgstr ""
6099
6100 #. type: cindex
6101 #: guix-git/doc/guix.texi:1745 guix-git/doc/guix.texi:8805
6102 #, no-wrap
6103 msgid "daemon, remote access"
6104 msgstr ""
6105
6106 #. type: cindex
6107 #: guix-git/doc/guix.texi:1746 guix-git/doc/guix.texi:8806
6108 #, no-wrap
6109 msgid "remote access to the daemon"
6110 msgstr ""
6111
6112 #. type: cindex
6113 #: guix-git/doc/guix.texi:1747 guix-git/doc/guix.texi:8807
6114 #, no-wrap
6115 msgid "daemon, cluster setup"
6116 msgstr ""
6117
6118 #. type: cindex
6119 #: guix-git/doc/guix.texi:1748 guix-git/doc/guix.texi:8808
6120 #, no-wrap
6121 msgid "clusters, daemon setup"
6122 msgstr ""
6123
6124 #. type: table
6125 #: guix-git/doc/guix.texi:1751
6126 msgid "Listen for TCP connections on the network interface corresponding to @code{localhost}, on port 44146."
6127 msgstr ""
6128
6129 #. type: item
6130 #: guix-git/doc/guix.texi:1752
6131 #, no-wrap
6132 msgid "--listen=128.0.0.42:1234"
6133 msgstr ""
6134
6135 #. type: table
6136 #: guix-git/doc/guix.texi:1755
6137 msgid "Listen for TCP connections on the network interface corresponding to @code{128.0.0.42}, on port 1234."
6138 msgstr ""
6139
6140 #. type: table
6141 #: guix-git/doc/guix.texi:1762
6142 msgid "This option can be repeated multiple times, in which case @command{guix-daemon} accepts connections on all the specified endpoints. Users can tell client commands what endpoint to connect to by setting the @env{GUIX_DAEMON_SOCKET} environment variable (@pxref{The Store, @env{GUIX_DAEMON_SOCKET}})."
6143 msgstr ""
6144
6145 #. type: quotation
6146 #: guix-git/doc/guix.texi:1769
6147 msgid "The daemon protocol is @emph{unauthenticated and unencrypted}. Using @option{--listen=@var{host}} is suitable on local networks, such as clusters, where only trusted nodes may connect to the build daemon. In other cases where remote access to the daemon is needed, we recommend using Unix-domain sockets along with SSH."
6148 msgstr ""
6149
6150 #. type: table
6151 #: guix-git/doc/guix.texi:1774
6152 msgid "When @option{--listen} is omitted, @command{guix-daemon} listens for connections on the Unix-domain socket located at @file{@var{localstatedir}/guix/daemon-socket/socket}."
6153 msgstr ""
6154
6155 #. type: Plain text
6156 #: guix-git/doc/guix.texi:1784
6157 msgid "When using Guix on top of GNU/Linux distribution other than Guix System---a so-called @dfn{foreign distro}---a few additional steps are needed to get everything in place. Here are some of them."
6158 msgstr ""
6159
6160 #. type: anchor{#1}
6161 #: guix-git/doc/guix.texi:1788
6162 msgid "locales-and-locpath"
6163 msgstr ""
6164
6165 #. type: cindex
6166 #: guix-git/doc/guix.texi:1788
6167 #, no-wrap
6168 msgid "locales, when not on Guix System"
6169 msgstr ""
6170
6171 #. type: vindex
6172 #: guix-git/doc/guix.texi:1789 guix-git/doc/guix.texi:14739
6173 #, no-wrap
6174 msgid "LOCPATH"
6175 msgstr ""
6176
6177 #. type: vindex
6178 #: guix-git/doc/guix.texi:1790
6179 #, no-wrap
6180 msgid "GUIX_LOCPATH"
6181 msgstr ""
6182
6183 #. type: Plain text
6184 #: guix-git/doc/guix.texi:1795
6185 msgid "Packages installed @i{via} Guix will not use the locale data of the host system. Instead, you must first install one of the locale packages available with Guix and then define the @env{GUIX_LOCPATH} environment variable:"
6186 msgstr ""
6187
6188 #. type: example
6189 #: guix-git/doc/guix.texi:1799
6190 #, no-wrap
6191 msgid ""
6192 "$ guix install glibc-locales\n"
6193 "$ export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale\n"
6194 msgstr ""
6195
6196 #. type: Plain text
6197 #: guix-git/doc/guix.texi:1805
6198 msgid "Note that the @code{glibc-locales} package contains data for all the locales supported by the GNU@tie{}libc and weighs in at around 917@tie{}MiB@. Alternatively, the @code{glibc-utf8-locales} is smaller but limited to a few UTF-8 locales."
6199 msgstr ""
6200
6201 #. type: Plain text
6202 #: guix-git/doc/guix.texi:1809
6203 msgid "The @env{GUIX_LOCPATH} variable plays a role similar to @env{LOCPATH} (@pxref{Locale Names, @env{LOCPATH},, libc, The GNU C Library Reference Manual}). There are two important differences though:"
6204 msgstr ""
6205
6206 #. type: enumerate
6207 #: guix-git/doc/guix.texi:1816
6208 msgid "@env{GUIX_LOCPATH} is honored only by the libc in Guix, and not by the libc provided by foreign distros. Thus, using @env{GUIX_LOCPATH} allows you to make sure the programs of the foreign distro will not end up loading incompatible locale data."
6209 msgstr ""
6210
6211 #. type: enumerate
6212 #: guix-git/doc/guix.texi:1823
6213 msgid "libc suffixes each entry of @env{GUIX_LOCPATH} with @code{/X.Y}, where @code{X.Y} is the libc version---e.g., @code{2.22}. This means that, should your Guix profile contain a mixture of programs linked against different libc version, each libc version will only try to load locale data in the right format."
6214 msgstr ""
6215
6216 #. type: Plain text
6217 #: guix-git/doc/guix.texi:1827
6218 msgid "This is important because the locale data format used by different libc versions may be incompatible."
6219 msgstr ""
6220
6221 #. type: cindex
6222 #: guix-git/doc/guix.texi:1830
6223 #, no-wrap
6224 msgid "name service switch, glibc"
6225 msgstr ""
6226
6227 #. type: cindex
6228 #: guix-git/doc/guix.texi:1831
6229 #, no-wrap
6230 msgid "NSS (name service switch), glibc"
6231 msgstr ""
6232
6233 #. type: cindex
6234 #: guix-git/doc/guix.texi:1832
6235 #, no-wrap
6236 msgid "nscd (name service caching daemon)"
6237 msgstr ""
6238
6239 #. type: cindex
6240 #: guix-git/doc/guix.texi:1833
6241 #, no-wrap
6242 msgid "name service caching daemon (nscd)"
6243 msgstr ""
6244
6245 #. type: Plain text
6246 #: guix-git/doc/guix.texi:1840
6247 msgid "When using Guix on a foreign distro, we @emph{strongly recommend} that the system run the GNU C library's @dfn{name service cache daemon}, @command{nscd}, which should be listening on the @file{/var/run/nscd/socket} socket. Failing to do that, applications installed with Guix may fail to look up host names or user accounts, or may even crash. The next paragraphs explain why."
6248 msgstr ""
6249
6250 #. type: file{#1}
6251 #: guix-git/doc/guix.texi:1841
6252 #, no-wrap
6253 msgid "nsswitch.conf"
6254 msgstr ""
6255
6256 #. type: Plain text
6257 #: guix-git/doc/guix.texi:1846
6258 msgid "The GNU C library implements a @dfn{name service switch} (NSS), which is an extensible mechanism for ``name lookups'' in general: host name resolution, user accounts, and more (@pxref{Name Service Switch,,, libc, The GNU C Library Reference Manual})."
6259 msgstr ""
6260
6261 #. type: cindex
6262 #: guix-git/doc/guix.texi:1847
6263 #, no-wrap
6264 msgid "Network information service (NIS)"
6265 msgstr ""
6266
6267 #. type: cindex
6268 #: guix-git/doc/guix.texi:1848
6269 #, no-wrap
6270 msgid "NIS (Network information service)"
6271 msgstr ""
6272
6273 #. type: Plain text
6274 #: guix-git/doc/guix.texi:1857
6275 msgid "Being extensible, the NSS supports @dfn{plugins}, which provide new name lookup implementations: for example, the @code{nss-mdns} plugin allow resolution of @code{.local} host names, the @code{nis} plugin allows user account lookup using the Network information service (NIS), and so on. These extra ``lookup services'' are configured system-wide in @file{/etc/nsswitch.conf}, and all the programs running on the system honor those settings (@pxref{NSS Configuration File,,, libc, The GNU C Reference Manual})."
6276 msgstr ""
6277
6278 #. type: Plain text
6279 #: guix-git/doc/guix.texi:1867
6280 msgid "When they perform a name lookup---for instance by calling the @code{getaddrinfo} function in C---applications first try to connect to the nscd; on success, nscd performs name lookups on their behalf. If the nscd is not running, then they perform the name lookup by themselves, by loading the name lookup services into their own address space and running it. These name lookup services---the @file{libnss_*.so} files---are @code{dlopen}'d, but they may come from the host system's C library, rather than from the C library the application is linked against (the C library coming from Guix)."
6281 msgstr ""
6282
6283 #. type: Plain text
6284 #: guix-git/doc/guix.texi:1872
6285 msgid "And this is where the problem is: if your application is linked against Guix's C library (say, glibc 2.24) and tries to load NSS plugins from another C library (say, @code{libnss_mdns.so} for glibc 2.22), it will likely crash or have its name lookups fail unexpectedly."
6286 msgstr ""
6287
6288 #. type: Plain text
6289 #: guix-git/doc/guix.texi:1877
6290 msgid "Running @command{nscd} on the system, among other advantages, eliminates this binary incompatibility problem because those @code{libnss_*.so} files are loaded in the @command{nscd} process, not in applications themselves."
6291 msgstr ""
6292
6293 #. type: subsection
6294 #: guix-git/doc/guix.texi:1878
6295 #, no-wrap
6296 msgid "X11 Fonts"
6297 msgstr ""
6298
6299 #. type: Plain text
6300 #: guix-git/doc/guix.texi:1888
6301 msgid "The majority of graphical applications use Fontconfig to locate and load fonts and perform X11-client-side rendering. The @code{fontconfig} package in Guix looks for fonts in @file{$HOME/.guix-profile} by default. Thus, to allow graphical applications installed with Guix to display fonts, you have to install fonts with Guix as well. Essential font packages include @code{gs-fonts}, @code{font-dejavu}, and @code{font-gnu-freefont}."
6302 msgstr ""
6303
6304 #. type: code{#1}
6305 #: guix-git/doc/guix.texi:1889
6306 #, no-wrap
6307 msgid "fc-cache"
6308 msgstr ""
6309
6310 #. type: cindex
6311 #: guix-git/doc/guix.texi:1890
6312 #, no-wrap
6313 msgid "font cache"
6314 msgstr ""
6315
6316 #. type: Plain text
6317 #: guix-git/doc/guix.texi:1894
6318 msgid "Once you have installed or removed fonts, or when you notice an application that does not find fonts, you may need to install Fontconfig and to force an update of its font cache by running:"
6319 msgstr ""
6320
6321 #. type: example
6322 #: guix-git/doc/guix.texi:1898
6323 #, no-wrap
6324 msgid ""
6325 "guix install fontconfig\n"
6326 "fc-cache -rv\n"
6327 msgstr ""
6328
6329 #. type: Plain text
6330 #: guix-git/doc/guix.texi:1906
6331 msgid "To display text written in Chinese languages, Japanese, or Korean in graphical applications, consider installing @code{font-adobe-source-han-sans} or @code{font-wqy-zenhei}. The former has multiple outputs, one per language family (@pxref{Packages with Multiple Outputs}). For instance, the following command installs fonts for Chinese languages:"
6332 msgstr ""
6333
6334 #. type: example
6335 #: guix-git/doc/guix.texi:1909
6336 #, no-wrap
6337 msgid "guix install font-adobe-source-han-sans:cn\n"
6338 msgstr ""
6339
6340 #. type: code{#1}
6341 #: guix-git/doc/guix.texi:1911
6342 #, no-wrap
6343 msgid "xterm"
6344 msgstr ""
6345
6346 #. type: Plain text
6347 #: guix-git/doc/guix.texi:1915
6348 msgid "Older programs such as @command{xterm} do not use Fontconfig and instead rely on server-side font rendering. Such programs require to specify a full name of a font using XLFD (X Logical Font Description), like this:"
6349 msgstr ""
6350
6351 #. type: example
6352 #: guix-git/doc/guix.texi:1918
6353 #, no-wrap
6354 msgid "-*-dejavu sans-medium-r-normal-*-*-100-*-*-*-*-*-1\n"
6355 msgstr ""
6356
6357 #. type: Plain text
6358 #: guix-git/doc/guix.texi:1922
6359 msgid "To be able to use such full names for the TrueType fonts installed in your Guix profile, you need to extend the font path of the X server:"
6360 msgstr ""
6361
6362 #. type: example
6363 #: guix-git/doc/guix.texi:1927
6364 #, no-wrap
6365 msgid "xset +fp $(dirname $(readlink -f ~/.guix-profile/share/fonts/truetype/fonts.dir))\n"
6366 msgstr ""
6367
6368 #. type: code{#1}
6369 #: guix-git/doc/guix.texi:1929
6370 #, no-wrap
6371 msgid "xlsfonts"
6372 msgstr ""
6373
6374 #. type: Plain text
6375 #: guix-git/doc/guix.texi:1932
6376 msgid "After that, you can run @code{xlsfonts} (from @code{xlsfonts} package) to make sure your TrueType fonts are listed there."
6377 msgstr ""
6378
6379 #. type: code{#1}
6380 #: guix-git/doc/guix.texi:1936 guix-git/doc/guix.texi:32100
6381 #, no-wrap
6382 msgid "nss-certs"
6383 msgstr ""
6384
6385 #. type: Plain text
6386 #: guix-git/doc/guix.texi:1939
6387 msgid "The @code{nss-certs} package provides X.509 certificates, which allow programs to authenticate Web servers accessed over HTTPS."
6388 msgstr ""
6389
6390 #. type: Plain text
6391 #: guix-git/doc/guix.texi:1944
6392 msgid "When using Guix on a foreign distro, you can install this package and define the relevant environment variables so that packages know where to look for certificates. @xref{X.509 Certificates}, for detailed information."
6393 msgstr ""
6394
6395 #. type: code{#1}
6396 #: guix-git/doc/guix.texi:1947
6397 #, no-wrap
6398 msgid "emacs"
6399 msgstr ""
6400
6401 #. type: Plain text
6402 #: guix-git/doc/guix.texi:1953
6403 msgid "When you install Emacs packages with Guix, the Elisp files are placed under the @file{share/emacs/site-lisp/} directory of the profile in which they are installed. The Elisp libraries are made available to Emacs through the @env{EMACSLOADPATH} environment variable, which is set when installing Emacs itself."
6404 msgstr ""
6405
6406 #. type: Plain text
6407 #: guix-git/doc/guix.texi:1960
6408 msgid "Additionally, autoload definitions are automatically evaluated at the initialization of Emacs, by the Guix-specific @code{guix-emacs-autoload-packages} procedure. If, for some reason, you want to avoid auto-loading the Emacs packages installed with Guix, you can do so by running Emacs with the @option{--no-site-file} option (@pxref{Init File,,, emacs, The GNU Emacs Manual})."
6409 msgstr ""
6410
6411 #. type: cindex
6412 #: guix-git/doc/guix.texi:1965
6413 #, no-wrap
6414 msgid "Upgrading Guix, on a foreign distro"
6415 msgstr ""
6416
6417 #. type: Plain text
6418 #: guix-git/doc/guix.texi:1968
6419 msgid "To upgrade Guix, run:"
6420 msgstr ""
6421
6422 #. type: example
6423 #: guix-git/doc/guix.texi:1971 guix-git/doc/guix.texi:2842
6424 #, no-wrap
6425 msgid "guix pull\n"
6426 msgstr ""
6427
6428 #. type: Plain text
6429 #: guix-git/doc/guix.texi:1974
6430 msgid "@xref{Invoking guix pull}, for more information."
6431 msgstr ""
6432
6433 #. type: cindex
6434 #: guix-git/doc/guix.texi:1975
6435 #, no-wrap
6436 msgid "upgrading Guix for the root user, on a foreign distro"
6437 msgstr ""
6438
6439 #. type: cindex
6440 #: guix-git/doc/guix.texi:1976
6441 #, no-wrap
6442 msgid "upgrading the Guix daemon, on a foreign distro"
6443 msgstr ""
6444
6445 #. type: cindex
6446 #: guix-git/doc/guix.texi:1977
6447 #, no-wrap
6448 msgid "@command{guix pull} for the root user, on a foreign distro"
6449 msgstr ""
6450
6451 #. type: Plain text
6452 #: guix-git/doc/guix.texi:1980
6453 msgid "On a foreign distro, you can upgrade the build daemon by running:"
6454 msgstr ""
6455
6456 #. type: example
6457 #: guix-git/doc/guix.texi:1983
6458 #, no-wrap
6459 msgid "sudo -i guix pull\n"
6460 msgstr ""
6461
6462 #. type: Plain text
6463 #: guix-git/doc/guix.texi:1988
6464 msgid "followed by (assuming your distro uses the systemd service management tool):"
6465 msgstr ""
6466
6467 #. type: example
6468 #: guix-git/doc/guix.texi:1991
6469 #, no-wrap
6470 msgid "systemctl restart guix-daemon.service\n"
6471 msgstr ""
6472
6473 #. type: Plain text
6474 #: guix-git/doc/guix.texi:1995
6475 msgid "On Guix System, upgrading the daemon is achieved by reconfiguring the system (@pxref{Invoking guix system, @code{guix system reconfigure}})."
6476 msgstr ""
6477
6478 #. type: cindex
6479 #: guix-git/doc/guix.texi:2002
6480 #, no-wrap
6481 msgid "installing Guix System"
6482 msgstr ""
6483
6484 #. type: cindex
6485 #: guix-git/doc/guix.texi:2003
6486 #, no-wrap
6487 msgid "Guix System, installation"
6488 msgstr ""
6489
6490 #. type: Plain text
6491 #: guix-git/doc/guix.texi:2008
6492 msgid "This section explains how to install Guix System on a machine. Guix, as a package manager, can also be installed on top of a running GNU/Linux system, @pxref{Installation}."
6493 msgstr ""
6494
6495 #. type: quotation
6496 #: guix-git/doc/guix.texi:2017
6497 msgid "You are reading this documentation with an Info reader. For details on how to use it, hit the @key{RET} key (``return'' or ``enter'') on the link that follows: @pxref{Top, Info reader,, info-stnd, Stand-alone GNU Info}. Hit @kbd{l} afterwards to come back here."
6498 msgstr ""
6499
6500 #. type: quotation
6501 #: guix-git/doc/guix.texi:2020
6502 msgid "Alternatively, run @command{info info} in another tty to keep the manual available."
6503 msgstr ""
6504
6505 #. type: Plain text
6506 #: guix-git/doc/guix.texi:2041
6507 msgid "We consider Guix System to be ready for a wide range of ``desktop'' and server use cases. The reliability guarantees it provides---transactional upgrades and rollbacks, reproducibility---make it a solid foundation."
6508 msgstr ""
6509
6510 #. type: Plain text
6511 #: guix-git/doc/guix.texi:2044
6512 msgid "Nevertheless, before you proceed with the installation, be aware of the following noteworthy limitations applicable to version @value{VERSION}:"
6513 msgstr ""
6514
6515 #. type: itemize
6516 #: guix-git/doc/guix.texi:2049
6517 msgid "More and more system services are provided (@pxref{Services}), but some may be missing."
6518 msgstr ""
6519
6520 #. type: itemize
6521 #: guix-git/doc/guix.texi:2054
6522 msgid "GNOME, Xfce, LXDE, and Enlightenment are available (@pxref{Desktop Services}), as well as a number of X11 window managers. However, KDE is currently missing."
6523 msgstr ""
6524
6525 #. type: Plain text
6526 #: guix-git/doc/guix.texi:2059
6527 msgid "More than a disclaimer, this is an invitation to report issues (and success stories!), and to join us in improving it. @xref{Contributing}, for more info."
6528 msgstr ""
6529
6530 #. type: cindex
6531 #: guix-git/doc/guix.texi:2064
6532 #, no-wrap
6533 msgid "hardware support on Guix System"
6534 msgstr ""
6535
6536 #. type: Plain text
6537 #: guix-git/doc/guix.texi:2073
6538 msgid "GNU@tie{}Guix focuses on respecting the user's computing freedom. It builds around the kernel Linux-libre, which means that only hardware for which free software drivers and firmware exist is supported. Nowadays, a wide range of off-the-shelf hardware is supported on GNU/Linux-libre---from keyboards to graphics cards to scanners and Ethernet controllers. Unfortunately, there are still areas where hardware vendors deny users control over their own computing, and such hardware is not supported on Guix System."
6539 msgstr ""
6540
6541 #. type: cindex
6542 #: guix-git/doc/guix.texi:2074
6543 #, no-wrap
6544 msgid "WiFi, hardware support"
6545 msgstr ""
6546
6547 #. type: Plain text
6548 #: guix-git/doc/guix.texi:2083
6549 msgid "One of the main areas where free drivers or firmware are lacking is WiFi devices. WiFi devices known to work include those using Atheros chips (AR9271 and AR7010), which corresponds to the @code{ath9k} Linux-libre driver, and those using Broadcom/AirForce chips (BCM43xx with Wireless-Core Revision 5), which corresponds to the @code{b43-open} Linux-libre driver. Free firmware exists for both and is available out-of-the-box on Guix System, as part of @code{%base-firmware} (@pxref{operating-system Reference, @code{firmware}})."
6550 msgstr ""
6551
6552 #. type: cindex
6553 #: guix-git/doc/guix.texi:2084
6554 #, no-wrap
6555 msgid "RYF, Respects Your Freedom"
6556 msgstr ""
6557
6558 #. type: Plain text
6559 #: guix-git/doc/guix.texi:2090
6560 msgid "The @uref{https://www.fsf.org/, Free Software Foundation} runs @uref{https://www.fsf.org/ryf, @dfn{Respects Your Freedom}} (RYF), a certification program for hardware products that respect your freedom and your privacy and ensure that you have control over your device. We encourage you to check the list of RYF-certified devices."
6561 msgstr ""
6562
6563 #. type: Plain text
6564 #: guix-git/doc/guix.texi:2094
6565 msgid "Another useful resource is the @uref{https://www.h-node.org/, H-Node} web site. It contains a catalog of hardware devices with information about their support in GNU/Linux."
6566 msgstr ""
6567
6568 #. type: Plain text
6569 #: guix-git/doc/guix.texi:2103
6570 msgid "An ISO-9660 installation image that can be written to a USB stick or burnt to a DVD can be downloaded from @indicateurl{@value{BASE-URL}/guix-system-install-@value{VERSION}.x86_64-linux.iso.xz}, where you can replace @code{x86_64-linux} with one of:"
6571 msgstr ""
6572
6573 #. type: table
6574 #: guix-git/doc/guix.texi:2107
6575 msgid "for a GNU/Linux system on Intel/AMD-compatible 64-bit CPUs;"
6576 msgstr ""
6577
6578 #. type: table
6579 #: guix-git/doc/guix.texi:2110
6580 msgid "for a 32-bit GNU/Linux system on Intel-compatible CPUs."
6581 msgstr ""
6582
6583 #. type: Plain text
6584 #: guix-git/doc/guix.texi:2115
6585 msgid "Make sure to download the associated @file{.sig} file and to verify the authenticity of the image against it, along these lines:"
6586 msgstr ""
6587
6588 #. type: example
6589 #: guix-git/doc/guix.texi:2119
6590 #, no-wrap
6591 msgid ""
6592 "$ wget @value{BASE-URL}/guix-system-install-@value{VERSION}.x86_64-linux.iso.xz.sig\n"
6593 "$ gpg --verify guix-system-install-@value{VERSION}.x86_64-linux.iso.xz.sig\n"
6594 msgstr ""
6595
6596 #. type: example
6597 #: guix-git/doc/guix.texi:2127
6598 #, no-wrap
6599 msgid ""
6600 "$ wget @value{OPENPGP-SIGNING-KEY-URL} \\\n"
6601 " -qO - | gpg --import -\n"
6602 msgstr ""
6603
6604 #. type: Plain text
6605 #: guix-git/doc/guix.texi:2139
6606 msgid "This image contains the tools necessary for an installation. It is meant to be copied @emph{as is} to a large-enough USB stick or DVD."
6607 msgstr ""
6608
6609 #. type: unnumberedsubsec
6610 #: guix-git/doc/guix.texi:2140
6611 #, no-wrap
6612 msgid "Copying to a USB Stick"
6613 msgstr ""
6614
6615 #. type: Plain text
6616 #: guix-git/doc/guix.texi:2143
6617 msgid "To copy the image to a USB stick, follow these steps:"
6618 msgstr ""
6619
6620 #. type: enumerate
6621 #: guix-git/doc/guix.texi:2147 guix-git/doc/guix.texi:2172
6622 msgid "Decompress the image using the @command{xz} command:"
6623 msgstr ""
6624
6625 #. type: example
6626 #: guix-git/doc/guix.texi:2150 guix-git/doc/guix.texi:2175
6627 #, no-wrap
6628 msgid "xz -d guix-system-install-@value{VERSION}.x86_64-linux.iso.xz\n"
6629 msgstr ""
6630
6631 #. type: enumerate
6632 #: guix-git/doc/guix.texi:2156
6633 msgid "Insert a USB stick of 1@tie{}GiB or more into your machine, and determine its device name. Assuming that the USB stick is known as @file{/dev/sdX}, copy the image with:"
6634 msgstr ""
6635
6636 #. type: example
6637 #: guix-git/doc/guix.texi:2160
6638 #, no-wrap
6639 msgid ""
6640 "dd if=guix-system-install-@value{VERSION}.x86_64-linux.iso of=/dev/sdX status=progress\n"
6641 "sync\n"
6642 msgstr ""
6643
6644 #. type: enumerate
6645 #: guix-git/doc/guix.texi:2163
6646 msgid "Access to @file{/dev/sdX} usually requires root privileges."
6647 msgstr ""
6648
6649 #. type: unnumberedsubsec
6650 #: guix-git/doc/guix.texi:2165
6651 #, no-wrap
6652 msgid "Burning on a DVD"
6653 msgstr ""
6654
6655 #. type: Plain text
6656 #: guix-git/doc/guix.texi:2168
6657 msgid "To copy the image to a DVD, follow these steps:"
6658 msgstr ""
6659
6660 #. type: enumerate
6661 #: guix-git/doc/guix.texi:2181
6662 msgid "Insert a blank DVD into your machine, and determine its device name. Assuming that the DVD drive is known as @file{/dev/srX}, copy the image with:"
6663 msgstr ""
6664
6665 #. type: example
6666 #: guix-git/doc/guix.texi:2184
6667 #, no-wrap
6668 msgid "growisofs -dvd-compat -Z /dev/srX=guix-system-install-@value{VERSION}.x86_64-linux.iso\n"
6669 msgstr ""
6670
6671 #. type: enumerate
6672 #: guix-git/doc/guix.texi:2187
6673 msgid "Access to @file{/dev/srX} usually requires root privileges."
6674 msgstr ""
6675
6676 #. type: unnumberedsubsec
6677 #: guix-git/doc/guix.texi:2189
6678 #, no-wrap
6679 msgid "Booting"
6680 msgstr ""
6681
6682 #. type: Plain text
6683 #: guix-git/doc/guix.texi:2196
6684 msgid "Once this is done, you should be able to reboot the system and boot from the USB stick or DVD@. The latter usually requires you to get in the BIOS or UEFI boot menu, where you can choose to boot from the USB stick. In order to boot from Libreboot, switch to the command mode by pressing the @kbd{c} key and type @command{search_grub usb}."
6685 msgstr ""
6686
6687 #. type: Plain text
6688 #: guix-git/doc/guix.texi:2199
6689 msgid "@xref{Installing Guix in a VM}, if, instead, you would like to install Guix System in a virtual machine (VM)."
6690 msgstr ""
6691
6692 #. type: Plain text
6693 #: guix-git/doc/guix.texi:2209
6694 msgid "Once you have booted, you can use the guided graphical installer, which makes it easy to get started (@pxref{Guided Graphical Installation}). Alternatively, if you are already familiar with GNU/Linux and if you want more control than what the graphical installer provides, you can choose the ``manual'' installation process (@pxref{Manual Installation})."
6695 msgstr ""
6696
6697 #. type: Plain text
6698 #: guix-git/doc/guix.texi:2217
6699 msgid "The graphical installer is available on TTY1. You can obtain root shells on TTYs 3 to 6 by hitting @kbd{ctrl-alt-f3}, @kbd{ctrl-alt-f4}, etc. TTY2 shows this documentation and you can reach it with @kbd{ctrl-alt-f2}. Documentation is browsable using the Info reader commands (@pxref{Top,,, info-stnd, Stand-alone GNU Info}). The installation system runs the GPM mouse daemon, which allows you to select text with the left mouse button and to paste it with the middle button."
6700 msgstr ""
6701
6702 #. type: quotation
6703 #: guix-git/doc/guix.texi:2222
6704 msgid "Installation requires access to the Internet so that any missing dependencies of your system configuration can be downloaded. See the ``Networking'' section below."
6705 msgstr ""
6706
6707 #. type: Plain text
6708 #: guix-git/doc/guix.texi:2229
6709 msgid "The graphical installer is a text-based user interface. It will guide you, with dialog boxes, through the steps needed to install GNU@tie{}Guix System."
6710 msgstr ""
6711
6712 #. type: Plain text
6713 #: guix-git/doc/guix.texi:2234
6714 msgid "The first dialog boxes allow you to set up the system as you use it during the installation: you can choose the language, keyboard layout, and set up networking, which will be used during the installation. The image below shows the networking dialog."
6715 msgstr ""
6716
6717 #. type: Plain text
6718 #: guix-git/doc/guix.texi:2236
6719 msgid "@image{images/installer-network,5in,, networking setup with the graphical installer}"
6720 msgstr ""
6721
6722 #. type: Plain text
6723 #: guix-git/doc/guix.texi:2241
6724 msgid "Later steps allow you to partition your hard disk, as shown in the image below, to choose whether or not to use encrypted file systems, to enter the host name and root password, and to create an additional account, among other things."
6725 msgstr ""
6726
6727 #. type: Plain text
6728 #: guix-git/doc/guix.texi:2243
6729 msgid "@image{images/installer-partitions,5in,, partitioning with the graphical installer}"
6730 msgstr ""
6731
6732 #. type: Plain text
6733 #: guix-git/doc/guix.texi:2246
6734 msgid "Note that, at any time, the installer allows you to exit the current installation step and resume at a previous step, as show in the image below."
6735 msgstr ""
6736
6737 #. type: Plain text
6738 #: guix-git/doc/guix.texi:2248
6739 msgid "@image{images/installer-resume,5in,, resuming the installation process}"
6740 msgstr ""
6741
6742 #. type: Plain text
6743 #: guix-git/doc/guix.texi:2253
6744 msgid "Once you're done, the installer produces an operating system configuration and displays it (@pxref{Using the Configuration System}). At that point you can hit ``OK'' and installation will proceed. On success, you can reboot into the new system and enjoy. @xref{After System Installation}, for what's next!"
6745 msgstr ""
6746
6747 #. type: Plain text
6748 #: guix-git/doc/guix.texi:2263
6749 msgid "This section describes how you would ``manually'' install GNU@tie{}Guix System on your machine. This option requires familiarity with GNU/Linux, with the shell, and with common administration tools. If you think this is not for you, consider using the guided graphical installer (@pxref{Guided Graphical Installation})."
6750 msgstr ""
6751
6752 #. type: Plain text
6753 #: guix-git/doc/guix.texi:2269
6754 msgid "The installation system provides root shells on TTYs 3 to 6; press @kbd{ctrl-alt-f3}, @kbd{ctrl-alt-f4}, and so on to reach them. It includes many common tools needed to install the system. But it is also a full-blown Guix System, which means that you can install additional packages, should you need it, using @command{guix package} (@pxref{Invoking guix package})."
6755 msgstr ""
6756
6757 #. type: subsection
6758 #: guix-git/doc/guix.texi:2276
6759 #, no-wrap
6760 msgid "Keyboard Layout, Networking, and Partitioning"
6761 msgstr ""
6762
6763 #. type: Plain text
6764 #: guix-git/doc/guix.texi:2281
6765 msgid "Before you can install the system, you may want to adjust the keyboard layout, set up networking, and partition your target hard disk. This section will guide you through this."
6766 msgstr ""
6767
6768 #. type: cindex
6769 #: guix-git/doc/guix.texi:2284 guix-git/doc/guix.texi:14553
6770 #, no-wrap
6771 msgid "keyboard layout"
6772 msgstr ""
6773
6774 #. type: Plain text
6775 #: guix-git/doc/guix.texi:2288
6776 msgid "The installation image uses the US qwerty keyboard layout. If you want to change it, you can use the @command{loadkeys} command. For example, the following command selects the Dvorak keyboard layout:"
6777 msgstr ""
6778
6779 #. type: example
6780 #: guix-git/doc/guix.texi:2291
6781 #, no-wrap
6782 msgid "loadkeys dvorak\n"
6783 msgstr ""
6784
6785 #. type: Plain text
6786 #: guix-git/doc/guix.texi:2296
6787 msgid "See the files under @file{/run/current-system/profile/share/keymaps} for a list of available keyboard layouts. Run @command{man loadkeys} for more information."
6788 msgstr ""
6789
6790 #. type: subsubsection
6791 #: guix-git/doc/guix.texi:2297
6792 #, no-wrap
6793 msgid "Networking"
6794 msgstr ""
6795
6796 #. type: Plain text
6797 #: guix-git/doc/guix.texi:2300
6798 msgid "Run the following command to see what your network interfaces are called:"
6799 msgstr ""
6800
6801 #. type: example
6802 #: guix-git/doc/guix.texi:2303
6803 #, no-wrap
6804 msgid "ifconfig -a\n"
6805 msgstr ""
6806
6807 #. type: table
6808 #: guix-git/doc/guix.texi:2307 guix-git/doc/guix.texi:2329
6809 msgid "@dots{} or, using the GNU/Linux-specific @command{ip} command:"
6810 msgstr ""
6811
6812 #. type: example
6813 #: guix-git/doc/guix.texi:2310
6814 #, no-wrap
6815 msgid "ip address\n"
6816 msgstr ""
6817
6818 #. type: Plain text
6819 #: guix-git/doc/guix.texi:2317
6820 msgid "Wired interfaces have a name starting with @samp{e}; for example, the interface corresponding to the first on-board Ethernet controller is called @samp{eno1}. Wireless interfaces have a name starting with @samp{w}, like @samp{w1p2s0}."
6821 msgstr ""
6822
6823 #. type: item
6824 #: guix-git/doc/guix.texi:2319
6825 #, no-wrap
6826 msgid "Wired connection"
6827 msgstr ""
6828
6829 #. type: table
6830 #: guix-git/doc/guix.texi:2322
6831 msgid "To configure a wired network run the following command, substituting @var{interface} with the name of the wired interface you want to use."
6832 msgstr ""
6833
6834 #. type: example
6835 #: guix-git/doc/guix.texi:2325
6836 #, no-wrap
6837 msgid "ifconfig @var{interface} up\n"
6838 msgstr ""
6839
6840 #. type: example
6841 #: guix-git/doc/guix.texi:2332
6842 #, no-wrap
6843 msgid "ip link set @var{interface} up\n"
6844 msgstr ""
6845
6846 #. type: item
6847 #: guix-git/doc/guix.texi:2334
6848 #, no-wrap
6849 msgid "Wireless connection"
6850 msgstr ""
6851
6852 #. type: cindex
6853 #: guix-git/doc/guix.texi:2335 guix-git/doc/guix.texi:16178
6854 #, no-wrap
6855 msgid "wireless"
6856 msgstr ""
6857
6858 #. type: cindex
6859 #: guix-git/doc/guix.texi:2336 guix-git/doc/guix.texi:16179
6860 #, no-wrap
6861 msgid "WiFi"
6862 msgstr ""
6863
6864 #. type: table
6865 #: guix-git/doc/guix.texi:2341
6866 msgid "To configure wireless networking, you can create a configuration file for the @command{wpa_supplicant} configuration tool (its location is not important) using one of the available text editors such as @command{nano}:"
6867 msgstr ""
6868
6869 #. type: example
6870 #: guix-git/doc/guix.texi:2344
6871 #, no-wrap
6872 msgid "nano wpa_supplicant.conf\n"
6873 msgstr ""
6874
6875 #. type: table
6876 #: guix-git/doc/guix.texi:2349
6877 msgid "As an example, the following stanza can go to this file and will work for many wireless networks, provided you give the actual SSID and passphrase for the network you are connecting to:"
6878 msgstr ""
6879
6880 #. type: example
6881 #: guix-git/doc/guix.texi:2356
6882 #, no-wrap
6883 msgid ""
6884 "network=@{\n"
6885 " ssid=\"@var{my-ssid}\"\n"
6886 " key_mgmt=WPA-PSK\n"
6887 " psk=\"the network's secret passphrase\"\n"
6888 "@}\n"
6889 msgstr ""
6890
6891 #. type: table
6892 #: guix-git/doc/guix.texi:2361
6893 msgid "Start the wireless service and run it in the background with the following command (substitute @var{interface} with the name of the network interface you want to use):"
6894 msgstr ""
6895
6896 #. type: example
6897 #: guix-git/doc/guix.texi:2364
6898 #, no-wrap
6899 msgid "wpa_supplicant -c wpa_supplicant.conf -i @var{interface} -B\n"
6900 msgstr ""
6901
6902 #. type: table
6903 #: guix-git/doc/guix.texi:2367
6904 msgid "Run @command{man wpa_supplicant} for more information."
6905 msgstr ""
6906
6907 #. type: cindex
6908 #: guix-git/doc/guix.texi:2369
6909 #, no-wrap
6910 msgid "DHCP"
6911 msgstr ""
6912
6913 #. type: Plain text
6914 #: guix-git/doc/guix.texi:2372
6915 msgid "At this point, you need to acquire an IP address. On a network where IP addresses are automatically assigned @i{via} DHCP, you can run:"
6916 msgstr ""
6917
6918 #. type: example
6919 #: guix-git/doc/guix.texi:2375
6920 #, no-wrap
6921 msgid "dhclient -v @var{interface}\n"
6922 msgstr ""
6923
6924 #. type: Plain text
6925 #: guix-git/doc/guix.texi:2378
6926 msgid "Try to ping a server to see if networking is up and running:"
6927 msgstr ""
6928
6929 #. type: example
6930 #: guix-git/doc/guix.texi:2381
6931 #, no-wrap
6932 msgid "ping -c 3 gnu.org\n"
6933 msgstr ""
6934
6935 #. type: Plain text
6936 #: guix-git/doc/guix.texi:2385
6937 msgid "Setting up network access is almost always a requirement because the image does not contain all the software and tools that may be needed."
6938 msgstr ""
6939
6940 #. type: cindex
6941 #: guix-git/doc/guix.texi:2386
6942 #, no-wrap
6943 msgid "proxy, during system installation"
6944 msgstr ""
6945
6946 #. type: Plain text
6947 #: guix-git/doc/guix.texi:2389
6948 msgid "If you need HTTP and HTTPS access to go through a proxy, run the following command:"
6949 msgstr ""
6950
6951 #. type: example
6952 #: guix-git/doc/guix.texi:2392
6953 #, no-wrap
6954 msgid "herd set-http-proxy guix-daemon @var{URL}\n"
6955 msgstr ""
6956
6957 #. type: Plain text
6958 #: guix-git/doc/guix.texi:2397
6959 msgid "where @var{URL} is the proxy URL, for example @code{http://example.org:8118}."
6960 msgstr ""
6961
6962 #. type: cindex
6963 #: guix-git/doc/guix.texi:2398
6964 #, no-wrap
6965 msgid "installing over SSH"
6966 msgstr ""
6967
6968 #. type: Plain text
6969 #: guix-git/doc/guix.texi:2401
6970 msgid "If you want to, you can continue the installation remotely by starting an SSH server:"
6971 msgstr ""
6972
6973 #. type: example
6974 #: guix-git/doc/guix.texi:2404
6975 #, no-wrap
6976 msgid "herd start ssh-daemon\n"
6977 msgstr ""
6978
6979 #. type: Plain text
6980 #: guix-git/doc/guix.texi:2408
6981 msgid "Make sure to either set a password with @command{passwd}, or configure OpenSSH public key authentication before logging in."
6982 msgstr ""
6983
6984 #. type: subsubsection
6985 #: guix-git/doc/guix.texi:2409
6986 #, no-wrap
6987 msgid "Disk Partitioning"
6988 msgstr ""
6989
6990 #. type: Plain text
6991 #: guix-git/doc/guix.texi:2413
6992 msgid "Unless this has already been done, the next step is to partition, and then format the target partition(s)."
6993 msgstr ""
6994
6995 #. type: Plain text
6996 #: guix-git/doc/guix.texi:2418
6997 msgid "The installation image includes several partitioning tools, including Parted (@pxref{Overview,,, parted, GNU Parted User Manual}), @command{fdisk}, and @command{cfdisk}. Run it and set up your disk with the partition layout you want:"
6998 msgstr ""
6999
7000 #. type: example
7001 #: guix-git/doc/guix.texi:2421
7002 #, no-wrap
7003 msgid "cfdisk\n"
7004 msgstr ""
7005
7006 #. type: Plain text
7007 #: guix-git/doc/guix.texi:2427
7008 msgid "If your disk uses the GUID Partition Table (GPT) format and you plan to install BIOS-based GRUB (which is the default), make sure a BIOS Boot Partition is available (@pxref{BIOS installation,,, grub, GNU GRUB manual})."
7009 msgstr ""
7010
7011 #. type: cindex
7012 #: guix-git/doc/guix.texi:2428
7013 #, no-wrap
7014 msgid "EFI, installation"
7015 msgstr ""
7016
7017 #. type: cindex
7018 #: guix-git/doc/guix.texi:2429
7019 #, no-wrap
7020 msgid "UEFI, installation"
7021 msgstr ""
7022
7023 #. type: cindex
7024 #: guix-git/doc/guix.texi:2430
7025 #, no-wrap
7026 msgid "ESP, EFI system partition"
7027 msgstr ""
7028
7029 #. type: Plain text
7030 #: guix-git/doc/guix.texi:2434
7031 msgid "If you instead wish to use EFI-based GRUB, a FAT32 @dfn{EFI System Partition} (ESP) is required. This partition can be mounted at @file{/boot/efi} for instance and must have the @code{esp} flag set. E.g., for @command{parted}:"
7032 msgstr ""
7033
7034 #. type: example
7035 #: guix-git/doc/guix.texi:2437
7036 #, no-wrap
7037 msgid "parted /dev/sda set 1 esp on\n"
7038 msgstr ""
7039
7040 #. type: vindex
7041 #: guix-git/doc/guix.texi:2440 guix-git/doc/guix.texi:32500
7042 #, no-wrap
7043 msgid "grub-bootloader"
7044 msgstr ""
7045
7046 #. type: vindex
7047 #: guix-git/doc/guix.texi:2441 guix-git/doc/guix.texi:32494
7048 #, no-wrap
7049 msgid "grub-efi-bootloader"
7050 msgstr ""
7051
7052 #. type: quotation
7053 #: guix-git/doc/guix.texi:2448
7054 msgid "Unsure whether to use EFI- or BIOS-based GRUB? If the directory @file{/sys/firmware/efi} exists in the installation image, then you should probably perform an EFI installation, using @code{grub-efi-bootloader}. Otherwise you should use the BIOS-based GRUB, known as @code{grub-bootloader}. @xref{Bootloader Configuration}, for more info on bootloaders."
7055 msgstr ""
7056
7057 #. type: Plain text
7058 #: guix-git/doc/guix.texi:2456
7059 msgid "Once you are done partitioning the target hard disk drive, you have to create a file system on the relevant partition(s)@footnote{Currently Guix System only supports ext4, btrfs, JFS, and F2FS file systems. In particular, code that reads file system UUIDs and labels only works for these file system types.}. For the ESP, if you have one and assuming it is @file{/dev/sda1}, run:"
7060 msgstr ""
7061
7062 #. type: example
7063 #: guix-git/doc/guix.texi:2459
7064 #, no-wrap
7065 msgid "mkfs.fat -F32 /dev/sda1\n"
7066 msgstr ""
7067
7068 #. type: Plain text
7069 #: guix-git/doc/guix.texi:2466
7070 msgid "For the root file system, ext4 is the most widely used format. Other file systems, such as Btrfs, support compression, which is reported to nicely complement file deduplication that the daemon performs independently of the file system (@pxref{Invoking guix-daemon, deduplication})."
7071 msgstr ""
7072
7073 #. type: Plain text
7074 #: guix-git/doc/guix.texi:2473
7075 msgid "Preferably, assign file systems a label so that you can easily and reliably refer to them in @code{file-system} declarations (@pxref{File Systems}). This is typically done using the @code{-L} option of @command{mkfs.ext4} and related commands. So, assuming the target root partition lives at @file{/dev/sda2}, a file system with the label @code{my-root} can be created with:"
7076 msgstr ""
7077
7078 #. type: example
7079 #: guix-git/doc/guix.texi:2476
7080 #, no-wrap
7081 msgid "mkfs.ext4 -L my-root /dev/sda2\n"
7082 msgstr ""
7083
7084 #. type: cindex
7085 #: guix-git/doc/guix.texi:2478 guix-git/doc/guix.texi:13551
7086 #, no-wrap
7087 msgid "encrypted disk"
7088 msgstr ""
7089
7090 #. type: Plain text
7091 #: guix-git/doc/guix.texi:2485
7092 msgid "If you are instead planning to encrypt the root partition, you can use the Cryptsetup/LUKS utilities to do that (see @inlinefmtifelse{html, @uref{https://linux.die.net/man/8/cryptsetup, @code{man cryptsetup}}, @code{man cryptsetup}} for more information). Assuming you want to store the root partition on @file{/dev/sda2}, the command sequence would be along these lines:"
7093 msgstr ""
7094
7095 #. type: example
7096 #: guix-git/doc/guix.texi:2490
7097 #, no-wrap
7098 msgid ""
7099 "cryptsetup luksFormat /dev/sda2\n"
7100 "cryptsetup open --type luks /dev/sda2 my-partition\n"
7101 "mkfs.ext4 -L my-root /dev/mapper/my-partition\n"
7102 msgstr ""
7103
7104 #. type: Plain text
7105 #: guix-git/doc/guix.texi:2495
7106 msgid "Once that is done, mount the target file system under @file{/mnt} with a command like (again, assuming @code{my-root} is the label of the root file system):"
7107 msgstr ""
7108
7109 #. type: example
7110 #: guix-git/doc/guix.texi:2498
7111 #, no-wrap
7112 msgid "mount LABEL=my-root /mnt\n"
7113 msgstr ""
7114
7115 #. type: Plain text
7116 #: guix-git/doc/guix.texi:2504
7117 msgid "Also mount any other file systems you would like to use on the target system relative to this path. If you have opted for @file{/boot/efi} as an EFI mount point for example, mount it at @file{/mnt/boot/efi} now so it is found by @code{guix system init} afterwards."
7118 msgstr ""
7119
7120 #. type: Plain text
7121 #: guix-git/doc/guix.texi:2509
7122 msgid "Finally, if you plan to use one or more swap partitions (@pxref{Memory Concepts, swap space,, libc, The GNU C Library Reference Manual}), make sure to initialize them with @command{mkswap}. Assuming you have one swap partition on @file{/dev/sda3}, you would run:"
7123 msgstr ""
7124
7125 #. type: example
7126 #: guix-git/doc/guix.texi:2513
7127 #, no-wrap
7128 msgid ""
7129 "mkswap /dev/sda3\n"
7130 "swapon /dev/sda3\n"
7131 msgstr ""
7132
7133 #. type: Plain text
7134 #: guix-git/doc/guix.texi:2521
7135 msgid "Alternatively, you may use a swap file. For example, assuming that in the new system you want to use the file @file{/swapfile} as a swap file, you would run@footnote{This example will work for many types of file systems (e.g., ext4). However, for copy-on-write file systems (e.g., btrfs), the required steps may be different. For details, see the manual pages for @command{mkswap} and @command{swapon}.}:"
7136 msgstr ""
7137
7138 #. type: example
7139 #: guix-git/doc/guix.texi:2529
7140 #, no-wrap
7141 msgid ""
7142 "# This is 10 GiB of swap space. Adjust \"count\" to change the size.\n"
7143 "dd if=/dev/zero of=/mnt/swapfile bs=1MiB count=10240\n"
7144 "# For security, make the file readable and writable only by root.\n"
7145 "chmod 600 /mnt/swapfile\n"
7146 "mkswap /mnt/swapfile\n"
7147 "swapon /mnt/swapfile\n"
7148 msgstr ""
7149
7150 #. type: Plain text
7151 #: guix-git/doc/guix.texi:2534
7152 msgid "Note that if you have encrypted the root partition and created a swap file in its file system as described above, then the encryption also protects the swap file, just like any other file in that file system."
7153 msgstr ""
7154
7155 #. type: Plain text
7156 #: guix-git/doc/guix.texi:2540
7157 msgid "With the target partitions ready and the target root mounted on @file{/mnt}, we're ready to go. First, run:"
7158 msgstr ""
7159
7160 #. type: example
7161 #: guix-git/doc/guix.texi:2543
7162 #, no-wrap
7163 msgid "herd start cow-store /mnt\n"
7164 msgstr ""
7165
7166 #. type: Plain text
7167 #: guix-git/doc/guix.texi:2550
7168 msgid "This makes @file{/gnu/store} copy-on-write, such that packages added to it during the installation phase are written to the target disk on @file{/mnt} rather than kept in memory. This is necessary because the first phase of the @command{guix system init} command (see below) entails downloads or builds to @file{/gnu/store} which, initially, is an in-memory file system."
7169 msgstr ""
7170
7171 #. type: Plain text
7172 #: guix-git/doc/guix.texi:2561
7173 msgid "Next, you have to edit a file and provide the declaration of the operating system to be installed. To that end, the installation system comes with three text editors. We recommend GNU nano (@pxref{Top,,, nano, GNU nano Manual}), which supports syntax highlighting and parentheses matching; other editors include GNU Zile (an Emacs clone), and nvi (a clone of the original BSD @command{vi} editor). We strongly recommend storing that file on the target root file system, say, as @file{/mnt/etc/config.scm}. Failing to do that, you will have lost your configuration file once you have rebooted into the newly-installed system."
7174 msgstr ""
7175
7176 #. type: Plain text
7177 #: guix-git/doc/guix.texi:2568
7178 msgid "@xref{Using the Configuration System}, for an overview of the configuration file. The example configurations discussed in that section are available under @file{/etc/configuration} in the installation image. Thus, to get started with a system configuration providing a graphical display server (a ``desktop'' system), you can run something along these lines:"
7179 msgstr ""
7180
7181 #. type: example
7182 #: guix-git/doc/guix.texi:2573
7183 #, no-wrap
7184 msgid ""
7185 "# mkdir /mnt/etc\n"
7186 "# cp /etc/configuration/desktop.scm /mnt/etc/config.scm\n"
7187 "# nano /mnt/etc/config.scm\n"
7188 msgstr ""
7189
7190 #. type: Plain text
7191 #: guix-git/doc/guix.texi:2577
7192 msgid "You should pay attention to what your configuration file contains, and in particular:"
7193 msgstr ""
7194
7195 #. type: itemize
7196 #: guix-git/doc/guix.texi:2588
7197 msgid "Make sure the @code{bootloader-configuration} form refers to the target you want to install GRUB on. It should mention @code{grub-bootloader} if you are installing GRUB in the legacy way, or @code{grub-efi-bootloader} for newer UEFI systems. For legacy systems, the @code{target} field names a device, like @code{/dev/sda}; for UEFI systems it names a path to a mounted EFI partition, like @code{/boot/efi}; do make sure the path is currently mounted and a @code{file-system} entry is specified in your configuration."
7198 msgstr ""
7199
7200 #. type: itemize
7201 #: guix-git/doc/guix.texi:2594
7202 msgid "Be sure that your file system labels match the value of their respective @code{device} fields in your @code{file-system} configuration, assuming your @code{file-system} configuration uses the @code{file-system-label} procedure in its @code{device} field."
7203 msgstr ""
7204
7205 #. type: itemize
7206 #: guix-git/doc/guix.texi:2598
7207 msgid "If there are encrypted or RAID partitions, make sure to add a @code{mapped-devices} field to describe them (@pxref{Mapped Devices})."
7208 msgstr ""
7209
7210 #. type: Plain text
7211 #: guix-git/doc/guix.texi:2603
7212 msgid "Once you are done preparing the configuration file, the new system must be initialized (remember that the target root file system is mounted under @file{/mnt}):"
7213 msgstr ""
7214
7215 #. type: example
7216 #: guix-git/doc/guix.texi:2606
7217 #, no-wrap
7218 msgid "guix system init /mnt/etc/config.scm /mnt\n"
7219 msgstr ""
7220
7221 #. type: Plain text
7222 #: guix-git/doc/guix.texi:2613
7223 msgid "This copies all the necessary files and installs GRUB on @file{/dev/sdX}, unless you pass the @option{--no-bootloader} option. For more information, @pxref{Invoking guix system}. This command may trigger downloads or builds of missing packages, which can take some time."
7224 msgstr ""
7225
7226 #. type: Plain text
7227 #: guix-git/doc/guix.texi:2621
7228 msgid "Once that command has completed---and hopefully succeeded!---you can run @command{reboot} and boot into the new system. The @code{root} password in the new system is initially empty; other users' passwords need to be initialized by running the @command{passwd} command as @code{root}, unless your configuration specifies otherwise (@pxref{user-account-password, user account passwords}). @xref{After System Installation}, for what's next!"
7229 msgstr ""
7230
7231 #. type: Plain text
7232 #: guix-git/doc/guix.texi:2628
7233 msgid "Success, you've now booted into Guix System! From then on, you can update the system whenever you want by running, say:"
7234 msgstr ""
7235
7236 #. type: example
7237 #: guix-git/doc/guix.texi:2632
7238 #, no-wrap
7239 msgid ""
7240 "guix pull\n"
7241 "sudo guix system reconfigure /etc/config.scm\n"
7242 msgstr ""
7243
7244 #. type: Plain text
7245 #: guix-git/doc/guix.texi:2638
7246 msgid "This builds a new system generation with the latest packages and services (@pxref{Invoking guix system}). We recommend doing that regularly so that your system includes the latest security updates (@pxref{Security Updates})."
7247 msgstr ""
7248
7249 #. type: cindex
7250 #: guix-git/doc/guix.texi:2641
7251 #, no-wrap
7252 msgid "sudo vs. @command{guix pull}"
7253 msgstr ""
7254
7255 #. type: quotation
7256 #: guix-git/doc/guix.texi:2645
7257 msgid "Note that @command{sudo guix} runs your user's @command{guix} command and @emph{not} root's, because @command{sudo} leaves @env{PATH} unchanged. To explicitly run root's @command{guix}, type @command{sudo -i guix @dots{}}."
7258 msgstr ""
7259
7260 #. type: quotation
7261 #: guix-git/doc/guix.texi:2650
7262 msgid "The difference matters here, because @command{guix pull} updates the @command{guix} command and package definitions only for the user it is run as. This means that if you choose to use @command{guix system reconfigure} in root's login shell, you'll need to @command{guix pull} separately."
7263 msgstr ""
7264
7265 #. type: Plain text
7266 #: guix-git/doc/guix.texi:2655
7267 msgid "Now, @pxref{Getting Started}, and join us on @code{#guix} on the Freenode IRC network or on @email{guix-devel@@gnu.org} to share your experience!"
7268 msgstr ""
7269
7270 #. type: section
7271 #: guix-git/doc/guix.texi:2658
7272 #, no-wrap
7273 msgid "Installing Guix in a Virtual Machine"
7274 msgstr ""
7275
7276 #. type: cindex
7277 #: guix-git/doc/guix.texi:2660
7278 #, no-wrap
7279 msgid "virtual machine, Guix System installation"
7280 msgstr ""
7281
7282 #. type: cindex
7283 #: guix-git/doc/guix.texi:2661
7284 #, no-wrap
7285 msgid "virtual private server (VPS)"
7286 msgstr ""
7287
7288 #. type: cindex
7289 #: guix-git/doc/guix.texi:2662
7290 #, no-wrap
7291 msgid "VPS (virtual private server)"
7292 msgstr ""
7293
7294 #. type: Plain text
7295 #: guix-git/doc/guix.texi:2666
7296 msgid "If you'd like to install Guix System in a virtual machine (VM) or on a virtual private server (VPS) rather than on your beloved machine, this section is for you."
7297 msgstr ""
7298
7299 #. type: Plain text
7300 #: guix-git/doc/guix.texi:2669
7301 msgid "To boot a @uref{https://qemu.org/,QEMU} VM for installing Guix System in a disk image, follow these steps:"
7302 msgstr ""
7303
7304 #. type: enumerate
7305 #: guix-git/doc/guix.texi:2674
7306 msgid "First, retrieve and decompress the Guix system installation image as described previously (@pxref{USB Stick and DVD Installation})."
7307 msgstr ""
7308
7309 #. type: enumerate
7310 #: guix-git/doc/guix.texi:2678
7311 msgid "Create a disk image that will hold the installed system. To make a qcow2-formatted disk image, use the @command{qemu-img} command:"
7312 msgstr ""
7313
7314 #. type: example
7315 #: guix-git/doc/guix.texi:2681
7316 #, no-wrap
7317 msgid "qemu-img create -f qcow2 guix-system.img 50G\n"
7318 msgstr ""
7319
7320 #. type: enumerate
7321 #: guix-git/doc/guix.texi:2685
7322 msgid "The resulting file will be much smaller than 50 GB (typically less than 1 MB), but it will grow as the virtualized storage device is filled up."
7323 msgstr ""
7324
7325 #. type: enumerate
7326 #: guix-git/doc/guix.texi:2688
7327 msgid "Boot the USB installation image in an VM:"
7328 msgstr ""
7329
7330 #. type: example
7331 #: guix-git/doc/guix.texi:2694
7332 #, no-wrap
7333 msgid ""
7334 "qemu-system-x86_64 -m 1024 -smp 1 -enable-kvm \\\n"
7335 " -nic user,model=virtio-net-pci -boot menu=on,order=d \\\n"
7336 " -drive file=guix-system.img \\\n"
7337 " -drive media=cdrom,file=guix-system-install-@value{VERSION}.@var{system}.iso\n"
7338 msgstr ""
7339
7340 #. type: enumerate
7341 #: guix-git/doc/guix.texi:2698
7342 msgid "@code{-enable-kvm} is optional, but significantly improves performance, @pxref{Running Guix in a VM}."
7343 msgstr ""
7344
7345 #. type: enumerate
7346 #: guix-git/doc/guix.texi:2702
7347 msgid "You're now root in the VM, proceed with the installation process. @xref{Preparing for Installation}, and follow the instructions."
7348 msgstr ""
7349
7350 #. type: Plain text
7351 #: guix-git/doc/guix.texi:2707
7352 msgid "Once installation is complete, you can boot the system that's on your @file{guix-system.img} image. @xref{Running Guix in a VM}, for how to do that."
7353 msgstr ""
7354
7355 #. type: cindex
7356 #: guix-git/doc/guix.texi:2711
7357 #, no-wrap
7358 msgid "installation image"
7359 msgstr ""
7360
7361 #. type: Plain text
7362 #: guix-git/doc/guix.texi:2714
7363 msgid "The installation image described above was built using the @command{guix system} command, specifically:"
7364 msgstr ""
7365
7366 #. type: example
7367 #: guix-git/doc/guix.texi:2717
7368 #, no-wrap
7369 msgid "guix system image -t iso9660 gnu/system/install.scm\n"
7370 msgstr ""
7371
7372 #. type: Plain text
7373 #: guix-git/doc/guix.texi:2722
7374 msgid "Have a look at @file{gnu/system/install.scm} in the source tree, and see also @ref{Invoking guix system} for more information about the installation image."
7375 msgstr ""
7376
7377 #. type: section
7378 #: guix-git/doc/guix.texi:2723
7379 #, no-wrap
7380 msgid "Building the Installation Image for ARM Boards"
7381 msgstr ""
7382
7383 #. type: Plain text
7384 #: guix-git/doc/guix.texi:2727
7385 msgid "Many ARM boards require a specific variant of the @uref{https://www.denx.de/wiki/U-Boot/, U-Boot} bootloader."
7386 msgstr ""
7387
7388 #. type: Plain text
7389 #: guix-git/doc/guix.texi:2731
7390 msgid "If you build a disk image and the bootloader is not available otherwise (on another boot drive etc), it's advisable to build an image that includes the bootloader, specifically:"
7391 msgstr ""
7392
7393 #. type: example
7394 #: guix-git/doc/guix.texi:2734
7395 #, no-wrap
7396 msgid "guix system image --system=armhf-linux -e '((@@ (gnu system install) os-with-u-boot) (@@ (gnu system install) installation-os) \"A20-OLinuXino-Lime2\")'\n"
7397 msgstr ""
7398
7399 #. type: Plain text
7400 #: guix-git/doc/guix.texi:2738
7401 msgid "@code{A20-OLinuXino-Lime2} is the name of the board. If you specify an invalid board, a list of possible boards will be printed."
7402 msgstr ""
7403
7404 #. type: Plain text
7405 #: guix-git/doc/guix.texi:2748
7406 msgid "Presumably, you've reached this section because either you have installed Guix on top of another distribution (@pxref{Installation}), or you've installed the standalone Guix System (@pxref{System Installation}). It's time for you to get started using Guix and this section aims to help you do that and give you a feel of what it's like."
7407 msgstr ""
7408
7409 #. type: Plain text
7410 #: guix-git/doc/guix.texi:2752
7411 msgid "Guix is about installing software, so probably the first thing you'll want to do is to actually look for software. Let's say you're looking for a text editor, you can run:"
7412 msgstr ""
7413
7414 #. type: example
7415 #: guix-git/doc/guix.texi:2755
7416 #, no-wrap
7417 msgid "guix search text editor\n"
7418 msgstr ""
7419
7420 #. type: Plain text
7421 #: guix-git/doc/guix.texi:2762
7422 msgid "This command shows you a number of matching @dfn{packages}, each time showing the package's name, version, a description, and additional info. Once you've found out the one you want to use, let's say Emacs (ah ha!), you can go ahead and install it (run this command as a regular user, @emph{no need for root privileges}!):"
7423 msgstr ""
7424
7425 #. type: example
7426 #: guix-git/doc/guix.texi:2765
7427 #, no-wrap
7428 msgid "guix install emacs\n"
7429 msgstr ""
7430
7431 #. type: cindex
7432 #: guix-git/doc/guix.texi:2767 guix-git/doc/guix.texi:3079
7433 #: guix-git/doc/guix.texi:3131
7434 #, no-wrap
7435 msgid "profile"
7436 msgstr ""
7437
7438 #. type: Plain text
7439 #: guix-git/doc/guix.texi:2775
7440 msgid "You've installed your first package, congrats! The package is now visible in your default @dfn{profile}, @file{$HOME/.guix-profile}---a profile is a directory containing installed packages. In the process, you've probably noticed that Guix downloaded pre-built binaries; or, if you explicitly chose to @emph{not} use pre-built binaries, then probably Guix is still building software (@pxref{Substitutes}, for more info)."
7441 msgstr ""
7442
7443 #. type: Plain text
7444 #: guix-git/doc/guix.texi:2778
7445 msgid "Unless you're using Guix System, the @command{guix install} command must have printed this hint:"
7446 msgstr ""
7447
7448 #. type: example
7449 #: guix-git/doc/guix.texi:2781
7450 #, no-wrap
7451 msgid ""
7452 "hint: Consider setting the necessary environment variables by running:\n"
7453 "\n"
7454 msgstr ""
7455
7456 #. type: example
7457 #: guix-git/doc/guix.texi:2784
7458 #, no-wrap
7459 msgid ""
7460 " GUIX_PROFILE=\"$HOME/.guix-profile\"\n"
7461 " . \"$GUIX_PROFILE/etc/profile\"\n"
7462 "\n"
7463 msgstr ""
7464
7465 #. type: example
7466 #: guix-git/doc/guix.texi:2786
7467 #, no-wrap
7468 msgid "Alternately, see `guix package --search-paths -p \"$HOME/.guix-profile\"'.\n"
7469 msgstr ""
7470
7471 #. type: Plain text
7472 #: guix-git/doc/guix.texi:2800
7473 msgid "Indeed, you must now tell your shell where @command{emacs} and other programs installed with Guix are to be found. Pasting the two lines above will do just that: it will add @code{$HOME/.guix-profile/bin}---which is where the installed package is---to the @code{PATH} environment variable. You can paste these two lines in your shell so they take effect right away, but more importantly you should add them to @file{~/.bash_profile} (or equivalent file if you do not use Bash) so that environment variables are set next time you spawn a shell. You only need to do this once and other search paths environment variables will be taken care of similarly---e.g., if you eventually install @code{python} and Python libraries, @code{PYTHONPATH} will be defined."
7474 msgstr ""
7475
7476 #. type: Plain text
7477 #: guix-git/doc/guix.texi:2803
7478 msgid "You can go on installing packages at your will. To list installed packages, run:"
7479 msgstr ""
7480
7481 #. type: example
7482 #: guix-git/doc/guix.texi:2806
7483 #, no-wrap
7484 msgid "guix package --list-installed\n"
7485 msgstr ""
7486
7487 #. type: Plain text
7488 #: guix-git/doc/guix.texi:2811
7489 msgid "To remove a package, you would unsurprisingly run @command{guix remove}. A distinguishing feature is the ability to @dfn{roll back} any operation you made---installation, removal, upgrade---by simply typing:"
7490 msgstr ""
7491
7492 #. type: example
7493 #: guix-git/doc/guix.texi:2814
7494 #, no-wrap
7495 msgid "guix package --roll-back\n"
7496 msgstr ""
7497
7498 #. type: Plain text
7499 #: guix-git/doc/guix.texi:2819
7500 msgid "This is because each operation is in fact a @dfn{transaction} that creates a new @dfn{generation}. These generations and the difference between them can be displayed by running:"
7501 msgstr ""
7502
7503 #. type: example
7504 #: guix-git/doc/guix.texi:2822
7505 #, no-wrap
7506 msgid "guix package --list-generations\n"
7507 msgstr ""
7508
7509 #. type: Plain text
7510 #: guix-git/doc/guix.texi:2825
7511 msgid "Now you know the basics of package management!"
7512 msgstr ""
7513
7514 #. type: quotation
7515 #: guix-git/doc/guix.texi:2826 guix-git/doc/guix.texi:2885
7516 #, no-wrap
7517 msgid "Going further"
7518 msgstr ""
7519
7520 #. type: quotation
7521 #: guix-git/doc/guix.texi:2834
7522 msgid "@xref{Package Management}, for more about package management. You may like @dfn{declarative} package management with @command{guix package --manifest}, managing separate @dfn{profiles} with @option{--profile}, deleting old generations, collecting garbage, and other nifty features that will come in handy as you become more familiar with Guix. If you are a developer, @pxref{Development} for additional tools. And if you're curious, @pxref{Features}, to peek under the hood."
7523 msgstr ""
7524
7525 #. type: Plain text
7526 #: guix-git/doc/guix.texi:2839
7527 msgid "Once you've installed a set of packages, you will want to periodically @emph{upgrade} them to the latest and greatest version. To do that, you will first pull the latest revision of Guix and its package collection:"
7528 msgstr ""
7529
7530 #. type: Plain text
7531 #: guix-git/doc/guix.texi:2849
7532 msgid "The end result is a new @command{guix} command, under @file{~/.config/guix/current/bin}. Unless you're on Guix System, the first time you run @command{guix pull}, be sure to follow the hint that the command prints and, similar to what we saw above, paste these two lines in your terminal and @file{.bash_profile}:"
7533 msgstr ""
7534
7535 #. type: example
7536 #: guix-git/doc/guix.texi:2853
7537 #, no-wrap
7538 msgid ""
7539 "GUIX_PROFILE=\"$HOME/.config/guix/current\"\n"
7540 ". \"$GUIX_PROFILE/etc/profile\"\n"
7541 msgstr ""
7542
7543 #. type: Plain text
7544 #: guix-git/doc/guix.texi:2857
7545 msgid "You must also instruct your shell to point to this new @command{guix}:"
7546 msgstr ""
7547
7548 #. type: example
7549 #: guix-git/doc/guix.texi:2860
7550 #, no-wrap
7551 msgid "hash guix\n"
7552 msgstr ""
7553
7554 #. type: Plain text
7555 #: guix-git/doc/guix.texi:2864
7556 msgid "At this point, you're running a brand new Guix. You can thus go ahead and actually upgrade all the packages you previously installed:"
7557 msgstr ""
7558
7559 #. type: example
7560 #: guix-git/doc/guix.texi:2867
7561 #, no-wrap
7562 msgid "guix upgrade\n"
7563 msgstr ""
7564
7565 #. type: Plain text
7566 #: guix-git/doc/guix.texi:2873
7567 msgid "As you run this command, you will see that binaries are downloaded (or perhaps some packages are built), and eventually you end up with the upgraded packages. Should one of these upgraded packages not be to your liking, remember you can always roll back!"
7568 msgstr ""
7569
7570 #. type: Plain text
7571 #: guix-git/doc/guix.texi:2876
7572 msgid "You can display the exact revision of Guix you're currently using by running:"
7573 msgstr ""
7574
7575 #. type: example
7576 #: guix-git/doc/guix.texi:2879
7577 #, no-wrap
7578 msgid "guix describe\n"
7579 msgstr ""
7580
7581 #. type: Plain text
7582 #: guix-git/doc/guix.texi:2884
7583 msgid "The information it displays is @emph{all it takes to reproduce the exact same Guix}, be it at a different point in time or on a different machine."
7584 msgstr ""
7585
7586 #. type: quotation
7587 #: guix-git/doc/guix.texi:2890
7588 msgid "@xref{Invoking guix pull}, for more information. @xref{Channels}, on how to specify additional @dfn{channels} to pull packages from, how to replicate Guix, and more. You may also find @command{time-machine} handy (@pxref{Invoking guix time-machine})."
7589 msgstr ""
7590
7591 #. type: Plain text
7592 #: guix-git/doc/guix.texi:2895
7593 msgid "If you installed Guix System, one of the first things you'll want to do is to upgrade your system. Once you've run @command{guix pull} to get the latest Guix, you can upgrade the system like this:"
7594 msgstr ""
7595
7596 #. type: example
7597 #: guix-git/doc/guix.texi:2898
7598 #, no-wrap
7599 msgid "sudo guix system reconfigure /etc/config.scm\n"
7600 msgstr ""
7601
7602 #. type: Plain text
7603 #: guix-git/doc/guix.texi:2907
7604 msgid "Upon completion, the system runs the latest versions of its software packages. When you eventually reboot, you'll notice a sub-menu in the bootloader that reads ``Old system generations'': it's what allows you to boot @emph{an older generation of your system}, should the latest generation be ``broken'' or otherwise unsatisfying. Just like for packages, you can always @emph{roll back} to a previous generation @emph{of the whole system}:"
7605 msgstr ""
7606
7607 #. type: example
7608 #: guix-git/doc/guix.texi:2910
7609 #, no-wrap
7610 msgid "sudo guix system roll-back\n"
7611 msgstr ""
7612
7613 #. type: Plain text
7614 #: guix-git/doc/guix.texi:2917
7615 msgid "There are many things you'll probably want to tweak on your system: adding new user accounts, adding new system services, fiddling with the configuration of those services, etc. The system configuration is @emph{entirely} described in the @file{/etc/config.scm} file. @xref{Using the Configuration System}, to learn how to change it."
7616 msgstr ""
7617
7618 #. type: Plain text
7619 #: guix-git/doc/guix.texi:2919
7620 msgid "Now you know enough to get started!"
7621 msgstr ""
7622
7623 #. type: quotation
7624 #: guix-git/doc/guix.texi:2920
7625 #, no-wrap
7626 msgid "Resources"
7627 msgstr ""
7628
7629 #. type: quotation
7630 #: guix-git/doc/guix.texi:2923
7631 msgid "The rest of this manual provides a reference for all things Guix. Here are some additional resources you may find useful:"
7632 msgstr ""
7633
7634 #. type: itemize
7635 #: guix-git/doc/guix.texi:2928
7636 msgid "@xref{Top,,, guix-cookbook, The GNU Guix Cookbook}, for a list of ``how-to'' style of recipes for a variety of applications."
7637 msgstr ""
7638
7639 #. type: itemize
7640 #: guix-git/doc/guix.texi:2933
7641 msgid "The @uref{https://guix.gnu.org/guix-refcard.pdf, GNU Guix Reference Card} lists in two pages most of the commands and options you'll ever need."
7642 msgstr ""
7643
7644 #. type: itemize
7645 #: guix-git/doc/guix.texi:2938
7646 msgid "The web site contains @uref{https://guix.gnu.org/en/videos/, instructional videos} covering topics such as everyday use of Guix, how to get help, and how to become a contributor."
7647 msgstr ""
7648
7649 #. type: itemize
7650 #: guix-git/doc/guix.texi:2942
7651 msgid "@xref{Documentation}, to learn how to access documentation on your computer."
7652 msgstr ""
7653
7654 #. type: quotation
7655 #: guix-git/doc/guix.texi:2945
7656 msgid "We hope you will enjoy Guix as much as the community enjoys building it!"
7657 msgstr ""
7658
7659 #. type: cindex
7660 #: guix-git/doc/guix.texi:2951
7661 #, no-wrap
7662 msgid "packages"
7663 msgstr ""
7664
7665 #. type: Plain text
7666 #: guix-git/doc/guix.texi:2956
7667 msgid "The purpose of GNU Guix is to allow users to easily install, upgrade, and remove software packages, without having to know about their build procedures or dependencies. Guix also goes beyond this obvious set of features."
7668 msgstr ""
7669
7670 #. type: Plain text
7671 #: guix-git/doc/guix.texi:2964
7672 msgid "This chapter describes the main features of Guix, as well as the package management tools it provides. Along with the command-line interface described below (@pxref{Invoking guix package, @code{guix package}}), you may also use the Emacs-Guix interface (@pxref{Top,,, emacs-guix, The Emacs-Guix Reference Manual}), after installing @code{emacs-guix} package (run @kbd{M-x guix-help} command to start with it):"
7673 msgstr ""
7674
7675 #. type: example
7676 #: guix-git/doc/guix.texi:2967
7677 #, no-wrap
7678 msgid "guix install emacs-guix\n"
7679 msgstr ""
7680
7681 #. type: Plain text
7682 #: guix-git/doc/guix.texi:2988
7683 msgid "Here we assume you've already made your first steps with Guix (@pxref{Getting Started}) and would like to get an overview about what's going on under the hood."
7684 msgstr ""
7685
7686 #. type: Plain text
7687 #: guix-git/doc/guix.texi:2992
7688 msgid "When using Guix, each package ends up in the @dfn{package store}, in its own directory---something that resembles @file{/gnu/store/xxx-package-1.2}, where @code{xxx} is a base32 string."
7689 msgstr ""
7690
7691 #. type: Plain text
7692 #: guix-git/doc/guix.texi:2997
7693 msgid "Instead of referring to these directories, users have their own @dfn{profile}, which points to the packages that they actually want to use. These profiles are stored within each user's home directory, at @code{$HOME/.guix-profile}."
7694 msgstr ""
7695
7696 #. type: Plain text
7697 #: guix-git/doc/guix.texi:3005
7698 msgid "For example, @code{alice} installs GCC 4.7.2. As a result, @file{/home/alice/.guix-profile/bin/gcc} points to @file{/gnu/store/@dots{}-gcc-4.7.2/bin/gcc}. Now, on the same machine, @code{bob} had already installed GCC 4.8.0. The profile of @code{bob} simply continues to point to @file{/gnu/store/@dots{}-gcc-4.8.0/bin/gcc}---i.e., both versions of GCC coexist on the same system without any interference."
7699 msgstr ""
7700
7701 #. type: Plain text
7702 #: guix-git/doc/guix.texi:3009
7703 msgid "The @command{guix package} command is the central tool to manage packages (@pxref{Invoking guix package}). It operates on the per-user profiles, and can be used @emph{with normal user privileges}."
7704 msgstr ""
7705
7706 #. type: cindex
7707 #: guix-git/doc/guix.texi:3010 guix-git/doc/guix.texi:3093
7708 #, no-wrap
7709 msgid "transactions"
7710 msgstr ""
7711
7712 #. type: Plain text
7713 #: guix-git/doc/guix.texi:3017
7714 msgid "The command provides the obvious install, remove, and upgrade operations. Each invocation is actually a @emph{transaction}: either the specified operation succeeds, or nothing happens. Thus, if the @command{guix package} process is terminated during the transaction, or if a power outage occurs during the transaction, then the user's profile remains in its previous state, and remains usable."
7715 msgstr ""
7716
7717 #. type: Plain text
7718 #: guix-git/doc/guix.texi:3025
7719 msgid "In addition, any package transaction may be @emph{rolled back}. So, if, for example, an upgrade installs a new version of a package that turns out to have a serious bug, users may roll back to the previous instance of their profile, which was known to work well. Similarly, the global system configuration on Guix is subject to transactional upgrades and roll-back (@pxref{Using the Configuration System})."
7720 msgstr ""
7721
7722 #. type: Plain text
7723 #: guix-git/doc/guix.texi:3032
7724 msgid "All packages in the package store may be @emph{garbage-collected}. Guix can determine which packages are still referenced by user profiles, and remove those that are provably no longer referenced (@pxref{Invoking guix gc}). Users may also explicitly remove old generations of their profile so that the packages they refer to can be collected."
7725 msgstr ""
7726
7727 #. type: cindex
7728 #: guix-git/doc/guix.texi:3033 guix-git/doc/guix.texi:4716
7729 #, no-wrap
7730 msgid "reproducibility"
7731 msgstr ""
7732
7733 #. type: Plain text
7734 #: guix-git/doc/guix.texi:3045
7735 msgid "Guix takes a @dfn{purely functional} approach to package management, as described in the introduction (@pxref{Introduction}). Each @file{/gnu/store} package directory name contains a hash of all the inputs that were used to build that package---compiler, libraries, build scripts, etc. This direct correspondence allows users to make sure a given package installation matches the current state of their distribution. It also helps maximize @dfn{build reproducibility}: thanks to the isolated build environments that are used, a given build is likely to yield bit-identical files when performed on different machines (@pxref{Invoking guix-daemon, container})."
7736 msgstr ""
7737
7738 #. type: Plain text
7739 #: guix-git/doc/guix.texi:3056
7740 msgid "This foundation allows Guix to support @dfn{transparent binary/source deployment}. When a pre-built binary for a @file{/gnu/store} item is available from an external source---a @dfn{substitute}, Guix just downloads it and unpacks it; otherwise, it builds the package from source, locally (@pxref{Substitutes}). Because build results are usually bit-for-bit reproducible, users do not have to trust servers that provide substitutes: they can force a local build and @emph{challenge} providers (@pxref{Invoking guix challenge})."
7741 msgstr ""
7742
7743 #. type: Plain text
7744 #: guix-git/doc/guix.texi:3062
7745 msgid "Control over the build environment is a feature that is also useful for developers. The @command{guix environment} command allows developers of a package to quickly set up the right development environment for their package, without having to manually install the dependencies of the package into their profile (@pxref{Invoking guix environment})."
7746 msgstr ""
7747
7748 #. type: cindex
7749 #: guix-git/doc/guix.texi:3063
7750 #, no-wrap
7751 msgid "replication, of software environments"
7752 msgstr ""
7753
7754 #. type: cindex
7755 #: guix-git/doc/guix.texi:3064
7756 #, no-wrap
7757 msgid "provenance tracking, of software artifacts"
7758 msgstr ""
7759
7760 #. type: Plain text
7761 #: guix-git/doc/guix.texi:3071
7762 msgid "All of Guix and its package definitions is version-controlled, and @command{guix pull} allows you to ``travel in time'' on the history of Guix itself (@pxref{Invoking guix pull}). This makes it possible to replicate a Guix instance on a different machine or at a later point in time, which in turn allows you to @emph{replicate complete software environments}, while retaining precise @dfn{provenance tracking} of the software."
7763 msgstr ""
7764
7765 #. type: section
7766 #: guix-git/doc/guix.texi:3073
7767 #, no-wrap
7768 msgid "Invoking @command{guix package}"
7769 msgstr ""
7770
7771 #. type: cindex
7772 #: guix-git/doc/guix.texi:3075
7773 #, no-wrap
7774 msgid "installing packages"
7775 msgstr ""
7776
7777 #. type: cindex
7778 #: guix-git/doc/guix.texi:3076
7779 #, no-wrap
7780 msgid "removing packages"
7781 msgstr ""
7782
7783 #. type: cindex
7784 #: guix-git/doc/guix.texi:3077
7785 #, no-wrap
7786 msgid "package installation"
7787 msgstr ""
7788
7789 #. type: cindex
7790 #: guix-git/doc/guix.texi:3078
7791 #, no-wrap
7792 msgid "package removal"
7793 msgstr ""
7794
7795 #. type: Plain text
7796 #: guix-git/doc/guix.texi:3088
7797 msgid "The @command{guix package} command is the tool that allows users to install, upgrade, and remove packages, as well as rolling back to previous configurations. These operations work on a user @dfn{profile}---a directory of installed packages. Each user has a default profile in @file{$HOME/.guix-profile}. The command operates only on the user's own profile, and works with normal user privileges (@pxref{Features}). Its syntax is:"
7798 msgstr ""
7799
7800 #. type: example
7801 #: guix-git/doc/guix.texi:3091
7802 #, no-wrap
7803 msgid "guix package @var{options}\n"
7804 msgstr ""
7805
7806 #. type: Plain text
7807 #: guix-git/doc/guix.texi:3098
7808 msgid "Primarily, @var{options} specifies the operations to be performed during the transaction. Upon completion, a new profile is created, but previous @dfn{generations} of the profile remain available, should the user want to roll back."
7809 msgstr ""
7810
7811 #. type: Plain text
7812 #: guix-git/doc/guix.texi:3101
7813 msgid "For example, to remove @code{lua} and install @code{guile} and @code{guile-cairo} in a single transaction:"
7814 msgstr ""
7815
7816 #. type: example
7817 #: guix-git/doc/guix.texi:3104
7818 #, no-wrap
7819 msgid "guix package -r lua -i guile guile-cairo\n"
7820 msgstr ""
7821
7822 #. type: cindex
7823 #: guix-git/doc/guix.texi:3106
7824 #, no-wrap
7825 msgid "aliases, for @command{guix package}"
7826 msgstr ""
7827
7828 #. type: Plain text
7829 #: guix-git/doc/guix.texi:3108
7830 msgid "For your convenience, we also provide the following aliases:"
7831 msgstr ""
7832
7833 #. type: itemize
7834 #: guix-git/doc/guix.texi:3112
7835 msgid "@command{guix search} is an alias for @command{guix package -s},"
7836 msgstr ""
7837
7838 #. type: itemize
7839 #: guix-git/doc/guix.texi:3114
7840 msgid "@command{guix install} is an alias for @command{guix package -i},"
7841 msgstr ""
7842
7843 #. type: itemize
7844 #: guix-git/doc/guix.texi:3116
7845 msgid "@command{guix remove} is an alias for @command{guix package -r},"
7846 msgstr ""
7847
7848 #. type: itemize
7849 #: guix-git/doc/guix.texi:3118
7850 msgid "@command{guix upgrade} is an alias for @command{guix package -u},"
7851 msgstr ""
7852
7853 #. type: itemize
7854 #: guix-git/doc/guix.texi:3120
7855 msgid "and @command{guix show} is an alias for @command{guix package --show=}."
7856 msgstr ""
7857
7858 #. type: Plain text
7859 #: guix-git/doc/guix.texi:3125
7860 msgid "These aliases are less expressive than @command{guix package} and provide fewer options, so in some cases you'll probably want to use @command{guix package} directly."
7861 msgstr ""
7862
7863 #. type: Plain text
7864 #: guix-git/doc/guix.texi:3130
7865 msgid "@command{guix package} also supports a @dfn{declarative approach} whereby the user specifies the exact set of packages to be available and passes it @i{via} the @option{--manifest} option (@pxref{profile-manifest, @option{--manifest}})."
7866 msgstr ""
7867
7868 #. type: Plain text
7869 #: guix-git/doc/guix.texi:3137
7870 msgid "For each user, a symlink to the user's default profile is automatically created in @file{$HOME/.guix-profile}. This symlink always points to the current generation of the user's default profile. Thus, users can add @file{$HOME/.guix-profile/bin} to their @env{PATH} environment variable, and so on."
7871 msgstr ""
7872
7873 #. type: cindex
7874 #: guix-git/doc/guix.texi:3137 guix-git/doc/guix.texi:3370
7875 #, no-wrap
7876 msgid "search paths"
7877 msgstr ""
7878
7879 #. type: Plain text
7880 #: guix-git/doc/guix.texi:3142
7881 msgid "If you are not using Guix System, consider adding the following lines to your @file{~/.bash_profile} (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}) so that newly-spawned shells get all the right environment variable definitions:"
7882 msgstr ""
7883
7884 #. type: example
7885 #: guix-git/doc/guix.texi:3146
7886 #, no-wrap
7887 msgid ""
7888 "GUIX_PROFILE=\"$HOME/.guix-profile\" ; \\\n"
7889 "source \"$GUIX_PROFILE/etc/profile\"\n"
7890 msgstr ""
7891
7892 #. type: Plain text
7893 #: guix-git/doc/guix.texi:3157
7894 msgid "In a multi-user setup, user profiles are stored in a place registered as a @dfn{garbage-collector root}, which @file{$HOME/.guix-profile} points to (@pxref{Invoking guix gc}). That directory is normally @code{@var{localstatedir}/guix/profiles/per-user/@var{user}}, where @var{localstatedir} is the value passed to @code{configure} as @option{--localstatedir}, and @var{user} is the user name. The @file{per-user} directory is created when @command{guix-daemon} is started, and the @var{user} sub-directory is created by @command{guix package}."
7895 msgstr ""
7896
7897 #. type: Plain text
7898 #: guix-git/doc/guix.texi:3159
7899 msgid "The @var{options} can be among the following:"
7900 msgstr ""
7901
7902 #. type: item
7903 #: guix-git/doc/guix.texi:3162
7904 #, no-wrap
7905 msgid "--install=@var{package} @dots{}"
7906 msgstr ""
7907
7908 #. type: itemx
7909 #: guix-git/doc/guix.texi:3163
7910 #, no-wrap
7911 msgid "-i @var{package} @dots{}"
7912 msgstr ""
7913
7914 #. type: table
7915 #: guix-git/doc/guix.texi:3165
7916 msgid "Install the specified @var{package}s."
7917 msgstr ""
7918
7919 #. type: table
7920 #: guix-git/doc/guix.texi:3170
7921 msgid "Each @var{package} may specify either a simple package name, such as @code{guile}, or a package name followed by an at-sign and version number, such as @code{guile@@1.8.8} or simply @code{guile@@1.8} (in the latter case, the newest version prefixed by @code{1.8} is selected)."
7922 msgstr ""
7923
7924 #. type: table
7925 #: guix-git/doc/guix.texi:3178
7926 msgid "If no version number is specified, the newest available version will be selected. In addition, @var{package} may contain a colon, followed by the name of one of the outputs of the package, as in @code{gcc:doc} or @code{binutils@@2.22:lib} (@pxref{Packages with Multiple Outputs}). Packages with a corresponding name (and optionally version) are searched for among the GNU distribution modules (@pxref{Package Modules})."
7927 msgstr ""
7928
7929 #. type: cindex
7930 #: guix-git/doc/guix.texi:3179
7931 #, no-wrap
7932 msgid "propagated inputs"
7933 msgstr ""
7934
7935 #. type: table
7936 #: guix-git/doc/guix.texi:3185
7937 msgid "Sometimes packages have @dfn{propagated inputs}: these are dependencies that automatically get installed along with the required package (@pxref{package-propagated-inputs, @code{propagated-inputs} in @code{package} objects}, for information about propagated inputs in package definitions)."
7938 msgstr ""
7939
7940 #. type: anchor{#1}
7941 #: guix-git/doc/guix.texi:3192
7942 msgid "package-cmd-propagated-inputs"
7943 msgstr ""
7944
7945 #. type: table
7946 #: guix-git/doc/guix.texi:3192
7947 msgid "An example is the GNU MPC library: its C header files refer to those of the GNU MPFR library, which in turn refer to those of the GMP library. Thus, when installing MPC, the MPFR and GMP libraries also get installed in the profile; removing MPC also removes MPFR and GMP---unless they had also been explicitly installed by the user."
7948 msgstr ""
7949
7950 #. type: table
7951 #: guix-git/doc/guix.texi:3197
7952 msgid "Besides, packages sometimes rely on the definition of environment variables for their search paths (see explanation of @option{--search-paths} below). Any missing or possibly incorrect environment variable definitions are reported here."
7953 msgstr ""
7954
7955 #. type: item
7956 #: guix-git/doc/guix.texi:3198
7957 #, no-wrap
7958 msgid "--install-from-expression=@var{exp}"
7959 msgstr ""
7960
7961 #. type: itemx
7962 #: guix-git/doc/guix.texi:3199
7963 #, no-wrap
7964 msgid "-e @var{exp}"
7965 msgstr ""
7966
7967 #. type: table
7968 #: guix-git/doc/guix.texi:3201
7969 msgid "Install the package @var{exp} evaluates to."
7970 msgstr ""
7971
7972 #. type: table
7973 #: guix-git/doc/guix.texi:3206
7974 msgid "@var{exp} must be a Scheme expression that evaluates to a @code{<package>} object. This option is notably useful to disambiguate between same-named variants of a package, with expressions such as @code{(@@ (gnu packages base) guile-final)}."
7975 msgstr ""
7976
7977 #. type: table
7978 #: guix-git/doc/guix.texi:3210
7979 msgid "Note that this option installs the first output of the specified package, which may be insufficient when needing a specific output of a multiple-output package."
7980 msgstr ""
7981
7982 #. type: item
7983 #: guix-git/doc/guix.texi:3211
7984 #, no-wrap
7985 msgid "--install-from-file=@var{file}"
7986 msgstr ""
7987
7988 #. type: itemx
7989 #: guix-git/doc/guix.texi:3212 guix-git/doc/guix.texi:10707
7990 #, no-wrap
7991 msgid "-f @var{file}"
7992 msgstr ""
7993
7994 #. type: table
7995 #: guix-git/doc/guix.texi:3214
7996 msgid "Install the package that the code within @var{file} evaluates to."
7997 msgstr ""
7998
7999 #. type: table
8000 #: guix-git/doc/guix.texi:3217 guix-git/doc/guix.texi:5744
8001 msgid "As an example, @var{file} might contain a definition like this (@pxref{Defining Packages}):"
8002 msgstr ""
8003
8004 #. type: include
8005 #: guix-git/doc/guix.texi:3219 guix-git/doc/guix.texi:10715
8006 #, no-wrap
8007 msgid "package-hello.scm"
8008 msgstr ""
8009
8010 #. type: table
8011 #: guix-git/doc/guix.texi:3226
8012 msgid "Developers may find it useful to include such a @file{guix.scm} file in the root of their project source tree that can be used to test development snapshots and create reproducible development environments (@pxref{Invoking guix environment})."
8013 msgstr ""
8014
8015 #. type: table
8016 #: guix-git/doc/guix.texi:3231
8017 msgid "The @var{file} may also contain a JSON representation of one or more package definitions. Running @code{guix package -f} on @file{hello.json} with the following contents would result in installing the package @code{greeter} after building @code{myhello}:"
8018 msgstr ""
8019
8020 #. type: example
8021 #: guix-git/doc/guix.texi:3234 guix-git/doc/guix.texi:10725
8022 #, no-wrap
8023 msgid "@verbatiminclude package-hello.json\n"
8024 msgstr ""
8025
8026 #. type: item
8027 #: guix-git/doc/guix.texi:3236
8028 #, no-wrap
8029 msgid "--remove=@var{package} @dots{}"
8030 msgstr ""
8031
8032 #. type: itemx
8033 #: guix-git/doc/guix.texi:3237
8034 #, no-wrap
8035 msgid "-r @var{package} @dots{}"
8036 msgstr ""
8037
8038 #. type: table
8039 #: guix-git/doc/guix.texi:3239
8040 msgid "Remove the specified @var{package}s."
8041 msgstr ""
8042
8043 #. type: table
8044 #: guix-git/doc/guix.texi:3244
8045 msgid "As for @option{--install}, each @var{package} may specify a version number and/or output name in addition to the package name. For instance, @samp{-r glibc:debug} would remove the @code{debug} output of @code{glibc}."
8046 msgstr ""
8047
8048 #. type: item
8049 #: guix-git/doc/guix.texi:3245
8050 #, no-wrap
8051 msgid "--upgrade[=@var{regexp} @dots{}]"
8052 msgstr ""
8053
8054 #. type: itemx
8055 #: guix-git/doc/guix.texi:3246
8056 #, no-wrap
8057 msgid "-u [@var{regexp} @dots{}]"
8058 msgstr ""
8059
8060 #. type: cindex
8061 #: guix-git/doc/guix.texi:3247
8062 #, no-wrap
8063 msgid "upgrading packages"
8064 msgstr ""
8065
8066 #. type: table
8067 #: guix-git/doc/guix.texi:3251
8068 msgid "Upgrade all the installed packages. If one or more @var{regexp}s are specified, upgrade only installed packages whose name matches a @var{regexp}. Also see the @option{--do-not-upgrade} option below."
8069 msgstr ""
8070
8071 #. type: table
8072 #: guix-git/doc/guix.texi:3256
8073 msgid "Note that this upgrades package to the latest version of packages found in the distribution currently installed. To update your distribution, you should regularly run @command{guix pull} (@pxref{Invoking guix pull})."
8074 msgstr ""
8075
8076 #. type: cindex
8077 #: guix-git/doc/guix.texi:3257
8078 #, no-wrap
8079 msgid "package transformations, upgrades"
8080 msgstr ""
8081
8082 #. type: table
8083 #: guix-git/doc/guix.texi:3262
8084 msgid "When upgrading, package transformations that were originally applied when creating the profile are automatically re-applied (@pxref{Package Transformation Options}). For example, assume you first installed Emacs from the tip of its development branch with:"
8085 msgstr ""
8086
8087 #. type: example
8088 #: guix-git/doc/guix.texi:3265
8089 #, no-wrap
8090 msgid "guix install emacs-next --with-branch=emacs-next=master\n"
8091 msgstr ""
8092
8093 #. type: table
8094 #: guix-git/doc/guix.texi:3270
8095 msgid "Next time you run @command{guix upgrade}, Guix will again pull the tip of the Emacs development branch and build @code{emacs-next} from that checkout."
8096 msgstr ""
8097
8098 #. type: table
8099 #: guix-git/doc/guix.texi:3275
8100 msgid "Note that transformation options such as @option{--with-branch} and @option{--with-source} depend on external state; it is up to you to ensure that they work as expected. You can also discard a transformations that apply to a package by running:"
8101 msgstr ""
8102
8103 #. type: example
8104 #: guix-git/doc/guix.texi:3278
8105 #, no-wrap
8106 msgid "guix install @var{package}\n"
8107 msgstr ""
8108
8109 #. type: item
8110 #: guix-git/doc/guix.texi:3280
8111 #, no-wrap
8112 msgid "--do-not-upgrade[=@var{regexp} @dots{}]"
8113 msgstr ""
8114
8115 #. type: table
8116 #: guix-git/doc/guix.texi:3285
8117 msgid "When used together with the @option{--upgrade} option, do @emph{not} upgrade any packages whose name matches a @var{regexp}. For example, to upgrade all packages in the current profile except those containing the substring ``emacs'':"
8118 msgstr ""
8119
8120 #. type: example
8121 #: guix-git/doc/guix.texi:3288
8122 #, no-wrap
8123 msgid "$ guix package --upgrade . --do-not-upgrade emacs\n"
8124 msgstr ""
8125
8126 #. type: anchor{#1}
8127 #: guix-git/doc/guix.texi:3290
8128 #, no-wrap
8129 msgid "profile-manifest"
8130 msgstr ""
8131
8132 #. type: item
8133 #: guix-git/doc/guix.texi:3290 guix-git/doc/guix.texi:5749
8134 #: guix-git/doc/guix.texi:6168 guix-git/doc/guix.texi:11778
8135 #: guix-git/doc/guix.texi:13215
8136 #, no-wrap
8137 msgid "--manifest=@var{file}"
8138 msgstr ""
8139
8140 #. type: itemx
8141 #: guix-git/doc/guix.texi:3291 guix-git/doc/guix.texi:5750
8142 #: guix-git/doc/guix.texi:6169 guix-git/doc/guix.texi:11779
8143 #, no-wrap
8144 msgid "-m @var{file}"
8145 msgstr ""
8146
8147 #. type: cindex
8148 #: guix-git/doc/guix.texi:3292
8149 #, no-wrap
8150 msgid "profile declaration"
8151 msgstr ""
8152
8153 #. type: cindex
8154 #: guix-git/doc/guix.texi:3293
8155 #, no-wrap
8156 msgid "profile manifest"
8157 msgstr ""
8158
8159 #. type: table
8160 #: guix-git/doc/guix.texi:3297
8161 msgid "Create a new generation of the profile from the manifest object returned by the Scheme code in @var{file}. This option can be repeated several times, in which case the manifests are concatenated."
8162 msgstr ""
8163
8164 #. type: table
8165 #: guix-git/doc/guix.texi:3303
8166 msgid "This allows you to @emph{declare} the profile's contents rather than constructing it through a sequence of @option{--install} and similar commands. The advantage is that @var{file} can be put under version control, copied to different machines to reproduce the same profile, and so on."
8167 msgstr ""
8168
8169 #. type: table
8170 #: guix-git/doc/guix.texi:3307
8171 msgid "@var{file} must return a @dfn{manifest} object, which is roughly a list of packages:"
8172 msgstr ""
8173
8174 #. type: findex
8175 #: guix-git/doc/guix.texi:3308
8176 #, no-wrap
8177 msgid "packages->manifest"
8178 msgstr ""
8179
8180 #. type: lisp
8181 #: guix-git/doc/guix.texi:3311
8182 #, no-wrap
8183 msgid ""
8184 "(use-package-modules guile emacs)\n"
8185 "\n"
8186 msgstr ""
8187
8188 #. type: lisp
8189 #: guix-git/doc/guix.texi:3317
8190 #, no-wrap
8191 msgid ""
8192 "(packages->manifest\n"
8193 " (list emacs\n"
8194 " guile-2.0\n"
8195 " ;; Use a specific package output.\n"
8196 " (list guile-2.0 \"debug\")))\n"
8197 msgstr ""
8198
8199 #. type: findex
8200 #: guix-git/doc/guix.texi:3319
8201 #, no-wrap
8202 msgid "specifications->manifest"
8203 msgstr ""
8204
8205 #. type: table
8206 #: guix-git/doc/guix.texi:3326
8207 msgid "In this example we have to know which modules define the @code{emacs} and @code{guile-2.0} variables to provide the right @code{use-package-modules} line, which can be cumbersome. We can instead provide regular package specifications and let @code{specifications->manifest} look up the corresponding package objects, like this:"
8208 msgstr ""
8209
8210 #. type: lisp
8211 #: guix-git/doc/guix.texi:3330
8212 #, no-wrap
8213 msgid ""
8214 "(specifications->manifest\n"
8215 " '(\"emacs\" \"guile@@2.2\" \"guile@@2.2:debug\"))\n"
8216 msgstr ""
8217
8218 #. type: table
8219 #: guix-git/doc/guix.texi:3334
8220 msgid "@xref{export-manifest, @option{--export-manifest}}, to learn how to obtain a manifest file from an existing profile."
8221 msgstr ""
8222
8223 #. type: item
8224 #: guix-git/doc/guix.texi:3335 guix-git/doc/guix.texi:4437
8225 #, no-wrap
8226 msgid "--roll-back"
8227 msgstr ""
8228
8229 #. type: cindex
8230 #: guix-git/doc/guix.texi:3336 guix-git/doc/guix.texi:4438
8231 #: guix-git/doc/guix.texi:32922
8232 #, no-wrap
8233 msgid "rolling back"
8234 msgstr ""
8235
8236 #. type: cindex
8237 #: guix-git/doc/guix.texi:3337 guix-git/doc/guix.texi:4439
8238 #, no-wrap
8239 msgid "undoing transactions"
8240 msgstr ""
8241
8242 #. type: cindex
8243 #: guix-git/doc/guix.texi:3338 guix-git/doc/guix.texi:4440
8244 #, no-wrap
8245 msgid "transactions, undoing"
8246 msgstr ""
8247
8248 #. type: table
8249 #: guix-git/doc/guix.texi:3341
8250 msgid "Roll back to the previous @dfn{generation} of the profile---i.e., undo the last transaction."
8251 msgstr ""
8252
8253 #. type: table
8254 #: guix-git/doc/guix.texi:3344
8255 msgid "When combined with options such as @option{--install}, roll back occurs before any other actions."
8256 msgstr ""
8257
8258 #. type: table
8259 #: guix-git/doc/guix.texi:3348
8260 msgid "When rolling back from the first generation that actually contains installed packages, the profile is made to point to the @dfn{zeroth generation}, which contains no files apart from its own metadata."
8261 msgstr ""
8262
8263 #. type: table
8264 #: guix-git/doc/guix.texi:3352
8265 msgid "After having rolled back, installing, removing, or upgrading packages overwrites previous future generations. Thus, the history of the generations in a profile is always linear."
8266 msgstr ""
8267
8268 #. type: item
8269 #: guix-git/doc/guix.texi:3353 guix-git/doc/guix.texi:4444
8270 #, no-wrap
8271 msgid "--switch-generation=@var{pattern}"
8272 msgstr ""
8273
8274 #. type: itemx
8275 #: guix-git/doc/guix.texi:3354 guix-git/doc/guix.texi:4445
8276 #, no-wrap
8277 msgid "-S @var{pattern}"
8278 msgstr ""
8279
8280 #. type: cindex
8281 #: guix-git/doc/guix.texi:3355 guix-git/doc/guix.texi:3585
8282 #: guix-git/doc/guix.texi:4446 guix-git/doc/guix.texi:32880
8283 #, no-wrap
8284 msgid "generations"
8285 msgstr ""
8286
8287 #. type: table
8288 #: guix-git/doc/guix.texi:3357 guix-git/doc/guix.texi:4448
8289 msgid "Switch to a particular generation defined by @var{pattern}."
8290 msgstr ""
8291
8292 #. type: table
8293 #: guix-git/doc/guix.texi:3363 guix-git/doc/guix.texi:4454
8294 msgid "@var{pattern} may be either a generation number or a number prefixed with ``+'' or ``-''. The latter means: move forward/backward by a specified number of generations. For example, if you want to return to the latest generation after @option{--roll-back}, use @option{--switch-generation=+1}."
8295 msgstr ""
8296
8297 #. type: table
8298 #: guix-git/doc/guix.texi:3368
8299 msgid "The difference between @option{--roll-back} and @option{--switch-generation=-1} is that @option{--switch-generation} will not make a zeroth generation, so if a specified generation does not exist, the current generation will not be changed."
8300 msgstr ""
8301
8302 #. type: item
8303 #: guix-git/doc/guix.texi:3369
8304 #, no-wrap
8305 msgid "--search-paths[=@var{kind}]"
8306 msgstr ""
8307
8308 #. type: table
8309 #: guix-git/doc/guix.texi:3375
8310 msgid "Report environment variable definitions, in Bash syntax, that may be needed in order to use the set of installed packages. These environment variables are used to specify @dfn{search paths} for files used by some of the installed packages."
8311 msgstr ""
8312
8313 #. type: table
8314 #: guix-git/doc/guix.texi:3383
8315 msgid "For example, GCC needs the @env{CPATH} and @env{LIBRARY_PATH} environment variables to be defined so it can look for headers and libraries in the user's profile (@pxref{Environment Variables,,, gcc, Using the GNU Compiler Collection (GCC)}). If GCC and, say, the C library are installed in the profile, then @option{--search-paths} will suggest setting these variables to @file{@var{profile}/include} and @file{@var{profile}/lib}, respectively."
8316 msgstr ""
8317
8318 #. type: table
8319 #: guix-git/doc/guix.texi:3386
8320 msgid "The typical use case is to define these environment variables in the shell:"
8321 msgstr ""
8322
8323 #. type: example
8324 #: guix-git/doc/guix.texi:3389
8325 #, no-wrap
8326 msgid "$ eval `guix package --search-paths`\n"
8327 msgstr ""
8328
8329 #. type: table
8330 #: guix-git/doc/guix.texi:3395
8331 msgid "@var{kind} may be one of @code{exact}, @code{prefix}, or @code{suffix}, meaning that the returned environment variable definitions will either be exact settings, or prefixes or suffixes of the current value of these variables. When omitted, @var{kind} defaults to @code{exact}."
8332 msgstr ""
8333
8334 #. type: table
8335 #: guix-git/doc/guix.texi:3398
8336 msgid "This option can also be used to compute the @emph{combined} search paths of several profiles. Consider this example:"
8337 msgstr ""
8338
8339 #. type: example
8340 #: guix-git/doc/guix.texi:3403
8341 #, no-wrap
8342 msgid ""
8343 "$ guix package -p foo -i guile\n"
8344 "$ guix package -p bar -i guile-json\n"
8345 "$ guix package -p foo -p bar --search-paths\n"
8346 msgstr ""
8347
8348 #. type: table
8349 #: guix-git/doc/guix.texi:3408
8350 msgid "The last command above reports about the @env{GUILE_LOAD_PATH} variable, even though, taken individually, neither @file{foo} nor @file{bar} would lead to that recommendation."
8351 msgstr ""
8352
8353 #. type: cindex
8354 #: guix-git/doc/guix.texi:3410
8355 #, no-wrap
8356 msgid "profile, choosing"
8357 msgstr ""
8358
8359 #. type: item
8360 #: guix-git/doc/guix.texi:3411 guix-git/doc/guix.texi:4474
8361 #: guix-git/doc/guix.texi:4803
8362 #, no-wrap
8363 msgid "--profile=@var{profile}"
8364 msgstr ""
8365
8366 #. type: itemx
8367 #: guix-git/doc/guix.texi:3412 guix-git/doc/guix.texi:4475
8368 #: guix-git/doc/guix.texi:4804
8369 #, no-wrap
8370 msgid "-p @var{profile}"
8371 msgstr ""
8372
8373 #. type: table
8374 #: guix-git/doc/guix.texi:3414
8375 msgid "Use @var{profile} instead of the user's default profile."
8376 msgstr ""
8377
8378 #. type: table
8379 #: guix-git/doc/guix.texi:3419
8380 msgid "@var{profile} must be the name of a file that will be created upon completion. Concretely, @var{profile} will be a mere symbolic link (``symlink'') pointing to the actual profile where packages are installed:"
8381 msgstr ""
8382
8383 #. type: example
8384 #: guix-git/doc/guix.texi:3425
8385 #, no-wrap
8386 msgid ""
8387 "$ guix install hello -p ~/code/my-profile\n"
8388 "@dots{}\n"
8389 "$ ~/code/my-profile/bin/hello\n"
8390 "Hello, world!\n"
8391 msgstr ""
8392
8393 #. type: table
8394 #: guix-git/doc/guix.texi:3429
8395 msgid "All it takes to get rid of the profile is to remove this symlink and its siblings that point to specific generations:"
8396 msgstr ""
8397
8398 #. type: example
8399 #: guix-git/doc/guix.texi:3432
8400 #, no-wrap
8401 msgid "$ rm ~/code/my-profile ~/code/my-profile-*-link\n"
8402 msgstr ""
8403
8404 #. type: item
8405 #: guix-git/doc/guix.texi:3434
8406 #, no-wrap
8407 msgid "--list-profiles"
8408 msgstr ""
8409
8410 #. type: table
8411 #: guix-git/doc/guix.texi:3436
8412 msgid "List all the user's profiles:"
8413 msgstr ""
8414
8415 #. type: example
8416 #: guix-git/doc/guix.texi:3443
8417 #, no-wrap
8418 msgid ""
8419 "$ guix package --list-profiles\n"
8420 "/home/charlie/.guix-profile\n"
8421 "/home/charlie/code/my-profile\n"
8422 "/home/charlie/code/devel-profile\n"
8423 "/home/charlie/tmp/test\n"
8424 msgstr ""
8425
8426 #. type: table
8427 #: guix-git/doc/guix.texi:3446
8428 msgid "When running as root, list all the profiles of all the users."
8429 msgstr ""
8430
8431 #. type: cindex
8432 #: guix-git/doc/guix.texi:3447
8433 #, no-wrap
8434 msgid "collisions, in a profile"
8435 msgstr ""
8436
8437 #. type: cindex
8438 #: guix-git/doc/guix.texi:3448
8439 #, no-wrap
8440 msgid "colliding packages in profiles"
8441 msgstr ""
8442
8443 #. type: cindex
8444 #: guix-git/doc/guix.texi:3449
8445 #, no-wrap
8446 msgid "profile collisions"
8447 msgstr ""
8448
8449 #. type: item
8450 #: guix-git/doc/guix.texi:3450
8451 #, no-wrap
8452 msgid "--allow-collisions"
8453 msgstr ""
8454
8455 #. type: table
8456 #: guix-git/doc/guix.texi:3452
8457 msgid "Allow colliding packages in the new profile. Use at your own risk!"
8458 msgstr ""
8459
8460 #. type: table
8461 #: guix-git/doc/guix.texi:3456
8462 msgid "By default, @command{guix package} reports as an error @dfn{collisions} in the profile. Collisions happen when two or more different versions or variants of a given package end up in the profile."
8463 msgstr ""
8464
8465 #. type: item
8466 #: guix-git/doc/guix.texi:3457 guix-git/doc/guix.texi:4517
8467 #: guix-git/doc/guix.texi:6254
8468 #, no-wrap
8469 msgid "--bootstrap"
8470 msgstr ""
8471
8472 #. type: table
8473 #: guix-git/doc/guix.texi:3460
8474 msgid "Use the bootstrap Guile to build the profile. This option is only useful to distribution developers."
8475 msgstr ""
8476
8477 #. type: Plain text
8478 #: guix-git/doc/guix.texi:3466
8479 msgid "In addition to these actions, @command{guix package} supports the following options to query the current state of a profile, or the availability of packages:"
8480 msgstr ""
8481
8482 #. type: item
8483 #: guix-git/doc/guix.texi:3469
8484 #, no-wrap
8485 msgid "--search=@var{regexp}"
8486 msgstr ""
8487
8488 #. type: itemx
8489 #: guix-git/doc/guix.texi:3470
8490 #, no-wrap
8491 msgid "-s @var{regexp}"
8492 msgstr ""
8493
8494 #. type: anchor{#1}
8495 #: guix-git/doc/guix.texi:3472
8496 msgid "guix-search"
8497 msgstr ""
8498
8499 #. type: cindex
8500 #: guix-git/doc/guix.texi:3472
8501 #, no-wrap
8502 msgid "searching for packages"
8503 msgstr ""
8504
8505 #. type: table
8506 #: guix-git/doc/guix.texi:3478
8507 msgid "List the available packages whose name, synopsis, or description matches @var{regexp} (in a case-insensitive fashion), sorted by relevance. Print all the metadata of matching packages in @code{recutils} format (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual})."
8508 msgstr ""
8509
8510 #. type: table
8511 #: guix-git/doc/guix.texi:3481
8512 msgid "This allows specific fields to be extracted using the @command{recsel} command, for instance:"
8513 msgstr ""
8514
8515 #. type: example
8516 #: guix-git/doc/guix.texi:3487
8517 #, no-wrap
8518 msgid ""
8519 "$ guix package -s malloc | recsel -p name,version,relevance\n"
8520 "name: jemalloc\n"
8521 "version: 4.5.0\n"
8522 "relevance: 6\n"
8523 "\n"
8524 msgstr ""
8525
8526 #. type: example
8527 #: guix-git/doc/guix.texi:3491
8528 #, no-wrap
8529 msgid ""
8530 "name: glibc\n"
8531 "version: 2.25\n"
8532 "relevance: 1\n"
8533 "\n"
8534 msgstr ""
8535
8536 #. type: example
8537 #: guix-git/doc/guix.texi:3495
8538 #, no-wrap
8539 msgid ""
8540 "name: libgc\n"
8541 "version: 7.6.0\n"
8542 "relevance: 1\n"
8543 msgstr ""
8544
8545 #. type: table
8546 #: guix-git/doc/guix.texi:3499
8547 msgid "Similarly, to show the name of all the packages available under the terms of the GNU@tie{}LGPL version 3:"
8548 msgstr ""
8549
8550 #. type: example
8551 #: guix-git/doc/guix.texi:3503
8552 #, no-wrap
8553 msgid ""
8554 "$ guix package -s \"\" | recsel -p name -e 'license ~ \"LGPL 3\"'\n"
8555 "name: elfutils\n"
8556 "\n"
8557 msgstr ""
8558
8559 #. type: example
8560 #: guix-git/doc/guix.texi:3506
8561 #, no-wrap
8562 msgid ""
8563 "name: gmp\n"
8564 "@dots{}\n"
8565 msgstr ""
8566
8567 #. type: table
8568 #: guix-git/doc/guix.texi:3512
8569 msgid "It is also possible to refine search results using several @code{-s} flags to @command{guix package}, or several arguments to @command{guix search}. For example, the following command returns a list of board games (this time using the @command{guix search} alias):"
8570 msgstr ""
8571
8572 #. type: example
8573 #: guix-git/doc/guix.texi:3517
8574 #, no-wrap
8575 msgid ""
8576 "$ guix search '\\<board\\>' game | recsel -p name\n"
8577 "name: gnubg\n"
8578 "@dots{}\n"
8579 msgstr ""
8580
8581 #. type: table
8582 #: guix-git/doc/guix.texi:3523
8583 msgid "If we were to omit @code{-s game}, we would also get software packages that deal with printed circuit boards; removing the angle brackets around @code{board} would further add packages that have to do with keyboards."
8584 msgstr ""
8585
8586 #. type: table
8587 #: guix-git/doc/guix.texi:3527
8588 msgid "And now for a more elaborate example. The following command searches for cryptographic libraries, filters out Haskell, Perl, Python, and Ruby libraries, and prints the name and synopsis of the matching packages:"
8589 msgstr ""
8590
8591 #. type: example
8592 #: guix-git/doc/guix.texi:3531
8593 #, no-wrap
8594 msgid ""
8595 "$ guix search crypto library | \\\n"
8596 " recsel -e '! (name ~ \"^(ghc|perl|python|ruby)\")' -p name,synopsis\n"
8597 msgstr ""
8598
8599 #. type: table
8600 #: guix-git/doc/guix.texi:3536
8601 msgid "@xref{Selection Expressions,,, recutils, GNU recutils manual}, for more information on @dfn{selection expressions} for @code{recsel -e}."
8602 msgstr ""
8603
8604 #. type: item
8605 #: guix-git/doc/guix.texi:3537
8606 #, no-wrap
8607 msgid "--show=@var{package}"
8608 msgstr ""
8609
8610 #. type: table
8611 #: guix-git/doc/guix.texi:3541
8612 msgid "Show details about @var{package}, taken from the list of available packages, in @code{recutils} format (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual})."
8613 msgstr ""
8614
8615 #. type: example
8616 #: guix-git/doc/guix.texi:3546
8617 #, no-wrap
8618 msgid ""
8619 "$ guix package --show=python | recsel -p name,version\n"
8620 "name: python\n"
8621 "version: 2.7.6\n"
8622 "\n"
8623 msgstr ""
8624
8625 #. type: example
8626 #: guix-git/doc/guix.texi:3549
8627 #, no-wrap
8628 msgid ""
8629 "name: python\n"
8630 "version: 3.3.5\n"
8631 msgstr ""
8632
8633 #. type: table
8634 #: guix-git/doc/guix.texi:3553
8635 msgid "You may also specify the full name of a package to only get details about a specific version of it (this time using the @command{guix show} alias):"
8636 msgstr ""
8637
8638 #. type: example
8639 #: guix-git/doc/guix.texi:3557
8640 #, no-wrap
8641 msgid ""
8642 "$ guix show python@@3.4 | recsel -p name,version\n"
8643 "name: python\n"
8644 "version: 3.4.3\n"
8645 msgstr ""
8646
8647 #. type: item
8648 #: guix-git/doc/guix.texi:3561
8649 #, no-wrap
8650 msgid "--list-installed[=@var{regexp}]"
8651 msgstr ""
8652
8653 #. type: itemx
8654 #: guix-git/doc/guix.texi:3562
8655 #, no-wrap
8656 msgid "-I [@var{regexp}]"
8657 msgstr ""
8658
8659 #. type: table
8660 #: guix-git/doc/guix.texi:3566
8661 msgid "List the currently installed packages in the specified profile, with the most recently installed packages shown last. When @var{regexp} is specified, list only installed packages whose name matches @var{regexp}."
8662 msgstr ""
8663
8664 #. type: table
8665 #: guix-git/doc/guix.texi:3572
8666 msgid "For each installed package, print the following items, separated by tabs: the package name, its version string, the part of the package that is installed (for instance, @code{out} for the default output, @code{include} for its headers, etc.), and the path of this package in the store."
8667 msgstr ""
8668
8669 #. type: item
8670 #: guix-git/doc/guix.texi:3573
8671 #, no-wrap
8672 msgid "--list-available[=@var{regexp}]"
8673 msgstr ""
8674
8675 #. type: itemx
8676 #: guix-git/doc/guix.texi:3574
8677 #, no-wrap
8678 msgid "-A [@var{regexp}]"
8679 msgstr ""
8680
8681 #. type: table
8682 #: guix-git/doc/guix.texi:3578
8683 msgid "List packages currently available in the distribution for this system (@pxref{GNU Distribution}). When @var{regexp} is specified, list only available packages whose name matches @var{regexp}."
8684 msgstr ""
8685
8686 #. type: table
8687 #: guix-git/doc/guix.texi:3582
8688 msgid "For each package, print the following items separated by tabs: its name, its version string, the parts of the package (@pxref{Packages with Multiple Outputs}), and the source location of its definition."
8689 msgstr ""
8690
8691 #. type: item
8692 #: guix-git/doc/guix.texi:3583 guix-git/doc/guix.texi:4430
8693 #, no-wrap
8694 msgid "--list-generations[=@var{pattern}]"
8695 msgstr ""
8696
8697 #. type: itemx
8698 #: guix-git/doc/guix.texi:3584 guix-git/doc/guix.texi:4431
8699 #, no-wrap
8700 msgid "-l [@var{pattern}]"
8701 msgstr ""
8702
8703 #. type: table
8704 #: guix-git/doc/guix.texi:3590
8705 msgid "Return a list of generations along with their creation dates; for each generation, show the installed packages, with the most recently installed packages shown last. Note that the zeroth generation is never shown."
8706 msgstr ""
8707
8708 #. type: table
8709 #: guix-git/doc/guix.texi:3595
8710 msgid "For each installed package, print the following items, separated by tabs: the name of a package, its version string, the part of the package that is installed (@pxref{Packages with Multiple Outputs}), and the location of this package in the store."
8711 msgstr ""
8712
8713 #. type: table
8714 #: guix-git/doc/guix.texi:3598
8715 msgid "When @var{pattern} is used, the command returns only matching generations. Valid patterns include:"
8716 msgstr ""
8717
8718 #. type: item
8719 #: guix-git/doc/guix.texi:3600
8720 #, no-wrap
8721 msgid "@emph{Integers and comma-separated integers}. Both patterns denote"
8722 msgstr ""
8723
8724 #. type: itemize
8725 #: guix-git/doc/guix.texi:3603
8726 msgid "generation numbers. For instance, @option{--list-generations=1} returns the first one."
8727 msgstr ""
8728
8729 #. type: itemize
8730 #: guix-git/doc/guix.texi:3606
8731 msgid "And @option{--list-generations=1,8,2} outputs three generations in the specified order. Neither spaces nor trailing commas are allowed."
8732 msgstr ""
8733
8734 #. type: item
8735 #: guix-git/doc/guix.texi:3607
8736 #, no-wrap
8737 msgid "@emph{Ranges}. @option{--list-generations=2..9} prints the"
8738 msgstr ""
8739
8740 #. type: itemize
8741 #: guix-git/doc/guix.texi:3610
8742 msgid "specified generations and everything in between. Note that the start of a range must be smaller than its end."
8743 msgstr ""
8744
8745 #. type: itemize
8746 #: guix-git/doc/guix.texi:3614
8747 msgid "It is also possible to omit the endpoint. For example, @option{--list-generations=2..}, returns all generations starting from the second one."
8748 msgstr ""
8749
8750 #. type: item
8751 #: guix-git/doc/guix.texi:3615
8752 #, no-wrap
8753 msgid "@emph{Durations}. You can also get the last @emph{N}@tie{}days, weeks,"
8754 msgstr ""
8755
8756 #. type: itemize
8757 #: guix-git/doc/guix.texi:3619
8758 msgid "or months by passing an integer along with the first letter of the duration. For example, @option{--list-generations=20d} lists generations that are up to 20 days old."
8759 msgstr ""
8760
8761 #. type: item
8762 #: guix-git/doc/guix.texi:3621 guix-git/doc/guix.texi:4455
8763 #, no-wrap
8764 msgid "--delete-generations[=@var{pattern}]"
8765 msgstr ""
8766
8767 #. type: itemx
8768 #: guix-git/doc/guix.texi:3622 guix-git/doc/guix.texi:4456
8769 #, no-wrap
8770 msgid "-d [@var{pattern}]"
8771 msgstr ""
8772
8773 #. type: table
8774 #: guix-git/doc/guix.texi:3625 guix-git/doc/guix.texi:4459
8775 msgid "When @var{pattern} is omitted, delete all generations except the current one."
8776 msgstr ""
8777
8778 #. type: table
8779 #: guix-git/doc/guix.texi:3631 guix-git/doc/guix.texi:4465
8780 msgid "This command accepts the same patterns as @option{--list-generations}. When @var{pattern} is specified, delete the matching generations. When @var{pattern} specifies a duration, generations @emph{older} than the specified duration match. For instance, @option{--delete-generations=1m} deletes generations that are more than one month old."
8781 msgstr ""
8782
8783 #. type: table
8784 #: guix-git/doc/guix.texi:3634
8785 msgid "If the current generation matches, it is @emph{not} deleted. Also, the zeroth generation is never deleted."
8786 msgstr ""
8787
8788 #. type: table
8789 #: guix-git/doc/guix.texi:3637 guix-git/doc/guix.texi:4470
8790 msgid "Note that deleting generations prevents rolling back to them. Consequently, this command must be used with care."
8791 msgstr ""
8792
8793 #. type: cindex
8794 #: guix-git/doc/guix.texi:3638
8795 #, no-wrap
8796 msgid "manifest, exporting"
8797 msgstr ""
8798
8799 #. type: anchor{#1}
8800 #: guix-git/doc/guix.texi:3640
8801 msgid "export-manifest"
8802 msgstr ""
8803
8804 #. type: item
8805 #: guix-git/doc/guix.texi:3640
8806 #, no-wrap
8807 msgid "--export-manifest"
8808 msgstr ""
8809
8810 #. type: table
8811 #: guix-git/doc/guix.texi:3643
8812 msgid "Write to standard output a manifest suitable for @option{--manifest} corresponding to the chosen profile(s)."
8813 msgstr ""
8814
8815 #. type: table
8816 #: guix-git/doc/guix.texi:3647
8817 msgid "This option is meant to help you migrate from the ``imperative'' operating mode---running @command{guix install}, @command{guix upgrade}, etc.---to the declarative mode that @option{--manifest} offers."
8818 msgstr ""
8819
8820 #. type: table
8821 #: guix-git/doc/guix.texi:3652
8822 msgid "Be aware that the resulting manifest @emph{approximates} what your profile actually contains; for instance, depending on how your profile was created, it can refer to packages or package versions that are not exactly what you specified."
8823 msgstr ""
8824
8825 #. type: table
8826 #: guix-git/doc/guix.texi:3657
8827 msgid "Keep in mind that a manifest is purely symbolic: it only contains package names and possibly versions, and their meaning varies over time. If you wish to ``pin'' channels to the revisions that were used to build the profile(s), see @option{--export-channels} below."
8828 msgstr ""
8829
8830 #. type: cindex
8831 #: guix-git/doc/guix.texi:3658
8832 #, no-wrap
8833 msgid "pinning, channel revisions of a profile"
8834 msgstr ""
8835
8836 #. type: item
8837 #: guix-git/doc/guix.texi:3659
8838 #, no-wrap
8839 msgid "--export-channels"
8840 msgstr ""
8841
8842 #. type: table
8843 #: guix-git/doc/guix.texi:3663
8844 msgid "Write to standard output the list of channels used by the chosen profile(s), in a format suitable for @command{guix pull --channels} or @command{guix time-machine --channels} (@pxref{Channels})."
8845 msgstr ""
8846
8847 #. type: table
8848 #: guix-git/doc/guix.texi:3667
8849 msgid "Together with @option{--export-manifest}, this option provides information allowing you to replicate the current profile (@pxref{Replicating Guix})."
8850 msgstr ""
8851
8852 #. type: table
8853 #: guix-git/doc/guix.texi:3675
8854 msgid "However, note that the output of this command @emph{approximates} what was actually used to build this profile. In particular, a single profile might have been built from several different revisions of the same channel. In that case, @option{--export-manifest} chooses the last one and writes the list of other revisions in a comment. If you really need to pick packages from different channel revisions, you can use inferiors in your manifest to do so (@pxref{Inferiors})."
8855 msgstr ""
8856
8857 #. type: table
8858 #: guix-git/doc/guix.texi:3680
8859 msgid "Together with @option{--export-manifest}, this is a good starting point if you are willing to migrate from the ``imperative'' model to the fully declarative model consisting of a manifest file along with a channels file pinning the exact channel revision(s) you want."
8860 msgstr ""
8861
8862 #. type: Plain text
8863 #: guix-git/doc/guix.texi:3687
8864 msgid "Finally, since @command{guix package} may actually start build processes, it supports all the common build options (@pxref{Common Build Options}). It also supports package transformation options, such as @option{--with-source}, and preserves them across upgrades (@pxref{Package Transformation Options})."
8865 msgstr ""
8866
8867 #. type: cindex
8868 #: guix-git/doc/guix.texi:3692
8869 #, no-wrap
8870 msgid "pre-built binaries"
8871 msgstr ""
8872
8873 #. type: Plain text
8874 #: guix-git/doc/guix.texi:3698
8875 msgid "Guix supports transparent source/binary deployment, which means that it can either build things locally, or download pre-built items from a server, or both. We call these pre-built items @dfn{substitutes}---they are substitutes for local build results. In many cases, downloading a substitute is much faster than building things locally."
8876 msgstr ""
8877
8878 #. type: Plain text
8879 #: guix-git/doc/guix.texi:3703
8880 msgid "Substitutes can be anything resulting from a derivation build (@pxref{Derivations}). Of course, in the common case, they are pre-built package binaries, but source tarballs, for instance, which also result from derivation builds, can be available as substitutes."
8881 msgstr ""
8882
8883 #. type: cindex
8884 #: guix-git/doc/guix.texi:3717
8885 #, no-wrap
8886 msgid "build farm"
8887 msgstr ""
8888
8889 #. type: Plain text
8890 #: guix-git/doc/guix.texi:3727
8891 msgid "The @code{@value{SUBSTITUTE-SERVER}} server is a front-end to an official build farm that builds packages from Guix continuously for some architectures, and makes them available as substitutes. This is the default source of substitutes; it can be overridden by passing the @option{--substitute-urls} option either to @command{guix-daemon} (@pxref{daemon-substitute-urls,, @code{guix-daemon --substitute-urls}}) or to client tools such as @command{guix package} (@pxref{client-substitute-urls,, client @option{--substitute-urls} option})."
8892 msgstr ""
8893
8894 #. type: Plain text
8895 #: guix-git/doc/guix.texi:3733
8896 msgid "Substitute URLs can be either HTTP or HTTPS. HTTPS is recommended because communications are encrypted; conversely, using HTTP makes all communications visible to an eavesdropper, who could use the information gathered to determine, for instance, whether your system has unpatched security vulnerabilities."
8897 msgstr ""
8898
8899 #. type: Plain text
8900 #: guix-git/doc/guix.texi:3742
8901 msgid "Substitutes from the official build farm are enabled by default when using Guix System (@pxref{GNU Distribution}). However, they are disabled by default when using Guix on a foreign distribution, unless you have explicitly enabled them via one of the recommended installation steps (@pxref{Installation}). The following paragraphs describe how to enable or disable substitutes for the official build farm; the same procedure can also be used to enable substitutes for any other substitute server."
8902 msgstr ""
8903
8904 #. type: cindex
8905 #: guix-git/doc/guix.texi:3746
8906 #, no-wrap
8907 msgid "security"
8908 msgstr ""
8909
8910 #. type: cindex
8911 #: guix-git/doc/guix.texi:3748
8912 #, no-wrap
8913 msgid "access control list (ACL), for substitutes"
8914 msgstr ""
8915
8916 #. type: cindex
8917 #: guix-git/doc/guix.texi:3749
8918 #, no-wrap
8919 msgid "ACL (access control list), for substitutes"
8920 msgstr ""
8921
8922 #. type: Plain text
8923 #: guix-git/doc/guix.texi:3756
8924 msgid "To allow Guix to download substitutes from @code{@value{SUBSTITUTE-SERVER}} or a mirror thereof, you must add its public key to the access control list (ACL) of archive imports, using the @command{guix archive} command (@pxref{Invoking guix archive}). Doing so implies that you trust @code{@value{SUBSTITUTE-SERVER}} to not be compromised and to serve genuine substitutes."
8925 msgstr ""
8926
8927 #. type: quotation
8928 #: guix-git/doc/guix.texi:3760
8929 msgid "If you are using Guix System, you can skip this section: Guix System authorizes substitutes from @code{@value{SUBSTITUTE-SERVER}} by default."
8930 msgstr ""
8931
8932 #. type: Plain text
8933 #: guix-git/doc/guix.texi:3768
8934 msgid "The public key for @code{@value{SUBSTITUTE-SERVER}} is installed along with Guix, in @code{@var{prefix}/share/guix/@value{SUBSTITUTE-SERVER}.pub}, where @var{prefix} is the installation prefix of Guix. If you installed Guix from source, make sure you checked the GPG signature of @file{guix-@value{VERSION}.tar.gz}, which contains this public key file. Then, you can run something like this:"
8935 msgstr ""
8936
8937 #. type: example
8938 #: guix-git/doc/guix.texi:3771
8939 #, no-wrap
8940 msgid "# guix archive --authorize < @var{prefix}/share/guix/@value{SUBSTITUTE-SERVER}.pub\n"
8941 msgstr ""
8942
8943 #. type: Plain text
8944 #: guix-git/doc/guix.texi:3775
8945 msgid "Once this is in place, the output of a command like @code{guix build} should change from something like:"
8946 msgstr ""
8947
8948 #. type: example
8949 #: guix-git/doc/guix.texi:3784
8950 #, no-wrap
8951 msgid ""
8952 "$ guix build emacs --dry-run\n"
8953 "The following derivations would be built:\n"
8954 " /gnu/store/yr7bnx8xwcayd6j95r2clmkdl1qh688w-emacs-24.3.drv\n"
8955 " /gnu/store/x8qsh1hlhgjx6cwsjyvybnfv2i37z23w-dbus-1.6.4.tar.gz.drv\n"
8956 " /gnu/store/1ixwp12fl950d15h2cj11c73733jay0z-alsa-lib-1.0.27.1.tar.bz2.drv\n"
8957 " /gnu/store/nlma1pw0p603fpfiqy7kn4zm105r5dmw-util-linux-2.21.drv\n"
8958 "@dots{}\n"
8959 msgstr ""
8960
8961 #. type: Plain text
8962 #: guix-git/doc/guix.texi:3788
8963 msgid "to something like:"
8964 msgstr ""
8965
8966 #. type: example
8967 #: guix-git/doc/guix.texi:3797
8968 #, no-wrap
8969 msgid ""
8970 "$ guix build emacs --dry-run\n"
8971 "112.3 MB would be downloaded:\n"
8972 " /gnu/store/pk3n22lbq6ydamyymqkkz7i69wiwjiwi-emacs-24.3\n"
8973 " /gnu/store/2ygn4ncnhrpr61rssa6z0d9x22si0va3-libjpeg-8d\n"
8974 " /gnu/store/71yz6lgx4dazma9dwn2mcjxaah9w77jq-cairo-1.12.16\n"
8975 " /gnu/store/7zdhgp0n1518lvfn8mb96sxqfmvqrl7v-libxrender-0.9.7\n"
8976 "@dots{}\n"
8977 msgstr ""
8978
8979 #. type: Plain text
8980 #: guix-git/doc/guix.texi:3804
8981 msgid "The text changed from ``The following derivations would be built'' to ``112.3 MB would be downloaded''. This indicates that substitutes from @code{@value{SUBSTITUTE-SERVER}} are usable and will be downloaded, when possible, for future builds."
8982 msgstr ""
8983
8984 #. type: cindex
8985 #: guix-git/doc/guix.texi:3805
8986 #, no-wrap
8987 msgid "substitutes, how to disable"
8988 msgstr ""
8989
8990 #. type: Plain text
8991 #: guix-git/doc/guix.texi:3811
8992 msgid "The substitute mechanism can be disabled globally by running @code{guix-daemon} with @option{--no-substitutes} (@pxref{Invoking guix-daemon}). It can also be disabled temporarily by passing the @option{--no-substitutes} option to @command{guix package}, @command{guix build}, and other command-line tools."
8993 msgstr ""
8994
8995 #. type: cindex
8996 #: guix-git/doc/guix.texi:3815
8997 #, no-wrap
8998 msgid "substitute servers, adding more"
8999 msgstr ""
9000
9001 #. type: Plain text
9002 #: guix-git/doc/guix.texi:3822
9003 msgid "Guix can look up and fetch substitutes from several servers. This is useful when you are using packages from additional channels for which the official server does not have substitutes but another server provides them. Another situation where this is useful is when you would prefer to download from your organization's substitute server, resorting to the official server only as a fallback or dismissing it altogether."
9004 msgstr ""
9005
9006 #. type: Plain text
9007 #: guix-git/doc/guix.texi:3827
9008 msgid "You can give Guix a list of substitute server URLs and it will check them in the specified order. You also need to explicitly authorize the public keys of substitute servers to instruct Guix to accept the substitutes they sign."
9009 msgstr ""
9010
9011 #. type: Plain text
9012 #: guix-git/doc/guix.texi:3834
9013 msgid "On Guix System, this is achieved by modifying the configuration of the @code{guix} service. Since the @code{guix} service is part of the default lists of services, @code{%base-services} and @code{%desktop-services}, you can use @code{modify-services} to change its configuration and add the URLs and substitute keys that you want (@pxref{Service Reference, @code{modify-services}})."
9014 msgstr ""
9015
9016 #. type: Plain text
9017 #: guix-git/doc/guix.texi:3839
9018 msgid "As an example, suppose you want to fetch substitutes from @code{guix.example.org} and to authorize the signing key of that server, in addition to the default @code{@value{SUBSTITUTE-SERVER}}. The resulting operating system configuration will look something like:"
9019 msgstr ""
9020
9021 #. type: lisp
9022 #: guix-git/doc/guix.texi:3856
9023 #, no-wrap
9024 msgid ""
9025 "(operating-system\n"
9026 " ;; @dots{}\n"
9027 " (services\n"
9028 " ;; Assume we're starting from '%desktop-services'. Replace it\n"
9029 " ;; with the list of services you're actually using.\n"
9030 " (modify-services %desktop-services\n"
9031 " (guix-service-type config =>\n"
9032 " (guix-configuration\n"
9033 " (inherit config)\n"
9034 " (substitute-urls\n"
9035 " (append (list \"https://guix.example.org\")\n"
9036 " %default-substitute-urls))\n"
9037 " (authorized-keys\n"
9038 " (append (list (local-file \"./key.pub\"))\n"
9039 " %default-authorized-guix-keys)))))))\n"
9040 msgstr ""
9041
9042 #. type: Plain text
9043 #: guix-git/doc/guix.texi:3863
9044 msgid "This assumes that the file @file{key.pub} contains the signing key of @code{guix.example.org}. With this change in place in your operating system configuration file (say @file{/etc/config.scm}), you can reconfigure and restart the @code{guix-daemon} service or reboot so the changes take effect:"
9045 msgstr ""
9046
9047 #. type: example
9048 #: guix-git/doc/guix.texi:3867
9049 #, no-wrap
9050 msgid ""
9051 "$ sudo guix system reconfigure /etc/config.scm\n"
9052 "$ sudo herd restart guix-daemon\n"
9053 msgstr ""
9054
9055 #. type: Plain text
9056 #: guix-git/doc/guix.texi:3871
9057 msgid "If you're running Guix on a ``foreign distro'', you would instead take the following steps to get substitutes from additional servers:"
9058 msgstr ""
9059
9060 #. type: enumerate
9061 #: guix-git/doc/guix.texi:3880
9062 msgid "Edit the service configuration file for @code{guix-daemon}; when using systemd, this is normally @file{/etc/systemd/system/guix-daemon.service}. Add the @option{--substitute-urls} option on the @command{guix-daemon} command line and list the URLs of interest (@pxref{daemon-substitute-urls, @code{guix-daemon --substitute-urls}}):"
9063 msgstr ""
9064
9065 #. type: example
9066 #: guix-git/doc/guix.texi:3883
9067 #, no-wrap
9068 msgid "@dots{} --substitute-urls='https://guix.example.org https://@value{SUBSTITUTE-SERVER}'\n"
9069 msgstr ""
9070
9071 #. type: enumerate
9072 #: guix-git/doc/guix.texi:3887
9073 msgid "Restart the daemon. For systemd, it goes like this:"
9074 msgstr ""
9075
9076 #. type: example
9077 #: guix-git/doc/guix.texi:3891
9078 #, no-wrap
9079 msgid ""
9080 "systemctl daemon-reload\n"
9081 "systemctl restart guix-daemon.service\n"
9082 msgstr ""
9083
9084 #. type: enumerate
9085 #: guix-git/doc/guix.texi:3895
9086 msgid "Authorize the key of the new server (@pxref{Invoking guix archive}):"
9087 msgstr ""
9088
9089 #. type: example
9090 #: guix-git/doc/guix.texi:3898
9091 #, no-wrap
9092 msgid "guix archive --authorize < key.pub\n"
9093 msgstr ""
9094
9095 #. type: enumerate
9096 #: guix-git/doc/guix.texi:3902
9097 msgid "Again this assumes @file{key.pub} contains the public key that @code{guix.example.org} uses to sign substitutes."
9098 msgstr ""
9099
9100 #. type: Plain text
9101 #: guix-git/doc/guix.texi:3909
9102 msgid "Now you're all set! Substitutes will be preferably taken from @code{https://guix.example.org}, using @code{@value{SUBSTITUTE-SERVER}} as a fallback. Of course you can list as many substitute servers as you like, with the caveat that substitute lookup can be slowed down if too many servers need to be contacted."
9103 msgstr ""
9104
9105 #. type: Plain text
9106 #: guix-git/doc/guix.texi:3913
9107 msgid "Note that there are also situations where one may want to add the URL of a substitute server @emph{without} authorizing its key. @xref{Substitute Authentication}, to understand this fine point."
9108 msgstr ""
9109
9110 #. type: cindex
9111 #: guix-git/doc/guix.texi:3917
9112 #, no-wrap
9113 msgid "digital signatures"
9114 msgstr ""
9115
9116 #. type: Plain text
9117 #: guix-git/doc/guix.texi:3921
9118 msgid "Guix detects and raises an error when attempting to use a substitute that has been tampered with. Likewise, it ignores substitutes that are not signed, or that are not signed by one of the keys listed in the ACL."
9119 msgstr ""
9120
9121 #. type: Plain text
9122 #: guix-git/doc/guix.texi:3927
9123 msgid "There is one exception though: if an unauthorized server provides substitutes that are @emph{bit-for-bit identical} to those provided by an authorized server, then the unauthorized server becomes eligible for downloads. For example, assume we have chosen two substitute servers with this option:"
9124 msgstr ""
9125
9126 #. type: example
9127 #: guix-git/doc/guix.texi:3930
9128 #, no-wrap
9129 msgid "--substitute-urls=\"https://a.example.org https://b.example.org\"\n"
9130 msgstr ""
9131
9132 #. type: Plain text
9133 #: guix-git/doc/guix.texi:3941
9134 msgid "If the ACL contains only the key for @samp{b.example.org}, and if @samp{a.example.org} happens to serve the @emph{exact same} substitutes, then Guix will download substitutes from @samp{a.example.org} because it comes first in the list and can be considered a mirror of @samp{b.example.org}. In practice, independent build machines usually produce the same binaries, thanks to bit-reproducible builds (see below)."
9135 msgstr ""
9136
9137 #. type: Plain text
9138 #: guix-git/doc/guix.texi:3948
9139 msgid "When using HTTPS, the server's X.509 certificate is @emph{not} validated (in other words, the server is not authenticated), contrary to what HTTPS clients such as Web browsers usually do. This is because Guix authenticates substitute information itself, as explained above, which is what we care about (whereas X.509 certificates are about authenticating bindings between domain names and public keys)."
9140 msgstr ""
9141
9142 #. type: Plain text
9143 #: guix-git/doc/guix.texi:3960
9144 msgid "Substitutes are downloaded over HTTP or HTTPS@. The @env{http_proxy} and @env{https_proxy} environment variables can be set in the environment of @command{guix-daemon} and are honored for downloads of substitutes. Note that the value of those environment variables in the environment where @command{guix build}, @command{guix package}, and other client commands are run has @emph{absolutely no effect}."
9145 msgstr ""
9146
9147 #. type: Plain text
9148 #: guix-git/doc/guix.texi:3969
9149 msgid "Even when a substitute for a derivation is available, sometimes the substitution attempt will fail. This can happen for a variety of reasons: the substitute server might be offline, the substitute may recently have been deleted, the connection might have been interrupted, etc."
9150 msgstr ""
9151
9152 #. type: Plain text
9153 #: guix-git/doc/guix.texi:3983
9154 msgid "When substitutes are enabled and a substitute for a derivation is available, but the substitution attempt fails, Guix will attempt to build the derivation locally depending on whether or not @option{--fallback} was given (@pxref{fallback-option,, common build option @option{--fallback}}). Specifically, if @option{--fallback} was omitted, then no local build will be performed, and the derivation is considered to have failed. However, if @option{--fallback} was given, then Guix will attempt to build the derivation locally, and the success or failure of the derivation depends on the success or failure of the local build. Note that when substitutes are disabled or no substitute is available for the derivation in question, a local build will @emph{always} be performed, regardless of whether or not @option{--fallback} was given."
9155 msgstr ""
9156
9157 #. type: Plain text
9158 #: guix-git/doc/guix.texi:3988
9159 msgid "To get an idea of how many substitutes are available right now, you can try running the @command{guix weather} command (@pxref{Invoking guix weather}). This command provides statistics on the substitutes provided by a server."
9160 msgstr ""
9161
9162 #. type: cindex
9163 #: guix-git/doc/guix.texi:3992
9164 #, no-wrap
9165 msgid "trust, of pre-built binaries"
9166 msgstr ""
9167
9168 #. type: Plain text
9169 #: guix-git/doc/guix.texi:4002
9170 msgid "Today, each individual's control over their own computing is at the mercy of institutions, corporations, and groups with enough power and determination to subvert the computing infrastructure and exploit its weaknesses. While using @code{@value{SUBSTITUTE-SERVER}} substitutes can be convenient, we encourage users to also build on their own, or even run their own build farm, such that @code{@value{SUBSTITUTE-SERVER}} is less of an interesting target. One way to help is by publishing the software you build using @command{guix publish} so that others have one more choice of server to download substitutes from (@pxref{Invoking guix publish})."
9171 msgstr ""
9172
9173 #. type: Plain text
9174 #: guix-git/doc/guix.texi:4014
9175 msgid "Guix has the foundations to maximize build reproducibility (@pxref{Features}). In most cases, independent builds of a given package or derivation should yield bit-identical results. Thus, through a diverse set of independent package builds, we can strengthen the integrity of our systems. The @command{guix challenge} command aims to help users assess substitute servers, and to assist developers in finding out about non-deterministic package builds (@pxref{Invoking guix challenge}). Similarly, the @option{--check} option of @command{guix build} allows users to check whether previously-installed substitutes are genuine by rebuilding them locally (@pxref{build-check, @command{guix build --check}})."
9176 msgstr ""
9177
9178 #. type: Plain text
9179 #: guix-git/doc/guix.texi:4018
9180 msgid "In the future, we want Guix to have support to publish and retrieve binaries to/from other users, in a peer-to-peer fashion. If you would like to discuss this project, join us on @email{guix-devel@@gnu.org}."
9181 msgstr ""
9182
9183 #. type: cindex
9184 #: guix-git/doc/guix.texi:4022
9185 #, no-wrap
9186 msgid "multiple-output packages"
9187 msgstr ""
9188
9189 #. type: cindex
9190 #: guix-git/doc/guix.texi:4023
9191 #, no-wrap
9192 msgid "package outputs"
9193 msgstr ""
9194
9195 #. type: cindex
9196 #: guix-git/doc/guix.texi:4024
9197 #, no-wrap
9198 msgid "outputs"
9199 msgstr ""
9200
9201 #. type: Plain text
9202 #: guix-git/doc/guix.texi:4034
9203 msgid "Often, packages defined in Guix have a single @dfn{output}---i.e., the source package leads to exactly one directory in the store. When running @command{guix install glibc}, one installs the default output of the GNU libc package; the default output is called @code{out}, but its name can be omitted as shown in this command. In this particular case, the default output of @code{glibc} contains all the C header files, shared libraries, static libraries, Info documentation, and other supporting files."
9204 msgstr ""
9205
9206 #. type: Plain text
9207 #: guix-git/doc/guix.texi:4042
9208 msgid "Sometimes it is more appropriate to separate the various types of files produced from a single source package into separate outputs. For instance, the GLib C library (used by GTK+ and related packages) installs more than 20 MiB of reference documentation as HTML pages. To save space for users who do not need it, the documentation goes to a separate output, called @code{doc}. To install the main GLib output, which contains everything but the documentation, one would run:"
9209 msgstr ""
9210
9211 #. type: example
9212 #: guix-git/doc/guix.texi:4045
9213 #, no-wrap
9214 msgid "guix install glib\n"
9215 msgstr ""
9216
9217 #. type: item
9218 #: guix-git/doc/guix.texi:4047 guix-git/doc/guix.texi:34245
9219 #: guix-git/doc/guix.texi:34302
9220 #, no-wrap
9221 msgid "documentation"
9222 msgstr ""
9223
9224 #. type: Plain text
9225 #: guix-git/doc/guix.texi:4049
9226 msgid "The command to install its documentation is:"
9227 msgstr ""
9228
9229 #. type: example
9230 #: guix-git/doc/guix.texi:4052
9231 #, no-wrap
9232 msgid "guix install glib:doc\n"
9233 msgstr ""
9234
9235 #. type: Plain text
9236 #: guix-git/doc/guix.texi:4063
9237 msgid "Some packages install programs with different ``dependency footprints''. For instance, the WordNet package installs both command-line tools and graphical user interfaces (GUIs). The former depend solely on the C library, whereas the latter depend on Tcl/Tk and the underlying X libraries. In this case, we leave the command-line tools in the default output, whereas the GUIs are in a separate output. This allows users who do not need the GUIs to save space. The @command{guix size} command can help find out about such situations (@pxref{Invoking guix size}). @command{guix graph} can also be helpful (@pxref{Invoking guix graph})."
9238 msgstr ""
9239
9240 #. type: Plain text
9241 #: guix-git/doc/guix.texi:4071
9242 msgid "There are several such multiple-output packages in the GNU distribution. Other conventional output names include @code{lib} for libraries and possibly header files, @code{bin} for stand-alone programs, and @code{debug} for debugging information (@pxref{Installing Debugging Files}). The outputs of a packages are listed in the third column of the output of @command{guix package --list-available} (@pxref{Invoking guix package})."
9243 msgstr ""
9244
9245 #. type: section
9246 #: guix-git/doc/guix.texi:4074
9247 #, no-wrap
9248 msgid "Invoking @command{guix gc}"
9249 msgstr ""
9250
9251 #. type: cindex
9252 #: guix-git/doc/guix.texi:4076
9253 #, no-wrap
9254 msgid "garbage collector"
9255 msgstr ""
9256
9257 #. type: cindex
9258 #: guix-git/doc/guix.texi:4077
9259 #, no-wrap
9260 msgid "disk space"
9261 msgstr ""
9262
9263 #. type: Plain text
9264 #: guix-git/doc/guix.texi:4083
9265 msgid "Packages that are installed, but not used, may be @dfn{garbage-collected}. The @command{guix gc} command allows users to explicitly run the garbage collector to reclaim space from the @file{/gnu/store} directory. It is the @emph{only} way to remove files from @file{/gnu/store}---removing files or directories manually may break it beyond repair!"
9266 msgstr ""
9267
9268 #. type: Plain text
9269 #: guix-git/doc/guix.texi:4094
9270 msgid "The garbage collector has a set of known @dfn{roots}: any file under @file{/gnu/store} reachable from a root is considered @dfn{live} and cannot be deleted; any other file is considered @dfn{dead} and may be deleted. The set of garbage collector roots (``GC roots'' for short) includes default user profiles; by default, the symlinks under @file{/var/guix/gcroots} represent these GC roots. New GC roots can be added with @command{guix build --root}, for example (@pxref{Invoking guix build}). The @command{guix gc --list-roots} command lists them."
9271 msgstr ""
9272
9273 #. type: Plain text
9274 #: guix-git/doc/guix.texi:4100
9275 msgid "Prior to running @code{guix gc --collect-garbage} to make space, it is often useful to remove old generations from user profiles; that way, old package builds referenced by those generations can be reclaimed. This is achieved by running @code{guix package --delete-generations} (@pxref{Invoking guix package})."
9276 msgstr ""
9277
9278 #. type: Plain text
9279 #: guix-git/doc/guix.texi:4104
9280 msgid "Our recommendation is to run a garbage collection periodically, or when you are short on disk space. For instance, to guarantee that at least 5@tie{}GB are available on your disk, simply run:"
9281 msgstr ""
9282
9283 #. type: example
9284 #: guix-git/doc/guix.texi:4107
9285 #, no-wrap
9286 msgid "guix gc -F 5G\n"
9287 msgstr ""
9288
9289 #. type: Plain text
9290 #: guix-git/doc/guix.texi:4116
9291 msgid "It is perfectly safe to run as a non-interactive periodic job (@pxref{Scheduled Job Execution}, for how to set up such a job). Running @command{guix gc} with no arguments will collect as much garbage as it can, but that is often inconvenient: you may find yourself having to rebuild or re-download software that is ``dead'' from the GC viewpoint but that is necessary to build other pieces of software---e.g., the compiler tool chain."
9292 msgstr ""
9293
9294 #. type: Plain text
9295 #: guix-git/doc/guix.texi:4122
9296 msgid "The @command{guix gc} command has three modes of operation: it can be used to garbage-collect any dead files (the default), to delete specific files (the @option{--delete} option), to print garbage-collector information, or for more advanced queries. The garbage collection options are as follows:"
9297 msgstr ""
9298
9299 #. type: item
9300 #: guix-git/doc/guix.texi:4124
9301 #, no-wrap
9302 msgid "--collect-garbage[=@var{min}]"
9303 msgstr ""
9304
9305 #. type: itemx
9306 #: guix-git/doc/guix.texi:4125
9307 #, no-wrap
9308 msgid "-C [@var{min}]"
9309 msgstr ""
9310
9311 #. type: table
9312 #: guix-git/doc/guix.texi:4129
9313 msgid "Collect garbage---i.e., unreachable @file{/gnu/store} files and sub-directories. This is the default operation when no option is specified."
9314 msgstr ""
9315
9316 #. type: table
9317 #: guix-git/doc/guix.texi:4134
9318 msgid "When @var{min} is given, stop once @var{min} bytes have been collected. @var{min} may be a number of bytes, or it may include a unit as a suffix, such as @code{MiB} for mebibytes and @code{GB} for gigabytes (@pxref{Block size, size specifications,, coreutils, GNU Coreutils})."
9319 msgstr ""
9320
9321 #. type: table
9322 #: guix-git/doc/guix.texi:4136
9323 msgid "When @var{min} is omitted, collect all the garbage."
9324 msgstr ""
9325
9326 #. type: item
9327 #: guix-git/doc/guix.texi:4137
9328 #, no-wrap
9329 msgid "--free-space=@var{free}"
9330 msgstr ""
9331
9332 #. type: itemx
9333 #: guix-git/doc/guix.texi:4138
9334 #, no-wrap
9335 msgid "-F @var{free}"
9336 msgstr ""
9337
9338 #. type: table
9339 #: guix-git/doc/guix.texi:4142
9340 msgid "Collect garbage until @var{free} space is available under @file{/gnu/store}, if possible; @var{free} denotes storage space, such as @code{500MiB}, as described above."
9341 msgstr ""
9342
9343 #. type: table
9344 #: guix-git/doc/guix.texi:4145
9345 msgid "When @var{free} or more is already available in @file{/gnu/store}, do nothing and exit immediately."
9346 msgstr ""
9347
9348 #. type: item
9349 #: guix-git/doc/guix.texi:4146
9350 #, no-wrap
9351 msgid "--delete-generations[=@var{duration}]"
9352 msgstr ""
9353
9354 #. type: itemx
9355 #: guix-git/doc/guix.texi:4147
9356 #, no-wrap
9357 msgid "-d [@var{duration}]"
9358 msgstr ""
9359
9360 #. type: table
9361 #: guix-git/doc/guix.texi:4151
9362 msgid "Before starting the garbage collection process, delete all the generations older than @var{duration}, for all the user profiles; when run as root, this applies to all the profiles @emph{of all the users}."
9363 msgstr ""
9364
9365 #. type: table
9366 #: guix-git/doc/guix.texi:4155
9367 msgid "For example, this command deletes all the generations of all your profiles that are older than 2 months (except generations that are current), and then proceeds to free space until at least 10 GiB are available:"
9368 msgstr ""
9369
9370 #. type: example
9371 #: guix-git/doc/guix.texi:4158
9372 #, no-wrap
9373 msgid "guix gc -d 2m -F 10G\n"
9374 msgstr ""
9375
9376 #. type: item
9377 #: guix-git/doc/guix.texi:4160
9378 #, no-wrap
9379 msgid "--delete"
9380 msgstr ""
9381
9382 #. type: itemx
9383 #: guix-git/doc/guix.texi:4161
9384 #, no-wrap
9385 msgid "-D"
9386 msgstr ""
9387
9388 #. type: table
9389 #: guix-git/doc/guix.texi:4165
9390 msgid "Attempt to delete all the store files and directories specified as arguments. This fails if some of the files are not in the store, or if they are still live."
9391 msgstr ""
9392
9393 #. type: item
9394 #: guix-git/doc/guix.texi:4166
9395 #, no-wrap
9396 msgid "--list-failures"
9397 msgstr ""
9398
9399 #. type: table
9400 #: guix-git/doc/guix.texi:4168
9401 msgid "List store items corresponding to cached build failures."
9402 msgstr ""
9403
9404 #. type: table
9405 #: guix-git/doc/guix.texi:4172
9406 msgid "This prints nothing unless the daemon was started with @option{--cache-failures} (@pxref{Invoking guix-daemon, @option{--cache-failures}})."
9407 msgstr ""
9408
9409 #. type: item
9410 #: guix-git/doc/guix.texi:4173
9411 #, no-wrap
9412 msgid "--list-roots"
9413 msgstr ""
9414
9415 #. type: table
9416 #: guix-git/doc/guix.texi:4176
9417 msgid "List the GC roots owned by the user; when run as root, list @emph{all} the GC roots."
9418 msgstr ""
9419
9420 #. type: item
9421 #: guix-git/doc/guix.texi:4177
9422 #, no-wrap
9423 msgid "--list-busy"
9424 msgstr ""
9425
9426 #. type: table
9427 #: guix-git/doc/guix.texi:4180
9428 msgid "List store items in use by currently running processes. These store items are effectively considered GC roots: they cannot be deleted."
9429 msgstr ""
9430
9431 #. type: item
9432 #: guix-git/doc/guix.texi:4181
9433 #, no-wrap
9434 msgid "--clear-failures"
9435 msgstr ""
9436
9437 #. type: table
9438 #: guix-git/doc/guix.texi:4183
9439 msgid "Remove the specified store items from the failed-build cache."
9440 msgstr ""
9441
9442 #. type: table
9443 #: guix-git/doc/guix.texi:4186
9444 msgid "Again, this option only makes sense when the daemon is started with @option{--cache-failures}. Otherwise, it does nothing."
9445 msgstr ""
9446
9447 #. type: item
9448 #: guix-git/doc/guix.texi:4187
9449 #, no-wrap
9450 msgid "--list-dead"
9451 msgstr ""
9452
9453 #. type: table
9454 #: guix-git/doc/guix.texi:4190
9455 msgid "Show the list of dead files and directories still present in the store---i.e., files and directories no longer reachable from any root."
9456 msgstr ""
9457
9458 #. type: item
9459 #: guix-git/doc/guix.texi:4191
9460 #, no-wrap
9461 msgid "--list-live"
9462 msgstr ""
9463
9464 #. type: table
9465 #: guix-git/doc/guix.texi:4193
9466 msgid "Show the list of live store files and directories."
9467 msgstr ""
9468
9469 #. type: Plain text
9470 #: guix-git/doc/guix.texi:4197
9471 msgid "In addition, the references among existing store files can be queried:"
9472 msgstr ""
9473
9474 #. type: item
9475 #: guix-git/doc/guix.texi:4200
9476 #, no-wrap
9477 msgid "--references"
9478 msgstr ""
9479
9480 #. type: itemx
9481 #: guix-git/doc/guix.texi:4201
9482 #, no-wrap
9483 msgid "--referrers"
9484 msgstr ""
9485
9486 #. type: cindex
9487 #: guix-git/doc/guix.texi:4202 guix-git/doc/guix.texi:12309
9488 #, no-wrap
9489 msgid "package dependencies"
9490 msgstr ""
9491
9492 #. type: table
9493 #: guix-git/doc/guix.texi:4205
9494 msgid "List the references (respectively, the referrers) of store files given as arguments."
9495 msgstr ""
9496
9497 #. type: item
9498 #: guix-git/doc/guix.texi:4206
9499 #, no-wrap
9500 msgid "--requisites"
9501 msgstr ""
9502
9503 #. type: itemx
9504 #: guix-git/doc/guix.texi:4207 guix-git/doc/guix.texi:6054
9505 #, no-wrap
9506 msgid "-R"
9507 msgstr ""
9508
9509 #. type: item
9510 #: guix-git/doc/guix.texi:4208 guix-git/doc/guix.texi:12165
9511 #: guix-git/doc/guix.texi:12193 guix-git/doc/guix.texi:12274
9512 #, no-wrap
9513 msgid "closure"
9514 msgstr ""
9515
9516 #. type: table
9517 #: guix-git/doc/guix.texi:4213
9518 msgid "List the requisites of the store files passed as arguments. Requisites include the store files themselves, their references, and the references of these, recursively. In other words, the returned list is the @dfn{transitive closure} of the store files."
9519 msgstr ""
9520
9521 #. type: table
9522 #: guix-git/doc/guix.texi:4217
9523 msgid "@xref{Invoking guix size}, for a tool to profile the size of the closure of an element. @xref{Invoking guix graph}, for a tool to visualize the graph of references."
9524 msgstr ""
9525
9526 #. type: item
9527 #: guix-git/doc/guix.texi:4218
9528 #, no-wrap
9529 msgid "--derivers"
9530 msgstr ""
9531
9532 #. type: item
9533 #: guix-git/doc/guix.texi:4219 guix-git/doc/guix.texi:6368
9534 #: guix-git/doc/guix.texi:12028 guix-git/doc/guix.texi:12418
9535 #, no-wrap
9536 msgid "derivation"
9537 msgstr ""
9538
9539 #. type: table
9540 #: guix-git/doc/guix.texi:4222
9541 msgid "Return the derivation(s) leading to the given store items (@pxref{Derivations})."
9542 msgstr ""
9543
9544 #. type: table
9545 #: guix-git/doc/guix.texi:4224
9546 msgid "For example, this command:"
9547 msgstr ""
9548
9549 #. type: example
9550 #: guix-git/doc/guix.texi:4227
9551 #, no-wrap
9552 msgid "guix gc --derivers $(guix package -I ^emacs$ | cut -f4)\n"
9553 msgstr ""
9554
9555 #. type: table
9556 #: guix-git/doc/guix.texi:4232
9557 msgid "returns the @file{.drv} file(s) leading to the @code{emacs} package installed in your profile."
9558 msgstr ""
9559
9560 #. type: table
9561 #: guix-git/doc/guix.texi:4236
9562 msgid "Note that there may be zero matching @file{.drv} files, for instance because these files have been garbage-collected. There can also be more than one matching @file{.drv} due to fixed-output derivations."
9563 msgstr ""
9564
9565 #. type: Plain text
9566 #: guix-git/doc/guix.texi:4240
9567 msgid "Lastly, the following options allow you to check the integrity of the store and to control disk usage."
9568 msgstr ""
9569
9570 #. type: item
9571 #: guix-git/doc/guix.texi:4243
9572 #, no-wrap
9573 msgid "--verify[=@var{options}]"
9574 msgstr ""
9575
9576 #. type: cindex
9577 #: guix-git/doc/guix.texi:4244
9578 #, no-wrap
9579 msgid "integrity, of the store"
9580 msgstr ""
9581
9582 #. type: cindex
9583 #: guix-git/doc/guix.texi:4245
9584 #, no-wrap
9585 msgid "integrity checking"
9586 msgstr ""
9587
9588 #. type: table
9589 #: guix-git/doc/guix.texi:4247
9590 msgid "Verify the integrity of the store."
9591 msgstr ""
9592
9593 #. type: table
9594 #: guix-git/doc/guix.texi:4250
9595 msgid "By default, make sure that all the store items marked as valid in the database of the daemon actually exist in @file{/gnu/store}."
9596 msgstr ""
9597
9598 #. type: table
9599 #: guix-git/doc/guix.texi:4253
9600 msgid "When provided, @var{options} must be a comma-separated list containing one or more of @code{contents} and @code{repair}."
9601 msgstr ""
9602
9603 #. type: table
9604 #: guix-git/doc/guix.texi:4259
9605 msgid "When passing @option{--verify=contents}, the daemon computes the content hash of each store item and compares it against its hash in the database. Hash mismatches are reported as data corruptions. Because it traverses @emph{all the files in the store}, this command can take a long time, especially on systems with a slow disk drive."
9606 msgstr ""
9607
9608 #. type: cindex
9609 #: guix-git/doc/guix.texi:4260
9610 #, no-wrap
9611 msgid "repairing the store"
9612 msgstr ""
9613
9614 #. type: cindex
9615 #: guix-git/doc/guix.texi:4261 guix-git/doc/guix.texi:10875
9616 #, no-wrap
9617 msgid "corruption, recovering from"
9618 msgstr ""
9619
9620 #. type: table
9621 #: guix-git/doc/guix.texi:4269
9622 msgid "Using @option{--verify=repair} or @option{--verify=contents,repair} causes the daemon to try to repair corrupt store items by fetching substitutes for them (@pxref{Substitutes}). Because repairing is not atomic, and thus potentially dangerous, it is available only to the system administrator. A lightweight alternative, when you know exactly which items in the store are corrupt, is @command{guix build --repair} (@pxref{Invoking guix build})."
9623 msgstr ""
9624
9625 #. type: item
9626 #: guix-git/doc/guix.texi:4270
9627 #, no-wrap
9628 msgid "--optimize"
9629 msgstr ""
9630
9631 #. type: table
9632 #: guix-git/doc/guix.texi:4274
9633 msgid "Optimize the store by hard-linking identical files---this is @dfn{deduplication}."
9634 msgstr ""
9635
9636 #. type: table
9637 #: guix-git/doc/guix.texi:4280
9638 msgid "The daemon performs deduplication after each successful build or archive import, unless it was started with @option{--disable-deduplication} (@pxref{Invoking guix-daemon, @option{--disable-deduplication}}). Thus, this option is primarily useful when the daemon was running with @option{--disable-deduplication}."
9639 msgstr ""
9640
9641 #. type: section
9642 #: guix-git/doc/guix.texi:4284
9643 #, no-wrap
9644 msgid "Invoking @command{guix pull}"
9645 msgstr ""
9646
9647 #. type: cindex
9648 #: guix-git/doc/guix.texi:4286
9649 #, no-wrap
9650 msgid "upgrading Guix"
9651 msgstr ""
9652
9653 #. type: cindex
9654 #: guix-git/doc/guix.texi:4287
9655 #, no-wrap
9656 msgid "updating Guix"
9657 msgstr ""
9658
9659 #. type: command{#1}
9660 #: guix-git/doc/guix.texi:4288
9661 #, no-wrap
9662 msgid "guix pull"
9663 msgstr ""
9664
9665 #. type: cindex
9666 #: guix-git/doc/guix.texi:4289
9667 #, no-wrap
9668 msgid "pull"
9669 msgstr ""
9670
9671 #. type: cindex
9672 #: guix-git/doc/guix.texi:4290
9673 #, no-wrap
9674 msgid "security, @command{guix pull}"
9675 msgstr ""
9676
9677 #. type: cindex
9678 #: guix-git/doc/guix.texi:4291
9679 #, no-wrap
9680 msgid "authenticity, of code obtained with @command{guix pull}"
9681 msgstr ""
9682
9683 #. type: Plain text
9684 #: guix-git/doc/guix.texi:4301
9685 msgid "Packages are installed or upgraded to the latest version available in the distribution currently available on your local machine. To update that distribution, along with the Guix tools, you must run @command{guix pull}: the command downloads the latest Guix source code and package descriptions, and deploys it. Source code is downloaded from a @uref{https://git-scm.com, Git} repository, by default the official GNU@tie{}Guix repository, though this can be customized. @command{guix pull} ensures that the code it downloads is @emph{authentic} by verifying that commits are signed by Guix developers."
9686 msgstr ""
9687
9688 #. type: Plain text
9689 #: guix-git/doc/guix.texi:4304
9690 msgid "Specifically, @command{guix pull} downloads code from the @dfn{channels} (@pxref{Channels}) specified by one of the followings, in this order:"
9691 msgstr ""
9692
9693 #. type: enumerate
9694 #: guix-git/doc/guix.texi:4308
9695 msgid "the @option{--channels} option;"
9696 msgstr ""
9697
9698 #. type: enumerate
9699 #: guix-git/doc/guix.texi:4310
9700 msgid "the user's @file{~/.config/guix/channels.scm} file;"
9701 msgstr ""
9702
9703 #. type: enumerate
9704 #: guix-git/doc/guix.texi:4312
9705 msgid "the system-wide @file{/etc/guix/channels.scm} file;"
9706 msgstr ""
9707
9708 #. type: enumerate
9709 #: guix-git/doc/guix.texi:4315
9710 msgid "the built-in default channels specified in the @code{%default-channels} variable."
9711 msgstr ""
9712
9713 #. type: Plain text
9714 #: guix-git/doc/guix.texi:4322
9715 msgid "On completion, @command{guix package} will use packages and package versions from this just-retrieved copy of Guix. Not only that, but all the Guix commands and Scheme modules will also be taken from that latest version. New @command{guix} sub-commands added by the update also become available."
9716 msgstr ""
9717
9718 #. type: Plain text
9719 #: guix-git/doc/guix.texi:4328
9720 msgid "Any user can update their Guix copy using @command{guix pull}, and the effect is limited to the user who ran @command{guix pull}. For instance, when user @code{root} runs @command{guix pull}, this has no effect on the version of Guix that user @code{alice} sees, and vice versa."
9721 msgstr ""
9722
9723 #. type: Plain text
9724 #: guix-git/doc/guix.texi:4334
9725 msgid "The result of running @command{guix pull} is a @dfn{profile} available under @file{~/.config/guix/current} containing the latest Guix. Thus, make sure to add it to the beginning of your search path so that you use the latest version, and similarly for the Info manual (@pxref{Documentation}):"
9726 msgstr ""
9727
9728 #. type: example
9729 #: guix-git/doc/guix.texi:4338
9730 #, no-wrap
9731 msgid ""
9732 "export PATH=\"$HOME/.config/guix/current/bin:$PATH\"\n"
9733 "export INFOPATH=\"$HOME/.config/guix/current/share/info:$INFOPATH\"\n"
9734 msgstr ""
9735
9736 #. type: Plain text
9737 #: guix-git/doc/guix.texi:4342
9738 msgid "The @option{--list-generations} or @option{-l} option lists past generations produced by @command{guix pull}, along with details about their provenance:"
9739 msgstr ""
9740
9741 #. type: example
9742 #: guix-git/doc/guix.texi:4350
9743 #, no-wrap
9744 msgid ""
9745 "$ guix pull -l\n"
9746 "Generation 1\tJun 10 2018 00:18:18\n"
9747 " guix 65956ad\n"
9748 " repository URL: https://git.savannah.gnu.org/git/guix.git\n"
9749 " branch: origin/master\n"
9750 " commit: 65956ad3526ba09e1f7a40722c96c6ef7c0936fe\n"
9751 "\n"
9752 msgstr ""
9753
9754 #. type: example
9755 #: guix-git/doc/guix.texi:4360
9756 #, no-wrap
9757 msgid ""
9758 "Generation 2\tJun 11 2018 11:02:49\n"
9759 " guix e0cc7f6\n"
9760 " repository URL: https://git.savannah.gnu.org/git/guix.git\n"
9761 " branch: origin/master\n"
9762 " commit: e0cc7f669bec22c37481dd03a7941c7d11a64f1d\n"
9763 " 2 new packages: keepalived, libnfnetlink\n"
9764 " 6 packages upgraded: emacs-nix-mode@@2.0.4,\n"
9765 " guile2.0-guix@@0.14.0-12.77a1aac, guix@@0.14.0-12.77a1aac,\n"
9766 " heimdal@@7.5.0, milkytracker@@1.02.00, nix@@2.0.4\n"
9767 "\n"
9768 msgstr ""
9769
9770 #. type: example
9771 #: guix-git/doc/guix.texi:4368
9772 #, no-wrap
9773 msgid ""
9774 "Generation 3\tJun 13 2018 23:31:07\t(current)\n"
9775 " guix 844cc1c\n"
9776 " repository URL: https://git.savannah.gnu.org/git/guix.git\n"
9777 " branch: origin/master\n"
9778 " commit: 844cc1c8f394f03b404c5bb3aee086922373490c\n"
9779 " 28 new packages: emacs-helm-ls-git, emacs-helm-mu, @dots{}\n"
9780 " 69 packages upgraded: borg@@1.1.6, cheese@@3.28.0, @dots{}\n"
9781 msgstr ""
9782
9783 #. type: Plain text
9784 #: guix-git/doc/guix.texi:4372
9785 msgid "@xref{Invoking guix describe, @command{guix describe}}, for other ways to describe the current status of Guix."
9786 msgstr ""
9787
9788 #. type: Plain text
9789 #: guix-git/doc/guix.texi:4377
9790 msgid "This @code{~/.config/guix/current} profile works exactly like the profiles created by @command{guix package} (@pxref{Invoking guix package}). That is, you can list generations, roll back to the previous generation---i.e., the previous Guix---and so on:"
9791 msgstr ""
9792
9793 #. type: example
9794 #: guix-git/doc/guix.texi:4383
9795 #, no-wrap
9796 msgid ""
9797 "$ guix pull --roll-back\n"
9798 "switched from generation 3 to 2\n"
9799 "$ guix pull --delete-generations=1\n"
9800 "deleting /var/guix/profiles/per-user/charlie/current-guix-1-link\n"
9801 msgstr ""
9802
9803 #. type: Plain text
9804 #: guix-git/doc/guix.texi:4387
9805 msgid "You can also use @command{guix package} (@pxref{Invoking guix package}) to manage the profile by naming it explicitly:"
9806 msgstr ""
9807
9808 #. type: example
9809 #: guix-git/doc/guix.texi:4392
9810 #, no-wrap
9811 msgid ""
9812 "$ guix package -p ~/.config/guix/current --roll-back\n"
9813 "switched from generation 3 to 2\n"
9814 "$ guix package -p ~/.config/guix/current --delete-generations=1\n"
9815 "deleting /var/guix/profiles/per-user/charlie/current-guix-1-link\n"
9816 msgstr ""
9817
9818 #. type: Plain text
9819 #: guix-git/doc/guix.texi:4396
9820 msgid "The @command{guix pull} command is usually invoked with no arguments, but it supports the following options:"
9821 msgstr ""
9822
9823 #. type: item
9824 #: guix-git/doc/guix.texi:4398 guix-git/doc/guix.texi:4556
9825 #, no-wrap
9826 msgid "--url=@var{url}"
9827 msgstr ""
9828
9829 #. type: itemx
9830 #: guix-git/doc/guix.texi:4399 guix-git/doc/guix.texi:4557
9831 #, no-wrap
9832 msgid "--commit=@var{commit}"
9833 msgstr ""
9834
9835 #. type: itemx
9836 #: guix-git/doc/guix.texi:4400 guix-git/doc/guix.texi:4558
9837 #, no-wrap
9838 msgid "--branch=@var{branch}"
9839 msgstr ""
9840
9841 #. type: table
9842 #: guix-git/doc/guix.texi:4404
9843 msgid "Download code for the @code{guix} channel from the specified @var{url}, at the given @var{commit} (a valid Git commit ID represented as a hexadecimal string), or @var{branch}."
9844 msgstr ""
9845
9846 #. type: cindex
9847 #: guix-git/doc/guix.texi:4405 guix-git/doc/guix.texi:5002
9848 #, no-wrap
9849 msgid "@file{channels.scm}, configuration file"
9850 msgstr ""
9851
9852 #. type: cindex
9853 #: guix-git/doc/guix.texi:4406 guix-git/doc/guix.texi:5003
9854 #, no-wrap
9855 msgid "configuration file for channels"
9856 msgstr ""
9857
9858 #. type: table
9859 #: guix-git/doc/guix.texi:4410
9860 msgid "These options are provided for convenience, but you can also specify your configuration in the @file{~/.config/guix/channels.scm} file or using the @option{--channels} option (see below)."
9861 msgstr ""
9862
9863 #. type: item
9864 #: guix-git/doc/guix.texi:4411 guix-git/doc/guix.texi:4563
9865 #, no-wrap
9866 msgid "--channels=@var{file}"
9867 msgstr ""
9868
9869 #. type: itemx
9870 #: guix-git/doc/guix.texi:4412 guix-git/doc/guix.texi:4564
9871 #, no-wrap
9872 msgid "-C @var{file}"
9873 msgstr ""
9874
9875 #. type: table
9876 #: guix-git/doc/guix.texi:4418
9877 msgid "Read the list of channels from @var{file} instead of @file{~/.config/guix/channels.scm} or @file{/etc/guix/channels.scm}. @var{file} must contain Scheme code that evaluates to a list of channel objects. @xref{Channels}, for more information."
9878 msgstr ""
9879
9880 #. type: cindex
9881 #: guix-git/doc/guix.texi:4419
9882 #, no-wrap
9883 msgid "channel news"
9884 msgstr ""
9885
9886 #. type: item
9887 #: guix-git/doc/guix.texi:4420
9888 #, no-wrap
9889 msgid "--news"
9890 msgstr ""
9891
9892 #. type: itemx
9893 #: guix-git/doc/guix.texi:4421 guix-git/doc/guix.texi:5829
9894 #: guix-git/doc/guix.texi:33214
9895 #, no-wrap
9896 msgid "-N"
9897 msgstr ""
9898
9899 #. type: table
9900 #: guix-git/doc/guix.texi:4425
9901 msgid "Display the list of packages added or upgraded since the previous generation, as well as, occasionally, news written by channel authors for their users (@pxref{Channels, Writing Channel News})."
9902 msgstr ""
9903
9904 #. type: table
9905 #: guix-git/doc/guix.texi:4429
9906 msgid "The package information is the same as displayed upon @command{guix pull} completion, but without ellipses; it is also similar to the output of @command{guix pull -l} for the last generation (see below)."
9907 msgstr ""
9908
9909 #. type: table
9910 #: guix-git/doc/guix.texi:4436
9911 msgid "List all the generations of @file{~/.config/guix/current} or, if @var{pattern} is provided, the subset of generations that match @var{pattern}. The syntax of @var{pattern} is the same as with @code{guix package --list-generations} (@pxref{Invoking guix package})."
9912 msgstr ""
9913
9914 #. type: table
9915 #: guix-git/doc/guix.texi:4443
9916 msgid "Roll back to the previous @dfn{generation} of @file{~/.config/guix/current}---i.e., undo the last transaction."
9917 msgstr ""
9918
9919 #. type: table
9920 #: guix-git/doc/guix.texi:4467
9921 msgid "If the current generation matches, it is @emph{not} deleted."
9922 msgstr ""
9923
9924 #. type: table
9925 #: guix-git/doc/guix.texi:4473
9926 msgid "@xref{Invoking guix describe}, for a way to display information about the current generation only."
9927 msgstr ""
9928
9929 #. type: table
9930 #: guix-git/doc/guix.texi:4477
9931 msgid "Use @var{profile} instead of @file{~/.config/guix/current}."
9932 msgstr ""
9933
9934 #. type: item
9935 #: guix-git/doc/guix.texi:4478 guix-git/doc/guix.texi:10266
9936 #, no-wrap
9937 msgid "--dry-run"
9938 msgstr ""
9939
9940 #. type: itemx
9941 #: guix-git/doc/guix.texi:4479 guix-git/doc/guix.texi:10267
9942 #: guix-git/doc/guix.texi:12147
9943 #, no-wrap
9944 msgid "-n"
9945 msgstr ""
9946
9947 #. type: table
9948 #: guix-git/doc/guix.texi:4482
9949 msgid "Show which channel commit(s) would be used and what would be built or substituted but do not actually do it."
9950 msgstr ""
9951
9952 #. type: item
9953 #: guix-git/doc/guix.texi:4483 guix-git/doc/guix.texi:33233
9954 #, no-wrap
9955 msgid "--allow-downgrades"
9956 msgstr ""
9957
9958 #. type: table
9959 #: guix-git/doc/guix.texi:4486
9960 msgid "Allow pulling older or unrelated revisions of channels than those currently in use."
9961 msgstr ""
9962
9963 #. type: cindex
9964 #: guix-git/doc/guix.texi:4487
9965 #, no-wrap
9966 msgid "downgrade attacks, protection against"
9967 msgstr ""
9968
9969 #. type: table
9970 #: guix-git/doc/guix.texi:4492
9971 msgid "By default, @command{guix pull} protects against so-called ``downgrade attacks'' whereby the Git repository of a channel would be reset to an earlier or unrelated revision of itself, potentially leading you to install older, known-vulnerable versions of software packages."
9972 msgstr ""
9973
9974 #. type: quotation
9975 #: guix-git/doc/guix.texi:4496 guix-git/doc/guix.texi:33247
9976 msgid "Make sure you understand its security implications before using @option{--allow-downgrades}."
9977 msgstr ""
9978
9979 #. type: item
9980 #: guix-git/doc/guix.texi:4498
9981 #, no-wrap
9982 msgid "--disable-authentication"
9983 msgstr ""
9984
9985 #. type: table
9986 #: guix-git/doc/guix.texi:4500
9987 msgid "Allow pulling channel code without authenticating it."
9988 msgstr ""
9989
9990 #. type: cindex
9991 #: guix-git/doc/guix.texi:4501 guix-git/doc/guix.texi:5148
9992 #, no-wrap
9993 msgid "authentication, of channel code"
9994 msgstr ""
9995
9996 #. type: table
9997 #: guix-git/doc/guix.texi:4506
9998 msgid "By default, @command{guix pull} authenticates code downloaded from channels by verifying that its commits are signed by authorized developers, and raises an error if this is not the case. This option instructs it to not perform any such verification."
9999 msgstr ""
10000
10001 #. type: quotation
10002 #: guix-git/doc/guix.texi:4510
10003 msgid "Make sure you understand its security implications before using @option{--disable-authentication}."
10004 msgstr ""
10005
10006 #. type: itemx
10007 #: guix-git/doc/guix.texi:4513 guix-git/doc/guix.texi:5812
10008 #: guix-git/doc/guix.texi:6183 guix-git/doc/guix.texi:10817
10009 #: guix-git/doc/guix.texi:12292 guix-git/doc/guix.texi:12543
10010 #: guix-git/doc/guix.texi:13210 guix-git/doc/guix.texi:33162
10011 #, no-wrap
10012 msgid "-s @var{system}"
10013 msgstr ""
10014
10015 #. type: table
10016 #: guix-git/doc/guix.texi:4516 guix-git/doc/guix.texi:6186
10017 msgid "Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of the system type of the build host."
10018 msgstr ""
10019
10020 #. type: table
10021 #: guix-git/doc/guix.texi:4520
10022 msgid "Use the bootstrap Guile to build the latest Guix. This option is only useful to Guix developers."
10023 msgstr ""
10024
10025 #. type: Plain text
10026 #: guix-git/doc/guix.texi:4526
10027 msgid "The @dfn{channel} mechanism allows you to instruct @command{guix pull} which repository and branch to pull from, as well as @emph{additional} repositories containing package modules that should be deployed. @xref{Channels}, for more information."
10028 msgstr ""
10029
10030 #. type: Plain text
10031 #: guix-git/doc/guix.texi:4529
10032 msgid "In addition, @command{guix pull} supports all the common build options (@pxref{Common Build Options})."
10033 msgstr ""
10034
10035 #. type: section
10036 #: guix-git/doc/guix.texi:4531
10037 #, no-wrap
10038 msgid "Invoking @command{guix time-machine}"
10039 msgstr ""
10040
10041 #. type: command{#1}
10042 #: guix-git/doc/guix.texi:4533
10043 #, no-wrap
10044 msgid "guix time-machine"
10045 msgstr ""
10046
10047 #. type: cindex
10048 #: guix-git/doc/guix.texi:4534 guix-git/doc/guix.texi:5106
10049 #, no-wrap
10050 msgid "pinning, channels"
10051 msgstr ""
10052
10053 #. type: cindex
10054 #: guix-git/doc/guix.texi:4535 guix-git/doc/guix.texi:4717
10055 #: guix-git/doc/guix.texi:5107
10056 #, no-wrap
10057 msgid "replicating Guix"
10058 msgstr ""
10059
10060 #. type: cindex
10061 #: guix-git/doc/guix.texi:4536 guix-git/doc/guix.texi:5108
10062 #, no-wrap
10063 msgid "reproducibility, of Guix"
10064 msgstr ""
10065
10066 #. type: Plain text
10067 #: guix-git/doc/guix.texi:4544
10068 msgid "The @command{guix time-machine} command provides access to other revisions of Guix, for example to install older versions of packages, or to reproduce a computation in an identical environment. The revision of Guix to be used is defined by a commit or by a channel description file created by @command{guix describe} (@pxref{Invoking guix describe})."
10069 msgstr ""
10070
10071 #. type: Plain text
10072 #: guix-git/doc/guix.texi:4546 guix-git/doc/guix.texi:5561
10073 #: guix-git/doc/guix.texi:6306 guix-git/doc/guix.texi:10063
10074 #: guix-git/doc/guix.texi:10186 guix-git/doc/guix.texi:11108
10075 #: guix-git/doc/guix.texi:11185 guix-git/doc/guix.texi:12122
10076 #: guix-git/doc/guix.texi:12601 guix-git/doc/guix.texi:12964
10077 #: guix-git/doc/guix.texi:13053 guix-git/doc/guix.texi:13092
10078 #: guix-git/doc/guix.texi:13189
10079 msgid "The general syntax is:"
10080 msgstr ""
10081
10082 #. type: example
10083 #: guix-git/doc/guix.texi:4549
10084 #, no-wrap
10085 msgid "guix time-machine @var{options}@dots{} -- @var{command} @var {arg}@dots{}\n"
10086 msgstr ""
10087
10088 #. type: Plain text
10089 #: guix-git/doc/guix.texi:4554
10090 msgid "where @var{command} and @var{arg}@dots{} are passed unmodified to the @command{guix} command of the specified revision. The @var{options} that define this revision are the same as for @command{guix pull} (@pxref{Invoking guix pull}):"
10091 msgstr ""
10092
10093 #. type: table
10094 #: guix-git/doc/guix.texi:4562
10095 msgid "Use the @code{guix} channel from the specified @var{url}, at the given @var{commit} (a valid Git commit ID represented as a hexadecimal string), or @var{branch}."
10096 msgstr ""
10097
10098 #. type: table
10099 #: guix-git/doc/guix.texi:4568
10100 msgid "Read the list of channels from @var{file}. @var{file} must contain Scheme code that evaluates to a list of channel objects. @xref{Channels} for more information."
10101 msgstr ""
10102
10103 #. type: Plain text
10104 #: guix-git/doc/guix.texi:4572
10105 msgid "As for @command{guix pull}, the absence of any options means that the latest commit on the master branch will be used. The command"
10106 msgstr ""
10107
10108 #. type: example
10109 #: guix-git/doc/guix.texi:4575
10110 #, no-wrap
10111 msgid "guix time-machine -- build hello\n"
10112 msgstr ""
10113
10114 #. type: Plain text
10115 #: guix-git/doc/guix.texi:4580
10116 msgid "will thus build the package @code{hello} as defined in the master branch, which is in general a newer revision of Guix than you have installed. Time travel works in both directions!"
10117 msgstr ""
10118
10119 #. type: Plain text
10120 #: guix-git/doc/guix.texi:4584
10121 msgid "Note that @command{guix time-machine} can trigger builds of channels and their dependencies, and these are controlled by the standard build options (@pxref{Common Build Options})."
10122 msgstr ""
10123
10124 #. type: quotation
10125 #: guix-git/doc/guix.texi:4592
10126 msgid "The functionality described here is a ``technology preview'' as of version @value{VERSION}. As such, the interface is subject to change."
10127 msgstr ""
10128
10129 #. type: cindex
10130 #: guix-git/doc/guix.texi:4594 guix-git/doc/guix.texi:10100
10131 #, no-wrap
10132 msgid "inferiors"
10133 msgstr ""
10134
10135 #. type: cindex
10136 #: guix-git/doc/guix.texi:4595
10137 #, no-wrap
10138 msgid "composition of Guix revisions"
10139 msgstr ""
10140
10141 #. type: Plain text
10142 #: guix-git/doc/guix.texi:4600
10143 msgid "Sometimes you might need to mix packages from the revision of Guix you're currently running with packages available in a different revision of Guix. Guix @dfn{inferiors} allow you to achieve that by composing different Guix revisions in arbitrary ways."
10144 msgstr ""
10145
10146 #. type: cindex
10147 #: guix-git/doc/guix.texi:4601 guix-git/doc/guix.texi:4666
10148 #, no-wrap
10149 msgid "inferior packages"
10150 msgstr ""
10151
10152 #. type: Plain text
10153 #: guix-git/doc/guix.texi:4607
10154 msgid "Technically, an ``inferior'' is essentially a separate Guix process connected to your main Guix process through a REPL (@pxref{Invoking guix repl}). The @code{(guix inferior)} module allows you to create inferiors and to communicate with them. It also provides a high-level interface to browse and manipulate the packages that an inferior provides---@dfn{inferior packages}."
10155 msgstr ""
10156
10157 #. type: Plain text
10158 #: guix-git/doc/guix.texi:4617
10159 msgid "When combined with channels (@pxref{Channels}), inferiors provide a simple way to interact with a separate revision of Guix. For example, let's assume you want to install in your profile the current @code{guile} package, along with the @code{guile-json} as it existed in an older revision of Guix---perhaps because the newer @code{guile-json} has an incompatible API and you want to run your code against the old API@. To do that, you could write a manifest for use by @code{guix package --manifest} (@pxref{Invoking guix package}); in that manifest, you would create an inferior for that old Guix revision you care about, and you would look up the @code{guile-json} package in the inferior:"
10160 msgstr ""
10161
10162 #. type: lisp
10163 #: guix-git/doc/guix.texi:4621
10164 #, no-wrap
10165 msgid ""
10166 "(use-modules (guix inferior) (guix channels)\n"
10167 " (srfi srfi-1)) ;for 'first'\n"
10168 "\n"
10169 msgstr ""
10170
10171 #. type: lisp
10172 #: guix-git/doc/guix.texi:4630
10173 #, no-wrap
10174 msgid ""
10175 "(define channels\n"
10176 " ;; This is the old revision from which we want to\n"
10177 " ;; extract guile-json.\n"
10178 " (list (channel\n"
10179 " (name 'guix)\n"
10180 " (url \"https://git.savannah.gnu.org/git/guix.git\")\n"
10181 " (commit\n"
10182 " \"65956ad3526ba09e1f7a40722c96c6ef7c0936fe\"))))\n"
10183 "\n"
10184 msgstr ""
10185
10186 #. type: lisp
10187 #: guix-git/doc/guix.texi:4634
10188 #, no-wrap
10189 msgid ""
10190 "(define inferior\n"
10191 " ;; An inferior representing the above revision.\n"
10192 " (inferior-for-channels channels))\n"
10193 "\n"
10194 msgstr ""
10195
10196 #. type: lisp
10197 #: guix-git/doc/guix.texi:4640
10198 #, no-wrap
10199 msgid ""
10200 ";; Now create a manifest with the current \"guile\" package\n"
10201 ";; and the old \"guile-json\" package.\n"
10202 "(packages->manifest\n"
10203 " (list (first (lookup-inferior-packages inferior \"guile-json\"))\n"
10204 " (specification->package \"guile\")))\n"
10205 msgstr ""
10206
10207 #. type: Plain text
10208 #: guix-git/doc/guix.texi:4645
10209 msgid "On its first run, @command{guix package --manifest} might have to build the channel you specified before it can create the inferior; subsequent runs will be much faster because the Guix revision will be cached."
10210 msgstr ""
10211
10212 #. type: Plain text
10213 #: guix-git/doc/guix.texi:4648
10214 msgid "The @code{(guix inferior)} module provides the following procedures to open an inferior:"
10215 msgstr ""
10216
10217 #. type: deffn
10218 #: guix-git/doc/guix.texi:4649
10219 #, no-wrap
10220 msgid "{Scheme Procedure} inferior-for-channels @var{channels} @"
10221 msgstr ""
10222
10223 #. type: deffn
10224 #: guix-git/doc/guix.texi:4654
10225 msgid "[#:cache-directory] [#:ttl] Return an inferior for @var{channels}, a list of channels. Use the cache at @var{cache-directory}, where entries can be reclaimed after @var{ttl} seconds. This procedure opens a new connection to the build daemon."
10226 msgstr ""
10227
10228 #. type: deffn
10229 #: guix-git/doc/guix.texi:4657
10230 msgid "As a side effect, this procedure may build or substitute binaries for @var{channels}, which can take time."
10231 msgstr ""
10232
10233 #. type: deffn
10234 #: guix-git/doc/guix.texi:4659
10235 #, no-wrap
10236 msgid "{Scheme Procedure} open-inferior @var{directory} @"
10237 msgstr ""
10238
10239 #. type: deffn
10240 #: guix-git/doc/guix.texi:4664
10241 msgid "[#:command \"bin/guix\"] Open the inferior Guix in @var{directory}, running @code{@var{directory}/@var{command} repl} or equivalent. Return @code{#f} if the inferior could not be launched."
10242 msgstr ""
10243
10244 #. type: Plain text
10245 #: guix-git/doc/guix.texi:4669
10246 msgid "The procedures listed below allow you to obtain and manipulate inferior packages."
10247 msgstr ""
10248
10249 #. type: deffn
10250 #: guix-git/doc/guix.texi:4670
10251 #, no-wrap
10252 msgid "{Scheme Procedure} inferior-packages @var{inferior}"
10253 msgstr ""
10254
10255 #. type: deffn
10256 #: guix-git/doc/guix.texi:4672
10257 msgid "Return the list of packages known to @var{inferior}."
10258 msgstr ""
10259
10260 #. type: deffn
10261 #: guix-git/doc/guix.texi:4674
10262 #, no-wrap
10263 msgid "{Scheme Procedure} lookup-inferior-packages @var{inferior} @var{name} @"
10264 msgstr ""
10265
10266 #. type: deffn
10267 #: guix-git/doc/guix.texi:4679
10268 msgid "[@var{version}] Return the sorted list of inferior packages matching @var{name} in @var{inferior}, with highest version numbers first. If @var{version} is true, return only packages with a version number prefixed by @var{version}."
10269 msgstr ""
10270
10271 #. type: deffn
10272 #: guix-git/doc/guix.texi:4681
10273 #, no-wrap
10274 msgid "{Scheme Procedure} inferior-package? @var{obj}"
10275 msgstr ""
10276
10277 #. type: deffn
10278 #: guix-git/doc/guix.texi:4683
10279 msgid "Return true if @var{obj} is an inferior package."
10280 msgstr ""
10281
10282 #. type: deffn
10283 #: guix-git/doc/guix.texi:4685
10284 #, no-wrap
10285 msgid "{Scheme Procedure} inferior-package-name @var{package}"
10286 msgstr ""
10287
10288 #. type: deffnx
10289 #: guix-git/doc/guix.texi:4686
10290 #, no-wrap
10291 msgid "{Scheme Procedure} inferior-package-version @var{package}"
10292 msgstr ""
10293
10294 #. type: deffnx
10295 #: guix-git/doc/guix.texi:4687
10296 #, no-wrap
10297 msgid "{Scheme Procedure} inferior-package-synopsis @var{package}"
10298 msgstr ""
10299
10300 #. type: deffnx
10301 #: guix-git/doc/guix.texi:4688
10302 #, no-wrap
10303 msgid "{Scheme Procedure} inferior-package-description @var{package}"
10304 msgstr ""
10305
10306 #. type: deffnx
10307 #: guix-git/doc/guix.texi:4689
10308 #, no-wrap
10309 msgid "{Scheme Procedure} inferior-package-home-page @var{package}"
10310 msgstr ""
10311
10312 #. type: deffnx
10313 #: guix-git/doc/guix.texi:4690
10314 #, no-wrap
10315 msgid "{Scheme Procedure} inferior-package-location @var{package}"
10316 msgstr ""
10317
10318 #. type: deffnx
10319 #: guix-git/doc/guix.texi:4691
10320 #, no-wrap
10321 msgid "{Scheme Procedure} inferior-package-inputs @var{package}"
10322 msgstr ""
10323
10324 #. type: deffnx
10325 #: guix-git/doc/guix.texi:4692
10326 #, no-wrap
10327 msgid "{Scheme Procedure} inferior-package-native-inputs @var{package}"
10328 msgstr ""
10329
10330 #. type: deffnx
10331 #: guix-git/doc/guix.texi:4693
10332 #, no-wrap
10333 msgid "{Scheme Procedure} inferior-package-propagated-inputs @var{package}"
10334 msgstr ""
10335
10336 #. type: deffnx
10337 #: guix-git/doc/guix.texi:4694
10338 #, no-wrap
10339 msgid "{Scheme Procedure} inferior-package-transitive-propagated-inputs @var{package}"
10340 msgstr ""
10341
10342 #. type: deffnx
10343 #: guix-git/doc/guix.texi:4695
10344 #, no-wrap
10345 msgid "{Scheme Procedure} inferior-package-native-search-paths @var{package}"
10346 msgstr ""
10347
10348 #. type: deffnx
10349 #: guix-git/doc/guix.texi:4696
10350 #, no-wrap
10351 msgid "{Scheme Procedure} inferior-package-transitive-native-search-paths @var{package}"
10352 msgstr ""
10353
10354 #. type: deffnx
10355 #: guix-git/doc/guix.texi:4697
10356 #, no-wrap
10357 msgid "{Scheme Procedure} inferior-package-search-paths @var{package}"
10358 msgstr ""
10359
10360 #. type: deffn
10361 #: guix-git/doc/guix.texi:4702
10362 msgid "These procedures are the counterpart of package record accessors (@pxref{package Reference}). Most of them work by querying the inferior @var{package} comes from, so the inferior must still be live when you call these procedures."
10363 msgstr ""
10364
10365 #. type: Plain text
10366 #: guix-git/doc/guix.texi:4712
10367 msgid "Inferior packages can be used transparently like any other package or file-like object in G-expressions (@pxref{G-Expressions}). They are also transparently handled by the @code{packages->manifest} procedure, which is commonly used in manifests (@pxref{Invoking guix package, the @option{--manifest} option of @command{guix package}}). Thus you can insert an inferior package pretty much anywhere you would insert a regular package: in manifests, in the @code{packages} field of your @code{operating-system} declaration, and so on."
10368 msgstr ""
10369
10370 #. type: section
10371 #: guix-git/doc/guix.texi:4714
10372 #, no-wrap
10373 msgid "Invoking @command{guix describe}"
10374 msgstr ""
10375
10376 #. type: Plain text
10377 #: guix-git/doc/guix.texi:4725
10378 msgid "Often you may want to answer questions like: ``Which revision of Guix am I using?'' or ``Which channels am I using?'' This is useful information in many situations: if you want to @emph{replicate} an environment on a different machine or user account, if you want to report a bug or to determine what change in the channels you are using caused it, or if you want to record your system state for reproducibility purposes. The @command{guix describe} command answers these questions."
10379 msgstr ""
10380
10381 #. type: Plain text
10382 #: guix-git/doc/guix.texi:4729
10383 msgid "When run from a @command{guix pull}ed @command{guix}, @command{guix describe} displays the channel(s) that it was built from, including their repository URL and commit IDs (@pxref{Channels}):"
10384 msgstr ""
10385
10386 #. type: example
10387 #: guix-git/doc/guix.texi:4737
10388 #, no-wrap
10389 msgid ""
10390 "$ guix describe\n"
10391 "Generation 10\tSep 03 2018 17:32:44\t(current)\n"
10392 " guix e0fa68c\n"
10393 " repository URL: https://git.savannah.gnu.org/git/guix.git\n"
10394 " branch: master\n"
10395 " commit: e0fa68c7718fffd33d81af415279d6ddb518f727\n"
10396 msgstr ""
10397
10398 #. type: Plain text
10399 #: guix-git/doc/guix.texi:4746
10400 msgid "If you're familiar with the Git version control system, this is similar in spirit to @command{git describe}; the output is also similar to that of @command{guix pull --list-generations}, but limited to the current generation (@pxref{Invoking guix pull, the @option{--list-generations} option}). Because the Git commit ID shown above unambiguously refers to a snapshot of Guix, this information is all it takes to describe the revision of Guix you're using, and also to replicate it."
10401 msgstr ""
10402
10403 #. type: Plain text
10404 #: guix-git/doc/guix.texi:4749
10405 msgid "To make it easier to replicate Guix, @command{guix describe} can also be asked to return a list of channels instead of the human-readable description above:"
10406 msgstr ""
10407
10408 #. type: example
10409 #: guix-git/doc/guix.texi:4762
10410 #, no-wrap
10411 msgid ""
10412 "$ guix describe -f channels\n"
10413 "(list (channel\n"
10414 " (name 'guix)\n"
10415 " (url \"https://git.savannah.gnu.org/git/guix.git\")\n"
10416 " (commit\n"
10417 " \"e0fa68c7718fffd33d81af415279d6ddb518f727\")\n"
10418 " (introduction\n"
10419 " (make-channel-introduction\n"
10420 " \"9edb3f66fd807b096b48283debdcddccfea34bad\"\n"
10421 " (openpgp-fingerprint\n"
10422 " \"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA\")))))\n"
10423 msgstr ""
10424
10425 #. type: Plain text
10426 #: guix-git/doc/guix.texi:4771
10427 msgid "You can save this to a file and feed it to @command{guix pull -C} on some other machine or at a later point in time, which will instantiate @emph{this exact Guix revision} (@pxref{Invoking guix pull, the @option{-C} option}). From there on, since you're able to deploy the same revision of Guix, you can just as well @emph{replicate a complete software environment}. We humbly think that this is @emph{awesome}, and we hope you'll like it too!"
10428 msgstr ""
10429
10430 #. type: Plain text
10431 #: guix-git/doc/guix.texi:4774
10432 msgid "The details of the options supported by @command{guix describe} are as follows:"
10433 msgstr ""
10434
10435 #. type: item
10436 #: guix-git/doc/guix.texi:4776 guix-git/doc/guix.texi:6013
10437 #: guix-git/doc/guix.texi:13322
10438 #, no-wrap
10439 msgid "--format=@var{format}"
10440 msgstr ""
10441
10442 #. type: itemx
10443 #: guix-git/doc/guix.texi:4777 guix-git/doc/guix.texi:6014
10444 #: guix-git/doc/guix.texi:13323
10445 #, no-wrap
10446 msgid "-f @var{format}"
10447 msgstr ""
10448
10449 #. type: table
10450 #: guix-git/doc/guix.texi:4779 guix-git/doc/guix.texi:13325
10451 msgid "Produce output in the specified @var{format}, one of:"
10452 msgstr ""
10453
10454 #. type: item
10455 #: guix-git/doc/guix.texi:4781
10456 #, no-wrap
10457 msgid "human"
10458 msgstr ""
10459
10460 #. type: table
10461 #: guix-git/doc/guix.texi:4783
10462 msgid "produce human-readable output;"
10463 msgstr ""
10464
10465 #. type: cindex
10466 #: guix-git/doc/guix.texi:4783 guix-git/doc/guix.texi:5001
10467 #, no-wrap
10468 msgid "channels"
10469 msgstr ""
10470
10471 #. type: table
10472 #: guix-git/doc/guix.texi:4787
10473 msgid "produce a list of channel specifications that can be passed to @command{guix pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Invoking guix pull});"
10474 msgstr ""
10475
10476 #. type: item
10477 #: guix-git/doc/guix.texi:4787
10478 #, no-wrap
10479 msgid "channels-sans-intro"
10480 msgstr ""
10481
10482 #. type: table
10483 #: guix-git/doc/guix.texi:4793
10484 msgid "like @code{channels}, but omit the @code{introduction} field; use it to produce a channel specification suitable for Guix version 1.1.0 or earlier---the @code{introduction} field has to do with channel authentication (@pxref{Channels, Channel Authentication}) and is not supported by these older versions;"
10485 msgstr ""
10486
10487 #. type: item
10488 #: guix-git/doc/guix.texi:4793 guix-git/doc/guix.texi:11371
10489 #, no-wrap
10490 msgid "json"
10491 msgstr ""
10492
10493 #. type: cindex
10494 #: guix-git/doc/guix.texi:4794
10495 #, no-wrap
10496 msgid "JSON"
10497 msgstr ""
10498
10499 #. type: table
10500 #: guix-git/doc/guix.texi:4796
10501 msgid "produce a list of channel specifications in JSON format;"
10502 msgstr ""
10503
10504 #. type: item
10505 #: guix-git/doc/guix.texi:4796 guix-git/doc/guix.texi:13327
10506 #, no-wrap
10507 msgid "recutils"
10508 msgstr ""
10509
10510 #. type: table
10511 #: guix-git/doc/guix.texi:4798
10512 msgid "produce a list of channel specifications in Recutils format."
10513 msgstr ""
10514
10515 #. type: item
10516 #: guix-git/doc/guix.texi:4800
10517 #, no-wrap
10518 msgid "--list-formats"
10519 msgstr ""
10520
10521 #. type: table
10522 #: guix-git/doc/guix.texi:4802
10523 msgid "Display available formats for @option{--format} option."
10524 msgstr ""
10525
10526 #. type: table
10527 #: guix-git/doc/guix.texi:4806
10528 msgid "Display information about @var{profile}."
10529 msgstr ""
10530
10531 #. type: section
10532 #: guix-git/doc/guix.texi:4809
10533 #, no-wrap
10534 msgid "Invoking @command{guix archive}"
10535 msgstr ""
10536
10537 #. type: command{#1}
10538 #: guix-git/doc/guix.texi:4811
10539 #, no-wrap
10540 msgid "guix archive"
10541 msgstr ""
10542
10543 #. type: cindex
10544 #: guix-git/doc/guix.texi:4812
10545 #, no-wrap
10546 msgid "archive"
10547 msgstr ""
10548
10549 #. type: Plain text
10550 #: guix-git/doc/guix.texi:4818
10551 msgid "The @command{guix archive} command allows users to @dfn{export} files from the store into a single archive, and to later @dfn{import} them on a machine that runs Guix. In particular, it allows store files to be transferred from one machine to the store on another machine."
10552 msgstr ""
10553
10554 #. type: quotation
10555 #: guix-git/doc/guix.texi:4822
10556 msgid "If you're looking for a way to produce archives in a format suitable for tools other than Guix, @pxref{Invoking guix pack}."
10557 msgstr ""
10558
10559 #. type: cindex
10560 #: guix-git/doc/guix.texi:4824
10561 #, no-wrap
10562 msgid "exporting store items"
10563 msgstr ""
10564
10565 #. type: Plain text
10566 #: guix-git/doc/guix.texi:4826
10567 msgid "To export store files as an archive to standard output, run:"
10568 msgstr ""
10569
10570 #. type: example
10571 #: guix-git/doc/guix.texi:4829
10572 #, no-wrap
10573 msgid "guix archive --export @var{options} @var{specifications}...\n"
10574 msgstr ""
10575
10576 #. type: Plain text
10577 #: guix-git/doc/guix.texi:4836
10578 msgid "@var{specifications} may be either store file names or package specifications, as for @command{guix package} (@pxref{Invoking guix package}). For instance, the following command creates an archive containing the @code{gui} output of the @code{git} package and the main output of @code{emacs}:"
10579 msgstr ""
10580
10581 #. type: example
10582 #: guix-git/doc/guix.texi:4839
10583 #, no-wrap
10584 msgid "guix archive --export git:gui /gnu/store/...-emacs-24.3 > great.nar\n"
10585 msgstr ""
10586
10587 #. type: Plain text
10588 #: guix-git/doc/guix.texi:4844
10589 msgid "If the specified packages are not built yet, @command{guix archive} automatically builds them. The build process may be controlled with the common build options (@pxref{Common Build Options})."
10590 msgstr ""
10591
10592 #. type: Plain text
10593 #: guix-git/doc/guix.texi:4847
10594 msgid "To transfer the @code{emacs} package to a machine connected over SSH, one would run:"
10595 msgstr ""
10596
10597 #. type: example
10598 #: guix-git/doc/guix.texi:4850
10599 #, no-wrap
10600 msgid "guix archive --export -r emacs | ssh the-machine guix archive --import\n"
10601 msgstr ""
10602
10603 #. type: Plain text
10604 #: guix-git/doc/guix.texi:4855
10605 msgid "Similarly, a complete user profile may be transferred from one machine to another like this:"
10606 msgstr ""
10607
10608 #. type: example
10609 #: guix-git/doc/guix.texi:4859
10610 #, no-wrap
10611 msgid ""
10612 "guix archive --export -r $(readlink -f ~/.guix-profile) | \\\n"
10613 " ssh the-machine guix archive --import\n"
10614 msgstr ""
10615
10616 #. type: Plain text
10617 #: guix-git/doc/guix.texi:4869
10618 msgid "However, note that, in both examples, all of @code{emacs} and the profile as well as all of their dependencies are transferred (due to @option{-r}), regardless of what is already available in the store on the target machine. The @option{--missing} option can help figure out which items are missing from the target store. The @command{guix copy} command simplifies and optimizes this whole process, so this is probably what you should use in this case (@pxref{Invoking guix copy})."
10619 msgstr ""
10620
10621 #. type: cindex
10622 #: guix-git/doc/guix.texi:4870
10623 #, no-wrap
10624 msgid "nar, archive format"
10625 msgstr ""
10626
10627 #. type: cindex
10628 #: guix-git/doc/guix.texi:4871
10629 #, no-wrap
10630 msgid "normalized archive (nar)"
10631 msgstr ""
10632
10633 #. type: cindex
10634 #: guix-git/doc/guix.texi:4872
10635 #, no-wrap
10636 msgid "nar bundle, archive format"
10637 msgstr ""
10638
10639 #. type: Plain text
10640 #: guix-git/doc/guix.texi:4877
10641 msgid "Each store item is written in the @dfn{normalized archive} or @dfn{nar} format (described below), and the output of @command{guix archive --export} (and input of @command{guix archive --import}) is a @dfn{nar bundle}."
10642 msgstr ""
10643
10644 #. type: Plain text
10645 #: guix-git/doc/guix.texi:4887
10646 msgid "The nar format is comparable in spirit to `tar', but with differences that make it more appropriate for our purposes. First, rather than recording all Unix metadata for each file, the nar format only mentions the file type (regular, directory, or symbolic link); Unix permissions and owner/group are dismissed. Second, the order in which directory entries are stored always follows the order of file names according to the C locale collation order. This makes archive production fully deterministic."
10647 msgstr ""
10648
10649 #. type: Plain text
10650 #: guix-git/doc/guix.texi:4891
10651 msgid "That nar bundle format is essentially the concatenation of zero or more nars along with metadata for each store item it contains: its file name, references, corresponding derivation, and a digital signature."
10652 msgstr ""
10653
10654 #. type: Plain text
10655 #: guix-git/doc/guix.texi:4897
10656 msgid "When exporting, the daemon digitally signs the contents of the archive, and that digital signature is appended. When importing, the daemon verifies the signature and rejects the import in case of an invalid signature or if the signing key is not authorized."
10657 msgstr ""
10658
10659 #. type: Plain text
10660 #: guix-git/doc/guix.texi:4899
10661 msgid "The main options are:"
10662 msgstr ""
10663
10664 #. type: item
10665 #: guix-git/doc/guix.texi:4901
10666 #, no-wrap
10667 msgid "--export"
10668 msgstr ""
10669
10670 #. type: table
10671 #: guix-git/doc/guix.texi:4904
10672 msgid "Export the specified store files or packages (see below). Write the resulting archive to the standard output."
10673 msgstr ""
10674
10675 #. type: table
10676 #: guix-git/doc/guix.texi:4907
10677 msgid "Dependencies are @emph{not} included in the output, unless @option{--recursive} is passed."
10678 msgstr ""
10679
10680 #. type: itemx
10681 #: guix-git/doc/guix.texi:4908 guix-git/doc/guix.texi:11141
10682 #: guix-git/doc/guix.texi:11243 guix-git/doc/guix.texi:11268
10683 #: guix-git/doc/guix.texi:11476 guix-git/doc/guix.texi:11517
10684 #: guix-git/doc/guix.texi:11564 guix-git/doc/guix.texi:11589
10685 #: guix-git/doc/guix.texi:11605 guix-git/doc/guix.texi:11636
10686 #, no-wrap
10687 msgid "-r"
10688 msgstr ""
10689
10690 #. type: item
10691 #: guix-git/doc/guix.texi:4909 guix-git/doc/guix.texi:11140
10692 #: guix-git/doc/guix.texi:11242 guix-git/doc/guix.texi:11267
10693 #: guix-git/doc/guix.texi:11475 guix-git/doc/guix.texi:11516
10694 #: guix-git/doc/guix.texi:11563 guix-git/doc/guix.texi:11588
10695 #: guix-git/doc/guix.texi:11604 guix-git/doc/guix.texi:11635
10696 #: guix-git/doc/guix.texi:11692
10697 #, no-wrap
10698 msgid "--recursive"
10699 msgstr ""
10700
10701 #. type: table
10702 #: guix-git/doc/guix.texi:4914
10703 msgid "When combined with @option{--export}, this instructs @command{guix archive} to include dependencies of the given items in the archive. Thus, the resulting archive is self-contained: it contains the closure of the exported store items."
10704 msgstr ""
10705
10706 #. type: item
10707 #: guix-git/doc/guix.texi:4915
10708 #, no-wrap
10709 msgid "--import"
10710 msgstr ""
10711
10712 #. type: table
10713 #: guix-git/doc/guix.texi:4920
10714 msgid "Read an archive from the standard input, and import the files listed therein into the store. Abort if the archive has an invalid digital signature, or if it is signed by a public key not among the authorized keys (see @option{--authorize} below)."
10715 msgstr ""
10716
10717 #. type: item
10718 #: guix-git/doc/guix.texi:4921
10719 #, no-wrap
10720 msgid "--missing"
10721 msgstr ""
10722
10723 #. type: table
10724 #: guix-git/doc/guix.texi:4925
10725 msgid "Read a list of store file names from the standard input, one per line, and write on the standard output the subset of these files missing from the store."
10726 msgstr ""
10727
10728 #. type: item
10729 #: guix-git/doc/guix.texi:4926
10730 #, no-wrap
10731 msgid "--generate-key[=@var{parameters}]"
10732 msgstr ""
10733
10734 #. type: cindex
10735 #: guix-git/doc/guix.texi:4927
10736 #, no-wrap
10737 msgid "signing, archives"
10738 msgstr ""
10739
10740 #. type: table
10741 #: guix-git/doc/guix.texi:4934
10742 msgid "Generate a new key pair for the daemon. This is a prerequisite before archives can be exported with @option{--export}. This operation is usually instantaneous but it can take time if the system's entropy pool needs to be refilled. On Guix System, @code{guix-service-type} takes care of generating this key pair the first boot."
10743 msgstr ""
10744
10745 #. type: table
10746 #: guix-git/doc/guix.texi:4944
10747 msgid "The generated key pair is typically stored under @file{/etc/guix}, in @file{signing-key.pub} (public key) and @file{signing-key.sec} (private key, which must be kept secret). When @var{parameters} is omitted, an ECDSA key using the Ed25519 curve is generated, or, for Libgcrypt versions before 1.6.0, it is a 4096-bit RSA key. Alternatively, @var{parameters} can specify @code{genkey} parameters suitable for Libgcrypt (@pxref{General public-key related Functions, @code{gcry_pk_genkey},, gcrypt, The Libgcrypt Reference Manual})."
10748 msgstr ""
10749
10750 #. type: item
10751 #: guix-git/doc/guix.texi:4945
10752 #, no-wrap
10753 msgid "--authorize"
10754 msgstr ""
10755
10756 #. type: cindex
10757 #: guix-git/doc/guix.texi:4946
10758 #, no-wrap
10759 msgid "authorizing, archives"
10760 msgstr ""
10761
10762 #. type: table
10763 #: guix-git/doc/guix.texi:4950
10764 msgid "Authorize imports signed by the public key passed on standard input. The public key must be in ``s-expression advanced format''---i.e., the same format as the @file{signing-key.pub} file."
10765 msgstr ""
10766
10767 #. type: table
10768 #: guix-git/doc/guix.texi:4957
10769 msgid "The list of authorized keys is kept in the human-editable file @file{/etc/guix/acl}. The file contains @url{https://people.csail.mit.edu/rivest/Sexp.txt, ``advanced-format s-expressions''} and is structured as an access-control list in the @url{https://theworld.com/~cme/spki.txt, Simple Public-Key Infrastructure (SPKI)}."
10770 msgstr ""
10771
10772 #. type: item
10773 #: guix-git/doc/guix.texi:4958
10774 #, no-wrap
10775 msgid "--extract=@var{directory}"
10776 msgstr ""
10777
10778 #. type: itemx
10779 #: guix-git/doc/guix.texi:4959
10780 #, no-wrap
10781 msgid "-x @var{directory}"
10782 msgstr ""
10783
10784 #. type: table
10785 #: guix-git/doc/guix.texi:4963
10786 msgid "Read a single-item archive as served by substitute servers (@pxref{Substitutes}) and extract it to @var{directory}. This is a low-level operation needed in only very narrow use cases; see below."
10787 msgstr ""
10788
10789 #. type: table
10790 #: guix-git/doc/guix.texi:4966
10791 msgid "For example, the following command extracts the substitute for Emacs served by @code{@value{SUBSTITUTE-SERVER}} to @file{/tmp/emacs}:"
10792 msgstr ""
10793
10794 #. type: example
10795 #: guix-git/doc/guix.texi:4971
10796 #, no-wrap
10797 msgid ""
10798 "$ wget -O - \\\n"
10799 " https://@value{SUBSTITUTE-SERVER}/nar/gzip/@dots{}-emacs-24.5 \\\n"
10800 " | gunzip | guix archive -x /tmp/emacs\n"
10801 msgstr ""
10802
10803 #. type: table
10804 #: guix-git/doc/guix.texi:4978
10805 msgid "Single-item archives are different from multiple-item archives produced by @command{guix archive --export}; they contain a single store item, and they do @emph{not} embed a signature. Thus this operation does @emph{no} signature verification and its output should be considered unsafe."
10806 msgstr ""
10807
10808 #. type: table
10809 #: guix-git/doc/guix.texi:4982
10810 msgid "The primary purpose of this operation is to facilitate inspection of archive contents coming from possibly untrusted substitute servers (@pxref{Invoking guix challenge})."
10811 msgstr ""
10812
10813 #. type: item
10814 #: guix-git/doc/guix.texi:4983
10815 #, no-wrap
10816 msgid "--list"
10817 msgstr ""
10818
10819 #. type: itemx
10820 #: guix-git/doc/guix.texi:4984 guix-git/doc/guix.texi:11463
10821 #: guix-git/doc/guix.texi:11510
10822 #, no-wrap
10823 msgid "-t"
10824 msgstr ""
10825
10826 #. type: table
10827 #: guix-git/doc/guix.texi:4988
10828 msgid "Read a single-item archive as served by substitute servers (@pxref{Substitutes}) and print the list of files it contains, as in this example:"
10829 msgstr ""
10830
10831 #. type: example
10832 #: guix-git/doc/guix.texi:4993
10833 #, no-wrap
10834 msgid ""
10835 "$ wget -O - \\\n"
10836 " https://@value{SUBSTITUTE-SERVER}/nar/lzip/@dots{}-emacs-26.3 \\\n"
10837 " | lzip -d | guix archive -t\n"
10838 msgstr ""
10839
10840 #. type: cindex
10841 #: guix-git/doc/guix.texi:5004
10842 #, no-wrap
10843 msgid "@command{guix pull}, configuration file"
10844 msgstr ""
10845
10846 #. type: cindex
10847 #: guix-git/doc/guix.texi:5005
10848 #, no-wrap
10849 msgid "configuration of @command{guix pull}"
10850 msgstr ""
10851
10852 #. type: Plain text
10853 #: guix-git/doc/guix.texi:5016
10854 msgid "Guix and its package collection are updated by running @command{guix pull} (@pxref{Invoking guix pull}). By default @command{guix pull} downloads and deploys Guix itself from the official GNU@tie{}Guix repository. This can be customized by defining @dfn{channels} in the @file{~/.config/guix/channels.scm} file. A channel specifies a URL and branch of a Git repository to be deployed, and @command{guix pull} can be instructed to pull from one or more channels. In other words, channels can be used to @emph{customize} and to @emph{extend} Guix, as we will see below. Guix is able to take into account security concerns and deal with authenticated updates."
10855 msgstr ""
10856
10857 #. type: cindex
10858 #: guix-git/doc/guix.texi:5034
10859 #, no-wrap
10860 msgid "extending the package collection (channels)"
10861 msgstr ""
10862
10863 #. type: cindex
10864 #: guix-git/doc/guix.texi:5035
10865 #, no-wrap
10866 msgid "variant packages (channels)"
10867 msgstr ""
10868
10869 #. type: Plain text
10870 #: guix-git/doc/guix.texi:5039
10871 msgid "You can specify @emph{additional channels} to pull from. To use a channel, write @code{~/.config/guix/channels.scm} to instruct @command{guix pull} to pull from it @emph{in addition} to the default Guix channel(s):"
10872 msgstr ""
10873
10874 #. type: vindex
10875 #: guix-git/doc/guix.texi:5040
10876 #, no-wrap
10877 msgid "%default-channels"
10878 msgstr ""
10879
10880 #. type: lisp
10881 #: guix-git/doc/guix.texi:5047
10882 #, no-wrap
10883 msgid ""
10884 ";; Add variant packages to those Guix provides.\n"
10885 "(cons (channel\n"
10886 " (name 'variant-packages)\n"
10887 " (url \"https://example.org/variant-packages.git\"))\n"
10888 " %default-channels)\n"
10889 msgstr ""
10890
10891 #. type: Plain text
10892 #: guix-git/doc/guix.texi:5057
10893 msgid "Note that the snippet above is (as always!)@: Scheme code; we use @code{cons} to add a channel the list of channels that the variable @code{%default-channels} is bound to (@pxref{Pairs, @code{cons} and lists,, guile, GNU Guile Reference Manual}). With this file in place, @command{guix pull} builds not only Guix but also the package modules from your own repository. The result in @file{~/.config/guix/current} is the union of Guix with your own package modules:"
10894 msgstr ""
10895
10896 #. type: example
10897 #: guix-git/doc/guix.texi:5072
10898 #, no-wrap
10899 msgid ""
10900 "$ guix pull --list-generations\n"
10901 "@dots{}\n"
10902 "Generation 19\tAug 27 2018 16:20:48\n"
10903 " guix d894ab8\n"
10904 " repository URL: https://git.savannah.gnu.org/git/guix.git\n"
10905 " branch: master\n"
10906 " commit: d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300\n"
10907 " variant-packages dd3df5e\n"
10908 " repository URL: https://example.org/variant-packages.git\n"
10909 " branch: master\n"
10910 " commit: dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb\n"
10911 " 11 new packages: variant-gimp, variant-emacs-with-cool-features, @dots{}\n"
10912 " 4 packages upgraded: emacs-racket-mode@@0.0.2-2.1b78827, @dots{}\n"
10913 msgstr ""
10914
10915 #. type: Plain text
10916 #: guix-git/doc/guix.texi:5080
10917 msgid "The output of @command{guix pull} above shows that Generation@tie{}19 includes both Guix and packages from the @code{variant-personal-packages} channel. Among the new and upgraded packages that are listed, some like @code{variant-gimp} and @code{variant-emacs-with-cool-features} might come from @code{variant-packages}, while others come from the Guix default channel."
10918 msgstr ""
10919
10920 #. type: Plain text
10921 #: guix-git/doc/guix.texi:5089
10922 msgid "The channel called @code{guix} specifies where Guix itself---its command-line tools as well as its package collection---should be downloaded. For instance, suppose you want to update from another copy of the Guix repository at @code{example.org}, and specifically the @code{super-hacks} branch, you can write in @code{~/.config/guix/channels.scm} this specification:"
10923 msgstr ""
10924
10925 #. type: lisp
10926 #: guix-git/doc/guix.texi:5096
10927 #, no-wrap
10928 msgid ""
10929 ";; Tell 'guix pull' to use another repo.\n"
10930 "(list (channel\n"
10931 " (name 'guix)\n"
10932 " (url \"https://example.org/another-guix.git\")\n"
10933 " (branch \"super-hacks\")))\n"
10934 msgstr ""
10935
10936 #. type: Plain text
10937 #: guix-git/doc/guix.texi:5102
10938 msgid "From there on, @command{guix pull} will fetch code from the @code{super-hacks} branch of the repository at @code{example.org}. The authentication concern is addressed below ((@pxref{Channel Authentication})."
10939 msgstr ""
10940
10941 #. type: Plain text
10942 #: guix-git/doc/guix.texi:5113
10943 msgid "The @command{guix pull --list-generations} output above shows precisely which commits were used to build this instance of Guix. We can thus replicate it, say, on another machine, by providing a channel specification in @file{~/.config/guix/channels.scm} that is ``pinned'' to these commits:"
10944 msgstr ""
10945
10946 #. type: lisp
10947 #: guix-git/doc/guix.texi:5124
10948 #, no-wrap
10949 msgid ""
10950 ";; Deploy specific commits of my channels of interest.\n"
10951 "(list (channel\n"
10952 " (name 'guix)\n"
10953 " (url \"https://git.savannah.gnu.org/git/guix.git\")\n"
10954 " (commit \"6298c3ffd9654d3231a6f25390b056483e8f407c\"))\n"
10955 " (channel\n"
10956 " (name 'variant-packages)\n"
10957 " (url \"https://example.org/variant-packages.git\")\n"
10958 " (commit \"dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb\")))\n"
10959 msgstr ""
10960
10961 #. type: Plain text
10962 #: guix-git/doc/guix.texi:5131
10963 msgid "The @command{guix describe --format=channels} command can even generate this list of channels directly (@pxref{Invoking guix describe}). The resulting file can be used with the -C options of @command{guix pull} (@pxref{Invoking guix pull}) or @command{guix time-machine} (@pxref{Invoking guix time-machine})."
10964 msgstr ""
10965
10966 #. type: Plain text
10967 #: guix-git/doc/guix.texi:5138
10968 msgid "At this point the two machines run the @emph{exact same Guix}, with access to the @emph{exact same packages}. The output of @command{guix build gimp} on one machine will be exactly the same, bit for bit, as the output of the same command on the other machine. It also means both machines have access to all the source code of Guix and, transitively, to all the source code of every package it defines."
10969 msgstr ""
10970
10971 #. type: Plain text
10972 #: guix-git/doc/guix.texi:5143
10973 msgid "This gives you super powers, allowing you to track the provenance of binary artifacts with very fine grain, and to reproduce software environments at will---some sort of ``meta reproducibility'' capabilities, if you will. @xref{Inferiors}, for another way to take advantage of these super powers."
10974 msgstr ""
10975
10976 #. type: anchor{#1}
10977 #: guix-git/doc/guix.texi:5148
10978 msgid "channel-authentication"
10979 msgstr ""
10980
10981 #. type: Plain text
10982 #: guix-git/doc/guix.texi:5154
10983 msgid "The @command{guix pull} and @command{guix time-machine} commands @dfn{authenticate} the code retrieved from channels: they make sure each commit that is fetched is signed by an authorized developer. The goal is to protect from unauthorized modifications to the channel that would lead users to run malicious code."
10984 msgstr ""
10985
10986 #. type: Plain text
10987 #: guix-git/doc/guix.texi:5159
10988 msgid "As a user, you must provide a @dfn{channel introduction} in your channels file so that Guix knows how to authenticate its first commit. A channel specification, including its introduction, looks something along these lines:"
10989 msgstr ""
10990
10991 #. type: lisp
10992 #: guix-git/doc/guix.texi:5169
10993 #, no-wrap
10994 msgid ""
10995 "(channel\n"
10996 " (name 'some-channel)\n"
10997 " (url \"https://example.org/some-channel.git\")\n"
10998 " (introduction\n"
10999 " (make-channel-introduction\n"
11000 " \"6f0d8cc0d88abb59c324b2990bfee2876016bb86\"\n"
11001 " (openpgp-fingerprint\n"
11002 " \"CABB A931 C0FF EEC6 900D 0CFB 090B 1199 3D9A EBB5\"))))\n"
11003 msgstr ""
11004
11005 #. type: Plain text
11006 #: guix-git/doc/guix.texi:5175
11007 msgid "The specification above shows the name and URL of the channel. The call to @code{make-channel-introduction} above specifies that authentication of this channel starts at commit @code{6f0d8cc@dots{}}, which is signed by the OpenPGP key with fingerprint @code{CABB A931@dots{}}."
11008 msgstr ""
11009
11010 #. type: Plain text
11011 #: guix-git/doc/guix.texi:5181
11012 msgid "For the main channel, called @code{guix}, you automatically get that information from your Guix installation. For other channels, include the channel introduction provided by the channel authors in your @file{channels.scm} file. Make sure you retrieve the channel introduction from a trusted source since that is the root of your trust."
11013 msgstr ""
11014
11015 #. type: Plain text
11016 #: guix-git/doc/guix.texi:5183
11017 msgid "If you're curious about the authentication mechanics, read on!"
11018 msgstr ""
11019
11020 #. type: Plain text
11021 #: guix-git/doc/guix.texi:5194
11022 msgid "When running @command{guix pull}, Guix will first compile the definitions of every available package. This is an expensive operation for which substitutes (@pxref{Substitutes}) may be available. The following snippet in @file{channels.scm} will ensure that @command{guix pull} uses the latest commit with available substitutes for the package definitions: this is done by querying the continuous integration server at @url{https://ci.guix.gnu.org}."
11023 msgstr ""
11024
11025 #. type: lisp
11026 #: guix-git/doc/guix.texi:5197
11027 #, no-wrap
11028 msgid ""
11029 "(use-modules (guix ci))\n"
11030 "\n"
11031 msgstr ""
11032
11033 #. type: lisp
11034 #: guix-git/doc/guix.texi:5201
11035 #, no-wrap
11036 msgid ""
11037 "(list (channel-with-substitutes-available\n"
11038 " %default-guix-channel\n"
11039 " \"https://ci.guix.gnu.org\"))\n"
11040 msgstr ""
11041
11042 #. type: Plain text
11043 #: guix-git/doc/guix.texi:5208
11044 msgid "Note that this does not mean that all the packages that you will install after running @command{guix pull} will have available substitutes. It only ensures that @command{guix pull} will not try to compile package definitions. This is particularly useful when using machines with limited resources."
11045 msgstr ""
11046
11047 #. type: cindex
11048 #: guix-git/doc/guix.texi:5212
11049 #, no-wrap
11050 msgid "personal packages (channels)"
11051 msgstr ""
11052
11053 #. type: cindex
11054 #: guix-git/doc/guix.texi:5213
11055 #, no-wrap
11056 msgid "channels, for personal packages"
11057 msgstr ""
11058
11059 #. type: Plain text
11060 #: guix-git/doc/guix.texi:5221
11061 msgid "Let's say you have a bunch of custom package variants or personal packages that you think would make little sense to contribute to the Guix project, but would like to have these packages transparently available to you at the command line. You would first write modules containing those package definitions (@pxref{Package Modules}), maintain them in a Git repository, and then you and anyone else can use it as an additional channel to get packages from. Neat, no?"
11062 msgstr ""
11063
11064 #. type: quotation
11065 #: guix-git/doc/guix.texi:5225 guix-git/doc/guix.texi:13677
11066 #: guix-git/doc/guix.texi:19632 guix-git/doc/guix.texi:19639
11067 #, no-wrap
11068 msgid "Warning"
11069 msgstr ""
11070
11071 #. type: quotation
11072 #: guix-git/doc/guix.texi:5229
11073 msgid "Before you, dear user, shout---``woow this is @emph{soooo coool}!''---and publish your personal channel to the world, we would like to share a few words of caution:"
11074 msgstr ""
11075
11076 #. type: itemize
11077 #: guix-git/doc/guix.texi:5237
11078 msgid "Before publishing a channel, please consider contributing your package definitions to Guix proper (@pxref{Contributing}). Guix as a project is open to free software of all sorts, and packages in Guix proper are readily available to all Guix users and benefit from the project's quality assurance process."
11079 msgstr ""
11080
11081 #. type: itemize
11082 #: guix-git/doc/guix.texi:5246
11083 msgid "When you maintain package definitions outside Guix, we, Guix developers, consider that @emph{the compatibility burden is on you}. Remember that package modules and package definitions are just Scheme code that uses various programming interfaces (APIs). We want to remain free to change these APIs to keep improving Guix, possibly in ways that break your channel. We never change APIs gratuitously, but we will @emph{not} commit to freezing APIs either."
11084 msgstr ""
11085
11086 #. type: itemize
11087 #: guix-git/doc/guix.texi:5250
11088 msgid "Corollary: if you're using an external channel and that channel breaks, please @emph{report the issue to the channel authors}, not to the Guix project."
11089 msgstr ""
11090
11091 #. type: quotation
11092 #: guix-git/doc/guix.texi:5257
11093 msgid "You've been warned! Having said this, we believe external channels are a practical way to exert your freedom to augment Guix' package collection and to share your improvements, which are basic tenets of @uref{https://www.gnu.org/philosophy/free-sw.html, free software}. Please email us at @email{guix-devel@@gnu.org} if you'd like to discuss this."
11094 msgstr ""
11095
11096 #. type: Plain text
11097 #: guix-git/doc/guix.texi:5269
11098 msgid "To create a channel, create a Git repository containing your own package modules and make it available. The repository can contain anything, but a useful channel will contain Guile modules that export packages. Once you start using a channel, Guix will behave as if the root directory of that channel's Git repository has been added to the Guile load path (@pxref{Load Paths,,, guile, GNU Guile Reference Manual}). For example, if your channel contains a file at @file{my-packages/my-tools.scm} that defines a Guile module, then the module will be available under the name @code{(my-packages my-tools)}, and you will be able to use it like any other module (@pxref{Modules,,, guile, GNU Guile Reference Manual})."
11099 msgstr ""
11100
11101 #. type: Plain text
11102 #: guix-git/doc/guix.texi:5274
11103 msgid "As a channel author, consider bundling authentication material with your channel so that users can authenticate it. @xref{Channel Authentication}, and @ref{Specifying Channel Authorizations}, for info on how to do it."
11104 msgstr ""
11105
11106 #. type: cindex
11107 #: guix-git/doc/guix.texi:5279
11108 #, no-wrap
11109 msgid "subdirectory, channels"
11110 msgstr ""
11111
11112 #. type: Plain text
11113 #: guix-git/doc/guix.texi:5283
11114 msgid "As a channel author, you may want to keep your channel modules in a sub-directory. If your modules are in the sub-directory @file{guix}, you must add a meta-data file @file{.guix-channel} that contains:"
11115 msgstr ""
11116
11117 #. type: lisp
11118 #: guix-git/doc/guix.texi:5288
11119 #, no-wrap
11120 msgid ""
11121 "(channel\n"
11122 " (version 0)\n"
11123 " (directory \"guix\"))\n"
11124 msgstr ""
11125
11126 #. type: cindex
11127 #: guix-git/doc/guix.texi:5293
11128 #, no-wrap
11129 msgid "dependencies, channels"
11130 msgstr ""
11131
11132 #. type: cindex
11133 #: guix-git/doc/guix.texi:5294
11134 #, no-wrap
11135 msgid "meta-data, channels"
11136 msgstr ""
11137
11138 #. type: Plain text
11139 #: guix-git/doc/guix.texi:5299
11140 msgid "Channel authors may decide to augment a package collection provided by other channels. They can declare their channel to be dependent on other channels in a meta-data file @file{.guix-channel}, which is to be placed in the root of the channel repository."
11141 msgstr ""
11142
11143 #. type: Plain text
11144 #: guix-git/doc/guix.texi:5301
11145 msgid "The meta-data file should contain a simple S-expression like this:"
11146 msgstr ""
11147
11148 #. type: lisp
11149 #: guix-git/doc/guix.texi:5309
11150 #, no-wrap
11151 msgid ""
11152 "(channel\n"
11153 " (version 0)\n"
11154 " (dependencies\n"
11155 " (channel\n"
11156 " (name some-collection)\n"
11157 " (url \"https://example.org/first-collection.git\")\n"
11158 "\n"
11159 msgstr ""
11160
11161 #. type: lisp
11162 #: guix-git/doc/guix.texi:5321
11163 #, no-wrap
11164 msgid ""
11165 " ;; The 'introduction' bit below is optional: you would\n"
11166 " ;; provide it for dependencies that can be authenticated.\n"
11167 " (introduction\n"
11168 " (channel-introduction\n"
11169 " (version 0)\n"
11170 " (commit \"a8883b58dc82e167c96506cf05095f37c2c2c6cd\")\n"
11171 " (signer \"CABB A931 C0FF EEC6 900D 0CFB 090B 1199 3D9A EBB5\"))))\n"
11172 " (channel\n"
11173 " (name some-other-collection)\n"
11174 " (url \"https://example.org/second-collection.git\")\n"
11175 " (branch \"testing\"))))\n"
11176 msgstr ""
11177
11178 #. type: Plain text
11179 #: guix-git/doc/guix.texi:5327
11180 msgid "In the above example this channel is declared to depend on two other channels, which will both be fetched automatically. The modules provided by the channel will be compiled in an environment where the modules of all these declared channels are available."
11181 msgstr ""
11182
11183 #. type: Plain text
11184 #: guix-git/doc/guix.texi:5331
11185 msgid "For the sake of reliability and maintainability, you should avoid dependencies on channels that you don't control, and you should aim to keep the number of dependencies to a minimum."
11186 msgstr ""
11187
11188 #. type: cindex
11189 #: guix-git/doc/guix.texi:5335
11190 #, no-wrap
11191 msgid "channel authorizations"
11192 msgstr ""
11193
11194 #. type: anchor{#1}
11195 #: guix-git/doc/guix.texi:5349
11196 msgid "channel-authorizations"
11197 msgstr ""
11198
11199 #. type: Plain text
11200 #: guix-git/doc/guix.texi:5349
11201 msgid "As we saw above, Guix ensures the source code it pulls from channels comes from authorized developers. As a channel author, you need to specify the list of authorized developers in the @file{.guix-authorizations} file in the channel's Git repository. The authentication rule is simple: each commit must be signed by a key listed in the @file{.guix-authorizations} file of its parent commit(s)@footnote{Git commits form a @dfn{directed acyclic graph} (DAG). Each commit can have zero or more parents; ``regular'' commits have one parent and merge commits have two parent commits. Read @uref{https://eagain.net/articles/git-for-computer-scientists/, @i{Git for Computer Scientists}} for a great overview.} The @file{.guix-authorizations} file looks like this:"
11202 msgstr ""
11203
11204 #. type: lisp
11205 #: guix-git/doc/guix.texi:5352
11206 #, no-wrap
11207 msgid ""
11208 ";; Example '.guix-authorizations' file.\n"
11209 "\n"
11210 msgstr ""
11211
11212 #. type: lisp
11213 #: guix-git/doc/guix.texi:5355
11214 #, no-wrap
11215 msgid ""
11216 "(authorizations\n"
11217 " (version 0) ;current file format version\n"
11218 "\n"
11219 msgstr ""
11220
11221 #. type: lisp
11222 #: guix-git/doc/guix.texi:5362
11223 #, no-wrap
11224 msgid ""
11225 " ((\"AD17 A21E F8AE D8F1 CC02 DBD9 F8AE D8F1 765C 61E3\"\n"
11226 " (name \"alice\"))\n"
11227 " (\"2A39 3FFF 68F4 EF7A 3D29 12AF 68F4 EF7A 22FB B2D5\"\n"
11228 " (name \"bob\"))\n"
11229 " (\"CABB A931 C0FF EEC6 900D 0CFB 090B 1199 3D9A EBB5\"\n"
11230 " (name \"charlie\"))))\n"
11231 msgstr ""
11232
11233 #. type: Plain text
11234 #: guix-git/doc/guix.texi:5366
11235 msgid "Each fingerprint is followed by optional key/value pairs, as in the example above. Currently these key/value pairs are ignored."
11236 msgstr ""
11237
11238 #. type: Plain text
11239 #: guix-git/doc/guix.texi:5371
11240 msgid "This authentication rule creates a chicken-and-egg issue: how do we authenticate the first commit? Related to that: how do we deal with channels whose repository history contains unsigned commits and lack @file{.guix-authorizations}? And how do we fork existing channels?"
11241 msgstr ""
11242
11243 #. type: cindex
11244 #: guix-git/doc/guix.texi:5372
11245 #, no-wrap
11246 msgid "channel introduction"
11247 msgstr ""
11248
11249 #. type: Plain text
11250 #: guix-git/doc/guix.texi:5379
11251 msgid "Channel introductions answer these questions by describing the first commit of a channel that should be authenticated. The first time a channel is fetched with @command{guix pull} or @command{guix time-machine}, the command looks up the introductory commit and verifies that it is signed by the specified OpenPGP key. From then on, it authenticates commits according to the rule above."
11252 msgstr ""
11253
11254 #. type: Plain text
11255 #: guix-git/doc/guix.texi:5386
11256 msgid "Additionally, your channel must provide all the OpenPGP keys that were ever mentioned in @file{.guix-authorizations}, stored as @file{.key} files, which can be either binary or ``ASCII-armored''. By default, those @file{.key} files are searched for in the branch named @code{keyring} but you can specify a different branch name in @code{.guix-channel} like so:"
11257 msgstr ""
11258
11259 #. type: lisp
11260 #: guix-git/doc/guix.texi:5391
11261 #, no-wrap
11262 msgid ""
11263 "(channel\n"
11264 " (version 0)\n"
11265 " (keyring-reference \"my-keyring-branch\"))\n"
11266 msgstr ""
11267
11268 #. type: Plain text
11269 #: guix-git/doc/guix.texi:5395
11270 msgid "To summarize, as the author of a channel, there are three things you have to do to allow users to authenticate your code:"
11271 msgstr ""
11272
11273 #. type: enumerate
11274 #: guix-git/doc/guix.texi:5401
11275 msgid "Export the OpenPGP keys of past and present committers with @command{gpg --export} and store them in @file{.key} files, by default in a branch named @code{keyring} (we recommend making it an @dfn{orphan branch})."
11276 msgstr ""
11277
11278 #. type: enumerate
11279 #: guix-git/doc/guix.texi:5406
11280 msgid "Introduce an initial @file{.guix-authorizations} in the channel's repository. Do that in a signed commit (@pxref{Commit Access}, for information on how to sign Git commits.)"
11281 msgstr ""
11282
11283 #. type: enumerate
11284 #: guix-git/doc/guix.texi:5412
11285 msgid "Advertise the channel introduction, for instance on your channel's web page. The channel introduction, as we saw above, is the commit/key pair---i.e., the commit that introduced @file{.guix-authorizations}, and the fingerprint of the OpenPGP used to sign it."
11286 msgstr ""
11287
11288 #. type: Plain text
11289 #: guix-git/doc/guix.texi:5417
11290 msgid "Before pushing to your public Git repository, you can run @command{guix git-authenticate} to verify that you did sign all the commits you are about to push with an authorized key:"
11291 msgstr ""
11292
11293 #. type: example
11294 #: guix-git/doc/guix.texi:5420
11295 #, no-wrap
11296 msgid "guix git authenticate @var{commit} @var{signer}\n"
11297 msgstr ""
11298
11299 #. type: Plain text
11300 #: guix-git/doc/guix.texi:5425
11301 msgid "where @var{commit} and @var{signer} are your channel introduction. @xref{Invoking guix git authenticate}, for details."
11302 msgstr ""
11303
11304 #. type: Plain text
11305 #: guix-git/doc/guix.texi:5432
11306 msgid "Publishing a signed channel requires discipline: any mistake, such as an unsigned commit or a commit signed by an unauthorized key, will prevent users from pulling from your channel---well, that's the whole point of authentication! Pay attention to merges in particular: merge commits are considered authentic if and only if they are signed by a key present in the @file{.guix-authorizations} file of @emph{both} branches."
11307 msgstr ""
11308
11309 #. type: cindex
11310 #: guix-git/doc/guix.texi:5436
11311 #, no-wrap
11312 msgid "primary URL, channels"
11313 msgstr ""
11314
11315 #. type: Plain text
11316 #: guix-git/doc/guix.texi:5439
11317 msgid "Channel authors can indicate the primary URL of their channel's Git repository in the @file{.guix-channel} file, like so:"
11318 msgstr ""
11319
11320 #. type: lisp
11321 #: guix-git/doc/guix.texi:5444
11322 #, no-wrap
11323 msgid ""
11324 "(channel\n"
11325 " (version 0)\n"
11326 " (url \"https://example.org/guix.git\"))\n"
11327 msgstr ""
11328
11329 #. type: Plain text
11330 #: guix-git/doc/guix.texi:5451
11331 msgid "This allows @command{guix pull} to determine whether it is pulling code from a mirror of the channel; when that is the case, it warns the user that the mirror might be stale and displays the primary URL@. That way, users cannot be tricked into fetching code from a stale mirror that does not receive security updates."
11332 msgstr ""
11333
11334 #. type: Plain text
11335 #: guix-git/doc/guix.texi:5455
11336 msgid "This feature only makes sense for authenticated repositories, such as the official @code{guix} channel, for which @command{guix pull} ensures the code it fetches is authentic."
11337 msgstr ""
11338
11339 #. type: cindex
11340 #: guix-git/doc/guix.texi:5459
11341 #, no-wrap
11342 msgid "news, for channels"
11343 msgstr ""
11344
11345 #. type: Plain text
11346 #: guix-git/doc/guix.texi:5463
11347 msgid "Channel authors may occasionally want to communicate to their users information about important changes in the channel. You'd send them all an email, but that's not convenient."
11348 msgstr ""
11349
11350 #. type: Plain text
11351 #: guix-git/doc/guix.texi:5468
11352 msgid "Instead, channels can provide a @dfn{news file}; when the channel users run @command{guix pull}, that news file is automatically read and @command{guix pull --news} can display the announcements that correspond to the new commits that have been pulled, if any."
11353 msgstr ""
11354
11355 #. type: Plain text
11356 #: guix-git/doc/guix.texi:5471
11357 msgid "To do that, channel authors must first declare the name of the news file in their @file{.guix-channel} file:"
11358 msgstr ""
11359
11360 #. type: lisp
11361 #: guix-git/doc/guix.texi:5476
11362 #, no-wrap
11363 msgid ""
11364 "(channel\n"
11365 " (version 0)\n"
11366 " (news-file \"etc/news.txt\"))\n"
11367 msgstr ""
11368
11369 #. type: Plain text
11370 #: guix-git/doc/guix.texi:5480
11371 msgid "The news file itself, @file{etc/news.txt} in this example, must look something like this:"
11372 msgstr ""
11373
11374 #. type: lisp
11375 #: guix-git/doc/guix.texi:5493
11376 #, no-wrap
11377 msgid ""
11378 "(channel-news\n"
11379 " (version 0)\n"
11380 " (entry (tag \"the-bug-fix\")\n"
11381 " (title (en \"Fixed terrible bug\")\n"
11382 " (fr \"Oh la la\"))\n"
11383 " (body (en \"@@emph@{Good news@}! It's fixed!\")\n"
11384 " (eo \"Certe ĝi pli bone funkcias nun!\")))\n"
11385 " (entry (commit \"bdcabe815cd28144a2d2b4bc3c5057b051fa9906\")\n"
11386 " (title (en \"Added a great package\")\n"
11387 " (ca \"Què vol dir guix?\"))\n"
11388 " (body (en \"Don't miss the @@code@{hello@} package!\"))))\n"
11389 msgstr ""
11390
11391 #. type: Plain text
11392 #: guix-git/doc/guix.texi:5500
11393 msgid "While the news file is using the Scheme syntax, avoid naming it with a @file{.scm} extension or else it will get picked up when building the channel and yield an error since it is not a valid module. Alternatively, you can move the channel module to a subdirectory and store the news file in another directory."
11394 msgstr ""
11395
11396 #. type: Plain text
11397 #: guix-git/doc/guix.texi:5505
11398 msgid "The file consists of a list of @dfn{news entries}. Each entry is associated with a commit or tag: it describes changes made in this commit, possibly in preceding commits as well. Users see entries only the first time they obtain the commit the entry refers to."
11399 msgstr ""
11400
11401 #. type: Plain text
11402 #: guix-git/doc/guix.texi:5511
11403 msgid "The @code{title} field should be a one-line summary while @code{body} can be arbitrarily long, and both can contain Texinfo markup (@pxref{Overview,,, texinfo, GNU Texinfo}). Both the title and body are a list of language tag/message tuples, which allows @command{guix pull} to display news in the language that corresponds to the user's locale."
11404 msgstr ""
11405
11406 #. type: Plain text
11407 #: guix-git/doc/guix.texi:5517
11408 msgid "If you want to translate news using a gettext-based workflow, you can extract translatable strings with @command{xgettext} (@pxref{xgettext Invocation,,, gettext, GNU Gettext Utilities}). For example, assuming you write news entries in English first, the command below creates a PO file containing the strings to translate:"
11409 msgstr ""
11410
11411 #. type: example
11412 #: guix-git/doc/guix.texi:5520
11413 #, no-wrap
11414 msgid "xgettext -o news.po -l scheme -ken etc/news.txt\n"
11415 msgstr ""
11416
11417 #. type: Plain text
11418 #: guix-git/doc/guix.texi:5524
11419 msgid "To sum up, yes, you could use your channel as a blog. But beware, this is @emph{not quite} what your users might expect."
11420 msgstr ""
11421
11422 #. type: cindex
11423 #: guix-git/doc/guix.texi:5529
11424 #, no-wrap
11425 msgid "software development"
11426 msgstr ""
11427
11428 #. type: Plain text
11429 #: guix-git/doc/guix.texi:5533
11430 msgid "If you are a software developer, Guix provides tools that you should find helpful---independently of the language you're developing in. This is what this chapter is about."
11431 msgstr ""
11432
11433 #. type: Plain text
11434 #: guix-git/doc/guix.texi:5539
11435 msgid "The @command{guix environment} command provides a convenient way to set up @dfn{development environments} containing all the dependencies and tools necessary to work on the software package of your choice. The @command{guix pack} command allows you to create @dfn{application bundles} that can be easily distributed to users who do not run Guix."
11436 msgstr ""
11437
11438 #. type: section
11439 #: guix-git/doc/guix.texi:5548
11440 #, no-wrap
11441 msgid "Invoking @command{guix environment}"
11442 msgstr ""
11443
11444 #. type: cindex
11445 #: guix-git/doc/guix.texi:5550
11446 #, no-wrap
11447 msgid "reproducible build environments"
11448 msgstr ""
11449
11450 #. type: cindex
11451 #: guix-git/doc/guix.texi:5551
11452 #, no-wrap
11453 msgid "development environments"
11454 msgstr ""
11455
11456 #. type: command{#1}
11457 #: guix-git/doc/guix.texi:5552
11458 #, no-wrap
11459 msgid "guix environment"
11460 msgstr ""
11461
11462 #. type: cindex
11463 #: guix-git/doc/guix.texi:5553
11464 #, no-wrap
11465 msgid "environment, package build environment"
11466 msgstr ""
11467
11468 #. type: Plain text
11469 #: guix-git/doc/guix.texi:5559
11470 msgid "The purpose of @command{guix environment} is to assist hackers in creating reproducible development environments without polluting their package profile. The @command{guix environment} tool takes one or more packages, builds all of their inputs, and creates a shell environment to use them."
11471 msgstr ""
11472
11473 #. type: example
11474 #: guix-git/doc/guix.texi:5564
11475 #, no-wrap
11476 msgid "guix environment @var{options} @var{package}@dots{}\n"
11477 msgstr ""
11478
11479 #. type: Plain text
11480 #: guix-git/doc/guix.texi:5568
11481 msgid "The following example spawns a new shell set up for the development of GNU@tie{}Guile:"
11482 msgstr ""
11483
11484 #. type: example
11485 #: guix-git/doc/guix.texi:5571
11486 #, no-wrap
11487 msgid "guix environment guile\n"
11488 msgstr ""
11489
11490 #. type: Plain text
11491 #: guix-git/doc/guix.texi:5588
11492 msgid "If the needed dependencies are not built yet, @command{guix environment} automatically builds them. The environment of the new shell is an augmented version of the environment that @command{guix environment} was run in. It contains the necessary search paths for building the given package added to the existing environment variables. To create a ``pure'' environment, in which the original environment variables have been unset, use the @option{--pure} option@footnote{Users sometimes wrongfully augment environment variables such as @env{PATH} in their @file{~/.bashrc} file. As a consequence, when @command{guix environment} launches it, Bash may read @file{~/.bashrc}, thereby introducing ``impurities'' in these environment variables. It is an error to define such environment variables in @file{.bashrc}; instead, they should be defined in @file{.bash_profile}, which is sourced only by log-in shells. @xref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}, for details on Bash start-up files.}."
11493 msgstr ""
11494
11495 #. type: Plain text
11496 #: guix-git/doc/guix.texi:5594
11497 msgid "Exiting from a Guix environment is the same as exiting from the shell, and will place the user back in the old environment before @command{guix environment} was invoked. The next garbage collection (@pxref{Invoking guix gc}) will clean up packages that were installed from within the environment and are no longer used outside of it."
11498 msgstr ""
11499
11500 #. type: vindex
11501 #: guix-git/doc/guix.texi:5595
11502 #, no-wrap
11503 msgid "GUIX_ENVIRONMENT"
11504 msgstr ""
11505
11506 #. type: Plain text
11507 #: guix-git/doc/guix.texi:5601
11508 msgid "@command{guix environment} defines the @env{GUIX_ENVIRONMENT} variable in the shell it spawns; its value is the file name of the profile of this environment. This allows users to, say, define a specific prompt for development environments in their @file{.bashrc} (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}):"
11509 msgstr ""
11510
11511 #. type: example
11512 #: guix-git/doc/guix.texi:5607
11513 #, no-wrap
11514 msgid ""
11515 "if [ -n \"$GUIX_ENVIRONMENT\" ]\n"
11516 "then\n"
11517 " export PS1=\"\\u@@\\h \\w [dev]\\$ \"\n"
11518 "fi\n"
11519 msgstr ""
11520
11521 #. type: Plain text
11522 #: guix-git/doc/guix.texi:5611
11523 msgid "...@: or to browse the profile:"
11524 msgstr ""
11525
11526 #. type: example
11527 #: guix-git/doc/guix.texi:5614
11528 #, no-wrap
11529 msgid "$ ls \"$GUIX_ENVIRONMENT/bin\"\n"
11530 msgstr ""
11531
11532 #. type: Plain text
11533 #: guix-git/doc/guix.texi:5620
11534 msgid "Additionally, more than one package may be specified, in which case the union of the inputs for the given packages are used. For example, the command below spawns a shell where all of the dependencies of both Guile and Emacs are available:"
11535 msgstr ""
11536
11537 #. type: example
11538 #: guix-git/doc/guix.texi:5623
11539 #, no-wrap
11540 msgid "guix environment guile emacs\n"
11541 msgstr ""
11542
11543 #. type: Plain text
11544 #: guix-git/doc/guix.texi:5628
11545 msgid "Sometimes an interactive shell session is not desired. An arbitrary command may be invoked by placing the @code{--} token to separate the command from the rest of the arguments:"
11546 msgstr ""
11547
11548 #. type: example
11549 #: guix-git/doc/guix.texi:5631
11550 #, no-wrap
11551 msgid "guix environment guile -- make -j4\n"
11552 msgstr ""
11553
11554 #. type: Plain text
11555 #: guix-git/doc/guix.texi:5637
11556 msgid "In other situations, it is more convenient to specify the list of packages needed in the environment. For example, the following command runs @command{python} from an environment containing Python@tie{}2.7 and NumPy:"
11557 msgstr ""
11558
11559 #. type: example
11560 #: guix-git/doc/guix.texi:5640
11561 #, no-wrap
11562 msgid "guix environment --ad-hoc python2-numpy python-2.7 -- python\n"
11563 msgstr ""
11564
11565 #. type: Plain text
11566 #: guix-git/doc/guix.texi:5651
11567 msgid "Furthermore, one might want the dependencies of a package and also some additional packages that are not build-time or runtime dependencies, but are useful when developing nonetheless. Because of this, the @option{--ad-hoc} flag is positional. Packages appearing before @option{--ad-hoc} are interpreted as packages whose dependencies will be added to the environment. Packages appearing after are interpreted as packages that will be added to the environment directly. For example, the following command creates a Guix development environment that additionally includes Git and strace:"
11568 msgstr ""
11569
11570 #. type: example
11571 #: guix-git/doc/guix.texi:5654
11572 #, no-wrap
11573 msgid "guix environment --pure guix --ad-hoc git strace\n"
11574 msgstr ""
11575
11576 #. type: item
11577 #: guix-git/doc/guix.texi:5656 guix-git/doc/guix.texi:5817
11578 #: guix-git/doc/guix.texi:13078 guix-git/doc/guix.texi:33121
11579 #, no-wrap
11580 msgid "container"
11581 msgstr ""
11582
11583 #. type: Plain text
11584 #: guix-git/doc/guix.texi:5664
11585 msgid "Sometimes it is desirable to isolate the environment as much as possible, for maximal purity and reproducibility. In particular, when using Guix on a host distro that is not Guix System, it is desirable to prevent access to @file{/usr/bin} and other system-wide resources from the development environment. For example, the following command spawns a Guile REPL in a ``container'' where only the store and the current working directory are mounted:"
11586 msgstr ""
11587
11588 #. type: example
11589 #: guix-git/doc/guix.texi:5667
11590 #, no-wrap
11591 msgid "guix environment --ad-hoc --container guile -- guile\n"
11592 msgstr ""
11593
11594 #. type: quotation
11595 #: guix-git/doc/guix.texi:5671
11596 msgid "The @option{--container} option requires Linux-libre 3.19 or newer."
11597 msgstr ""
11598
11599 #. type: cindex
11600 #: guix-git/doc/guix.texi:5673
11601 #, no-wrap
11602 msgid "certificates"
11603 msgstr ""
11604
11605 #. type: Plain text
11606 #: guix-git/doc/guix.texi:5680
11607 msgid "Another typical use case for containers is to run security-sensitive applications such as a web browser. To run Eolie, we must expose and share some files and directories; we include @code{nss-certs} and expose @file{/etc/ssl/certs/} for HTTPS authentication; finally we preserve the @env{DISPLAY} environment variable since containerized graphical applications won't display without it."
11608 msgstr ""
11609
11610 #. type: example
11611 #: guix-git/doc/guix.texi:5687
11612 #, no-wrap
11613 msgid ""
11614 "guix environment --preserve='^DISPLAY$' --container --network \\\n"
11615 " --expose=/etc/machine-id \\\n"
11616 " --expose=/etc/ssl/certs/ \\\n"
11617 " --share=$HOME/.local/share/eolie/=$HOME/.local/share/eolie/ \\\n"
11618 " --ad-hoc eolie nss-certs dbus -- eolie\n"
11619 msgstr ""
11620
11621 #. type: Plain text
11622 #: guix-git/doc/guix.texi:5690
11623 msgid "The available options are summarized below."
11624 msgstr ""
11625
11626 #. type: item
11627 #: guix-git/doc/guix.texi:5692 guix-git/doc/guix.texi:6228
11628 #: guix-git/doc/guix.texi:10886 guix-git/doc/guix.texi:33218
11629 #, no-wrap
11630 msgid "--root=@var{file}"
11631 msgstr ""
11632
11633 #. type: itemx
11634 #: guix-git/doc/guix.texi:5693 guix-git/doc/guix.texi:6229
11635 #: guix-git/doc/guix.texi:10887 guix-git/doc/guix.texi:33219
11636 #, no-wrap
11637 msgid "-r @var{file}"
11638 msgstr ""
11639
11640 #. type: cindex
11641 #: guix-git/doc/guix.texi:5694
11642 #, no-wrap
11643 msgid "persistent environment"
11644 msgstr ""
11645
11646 #. type: cindex
11647 #: guix-git/doc/guix.texi:5695
11648 #, no-wrap
11649 msgid "garbage collector root, for environments"
11650 msgstr ""
11651
11652 #. type: table
11653 #: guix-git/doc/guix.texi:5698
11654 msgid "Make @var{file} a symlink to the profile for this environment, and register it as a garbage collector root."
11655 msgstr ""
11656
11657 #. type: table
11658 #: guix-git/doc/guix.texi:5701
11659 msgid "This is useful if you want to protect your environment from garbage collection, to make it ``persistent''."
11660 msgstr ""
11661
11662 #. type: table
11663 #: guix-git/doc/guix.texi:5707
11664 msgid "When this option is omitted, the environment is protected from garbage collection only for the duration of the @command{guix environment} session. This means that next time you recreate the same environment, you could have to rebuild or re-download packages. @xref{Invoking guix gc}, for more on GC roots."
11665 msgstr ""
11666
11667 #. type: item
11668 #: guix-git/doc/guix.texi:5708 guix-git/doc/guix.texi:6160
11669 #: guix-git/doc/guix.texi:10732 guix-git/doc/guix.texi:11737
11670 #: guix-git/doc/guix.texi:12532 guix-git/doc/guix.texi:33153
11671 #, no-wrap
11672 msgid "--expression=@var{expr}"
11673 msgstr ""
11674
11675 #. type: itemx
11676 #: guix-git/doc/guix.texi:5709 guix-git/doc/guix.texi:6161
11677 #: guix-git/doc/guix.texi:10733 guix-git/doc/guix.texi:11738
11678 #: guix-git/doc/guix.texi:12533 guix-git/doc/guix.texi:33154
11679 #, no-wrap
11680 msgid "-e @var{expr}"
11681 msgstr ""
11682
11683 #. type: table
11684 #: guix-git/doc/guix.texi:5712
11685 msgid "Create an environment for the package or list of packages that @var{expr} evaluates to."
11686 msgstr ""
11687
11688 #. type: table
11689 #: guix-git/doc/guix.texi:5714
11690 msgid "For example, running:"
11691 msgstr ""
11692
11693 #. type: example
11694 #: guix-git/doc/guix.texi:5717
11695 #, no-wrap
11696 msgid "guix environment -e '(@@ (gnu packages maths) petsc-openmpi)'\n"
11697 msgstr ""
11698
11699 #. type: table
11700 #: guix-git/doc/guix.texi:5721
11701 msgid "starts a shell with the environment for this specific variant of the PETSc package."
11702 msgstr ""
11703
11704 #. type: table
11705 #: guix-git/doc/guix.texi:5723
11706 msgid "Running:"
11707 msgstr ""
11708
11709 #. type: example
11710 #: guix-git/doc/guix.texi:5726
11711 #, no-wrap
11712 msgid "guix environment --ad-hoc -e '(@@ (gnu) %base-packages)'\n"
11713 msgstr ""
11714
11715 #. type: table
11716 #: guix-git/doc/guix.texi:5729
11717 msgid "starts a shell with all the base system packages available."
11718 msgstr ""
11719
11720 #. type: table
11721 #: guix-git/doc/guix.texi:5732
11722 msgid "The above commands only use the default output of the given packages. To select other outputs, two element tuples can be specified:"
11723 msgstr ""
11724
11725 #. type: example
11726 #: guix-git/doc/guix.texi:5735
11727 #, no-wrap
11728 msgid "guix environment --ad-hoc -e '(list (@@ (gnu packages bash) bash) \"include\")'\n"
11729 msgstr ""
11730
11731 #. type: item
11732 #: guix-git/doc/guix.texi:5737
11733 #, no-wrap
11734 msgid "--load=@var{file}"
11735 msgstr ""
11736
11737 #. type: itemx
11738 #: guix-git/doc/guix.texi:5738
11739 #, no-wrap
11740 msgid "-l @var{file}"
11741 msgstr ""
11742
11743 #. type: table
11744 #: guix-git/doc/guix.texi:5741
11745 msgid "Create an environment for the package or list of packages that the code within @var{file} evaluates to."
11746 msgstr ""
11747
11748 #. type: lisp
11749 #: guix-git/doc/guix.texi:5747
11750 #, no-wrap
11751 msgid "@verbatiminclude environment-gdb.scm\n"
11752 msgstr ""
11753
11754 #. type: table
11755 #: guix-git/doc/guix.texi:5754
11756 msgid "Create an environment for the packages contained in the manifest object returned by the Scheme code in @var{file}. This option can be repeated several times, in which case the manifests are concatenated."
11757 msgstr ""
11758
11759 #. type: table
11760 #: guix-git/doc/guix.texi:5758
11761 msgid "This is similar to the same-named option in @command{guix package} (@pxref{profile-manifest, @option{--manifest}}) and uses the same manifest files."
11762 msgstr ""
11763
11764 #. type: item
11765 #: guix-git/doc/guix.texi:5759
11766 #, no-wrap
11767 msgid "--ad-hoc"
11768 msgstr ""
11769
11770 #. type: table
11771 #: guix-git/doc/guix.texi:5764
11772 msgid "Include all specified packages in the resulting environment, as if an @i{ad hoc} package were defined with them as inputs. This option is useful for quickly creating an environment without having to write a package expression to contain the desired inputs."
11773 msgstr ""
11774
11775 #. type: table
11776 #: guix-git/doc/guix.texi:5766
11777 msgid "For instance, the command:"
11778 msgstr ""
11779
11780 #. type: example
11781 #: guix-git/doc/guix.texi:5769
11782 #, no-wrap
11783 msgid "guix environment --ad-hoc guile guile-sdl -- guile\n"
11784 msgstr ""
11785
11786 #. type: table
11787 #: guix-git/doc/guix.texi:5773
11788 msgid "runs @command{guile} in an environment where Guile and Guile-SDL are available."
11789 msgstr ""
11790
11791 #. type: table
11792 #: guix-git/doc/guix.texi:5778
11793 msgid "Note that this example implicitly asks for the default output of @code{guile} and @code{guile-sdl}, but it is possible to ask for a specific output---e.g., @code{glib:bin} asks for the @code{bin} output of @code{glib} (@pxref{Packages with Multiple Outputs})."
11794 msgstr ""
11795
11796 #. type: table
11797 #: guix-git/doc/guix.texi:5784
11798 msgid "This option may be composed with the default behavior of @command{guix environment}. Packages appearing before @option{--ad-hoc} are interpreted as packages whose dependencies will be added to the environment, the default behavior. Packages appearing after are interpreted as packages that will be added to the environment directly."
11799 msgstr ""
11800
11801 #. type: item
11802 #: guix-git/doc/guix.texi:5785
11803 #, no-wrap
11804 msgid "--pure"
11805 msgstr ""
11806
11807 #. type: table
11808 #: guix-git/doc/guix.texi:5789
11809 msgid "Unset existing environment variables when building the new environment, except those specified with @option{--preserve} (see below). This has the effect of creating an environment in which search paths only contain package inputs."
11810 msgstr ""
11811
11812 #. type: item
11813 #: guix-git/doc/guix.texi:5790
11814 #, no-wrap
11815 msgid "--preserve=@var{regexp}"
11816 msgstr ""
11817
11818 #. type: itemx
11819 #: guix-git/doc/guix.texi:5791
11820 #, no-wrap
11821 msgid "-E @var{regexp}"
11822 msgstr ""
11823
11824 #. type: table
11825 #: guix-git/doc/guix.texi:5796
11826 msgid "When used alongside @option{--pure}, preserve the environment variables matching @var{regexp}---in other words, put them on a ``white list'' of environment variables that must be preserved. This option can be repeated several times."
11827 msgstr ""
11828
11829 #. type: example
11830 #: guix-git/doc/guix.texi:5800
11831 #, no-wrap
11832 msgid ""
11833 "guix environment --pure --preserve=^SLURM --ad-hoc openmpi @dots{} \\\n"
11834 " -- mpirun @dots{}\n"
11835 msgstr ""
11836
11837 #. type: table
11838 #: guix-git/doc/guix.texi:5806
11839 msgid "This example runs @command{mpirun} in a context where the only environment variables defined are @env{PATH}, environment variables whose name starts with @samp{SLURM}, as well as the usual ``precious'' variables (@env{HOME}, @env{USER}, etc.)."
11840 msgstr ""
11841
11842 #. type: item
11843 #: guix-git/doc/guix.texi:5807
11844 #, no-wrap
11845 msgid "--search-paths"
11846 msgstr ""
11847
11848 #. type: table
11849 #: guix-git/doc/guix.texi:5810
11850 msgid "Display the environment variable definitions that make up the environment."
11851 msgstr ""
11852
11853 #. type: table
11854 #: guix-git/doc/guix.texi:5814
11855 msgid "Attempt to build for @var{system}---e.g., @code{i686-linux}."
11856 msgstr ""
11857
11858 #. type: item
11859 #: guix-git/doc/guix.texi:5815
11860 #, no-wrap
11861 msgid "--container"
11862 msgstr ""
11863
11864 #. type: itemx
11865 #: guix-git/doc/guix.texi:5816
11866 #, no-wrap
11867 msgid "-C"
11868 msgstr ""
11869
11870 #. type: table
11871 #: guix-git/doc/guix.texi:5823
11872 msgid "Run @var{command} within an isolated container. The current working directory outside the container is mapped inside the container. Additionally, unless overridden with @option{--user}, a dummy home directory is created that matches the current user's home directory, and @file{/etc/passwd} is configured accordingly."
11873 msgstr ""
11874
11875 #. type: table
11876 #: guix-git/doc/guix.texi:5827
11877 msgid "The spawned process runs as the current user outside the container. Inside the container, it has the same UID and GID as the current user, unless @option{--user} is passed (see below)."
11878 msgstr ""
11879
11880 #. type: item
11881 #: guix-git/doc/guix.texi:5828 guix-git/doc/guix.texi:33213
11882 #, no-wrap
11883 msgid "--network"
11884 msgstr ""
11885
11886 #. type: table
11887 #: guix-git/doc/guix.texi:5833
11888 msgid "For containers, share the network namespace with the host system. Containers created without this flag only have access to the loopback device."
11889 msgstr ""
11890
11891 #. type: item
11892 #: guix-git/doc/guix.texi:5834
11893 #, no-wrap
11894 msgid "--link-profile"
11895 msgstr ""
11896
11897 #. type: itemx
11898 #: guix-git/doc/guix.texi:5835
11899 #, no-wrap
11900 msgid "-P"
11901 msgstr ""
11902
11903 #. type: table
11904 #: guix-git/doc/guix.texi:5843
11905 msgid "For containers, link the environment profile to @file{~/.guix-profile} within the container and set @code{GUIX_ENVIRONMENT} to that. This is equivalent to making @file{~/.guix-profile} a symlink to the actual profile within the container. Linking will fail and abort the environment if the directory already exists, which will certainly be the case if @command{guix environment} was invoked in the user's home directory."
11906 msgstr ""
11907
11908 #. type: table
11909 #: guix-git/doc/guix.texi:5849
11910 msgid "Certain packages are configured to look in @file{~/.guix-profile} for configuration files and data;@footnote{For example, the @code{fontconfig} package inspects @file{~/.guix-profile/share/fonts} for additional fonts.} @option{--link-profile} allows these programs to behave as expected within the environment."
11911 msgstr ""
11912
11913 #. type: item
11914 #: guix-git/doc/guix.texi:5850 guix-git/doc/guix.texi:12665
11915 #, no-wrap
11916 msgid "--user=@var{user}"
11917 msgstr ""
11918
11919 #. type: itemx
11920 #: guix-git/doc/guix.texi:5851 guix-git/doc/guix.texi:12666
11921 #, no-wrap
11922 msgid "-u @var{user}"
11923 msgstr ""
11924
11925 #. type: table
11926 #: guix-git/doc/guix.texi:5858
11927 msgid "For containers, use the username @var{user} in place of the current user. The generated @file{/etc/passwd} entry within the container will contain the name @var{user}, the home directory will be @file{/home/@var{user}}, and no user GECOS data will be copied. Furthermore, the UID and GID inside the container are 1000. @var{user} need not exist on the system."
11928 msgstr ""
11929
11930 #. type: table
11931 #: guix-git/doc/guix.texi:5863
11932 msgid "Additionally, any shared or exposed path (see @option{--share} and @option{--expose} respectively) whose target is within the current user's home directory will be remapped relative to @file{/home/USER}; this includes the automatic mapping of the current working directory."
11933 msgstr ""
11934
11935 #. type: example
11936 #: guix-git/doc/guix.texi:5870
11937 #, no-wrap
11938 msgid ""
11939 "# will expose paths as /home/foo/wd, /home/foo/test, and /home/foo/target\n"
11940 "cd $HOME/wd\n"
11941 "guix environment --container --user=foo \\\n"
11942 " --expose=$HOME/test \\\n"
11943 " --expose=/tmp/target=$HOME/target\n"
11944 msgstr ""
11945
11946 #. type: table
11947 #: guix-git/doc/guix.texi:5875
11948 msgid "While this will limit the leaking of user identity through home paths and each of the user fields, this is only one useful component of a broader privacy/anonymity solution---not one in and of itself."
11949 msgstr ""
11950
11951 #. type: item
11952 #: guix-git/doc/guix.texi:5876
11953 #, no-wrap
11954 msgid "--no-cwd"
11955 msgstr ""
11956
11957 #. type: table
11958 #: guix-git/doc/guix.texi:5883
11959 msgid "For containers, the default behavior is to share the current working directory with the isolated container and immediately change to that directory within the container. If this is undesirable, @option{--no-cwd} will cause the current working directory to @emph{not} be automatically shared and will change to the user's home directory within the container instead. See also @option{--user}."
11960 msgstr ""
11961
11962 #. type: item
11963 #: guix-git/doc/guix.texi:5884
11964 #, no-wrap
11965 msgid "--expose=@var{source}[=@var{target}]"
11966 msgstr ""
11967
11968 #. type: itemx
11969 #: guix-git/doc/guix.texi:5885
11970 #, no-wrap
11971 msgid "--share=@var{source}[=@var{target}]"
11972 msgstr ""
11973
11974 #. type: table
11975 #: guix-git/doc/guix.texi:5891
11976 msgid "For containers, @option{--expose} (resp. @option{--share}) exposes the file system @var{source} from the host system as the read-only (resp. writable) file system @var{target} within the container. If @var{target} is not specified, @var{source} is used as the target mount point in the container."
11977 msgstr ""
11978
11979 #. type: table
11980 #: guix-git/doc/guix.texi:5895
11981 msgid "The example below spawns a Guile REPL in a container in which the user's home directory is accessible read-only via the @file{/exchange} directory:"
11982 msgstr ""
11983
11984 #. type: example
11985 #: guix-git/doc/guix.texi:5898
11986 #, no-wrap
11987 msgid "guix environment --container --expose=$HOME=/exchange --ad-hoc guile -- guile\n"
11988 msgstr ""
11989
11990 #. type: Plain text
11991 #: guix-git/doc/guix.texi:5906
11992 msgid "@command{guix environment} also supports all of the common build options that @command{guix build} supports (@pxref{Common Build Options}) as well as package transformation options (@pxref{Package Transformation Options})."
11993 msgstr ""
11994
11995 #. type: section
11996 #: guix-git/doc/guix.texi:5908
11997 #, no-wrap
11998 msgid "Invoking @command{guix pack}"
11999 msgstr ""
12000
12001 #. type: Plain text
12002 #: guix-git/doc/guix.texi:5914
12003 msgid "Occasionally you want to pass software to people who are not (yet!) lucky enough to be using Guix. You'd tell them to run @command{guix package -i @var{something}}, but that's not possible in this case. This is where @command{guix pack} comes in."
12004 msgstr ""
12005
12006 #. type: quotation
12007 #: guix-git/doc/guix.texi:5919
12008 msgid "If you are looking for ways to exchange binaries among machines that already run Guix, @pxref{Invoking guix copy}, @ref{Invoking guix publish}, and @ref{Invoking guix archive}."
12009 msgstr ""
12010
12011 #. type: cindex
12012 #: guix-git/doc/guix.texi:5921
12013 #, no-wrap
12014 msgid "pack"
12015 msgstr ""
12016
12017 #. type: cindex
12018 #: guix-git/doc/guix.texi:5922
12019 #, no-wrap
12020 msgid "bundle"
12021 msgstr ""
12022
12023 #. type: cindex
12024 #: guix-git/doc/guix.texi:5923
12025 #, no-wrap
12026 msgid "application bundle"
12027 msgstr ""
12028
12029 #. type: cindex
12030 #: guix-git/doc/guix.texi:5924
12031 #, no-wrap
12032 msgid "software bundle"
12033 msgstr ""
12034
12035 #. type: Plain text
12036 #: guix-git/doc/guix.texi:5933
12037 msgid "The @command{guix pack} command creates a shrink-wrapped @dfn{pack} or @dfn{software bundle}: it creates a tarball or some other archive containing the binaries of the software you're interested in, and all its dependencies. The resulting archive can be used on any machine that does not have Guix, and people can run the exact same binaries as those you have with Guix. The pack itself is created in a bit-reproducible fashion, so anyone can verify that it really contains the build results that you pretend to be shipping."
12038 msgstr ""
12039
12040 #. type: Plain text
12041 #: guix-git/doc/guix.texi:5936
12042 msgid "For example, to create a bundle containing Guile, Emacs, Geiser, and all their dependencies, you can run:"
12043 msgstr ""
12044
12045 #. type: example
12046 #: guix-git/doc/guix.texi:5941
12047 #, no-wrap
12048 msgid ""
12049 "$ guix pack guile emacs geiser\n"
12050 "@dots{}\n"
12051 "/gnu/store/@dots{}-pack.tar.gz\n"
12052 msgstr ""
12053
12054 #. type: Plain text
12055 #: guix-git/doc/guix.texi:5949
12056 msgid "The result here is a tarball containing a @file{/gnu/store} directory with all the relevant packages. The resulting tarball contains a @dfn{profile} with the three packages of interest; the profile is the same as would be created by @command{guix package -i}. It is this mechanism that is used to create Guix's own standalone binary tarball (@pxref{Binary Installation})."
12057 msgstr ""
12058
12059 #. type: Plain text
12060 #: guix-git/doc/guix.texi:5954
12061 msgid "Users of this pack would have to run @file{/gnu/store/@dots{}-profile/bin/guile} to run Guile, which you may find inconvenient. To work around it, you can create, say, a @file{/opt/gnu/bin} symlink to the profile:"
12062 msgstr ""
12063
12064 #. type: example
12065 #: guix-git/doc/guix.texi:5957
12066 #, no-wrap
12067 msgid "guix pack -S /opt/gnu/bin=bin guile emacs geiser\n"
12068 msgstr ""
12069
12070 #. type: Plain text
12071 #: guix-git/doc/guix.texi:5961
12072 msgid "That way, users can happily type @file{/opt/gnu/bin/guile} and enjoy."
12073 msgstr ""
12074
12075 #. type: cindex
12076 #: guix-git/doc/guix.texi:5962
12077 #, no-wrap
12078 msgid "relocatable binaries, with @command{guix pack}"
12079 msgstr ""
12080
12081 #. type: Plain text
12082 #: guix-git/doc/guix.texi:5970
12083 msgid "What if the recipient of your pack does not have root privileges on their machine, and thus cannot unpack it in the root file system? In that case, you will want to use the @option{--relocatable} option (see below). This option produces @dfn{relocatable binaries}, meaning they they can be placed anywhere in the file system hierarchy: in the example above, users can unpack your tarball in their home directory and directly run @file{./opt/gnu/bin/guile}."
12084 msgstr ""
12085
12086 #. type: cindex
12087 #: guix-git/doc/guix.texi:5971
12088 #, no-wrap
12089 msgid "Docker, build an image with guix pack"
12090 msgstr ""
12091
12092 #. type: Plain text
12093 #: guix-git/doc/guix.texi:5974
12094 msgid "Alternatively, you can produce a pack in the Docker image format using the following command:"
12095 msgstr ""
12096
12097 #. type: example
12098 #: guix-git/doc/guix.texi:5977
12099 #, no-wrap
12100 msgid "guix pack -f docker -S /bin=bin guile guile-readline\n"
12101 msgstr ""
12102
12103 #. type: Plain text
12104 #: guix-git/doc/guix.texi:5982
12105 msgid "The result is a tarball that can be passed to the @command{docker load} command, followed by @code{docker run}:"
12106 msgstr ""
12107
12108 #. type: example
12109 #: guix-git/doc/guix.texi:5986
12110 #, no-wrap
12111 msgid ""
12112 "docker load < @var{file}\n"
12113 "docker run -ti guile-guile-readline /bin/guile\n"
12114 msgstr ""
12115
12116 #. type: Plain text
12117 #: guix-git/doc/guix.texi:5993
12118 msgid "where @var{file} is the image returned by @var{guix pack}, and @code{guile-guile-readline} is its ``image tag''. See the @uref{https://docs.docker.com/engine/reference/commandline/load/, Docker documentation} for more information."
12119 msgstr ""
12120
12121 #. type: cindex
12122 #: guix-git/doc/guix.texi:5994
12123 #, no-wrap
12124 msgid "Singularity, build an image with guix pack"
12125 msgstr ""
12126
12127 #. type: cindex
12128 #: guix-git/doc/guix.texi:5995
12129 #, no-wrap
12130 msgid "SquashFS, build an image with guix pack"
12131 msgstr ""
12132
12133 #. type: Plain text
12134 #: guix-git/doc/guix.texi:5998
12135 msgid "Yet another option is to produce a SquashFS image with the following command:"
12136 msgstr ""
12137
12138 #. type: example
12139 #: guix-git/doc/guix.texi:6001
12140 #, no-wrap
12141 msgid "guix pack -f squashfs bash guile emacs geiser\n"
12142 msgstr ""
12143
12144 #. type: Plain text
12145 #: guix-git/doc/guix.texi:6009
12146 msgid "The result is a SquashFS file system image that can either be mounted or directly be used as a file system container image with the @uref{https://www.sylabs.io/docs/, Singularity container execution environment}, using commands like @command{singularity shell} or @command{singularity exec}."
12147 msgstr ""
12148
12149 #. type: Plain text
12150 #: guix-git/doc/guix.texi:6011
12151 msgid "Several command-line options allow you to customize your pack:"
12152 msgstr ""
12153
12154 #. type: table
12155 #: guix-git/doc/guix.texi:6016
12156 msgid "Produce a pack in the given @var{format}."
12157 msgstr ""
12158
12159 #. type: table
12160 #: guix-git/doc/guix.texi:6018
12161 msgid "The available formats are:"
12162 msgstr ""
12163
12164 #. type: item
12165 #: guix-git/doc/guix.texi:6020
12166 #, no-wrap
12167 msgid "tarball"
12168 msgstr ""
12169
12170 #. type: table
12171 #: guix-git/doc/guix.texi:6023
12172 msgid "This is the default format. It produces a tarball containing all the specified binaries and symlinks."
12173 msgstr ""
12174
12175 #. type: item
12176 #: guix-git/doc/guix.texi:6024
12177 #, no-wrap
12178 msgid "docker"
12179 msgstr ""
12180
12181 #. type: table
12182 #: guix-git/doc/guix.texi:6030
12183 msgid "This produces a tarball that follows the @uref{https://github.com/docker/docker/blob/master/image/spec/v1.2.md, Docker Image Specification}. The ``repository name'' as it appears in the output of the @command{docker images} command is computed from package names passed on the command line or in the manifest file."
12184 msgstr ""
12185
12186 #. type: item
12187 #: guix-git/doc/guix.texi:6031
12188 #, no-wrap
12189 msgid "squashfs"
12190 msgstr ""
12191
12192 #. type: table
12193 #: guix-git/doc/guix.texi:6035
12194 msgid "This produces a SquashFS image containing all the specified binaries and symlinks, as well as empty mount points for virtual file systems like procfs."
12195 msgstr ""
12196
12197 #. type: quotation
12198 #: guix-git/doc/guix.texi:6041
12199 msgid "Singularity @emph{requires} you to provide @file{/bin/sh} in the image. For that reason, @command{guix pack -f squashfs} always implies @code{-S /bin=bin}. Thus, your @command{guix pack} invocation must always start with something like:"
12200 msgstr ""
12201
12202 #. type: example
12203 #: guix-git/doc/guix.texi:6044
12204 #, no-wrap
12205 msgid "guix pack -f squashfs bash @dots{}\n"
12206 msgstr ""
12207
12208 #. type: quotation
12209 #: guix-git/doc/guix.texi:6049
12210 msgid "If you forget the @code{bash} (or similar) package, @command{singularity run} and @command{singularity exec} will fail with an unhelpful ``no such file or directory'' message."
12211 msgstr ""
12212
12213 #. type: cindex
12214 #: guix-git/doc/guix.texi:6052
12215 #, no-wrap
12216 msgid "relocatable binaries"
12217 msgstr ""
12218
12219 #. type: item
12220 #: guix-git/doc/guix.texi:6053
12221 #, no-wrap
12222 msgid "--relocatable"
12223 msgstr ""
12224
12225 #. type: table
12226 #: guix-git/doc/guix.texi:6057
12227 msgid "Produce @dfn{relocatable binaries}---i.e., binaries that can be placed anywhere in the file system hierarchy and run from there."
12228 msgstr ""
12229
12230 #. type: table
12231 #: guix-git/doc/guix.texi:6065
12232 msgid "When this option is passed once, the resulting binaries require support for @dfn{user namespaces} in the kernel Linux; when passed @emph{twice}@footnote{Here's a trick to memorize it: @code{-RR}, which adds PRoot support, can be thought of as the abbreviation of ``Really Relocatable''. Neat, isn't it?}, relocatable binaries fall to back to other techniques if user namespaces are unavailable, and essentially work anywhere---see below for the implications."
12233 msgstr ""
12234
12235 #. type: table
12236 #: guix-git/doc/guix.texi:6067
12237 msgid "For example, if you create a pack containing Bash with:"
12238 msgstr ""
12239
12240 #. type: example
12241 #: guix-git/doc/guix.texi:6070
12242 #, no-wrap
12243 msgid "guix pack -RR -S /mybin=bin bash\n"
12244 msgstr ""
12245
12246 #. type: table
12247 #: guix-git/doc/guix.texi:6075
12248 msgid "...@: you can copy that pack to a machine that lacks Guix, and from your home directory as a normal user, run:"
12249 msgstr ""
12250
12251 #. type: example
12252 #: guix-git/doc/guix.texi:6079
12253 #, no-wrap
12254 msgid ""
12255 "tar xf pack.tar.gz\n"
12256 "./mybin/sh\n"
12257 msgstr ""
12258
12259 #. type: table
12260 #: guix-git/doc/guix.texi:6087
12261 msgid "In that shell, if you type @code{ls /gnu/store}, you'll notice that @file{/gnu/store} shows up and contains all the dependencies of @code{bash}, even though the machine actually lacks @file{/gnu/store} altogether! That is probably the simplest way to deploy Guix-built software on a non-Guix machine."
12262 msgstr ""
12263
12264 #. type: quotation
12265 #: guix-git/doc/guix.texi:6093
12266 msgid "By default, relocatable binaries rely on the @dfn{user namespace} feature of the kernel Linux, which allows unprivileged users to mount or change root. Old versions of Linux did not support it, and some GNU/Linux distributions turn it off."
12267 msgstr ""
12268
12269 #. type: quotation
12270 #: guix-git/doc/guix.texi:6099
12271 msgid "To produce relocatable binaries that work even in the absence of user namespaces, pass @option{--relocatable} or @option{-R} @emph{twice}. In that case, binaries will try user namespace support and fall back to another @dfn{execution engine} if user namespaces are not supported. The following execution engines are supported:"
12272 msgstr ""
12273
12274 #. type: item
12275 #: guix-git/doc/guix.texi:6101 guix-git/doc/guix.texi:16276
12276 #, no-wrap
12277 msgid "default"
12278 msgstr ""
12279
12280 #. type: table
12281 #: guix-git/doc/guix.texi:6104
12282 msgid "Try user namespaces and fall back to PRoot if user namespaces are not supported (see below)."
12283 msgstr ""
12284
12285 #. type: item
12286 #: guix-git/doc/guix.texi:6105
12287 #, no-wrap
12288 msgid "performance"
12289 msgstr ""
12290
12291 #. type: table
12292 #: guix-git/doc/guix.texi:6108
12293 msgid "Try user namespaces and fall back to Fakechroot if user namespaces are not supported (see below)."
12294 msgstr ""
12295
12296 #. type: item
12297 #: guix-git/doc/guix.texi:6109
12298 #, no-wrap
12299 msgid "userns"
12300 msgstr ""
12301
12302 #. type: table
12303 #: guix-git/doc/guix.texi:6112
12304 msgid "Run the program through user namespaces and abort if they are not supported."
12305 msgstr ""
12306
12307 #. type: item
12308 #: guix-git/doc/guix.texi:6113
12309 #, no-wrap
12310 msgid "proot"
12311 msgstr ""
12312
12313 #. type: table
12314 #: guix-git/doc/guix.texi:6120
12315 msgid "Run through PRoot. The @uref{https://proot-me.github.io/, PRoot} program provides the necessary support for file system virtualization. It achieves that by using the @code{ptrace} system call on the running program. This approach has the advantage to work without requiring special kernel support, but it incurs run-time overhead every time a system call is made."
12316 msgstr ""
12317
12318 #. type: item
12319 #: guix-git/doc/guix.texi:6121
12320 #, no-wrap
12321 msgid "fakechroot"
12322 msgstr ""
12323
12324 #. type: table
12325 #: guix-git/doc/guix.texi:6129
12326 msgid "Run through Fakechroot. @uref{https://github.com/dex4er/fakechroot/, Fakechroot} virtualizes file system accesses by intercepting calls to C library functions such as @code{open}, @code{stat}, @code{exec}, and so on. Unlike PRoot, it incurs very little overhead. However, it does not always work: for example, some file system accesses made from within the C library are not intercepted, and file system accesses made @i{via} direct syscalls are not intercepted either, leading to erratic behavior."
12327 msgstr ""
12328
12329 #. type: vindex
12330 #: guix-git/doc/guix.texi:6131
12331 #, no-wrap
12332 msgid "GUIX_EXECUTION_ENGINE"
12333 msgstr ""
12334
12335 #. type: quotation
12336 #: guix-git/doc/guix.texi:6135
12337 msgid "When running a wrapped program, you can explicitly request one of the execution engines listed above by setting the @env{GUIX_EXECUTION_ENGINE} environment variable accordingly."
12338 msgstr ""
12339
12340 #. type: cindex
12341 #: guix-git/doc/guix.texi:6137
12342 #, no-wrap
12343 msgid "entry point, for Docker images"
12344 msgstr ""
12345
12346 #. type: item
12347 #: guix-git/doc/guix.texi:6138
12348 #, no-wrap
12349 msgid "--entry-point=@var{command}"
12350 msgstr ""
12351
12352 #. type: table
12353 #: guix-git/doc/guix.texi:6143
12354 msgid "Use @var{command} as the @dfn{entry point} of the resulting pack, if the pack format supports it---currently @code{docker} and @code{squashfs} (Singularity) support it. @var{command} must be relative to the profile contained in the pack."
12355 msgstr ""
12356
12357 #. type: table
12358 #: guix-git/doc/guix.texi:6147
12359 msgid "The entry point specifies the command that tools like @code{docker run} or @code{singularity run} automatically start by default. For example, you can do:"
12360 msgstr ""
12361
12362 #. type: example
12363 #: guix-git/doc/guix.texi:6150
12364 #, no-wrap
12365 msgid "guix pack -f docker --entry-point=bin/guile guile\n"
12366 msgstr ""
12367
12368 #. type: table
12369 #: guix-git/doc/guix.texi:6154
12370 msgid "The resulting pack can easily be loaded and @code{docker run} with no extra arguments will spawn @code{bin/guile}:"
12371 msgstr ""
12372
12373 #. type: example
12374 #: guix-git/doc/guix.texi:6158
12375 #, no-wrap
12376 msgid ""
12377 "docker load -i pack.tar.gz\n"
12378 "docker run @var{image-id}\n"
12379 msgstr ""
12380
12381 #. type: table
12382 #: guix-git/doc/guix.texi:6163 guix-git/doc/guix.texi:11740
12383 #: guix-git/doc/guix.texi:12535
12384 msgid "Consider the package @var{expr} evaluates to."
12385 msgstr ""
12386
12387 #. type: table
12388 #: guix-git/doc/guix.texi:6167
12389 msgid "This has the same purpose as the same-named option in @command{guix build} (@pxref{Additional Build Options, @option{--expression} in @command{guix build}})."
12390 msgstr ""
12391
12392 #. type: table
12393 #: guix-git/doc/guix.texi:6173
12394 msgid "Use the packages contained in the manifest object returned by the Scheme code in @var{file}. This option can be repeated several times, in which case the manifests are concatenated."
12395 msgstr ""
12396
12397 #. type: table
12398 #: guix-git/doc/guix.texi:6181
12399 msgid "This has a similar purpose as the same-named option in @command{guix package} (@pxref{profile-manifest, @option{--manifest}}) and uses the same manifest files. It allows you to define a collection of packages once and use it both for creating profiles and for creating archives for use on machines that do not have Guix installed. Note that you can specify @emph{either} a manifest file @emph{or} a list of packages, but not both."
12400 msgstr ""
12401
12402 #. type: item
12403 #: guix-git/doc/guix.texi:6187 guix-git/doc/guix.texi:10850
12404 #, no-wrap
12405 msgid "--target=@var{triplet}"
12406 msgstr ""
12407
12408 #. type: cindex
12409 #: guix-git/doc/guix.texi:6188 guix-git/doc/guix.texi:6639
12410 #: guix-git/doc/guix.texi:10851
12411 #, no-wrap
12412 msgid "cross-compilation"
12413 msgstr ""
12414
12415 #. type: table
12416 #: guix-git/doc/guix.texi:6192
12417 msgid "Cross-build for @var{triplet}, which must be a valid GNU triplet, such as @code{\"aarch64-linux-gnu\"} (@pxref{Specifying target triplets, GNU configuration triplets,, autoconf, Autoconf})."
12418 msgstr ""
12419
12420 #. type: item
12421 #: guix-git/doc/guix.texi:6193
12422 #, no-wrap
12423 msgid "--compression=@var{tool}"
12424 msgstr ""
12425
12426 #. type: itemx
12427 #: guix-git/doc/guix.texi:6194
12428 #, no-wrap
12429 msgid "-C @var{tool}"
12430 msgstr ""
12431
12432 #. type: table
12433 #: guix-git/doc/guix.texi:6198
12434 msgid "Compress the resulting tarball using @var{tool}---one of @code{gzip}, @code{zstd}, @code{bzip2}, @code{xz}, @code{lzip}, or @code{none} for no compression."
12435 msgstr ""
12436
12437 #. type: item
12438 #: guix-git/doc/guix.texi:6199
12439 #, no-wrap
12440 msgid "--symlink=@var{spec}"
12441 msgstr ""
12442
12443 #. type: itemx
12444 #: guix-git/doc/guix.texi:6200
12445 #, no-wrap
12446 msgid "-S @var{spec}"
12447 msgstr ""
12448
12449 #. type: table
12450 #: guix-git/doc/guix.texi:6203
12451 msgid "Add the symlinks specified by @var{spec} to the pack. This option can appear several times."
12452 msgstr ""
12453
12454 #. type: table
12455 #: guix-git/doc/guix.texi:6207
12456 msgid "@var{spec} has the form @code{@var{source}=@var{target}}, where @var{source} is the symlink that will be created and @var{target} is the symlink target."
12457 msgstr ""
12458
12459 #. type: table
12460 #: guix-git/doc/guix.texi:6210
12461 msgid "For instance, @code{-S /opt/gnu/bin=bin} creates a @file{/opt/gnu/bin} symlink pointing to the @file{bin} sub-directory of the profile."
12462 msgstr ""
12463
12464 #. type: item
12465 #: guix-git/doc/guix.texi:6211 guix-git/doc/guix.texi:33172
12466 #, no-wrap
12467 msgid "--save-provenance"
12468 msgstr ""
12469
12470 #. type: table
12471 #: guix-git/doc/guix.texi:6215
12472 msgid "Save provenance information for the packages passed on the command line. Provenance information includes the URL and commit of the channels in use (@pxref{Channels})."
12473 msgstr ""
12474
12475 #. type: table
12476 #: guix-git/doc/guix.texi:6221
12477 msgid "Provenance information is saved in the @file{/gnu/store/@dots{}-profile/manifest} file in the pack, along with the usual package metadata---the name and version of each package, their propagated inputs, and so on. It is useful information to the recipient of the pack, who then knows how the pack was (supposedly) obtained."
12478 msgstr ""
12479
12480 #. type: table
12481 #: guix-git/doc/guix.texi:6227
12482 msgid "This option is not enabled by default because, like timestamps, provenance information contributes nothing to the build process. In other words, there is an infinity of channel URLs and commit IDs that can lead to the same pack. Recording such ``silent'' metadata in the output thus potentially breaks the source-to-binary bitwise reproducibility property."
12483 msgstr ""
12484
12485 #. type: cindex
12486 #: guix-git/doc/guix.texi:6230
12487 #, no-wrap
12488 msgid "garbage collector root, for packs"
12489 msgstr ""
12490
12491 #. type: table
12492 #: guix-git/doc/guix.texi:6233
12493 msgid "Make @var{file} a symlink to the resulting pack, and register it as a garbage collector root."
12494 msgstr ""
12495
12496 #. type: item
12497 #: guix-git/doc/guix.texi:6234
12498 #, no-wrap
12499 msgid "--localstatedir"
12500 msgstr ""
12501
12502 #. type: itemx
12503 #: guix-git/doc/guix.texi:6235
12504 #, no-wrap
12505 msgid "--profile-name=@var{name}"
12506 msgstr ""
12507
12508 #. type: table
12509 #: guix-git/doc/guix.texi:6240
12510 msgid "Include the ``local state directory'', @file{/var/guix}, in the resulting pack, and notably the @file{/var/guix/profiles/per-user/root/@var{name}} profile---by default @var{name} is @code{guix-profile}, which corresponds to @file{~root/.guix-profile}."
12511 msgstr ""
12512
12513 #. type: table
12514 #: guix-git/doc/guix.texi:6246
12515 msgid "@file{/var/guix} contains the store database (@pxref{The Store}) as well as garbage-collector roots (@pxref{Invoking guix gc}). Providing it in the pack means that the store is ``complete'' and manageable by Guix; not providing it pack means that the store is ``dead'': items cannot be added to it or removed from it after extraction of the pack."
12516 msgstr ""
12517
12518 #. type: table
12519 #: guix-git/doc/guix.texi:6249
12520 msgid "One use case for this is the Guix self-contained binary tarball (@pxref{Binary Installation})."
12521 msgstr ""
12522
12523 #. type: item
12524 #: guix-git/doc/guix.texi:6250 guix-git/doc/guix.texi:33166
12525 #, no-wrap
12526 msgid "--derivation"
12527 msgstr ""
12528
12529 #. type: itemx
12530 #: guix-git/doc/guix.texi:6251 guix-git/doc/guix.texi:10882
12531 #: guix-git/doc/guix.texi:33167
12532 #, no-wrap
12533 msgid "-d"
12534 msgstr ""
12535
12536 #. type: table
12537 #: guix-git/doc/guix.texi:6253
12538 msgid "Print the name of the derivation that builds the pack."
12539 msgstr ""
12540
12541 #. type: table
12542 #: guix-git/doc/guix.texi:6257
12543 msgid "Use the bootstrap binaries to build the pack. This option is only useful to Guix developers."
12544 msgstr ""
12545
12546 #. type: Plain text
12547 #: guix-git/doc/guix.texi:6262
12548 msgid "In addition, @command{guix pack} supports all the common build options (@pxref{Common Build Options}) and all the package transformation options (@pxref{Package Transformation Options})."
12549 msgstr ""
12550
12551 #. type: cindex
12552 #: guix-git/doc/guix.texi:6267
12553 #, no-wrap
12554 msgid "GCC"
12555 msgstr ""
12556
12557 #. type: cindex
12558 #: guix-git/doc/guix.texi:6268
12559 #, no-wrap
12560 msgid "ld-wrapper"
12561 msgstr ""
12562
12563 #. type: cindex
12564 #: guix-git/doc/guix.texi:6269
12565 #, no-wrap
12566 msgid "linker wrapper"
12567 msgstr ""
12568
12569 #. type: cindex
12570 #: guix-git/doc/guix.texi:6270
12571 #, no-wrap
12572 msgid "toolchain, for C development"
12573 msgstr ""
12574
12575 #. type: cindex
12576 #: guix-git/doc/guix.texi:6271
12577 #, no-wrap
12578 msgid "toolchain, for Fortran development"
12579 msgstr ""
12580
12581 #. type: Plain text
12582 #: guix-git/doc/guix.texi:6278
12583 msgid "If you need a complete toolchain for compiling and linking C or C++ source code, use the @code{gcc-toolchain} package. This package provides a complete GCC toolchain for C/C++ development, including GCC itself, the GNU C Library (headers and binaries, plus debugging symbols in the @code{debug} output), Binutils, and a linker wrapper."
12584 msgstr ""
12585
12586 #. type: Plain text
12587 #: guix-git/doc/guix.texi:6284
12588 msgid "The wrapper's purpose is to inspect the @code{-L} and @code{-l} switches passed to the linker, add corresponding @code{-rpath} arguments, and invoke the actual linker with this new set of arguments. You can instruct the wrapper to refuse to link against libraries not in the store by setting the @env{GUIX_LD_WRAPPER_ALLOW_IMPURITIES} environment variable to @code{no}."
12589 msgstr ""
12590
12591 #. type: Plain text
12592 #: guix-git/doc/guix.texi:6288
12593 msgid "The package @code{gfortran-toolchain} provides a complete GCC toolchain for Fortran development. For other languages, please use @samp{guix search gcc toolchain} (@pxref{guix-search,, Invoking guix package})."
12594 msgstr ""
12595
12596 #. type: section
12597 #: guix-git/doc/guix.texi:6291
12598 #, no-wrap
12599 msgid "Invoking @command{guix git authenticate}"
12600 msgstr ""
12601
12602 #. type: Plain text
12603 #: guix-git/doc/guix.texi:6299
12604 msgid "The @command{guix git authenticate} command authenticates a Git checkout following the same rule as for channels (@pxref{channel-authentication, channel authentication}). That is, starting from a given commit, it ensures that all subsequent commits are signed by an OpenPGP key whose fingerprint appears in the @file{.guix-authorizations} file of its parent commit(s)."
12605 msgstr ""
12606
12607 #. type: Plain text
12608 #: guix-git/doc/guix.texi:6304
12609 msgid "You will find this command useful if you maintain a channel. But in fact, this authentication mechanism is useful in a broader context, so you might want to use it for Git repositories that have nothing to do with Guix."
12610 msgstr ""
12611
12612 #. type: example
12613 #: guix-git/doc/guix.texi:6309
12614 #, no-wrap
12615 msgid "guix git authenticate @var{commit} @var{signer} [@var{options}@dots{}]\n"
12616 msgstr ""
12617
12618 #. type: Plain text
12619 #: guix-git/doc/guix.texi:6318
12620 msgid "By default, this command authenticates the Git checkout in the current directory; it outputs nothing and exits with exit code zero on success and non-zero on failure. @var{commit} above denotes the first commit where authentication takes place, and @var{signer} is the OpenPGP fingerprint of public key used to sign @var{commit}. Together, they form a ``channel introduction'' (@pxref{channel-authentication, channel introduction}). The options below allow you to fine-tune the process."
12621 msgstr ""
12622
12623 #. type: item
12624 #: guix-git/doc/guix.texi:6320
12625 #, no-wrap
12626 msgid "--repository=@var{directory}"
12627 msgstr ""
12628
12629 #. type: itemx
12630 #: guix-git/doc/guix.texi:6321
12631 #, no-wrap
12632 msgid "-r @var{directory}"
12633 msgstr ""
12634
12635 #. type: table
12636 #: guix-git/doc/guix.texi:6324
12637 msgid "Open the Git repository in @var{directory} instead of the current directory."
12638 msgstr ""
12639
12640 #. type: item
12641 #: guix-git/doc/guix.texi:6325
12642 #, no-wrap
12643 msgid "--keyring=@var{reference}"
12644 msgstr ""
12645
12646 #. type: itemx
12647 #: guix-git/doc/guix.texi:6326
12648 #, no-wrap
12649 msgid "-k @var{reference}"
12650 msgstr ""
12651
12652 #. type: table
12653 #: guix-git/doc/guix.texi:6332
12654 msgid "Load OpenPGP keyring from @var{reference}, the reference of a branch such as @code{origin/keyring} or @code{my-keyring}. The branch must contain OpenPGP public keys in @file{.key} files, either in binary form or ``ASCII-armored''. By default the keyring is loaded from the branch named @code{keyring}."
12655 msgstr ""
12656
12657 #. type: item
12658 #: guix-git/doc/guix.texi:6333
12659 #, no-wrap
12660 msgid "--stats"
12661 msgstr ""
12662
12663 #. type: table
12664 #: guix-git/doc/guix.texi:6335
12665 msgid "Display commit signing statistics upon completion."
12666 msgstr ""
12667
12668 #. type: item
12669 #: guix-git/doc/guix.texi:6336
12670 #, no-wrap
12671 msgid "--cache-key=@var{key}"
12672 msgstr ""
12673
12674 #. type: table
12675 #: guix-git/doc/guix.texi:6340
12676 msgid "Previously-authenticated commits are cached in a file under @file{~/.cache/guix/authentication}. This option forces the cache to be stored in file @var{key} in that directory."
12677 msgstr ""
12678
12679 #. type: item
12680 #: guix-git/doc/guix.texi:6341
12681 #, no-wrap
12682 msgid "--historical-authorizations=@var{file}"
12683 msgstr ""
12684
12685 #. type: table
12686 #: guix-git/doc/guix.texi:6348
12687 msgid "By default, any commit whose parent commit(s) lack the @file{.guix-authorizations} file is considered inauthentic. In contrast, this option considers the authorizations in @var{file} for any commit that lacks @file{.guix-authorizations}. The format of @var{file} is the same as that of @file{.guix-authorizations} (@pxref{channel-authorizations, @file{.guix-authorizations} format})."
12688 msgstr ""
12689
12690 #. type: Plain text
12691 #: guix-git/doc/guix.texi:6361
12692 msgid "GNU Guix provides several Scheme programming interfaces (APIs) to define, build, and query packages. The first interface allows users to write high-level package definitions. These definitions refer to familiar packaging concepts, such as the name and version of a package, its build system, and its dependencies. These definitions can then be turned into concrete build actions."
12693 msgstr ""
12694
12695 #. type: Plain text
12696 #: guix-git/doc/guix.texi:6367
12697 msgid "Build actions are performed by the Guix daemon, on behalf of users. In a standard setup, the daemon has write access to the store---the @file{/gnu/store} directory---whereas users do not. The recommended setup also has the daemon perform builds in chroots, under specific build users, to minimize interference with the rest of the system."
12698 msgstr ""
12699
12700 #. type: Plain text
12701 #: guix-git/doc/guix.texi:6376
12702 msgid "Lower-level APIs are available to interact with the daemon and the store. To instruct the daemon to perform a build action, users actually provide it with a @dfn{derivation}. A derivation is a low-level representation of the build actions to be taken, and the environment in which they should occur---derivations are to package definitions what assembly is to C programs. The term ``derivation'' comes from the fact that build results @emph{derive} from them."
12703 msgstr ""
12704
12705 #. type: Plain text
12706 #: guix-git/doc/guix.texi:6379
12707 msgid "This chapter describes all these APIs in turn, starting from high-level package definitions."
12708 msgstr ""
12709
12710 #. type: menuentry
12711 #: guix-git/doc/guix.texi:6392
12712 msgid "Programming Guix in Guile"
12713 msgstr ""
12714
12715 #. type: Plain text
12716 #: guix-git/doc/guix.texi:6408
12717 msgid "From a programming viewpoint, the package definitions of the GNU distribution are provided by Guile modules in the @code{(gnu packages @dots{})} name space@footnote{Note that packages under the @code{(gnu packages @dots{})} module name space are not necessarily ``GNU packages''. This module naming scheme follows the usual Guile module naming convention: @code{gnu} means that these modules are distributed as part of the GNU system, and @code{packages} identifies modules that define packages.} (@pxref{Modules, Guile modules,, guile, GNU Guile Reference Manual}). For instance, the @code{(gnu packages emacs)} module exports a variable named @code{emacs}, which is bound to a @code{<package>} object (@pxref{Defining Packages})."
12718 msgstr ""
12719
12720 #. type: Plain text
12721 #: guix-git/doc/guix.texi:6415
12722 msgid "The @code{(gnu packages @dots{})} module name space is automatically scanned for packages by the command-line tools. For instance, when running @code{guix install emacs}, all the @code{(gnu packages @dots{})} modules are scanned until one that exports a package object whose name is @code{emacs} is found. This package search facility is implemented in the @code{(gnu packages)} module."
12723 msgstr ""
12724
12725 #. type: cindex
12726 #: guix-git/doc/guix.texi:6417
12727 #, no-wrap
12728 msgid "package module search path"
12729 msgstr ""
12730
12731 #. type: Plain text
12732 #: guix-git/doc/guix.texi:6426
12733 msgid "Users can store package definitions in modules with different names---e.g., @code{(my-packages emacs)}@footnote{Note that the file name and module name must match. For instance, the @code{(my-packages emacs)} module must be stored in a @file{my-packages/emacs.scm} file relative to the load path specified with @option{--load-path} or @env{GUIX_PACKAGE_PATH}. @xref{Modules and the File System,,, guile, GNU Guile Reference Manual}, for details.}. There are two ways to make these package definitions visible to the user interfaces:"
12734 msgstr ""
12735
12736 #. type: enumerate
12737 #: guix-git/doc/guix.texi:6433
12738 msgid "By adding the directory containing your package modules to the search path with the @code{-L} flag of @command{guix package} and other commands (@pxref{Common Build Options}), or by setting the @env{GUIX_PACKAGE_PATH} environment variable described below."
12739 msgstr ""
12740
12741 #. type: enumerate
12742 #: guix-git/doc/guix.texi:6439
12743 msgid "By defining a @dfn{channel} and configuring @command{guix pull} so that it pulls from it. A channel is essentially a Git repository containing package modules. @xref{Channels}, for more information on how to define and use channels."
12744 msgstr ""
12745
12746 #. type: Plain text
12747 #: guix-git/doc/guix.texi:6442
12748 msgid "@env{GUIX_PACKAGE_PATH} works similarly to other search path variables:"
12749 msgstr ""
12750
12751 #. type: defvr
12752 #: guix-git/doc/guix.texi:6443
12753 #, no-wrap
12754 msgid "{Environment Variable} GUIX_PACKAGE_PATH"
12755 msgstr ""
12756
12757 #. type: defvr
12758 #: guix-git/doc/guix.texi:6447
12759 msgid "This is a colon-separated list of directories to search for additional package modules. Directories listed in this variable take precedence over the own modules of the distribution."
12760 msgstr ""
12761
12762 #. type: Plain text
12763 #: guix-git/doc/guix.texi:6455
12764 msgid "The distribution is fully @dfn{bootstrapped} and @dfn{self-contained}: each package is built based solely on other packages in the distribution. The root of this dependency graph is a small set of @dfn{bootstrap binaries}, provided by the @code{(gnu packages bootstrap)} module. For more information on bootstrapping, @pxref{Bootstrapping}."
12765 msgstr ""
12766
12767 #. type: Plain text
12768 #: guix-git/doc/guix.texi:6463
12769 msgid "The high-level interface to package definitions is implemented in the @code{(guix packages)} and @code{(guix build-system)} modules. As an example, the package definition, or @dfn{recipe}, for the GNU Hello package looks like this:"
12770 msgstr ""
12771
12772 #. type: lisp
12773 #: guix-git/doc/guix.texi:6471
12774 #, no-wrap
12775 msgid ""
12776 "(define-module (gnu packages hello)\n"
12777 " #:use-module (guix packages)\n"
12778 " #:use-module (guix download)\n"
12779 " #:use-module (guix build-system gnu)\n"
12780 " #:use-module (guix licenses)\n"
12781 " #:use-module (gnu packages gawk))\n"
12782 "\n"
12783 msgstr ""
12784
12785 #. type: lisp
12786 #: guix-git/doc/guix.texi:6490
12787 #, no-wrap
12788 msgid ""
12789 "(define-public hello\n"
12790 " (package\n"
12791 " (name \"hello\")\n"
12792 " (version \"2.10\")\n"
12793 " (source (origin\n"
12794 " (method url-fetch)\n"
12795 " (uri (string-append \"mirror://gnu/hello/hello-\" version\n"
12796 " \".tar.gz\"))\n"
12797 " (sha256\n"
12798 " (base32\n"
12799 " \"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\"))))\n"
12800 " (build-system gnu-build-system)\n"
12801 " (arguments '(#:configure-flags '(\"--enable-silent-rules\")))\n"
12802 " (inputs `((\"gawk\" ,gawk)))\n"
12803 " (synopsis \"Hello, GNU world: An example GNU package\")\n"
12804 " (description \"Guess what GNU Hello prints!\")\n"
12805 " (home-page \"https://www.gnu.org/software/hello/\")\n"
12806 " (license gpl3+)))\n"
12807 msgstr ""
12808
12809 #. type: Plain text
12810 #: guix-git/doc/guix.texi:6500
12811 msgid "Without being a Scheme expert, the reader may have guessed the meaning of the various fields here. This expression binds the variable @code{hello} to a @code{<package>} object, which is essentially a record (@pxref{SRFI-9, Scheme records,, guile, GNU Guile Reference Manual}). This package object can be inspected using procedures found in the @code{(guix packages)} module; for instance, @code{(package-name hello)} returns---surprise!---@code{\"hello\"}."
12812 msgstr ""
12813
12814 #. type: Plain text
12815 #: guix-git/doc/guix.texi:6504
12816 msgid "With luck, you may be able to import part or all of the definition of the package you are interested in from another repository, using the @code{guix import} command (@pxref{Invoking guix import})."
12817 msgstr ""
12818
12819 #. type: Plain text
12820 #: guix-git/doc/guix.texi:6510
12821 msgid "In the example above, @code{hello} is defined in a module of its own, @code{(gnu packages hello)}. Technically, this is not strictly necessary, but it is convenient to do so: all the packages defined in modules under @code{(gnu packages @dots{})} are automatically known to the command-line tools (@pxref{Package Modules})."
12822 msgstr ""
12823
12824 #. type: Plain text
12825 #: guix-git/doc/guix.texi:6512
12826 msgid "There are a few points worth noting in the above package definition:"
12827 msgstr ""
12828
12829 #. type: itemize
12830 #: guix-git/doc/guix.texi:6519
12831 msgid "The @code{source} field of the package is an @code{<origin>} object (@pxref{origin Reference}, for the complete reference). Here, the @code{url-fetch} method from @code{(guix download)} is used, meaning that the source is a file to be downloaded over FTP or HTTP."
12832 msgstr ""
12833
12834 #. type: itemize
12835 #: guix-git/doc/guix.texi:6522
12836 msgid "The @code{mirror://gnu} prefix instructs @code{url-fetch} to use one of the GNU mirrors defined in @code{(guix download)}."
12837 msgstr ""
12838
12839 #. type: itemize
12840 #: guix-git/doc/guix.texi:6529
12841 msgid "The @code{sha256} field specifies the expected SHA256 hash of the file being downloaded. It is mandatory, and allows Guix to check the integrity of the file. The @code{(base32 @dots{})} form introduces the base32 representation of the hash. You can obtain this information with @code{guix download} (@pxref{Invoking guix download}) and @code{guix hash} (@pxref{Invoking guix hash})."
12842 msgstr ""
12843
12844 #. type: cindex
12845 #: guix-git/doc/guix.texi:6530
12846 #, no-wrap
12847 msgid "patches"
12848 msgstr ""
12849
12850 #. type: itemize
12851 #: guix-git/doc/guix.texi:6534
12852 msgid "When needed, the @code{origin} form can also have a @code{patches} field listing patches to be applied, and a @code{snippet} field giving a Scheme expression to modify the source code."
12853 msgstr ""
12854
12855 #. type: cindex
12856 #: guix-git/doc/guix.texi:6536
12857 #, no-wrap
12858 msgid "GNU Build System"
12859 msgstr ""
12860
12861 #. type: itemize
12862 #: guix-git/doc/guix.texi:6542
12863 msgid "The @code{build-system} field specifies the procedure to build the package (@pxref{Build Systems}). Here, @code{gnu-build-system} represents the familiar GNU Build System, where packages may be configured, built, and installed with the usual @code{./configure && make && make check && make install} command sequence."
12864 msgstr ""
12865
12866 #. type: itemize
12867 #: guix-git/doc/guix.texi:6546
12868 msgid "When you start packaging non-trivial software, you may need tools to manipulate those build phases, manipulate files, and so on. @xref{Build Utilities}, for more on this."
12869 msgstr ""
12870
12871 #. type: itemize
12872 #: guix-git/doc/guix.texi:6552
12873 msgid "The @code{arguments} field specifies options for the build system (@pxref{Build Systems}). Here it is interpreted by @code{gnu-build-system} as a request run @file{configure} with the @option{--enable-silent-rules} flag."
12874 msgstr ""
12875
12876 #. type: findex
12877 #: guix-git/doc/guix.texi:6553 guix-git/doc/guix.texi:6556
12878 #, no-wrap
12879 msgid "quote"
12880 msgstr ""
12881
12882 #. type: cindex
12883 #: guix-git/doc/guix.texi:6554
12884 #, no-wrap
12885 msgid "quoting"
12886 msgstr ""
12887
12888 #. type: findex
12889 #: guix-git/doc/guix.texi:6555
12890 #, no-wrap
12891 msgid "'"
12892 msgstr ""
12893
12894 #. type: itemize
12895 #: guix-git/doc/guix.texi:6564
12896 msgid "What about these quote (@code{'}) characters? They are Scheme syntax to introduce a literal list; @code{'} is synonymous with @code{quote}. @xref{Expression Syntax, quoting,, guile, GNU Guile Reference Manual}, for details. Here the value of the @code{arguments} field is a list of arguments passed to the build system down the road, as with @code{apply} (@pxref{Fly Evaluation, @code{apply},, guile, GNU Guile Reference Manual})."
12897 msgstr ""
12898
12899 #. type: itemize
12900 #: guix-git/doc/guix.texi:6570
12901 msgid "The hash-colon (@code{#:}) sequence defines a Scheme @dfn{keyword} (@pxref{Keywords,,, guile, GNU Guile Reference Manual}), and @code{#:configure-flags} is a keyword used to pass a keyword argument to the build system (@pxref{Coding With Keywords,,, guile, GNU Guile Reference Manual})."
12902 msgstr ""
12903
12904 #. type: itemize
12905 #: guix-git/doc/guix.texi:6576
12906 msgid "The @code{inputs} field specifies inputs to the build process---i.e., build-time or run-time dependencies of the package. Here, we define an input called @code{\"gawk\"} whose value is that of the @code{gawk} variable; @code{gawk} is itself bound to a @code{<package>} object."
12907 msgstr ""
12908
12909 #. type: cindex
12910 #: guix-git/doc/guix.texi:6577
12911 #, no-wrap
12912 msgid "backquote (quasiquote)"
12913 msgstr ""
12914
12915 #. type: findex
12916 #: guix-git/doc/guix.texi:6578
12917 #, no-wrap
12918 msgid "`"
12919 msgstr ""
12920
12921 #. type: findex
12922 #: guix-git/doc/guix.texi:6579
12923 #, no-wrap
12924 msgid "quasiquote"
12925 msgstr ""
12926
12927 #. type: cindex
12928 #: guix-git/doc/guix.texi:6580
12929 #, no-wrap
12930 msgid "comma (unquote)"
12931 msgstr ""
12932
12933 #. type: findex
12934 #: guix-git/doc/guix.texi:6581
12935 #, no-wrap
12936 msgid ","
12937 msgstr ""
12938
12939 #. type: findex
12940 #: guix-git/doc/guix.texi:6582
12941 #, no-wrap
12942 msgid "unquote"
12943 msgstr ""
12944
12945 #. type: findex
12946 #: guix-git/doc/guix.texi:6583
12947 #, no-wrap
12948 msgid ",@@"
12949 msgstr ""
12950
12951 #. type: findex
12952 #: guix-git/doc/guix.texi:6584
12953 #, no-wrap
12954 msgid "unquote-splicing"
12955 msgstr ""
12956
12957 #. type: itemize
12958 #: guix-git/doc/guix.texi:6590
12959 msgid "Again, @code{`} (a backquote, synonymous with @code{quasiquote}) allows us to introduce a literal list in the @code{inputs} field, while @code{,} (a comma, synonymous with @code{unquote}) allows us to insert a value in that list (@pxref{Expression Syntax, unquote,, guile, GNU Guile Reference Manual})."
12960 msgstr ""
12961
12962 #. type: itemize
12963 #: guix-git/doc/guix.texi:6594
12964 msgid "Note that GCC, Coreutils, Bash, and other essential tools do not need to be specified as inputs here. Instead, @code{gnu-build-system} takes care of ensuring that they are present (@pxref{Build Systems})."
12965 msgstr ""
12966
12967 #. type: itemize
12968 #: guix-git/doc/guix.texi:6598
12969 msgid "However, any other dependencies need to be specified in the @code{inputs} field. Any dependency not specified here will simply be unavailable to the build process, possibly leading to a build failure."
12970 msgstr ""
12971
12972 #. type: Plain text
12973 #: guix-git/doc/guix.texi:6601
12974 msgid "@xref{package Reference}, for a full description of possible fields."
12975 msgstr ""
12976
12977 #. type: Plain text
12978 #: guix-git/doc/guix.texi:6612
12979 msgid "Once a package definition is in place, the package may actually be built using the @code{guix build} command-line tool (@pxref{Invoking guix build}), troubleshooting any build failures you encounter (@pxref{Debugging Build Failures}). You can easily jump back to the package definition using the @command{guix edit} command (@pxref{Invoking guix edit}). @xref{Packaging Guidelines}, for more information on how to test package definitions, and @ref{Invoking guix lint}, for information on how to check a definition for style conformance."
12980 msgstr ""
12981
12982 #. type: vindex
12983 #: guix-git/doc/guix.texi:6612
12984 #, no-wrap
12985 msgid "GUIX_PACKAGE_PATH"
12986 msgstr ""
12987
12988 #. type: Plain text
12989 #: guix-git/doc/guix.texi:6616
12990 msgid "Lastly, @pxref{Channels}, for information on how to extend the distribution by adding your own package definitions in a ``channel''."
12991 msgstr ""
12992
12993 #. type: Plain text
12994 #: guix-git/doc/guix.texi:6620
12995 msgid "Finally, updating the package definition to a new upstream version can be partly automated by the @command{guix refresh} command (@pxref{Invoking guix refresh})."
12996 msgstr ""
12997
12998 #. type: Plain text
12999 #: guix-git/doc/guix.texi:6626
13000 msgid "Behind the scenes, a derivation corresponding to the @code{<package>} object is first computed by the @code{package-derivation} procedure. That derivation is stored in a @file{.drv} file under @file{/gnu/store}. The build actions it prescribes may then be realized by using the @code{build-derivations} procedure (@pxref{The Store})."
13001 msgstr ""
13002
13003 #. type: deffn
13004 #: guix-git/doc/guix.texi:6627
13005 #, no-wrap
13006 msgid "{Scheme Procedure} package-derivation @var{store} @var{package} [@var{system}]"
13007 msgstr ""
13008
13009 #. type: deffn
13010 #: guix-git/doc/guix.texi:6630
13011 msgid "Return the @code{<derivation>} object of @var{package} for @var{system} (@pxref{Derivations})."
13012 msgstr ""
13013
13014 #. type: deffn
13015 #: guix-git/doc/guix.texi:6636
13016 msgid "@var{package} must be a valid @code{<package>} object, and @var{system} must be a string denoting the target system type---e.g., @code{\"x86_64-linux\"} for an x86_64 Linux-based GNU system. @var{store} must be a connection to the daemon, which operates on the store (@pxref{The Store})."
13017 msgstr ""
13018
13019 #. type: Plain text
13020 #: guix-git/doc/guix.texi:6642
13021 msgid "Similarly, it is possible to compute a derivation that cross-builds a package for some other system:"
13022 msgstr ""
13023
13024 #. type: deffn
13025 #: guix-git/doc/guix.texi:6643
13026 #, no-wrap
13027 msgid "{Scheme Procedure} package-cross-derivation @var{store} @"
13028 msgstr ""
13029
13030 #. type: deffn
13031 #: guix-git/doc/guix.texi:6647
13032 msgid "@var{package} @var{target} [@var{system}] Return the @code{<derivation>} object of @var{package} cross-built from @var{system} to @var{target}."
13033 msgstr ""
13034
13035 #. type: deffn
13036 #: guix-git/doc/guix.texi:6651
13037 msgid "@var{target} must be a valid GNU triplet denoting the target hardware and operating system, such as @code{\"aarch64-linux-gnu\"} (@pxref{Specifying Target Triplets,,, autoconf, Autoconf})."
13038 msgstr ""
13039
13040 #. type: Plain text
13041 #: guix-git/doc/guix.texi:6655
13042 msgid "Once you have package definitions, you can easily define @emph{variants} of those packages. @xref{Defining Package Variants}, for more on that."
13043 msgstr ""
13044
13045 #. type: subsection
13046 #: guix-git/doc/guix.texi:6663
13047 #, no-wrap
13048 msgid "@code{package} Reference"
13049 msgstr ""
13050
13051 #. type: Plain text
13052 #: guix-git/doc/guix.texi:6667
13053 msgid "This section summarizes all the options available in @code{package} declarations (@pxref{Defining Packages})."
13054 msgstr ""
13055
13056 #. type: deftp
13057 #: guix-git/doc/guix.texi:6668
13058 #, no-wrap
13059 msgid "{Data Type} package"
13060 msgstr ""
13061
13062 #. type: deftp
13063 #: guix-git/doc/guix.texi:6670
13064 msgid "This is the data type representing a package recipe."
13065 msgstr ""
13066
13067 #. type: table
13068 #: guix-git/doc/guix.texi:6674
13069 msgid "The name of the package, as a string."
13070 msgstr ""
13071
13072 #. type: code{#1}
13073 #: guix-git/doc/guix.texi:6675
13074 #, no-wrap
13075 msgid "version"
13076 msgstr ""
13077
13078 #. type: table
13079 #: guix-git/doc/guix.texi:6677
13080 msgid "The version of the package, as a string."
13081 msgstr ""
13082
13083 #. type: code{#1}
13084 #: guix-git/doc/guix.texi:6678 guix-git/doc/guix.texi:12011
13085 #: guix-git/doc/guix.texi:14256 guix-git/doc/guix.texi:14759
13086 #, no-wrap
13087 msgid "source"
13088 msgstr ""
13089
13090 #. type: table
13091 #: guix-git/doc/guix.texi:6685
13092 msgid "An object telling how the source code for the package should be acquired. Most of the time, this is an @code{origin} object, which denotes a file fetched from the Internet (@pxref{origin Reference}). It can also be any other ``file-like'' object such as a @code{local-file}, which denotes a file from the local file system (@pxref{G-Expressions, @code{local-file}})."
13093 msgstr ""
13094
13095 #. type: code{#1}
13096 #: guix-git/doc/guix.texi:6686
13097 #, no-wrap
13098 msgid "build-system"
13099 msgstr ""
13100
13101 #. type: table
13102 #: guix-git/doc/guix.texi:6689
13103 msgid "The build system that should be used to build the package (@pxref{Build Systems})."
13104 msgstr ""
13105
13106 #. type: item
13107 #: guix-git/doc/guix.texi:6690 guix-git/doc/guix.texi:16722
13108 #, no-wrap
13109 msgid "@code{arguments} (default: @code{'()})"
13110 msgstr ""
13111
13112 #. type: table
13113 #: guix-git/doc/guix.texi:6693
13114 msgid "The arguments that should be passed to the build system. This is a list, typically containing sequential keyword-value pairs."
13115 msgstr ""
13116
13117 #. type: item
13118 #: guix-git/doc/guix.texi:6694
13119 #, no-wrap
13120 msgid "@code{inputs} (default: @code{'()})"
13121 msgstr ""
13122
13123 #. type: itemx
13124 #: guix-git/doc/guix.texi:6695
13125 #, no-wrap
13126 msgid "@code{native-inputs} (default: @code{'()})"
13127 msgstr ""
13128
13129 #. type: itemx
13130 #: guix-git/doc/guix.texi:6696
13131 #, no-wrap
13132 msgid "@code{propagated-inputs} (default: @code{'()})"
13133 msgstr ""
13134
13135 #. type: cindex
13136 #: guix-git/doc/guix.texi:6697
13137 #, no-wrap
13138 msgid "inputs, of packages"
13139 msgstr ""
13140
13141 #. type: table
13142 #: guix-git/doc/guix.texi:6705
13143 msgid "These fields list dependencies of the package. Each one is a list of tuples, where each tuple has a label for the input (a string) as its first element, a package, origin, or derivation as its second element, and optionally the name of the output thereof that should be used, which defaults to @code{\"out\"} (@pxref{Packages with Multiple Outputs}, for more on package outputs). For example, the list below specifies three inputs:"
13144 msgstr ""
13145
13146 #. type: lisp
13147 #: guix-git/doc/guix.texi:6710
13148 #, no-wrap
13149 msgid ""
13150 "`((\"libffi\" ,libffi)\n"
13151 " (\"libunistring\" ,libunistring)\n"
13152 " (\"glib:bin\" ,glib \"bin\")) ;the \"bin\" output of Glib\n"
13153 msgstr ""
13154
13155 #. type: cindex
13156 #: guix-git/doc/guix.texi:6712
13157 #, no-wrap
13158 msgid "cross compilation, package dependencies"
13159 msgstr ""
13160
13161 #. type: table
13162 #: guix-git/doc/guix.texi:6718
13163 msgid "The distinction between @code{native-inputs} and @code{inputs} is necessary when considering cross-compilation. When cross-compiling, dependencies listed in @code{inputs} are built for the @emph{target} architecture; conversely, dependencies listed in @code{native-inputs} are built for the architecture of the @emph{build} machine."
13164 msgstr ""
13165
13166 #. type: table
13167 #: guix-git/doc/guix.texi:6723
13168 msgid "@code{native-inputs} is typically used to list tools needed at build time, but not at run time, such as Autoconf, Automake, pkg-config, Gettext, or Bison. @command{guix lint} can report likely mistakes in this area (@pxref{Invoking guix lint})."
13169 msgstr ""
13170
13171 #. type: anchor{#1}
13172 #: guix-git/doc/guix.texi:6731
13173 msgid "package-propagated-inputs"
13174 msgstr ""
13175
13176 #. type: table
13177 #: guix-git/doc/guix.texi:6731
13178 msgid "Lastly, @code{propagated-inputs} is similar to @code{inputs}, but the specified packages will be automatically installed to profiles (@pxref{Features, the role of profiles in Guix}) alongside the package they belong to (@pxref{package-cmd-propagated-inputs, @command{guix package}}, for information on how @command{guix package} deals with propagated inputs)."
13179 msgstr ""
13180
13181 #. type: table
13182 #: guix-git/doc/guix.texi:6735
13183 msgid "For example this is necessary when packaging a C/C++ library that needs headers of another library to compile, or when a pkg-config file refers to another one @i{via} its @code{Requires} field."
13184 msgstr ""
13185
13186 #. type: table
13187 #: guix-git/doc/guix.texi:6742
13188 msgid "Another example where @code{propagated-inputs} is useful is for languages that lack a facility to record the run-time search path akin to the @code{RUNPATH} of ELF files; this includes Guile, Python, Perl, and more. When packaging libraries written in those languages, ensure they can find library code they depend on at run time by listing run-time dependencies in @code{propagated-inputs} rather than @code{inputs}."
13189 msgstr ""
13190
13191 #. type: item
13192 #: guix-git/doc/guix.texi:6743
13193 #, no-wrap
13194 msgid "@code{outputs} (default: @code{'(\"out\")})"
13195 msgstr ""
13196
13197 #. type: table
13198 #: guix-git/doc/guix.texi:6746
13199 msgid "The list of output names of the package. @xref{Packages with Multiple Outputs}, for typical uses of additional outputs."
13200 msgstr ""
13201
13202 #. type: item
13203 #: guix-git/doc/guix.texi:6747
13204 #, no-wrap
13205 msgid "@code{native-search-paths} (default: @code{'()})"
13206 msgstr ""
13207
13208 #. type: itemx
13209 #: guix-git/doc/guix.texi:6748
13210 #, no-wrap
13211 msgid "@code{search-paths} (default: @code{'()})"
13212 msgstr ""
13213
13214 #. type: table
13215 #: guix-git/doc/guix.texi:6751
13216 msgid "A list of @code{search-path-specification} objects describing search-path environment variables honored by the package."
13217 msgstr ""
13218
13219 #. type: item
13220 #: guix-git/doc/guix.texi:6752
13221 #, no-wrap
13222 msgid "@code{replacement} (default: @code{#f})"
13223 msgstr ""
13224
13225 #. type: table
13226 #: guix-git/doc/guix.texi:6756
13227 msgid "This must be either @code{#f} or a package object that will be used as a @dfn{replacement} for this package. @xref{Security Updates, grafts}, for details."
13228 msgstr ""
13229
13230 #. type: item
13231 #: guix-git/doc/guix.texi:6757 guix-git/doc/guix.texi:12003
13232 #, no-wrap
13233 msgid "synopsis"
13234 msgstr ""
13235
13236 #. type: table
13237 #: guix-git/doc/guix.texi:6759
13238 msgid "A one-line description of the package."
13239 msgstr ""
13240
13241 #. type: code{#1}
13242 #: guix-git/doc/guix.texi:6760 guix-git/doc/guix.texi:12004
13243 #: guix-git/doc/guix.texi:33864 guix-git/doc/guix.texi:34015
13244 #, no-wrap
13245 msgid "description"
13246 msgstr ""
13247
13248 #. type: table
13249 #: guix-git/doc/guix.texi:6762
13250 msgid "A more elaborate description of the package."
13251 msgstr ""
13252
13253 #. type: code{#1}
13254 #: guix-git/doc/guix.texi:6763
13255 #, no-wrap
13256 msgid "license"
13257 msgstr ""
13258
13259 #. type: cindex
13260 #: guix-git/doc/guix.texi:6764
13261 #, no-wrap
13262 msgid "license, of packages"
13263 msgstr ""
13264
13265 #. type: table
13266 #: guix-git/doc/guix.texi:6767
13267 msgid "The license of the package; a value from @code{(guix licenses)}, or a list of such values."
13268 msgstr ""
13269
13270 #. type: itemx
13271 #: guix-git/doc/guix.texi:6768 guix-git/doc/guix.texi:12012
13272 #, no-wrap
13273 msgid "home-page"
13274 msgstr ""
13275
13276 #. type: table
13277 #: guix-git/doc/guix.texi:6770
13278 msgid "The URL to the home-page of the package, as a string."
13279 msgstr ""
13280
13281 #. type: item
13282 #: guix-git/doc/guix.texi:6771
13283 #, no-wrap
13284 msgid "@code{supported-systems} (default: @code{%supported-systems})"
13285 msgstr ""
13286
13287 #. type: table
13288 #: guix-git/doc/guix.texi:6774
13289 msgid "The list of systems supported by the package, as strings of the form @code{architecture-kernel}, for example @code{\"x86_64-linux\"}."
13290 msgstr ""
13291
13292 #. type: item
13293 #: guix-git/doc/guix.texi:6775
13294 #, no-wrap
13295 msgid "@code{location} (default: source location of the @code{package} form)"
13296 msgstr ""
13297
13298 #. type: table
13299 #: guix-git/doc/guix.texi:6779
13300 msgid "The source location of the package. It is useful to override this when inheriting from another package, in which case this field is not automatically corrected."
13301 msgstr ""
13302
13303 #. type: deffn
13304 #: guix-git/doc/guix.texi:6782
13305 #, no-wrap
13306 msgid "{Scheme Syntax} this-package"
13307 msgstr ""
13308
13309 #. type: deffn
13310 #: guix-git/doc/guix.texi:6785
13311 msgid "When used in the @emph{lexical scope} of a package field definition, this identifier resolves to the package being defined."
13312 msgstr ""
13313
13314 #. type: deffn
13315 #: guix-git/doc/guix.texi:6788
13316 msgid "The example below shows how to add a package as a native input of itself when cross-compiling:"
13317 msgstr ""
13318
13319 #. type: lisp
13320 #: guix-git/doc/guix.texi:6793
13321 #, no-wrap
13322 msgid ""
13323 "(package\n"
13324 " (name \"guile\")\n"
13325 " ;; ...\n"
13326 "\n"
13327 msgstr ""
13328
13329 #. type: lisp
13330 #: guix-git/doc/guix.texi:6799
13331 #, no-wrap
13332 msgid ""
13333 " ;; When cross-compiled, Guile, for example, depends on\n"
13334 " ;; a native version of itself. Add it here.\n"
13335 " (native-inputs (if (%current-target-system)\n"
13336 " `((\"self\" ,this-package))\n"
13337 " '())))\n"
13338 msgstr ""
13339
13340 #. type: deffn
13341 #: guix-git/doc/guix.texi:6802
13342 msgid "It is an error to refer to @code{this-package} outside a package definition."
13343 msgstr ""
13344
13345 #. type: Plain text
13346 #: guix-git/doc/guix.texi:6808
13347 msgid "Because packages are regular Scheme objects that capture a complete dependency graph and associated build procedures, it is often useful to write procedures that take a package and return a modified version thereof according to some parameters. Below are a few examples."
13348 msgstr ""
13349
13350 #. type: cindex
13351 #: guix-git/doc/guix.texi:6809
13352 #, no-wrap
13353 msgid "tool chain, choosing a package's tool chain"
13354 msgstr ""
13355
13356 #. type: deffn
13357 #: guix-git/doc/guix.texi:6810
13358 #, no-wrap
13359 msgid "{Scheme Procedure} package-with-c-toolchain @var{package} @var{toolchain}"
13360 msgstr ""
13361
13362 #. type: deffn
13363 #: guix-git/doc/guix.texi:6815
13364 msgid "Return a variant of @var{package} that uses @var{toolchain} instead of the default GNU C/C++ toolchain. @var{toolchain} must be a list of inputs (label/package tuples) providing equivalent functionality, such as the @code{gcc-toolchain} package."
13365 msgstr ""
13366
13367 #. type: deffn
13368 #: guix-git/doc/guix.texi:6819
13369 msgid "The example below returns a variant of the @code{hello} package built with GCC@tie{}10.x and the rest of the GNU tool chain (Binutils and the GNU C Library) instead of the default tool chain:"
13370 msgstr ""
13371
13372 #. type: lisp
13373 #: guix-git/doc/guix.texi:6823
13374 #, no-wrap
13375 msgid ""
13376 "(let ((toolchain (specification->package \"gcc-toolchain@@10\")))\n"
13377 " (package-with-c-toolchain hello `((\"toolchain\" ,toolchain))))\n"
13378 msgstr ""
13379
13380 #. type: deffn
13381 #: guix-git/doc/guix.texi:6831
13382 msgid "The build tool chain is part of the @dfn{implicit inputs} of packages---it's usually not listed as part of the various ``inputs'' fields and is instead pulled in by the build system. Consequently, this procedure works by changing the build system of @var{package} so that it pulls in @var{toolchain} instead of the defaults. @ref{Build Systems}, for more on build systems."
13383 msgstr ""
13384
13385 #. type: subsection
13386 #: guix-git/doc/guix.texi:6834
13387 #, no-wrap
13388 msgid "@code{origin} Reference"
13389 msgstr ""
13390
13391 #. type: Plain text
13392 #: guix-git/doc/guix.texi:6842
13393 msgid "This section documents @dfn{origins}. An @code{origin} declaration specifies data that must be ``produced''---downloaded, usually---and whose content hash is known in advance. Origins are primarily used to represent the source code of packages (@pxref{Defining Packages}). For that reason, the @code{origin} form allows you to declare patches to apply to the original source code as well as code snippets to modify it."
13394 msgstr ""
13395
13396 #. type: deftp
13397 #: guix-git/doc/guix.texi:6843
13398 #, no-wrap
13399 msgid "{Data Type} origin"
13400 msgstr ""
13401
13402 #. type: deftp
13403 #: guix-git/doc/guix.texi:6845
13404 msgid "This is the data type representing a source code origin."
13405 msgstr ""
13406
13407 #. type: code{#1}
13408 #: guix-git/doc/guix.texi:6847 guix-git/doc/guix.texi:24896
13409 #, no-wrap
13410 msgid "uri"
13411 msgstr ""
13412
13413 #. type: table
13414 #: guix-git/doc/guix.texi:6852
13415 msgid "An object containing the URI of the source. The object type depends on the @code{method} (see below). For example, when using the @var{url-fetch} method of @code{(guix download)}, the valid @code{uri} values are: a URL represented as a string, or a list thereof."
13416 msgstr ""
13417
13418 #. type: cindex
13419 #: guix-git/doc/guix.texi:6853
13420 #, no-wrap
13421 msgid "fixed-output derivations, for download"
13422 msgstr ""
13423
13424 #. type: code{#1}
13425 #: guix-git/doc/guix.texi:6854
13426 #, no-wrap
13427 msgid "method"
13428 msgstr ""
13429
13430 #. type: table
13431 #: guix-git/doc/guix.texi:6861
13432 msgid "A monadic procedure that handles the given URI@. The procedure must accept at least three arguments: the value of the @code{uri} field and the hash algorithm and hash value specified by the @code{hash} field. It must return a store item or a derivation in the store monad (@pxref{The Store Monad}); most methods return a fixed-output derivation (@pxref{Derivations})."
13433 msgstr ""
13434
13435 #. type: table
13436 #: guix-git/doc/guix.texi:6865
13437 msgid "Commonly used methods include @code{url-fetch}, which fetches data from a URL, and @code{git-fetch}, which fetches data from a Git repository (see below)."
13438 msgstr ""
13439
13440 #. type: code{#1}
13441 #: guix-git/doc/guix.texi:6866
13442 #, no-wrap
13443 msgid "sha256"
13444 msgstr ""
13445
13446 #. type: table
13447 #: guix-git/doc/guix.texi:6870
13448 msgid "A bytevector containing the SHA-256 hash of the source. This is equivalent to providing a @code{content-hash} SHA256 object in the @code{hash} field described below."
13449 msgstr ""
13450
13451 #. type: code{#1}
13452 #: guix-git/doc/guix.texi:6871
13453 #, no-wrap
13454 msgid "hash"
13455 msgstr ""
13456
13457 #. type: table
13458 #: guix-git/doc/guix.texi:6874
13459 msgid "The @code{content-hash} object of the source---see below for how to use @code{content-hash}."
13460 msgstr ""
13461
13462 #. type: table
13463 #: guix-git/doc/guix.texi:6878
13464 msgid "You can obtain this information using @code{guix download} (@pxref{Invoking guix download}) or @code{guix hash} (@pxref{Invoking guix hash})."
13465 msgstr ""
13466
13467 #. type: item
13468 #: guix-git/doc/guix.texi:6879
13469 #, no-wrap
13470 msgid "@code{file-name} (default: @code{#f})"
13471 msgstr ""
13472
13473 #. type: table
13474 #: guix-git/doc/guix.texi:6885
13475 msgid "The file name under which the source code should be saved. When this is @code{#f}, a sensible default value will be used in most cases. In case the source is fetched from a URL, the file name from the URL will be used. For version control checkouts, it is recommended to provide the file name explicitly because the default is not very descriptive."
13476 msgstr ""
13477
13478 #. type: item
13479 #: guix-git/doc/guix.texi:6886
13480 #, no-wrap
13481 msgid "@code{patches} (default: @code{'()})"
13482 msgstr ""
13483
13484 #. type: table
13485 #: guix-git/doc/guix.texi:6889
13486 msgid "A list of file names, origins, or file-like objects (@pxref{G-Expressions, file-like objects}) pointing to patches to be applied to the source."
13487 msgstr ""
13488
13489 #. type: table
13490 #: guix-git/doc/guix.texi:6893
13491 msgid "This list of patches must be unconditional. In particular, it cannot depend on the value of @code{%current-system} or @code{%current-target-system}."
13492 msgstr ""
13493
13494 #. type: item
13495 #: guix-git/doc/guix.texi:6894
13496 #, no-wrap
13497 msgid "@code{snippet} (default: @code{#f})"
13498 msgstr ""
13499
13500 #. type: table
13501 #: guix-git/doc/guix.texi:6898
13502 msgid "A G-expression (@pxref{G-Expressions}) or S-expression that will be run in the source directory. This is a convenient way to modify the source, sometimes more convenient than a patch."
13503 msgstr ""
13504
13505 #. type: item
13506 #: guix-git/doc/guix.texi:6899
13507 #, no-wrap
13508 msgid "@code{patch-flags} (default: @code{'(\"-p1\")})"
13509 msgstr ""
13510
13511 #. type: table
13512 #: guix-git/doc/guix.texi:6902
13513 msgid "A list of command-line flags that should be passed to the @code{patch} command."
13514 msgstr ""
13515
13516 #. type: item
13517 #: guix-git/doc/guix.texi:6903
13518 #, no-wrap
13519 msgid "@code{patch-inputs} (default: @code{#f})"
13520 msgstr ""
13521
13522 #. type: table
13523 #: guix-git/doc/guix.texi:6907
13524 msgid "Input packages or derivations to the patching process. When this is @code{#f}, the usual set of inputs necessary for patching are provided, such as GNU@tie{}Patch."
13525 msgstr ""
13526
13527 #. type: item
13528 #: guix-git/doc/guix.texi:6908 guix-git/doc/guix.texi:24769
13529 #, no-wrap
13530 msgid "@code{modules} (default: @code{'()})"
13531 msgstr ""
13532
13533 #. type: table
13534 #: guix-git/doc/guix.texi:6911
13535 msgid "A list of Guile modules that should be loaded during the patching process and while running the code in the @code{snippet} field."
13536 msgstr ""
13537
13538 #. type: item
13539 #: guix-git/doc/guix.texi:6912
13540 #, no-wrap
13541 msgid "@code{patch-guile} (default: @code{#f})"
13542 msgstr ""
13543
13544 #. type: table
13545 #: guix-git/doc/guix.texi:6915
13546 msgid "The Guile package that should be used in the patching process. When this is @code{#f}, a sensible default is used."
13547 msgstr ""
13548
13549 #. type: deftp
13550 #: guix-git/doc/guix.texi:6918
13551 #, no-wrap
13552 msgid "{Data Type} content-hash @var{value} [@var{algorithm}]"
13553 msgstr ""
13554
13555 #. type: deftp
13556 #: guix-git/doc/guix.texi:6922
13557 msgid "Construct a content hash object for the given @var{algorithm}, and with @var{value} as its hash value. When @var{algorithm} is omitted, assume it is @code{sha256}."
13558 msgstr ""
13559
13560 #. type: deftp
13561 #: guix-git/doc/guix.texi:6925
13562 msgid "@var{value} can be a literal string, in which case it is base32-decoded, or it can be a bytevector."
13563 msgstr ""
13564
13565 #. type: deftp
13566 #: guix-git/doc/guix.texi:6927
13567 msgid "The following forms are all equivalent:"
13568 msgstr ""
13569
13570 #. type: lisp
13571 #: guix-git/doc/guix.texi:6936
13572 #, no-wrap
13573 msgid ""
13574 "(content-hash \"05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj\")\n"
13575 "(content-hash \"05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj\"\n"
13576 " sha256)\n"
13577 "(content-hash (base32\n"
13578 " \"05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj\"))\n"
13579 "(content-hash (base64 \"kkb+RPaP7uyMZmu4eXPVkM4BN8yhRd8BTHLslb6f/Rc=\")\n"
13580 " sha256)\n"
13581 msgstr ""
13582
13583 #. type: deftp
13584 #: guix-git/doc/guix.texi:6941
13585 msgid "Technically, @code{content-hash} is currently implemented as a macro. It performs sanity checks at macro-expansion time, when possible, such as ensuring that @var{value} has the right size for @var{algorithm}."
13586 msgstr ""
13587
13588 #. type: Plain text
13589 #: guix-git/doc/guix.texi:6947
13590 msgid "As we have seen above, how exactly the data an origin refers to is retrieved is determined by its @code{method} field. The @code{(guix download)} module provides the most common method, @code{url-fetch}, described below."
13591 msgstr ""
13592
13593 #. type: deffn
13594 #: guix-git/doc/guix.texi:6948
13595 #, no-wrap
13596 msgid "{Scheme Procedure} url-fetch @var{url} @var{hash-algo} @var{hash} @"
13597 msgstr ""
13598
13599 #. type: deffn
13600 #: guix-git/doc/guix.texi:6956
13601 msgid "[name] [#:executable? #f] Return a fixed-output derivation that fetches data from @var{url} (a string, or a list of strings denoting alternate URLs), which is expected to have hash @var{hash} of type @var{hash-algo} (a symbol). By default, the file name is the base name of URL; optionally, @var{name} can specify a different file name. When @var{executable?} is true, make the downloaded file executable."
13602 msgstr ""
13603
13604 #. type: deffn
13605 #: guix-git/doc/guix.texi:6959
13606 msgid "When one of the URL starts with @code{mirror://}, then its host part is interpreted as the name of a mirror scheme, taken from @file{%mirror-file}."
13607 msgstr ""
13608
13609 #. type: deffn
13610 #: guix-git/doc/guix.texi:6962
13611 msgid "Alternatively, when URL starts with @code{file://}, return the corresponding file name in the store."
13612 msgstr ""
13613
13614 #. type: Plain text
13615 #: guix-git/doc/guix.texi:6968
13616 msgid "Likewise, the @code{(guix git-download)} module defines the @code{git-fetch} origin method, which fetches data from a Git version control repository, and the @code{git-reference} data type to describe the repository and revision to fetch."
13617 msgstr ""
13618
13619 #. type: deffn
13620 #: guix-git/doc/guix.texi:6969
13621 #, no-wrap
13622 msgid "{Scheme Procedure} git-fetch @var{ref} @var{hash-algo} @var{hash}"
13623 msgstr ""
13624
13625 #. type: deffn
13626 #: guix-git/doc/guix.texi:6974
13627 msgid "Return a fixed-output derivation that fetches @var{ref}, a @code{<git-reference>} object. The output is expected to have recursive hash @var{hash} of type @var{hash-algo} (a symbol). Use @var{name} as the file name, or a generic name if @code{#f}."
13628 msgstr ""
13629
13630 #. type: deftp
13631 #: guix-git/doc/guix.texi:6976
13632 #, no-wrap
13633 msgid "{Data Type} git-reference"
13634 msgstr ""
13635
13636 #. type: deftp
13637 #: guix-git/doc/guix.texi:6979
13638 msgid "This data type represents a Git reference for @code{git-fetch} to retrieve."
13639 msgstr ""
13640
13641 #. type: code{#1}
13642 #: guix-git/doc/guix.texi:6981 guix-git/doc/guix.texi:22531
13643 #, no-wrap
13644 msgid "url"
13645 msgstr ""
13646
13647 #. type: table
13648 #: guix-git/doc/guix.texi:6983
13649 msgid "The URL of the Git repository to clone."
13650 msgstr ""
13651
13652 #. type: code{#1}
13653 #: guix-git/doc/guix.texi:6984
13654 #, no-wrap
13655 msgid "commit"
13656 msgstr ""
13657
13658 #. type: table
13659 #: guix-git/doc/guix.texi:6988
13660 msgid "This string denotes either the commit to fetch (a hexadecimal string, either the full SHA1 commit or a ``short'' commit string; the latter is not recommended) or the tag to fetch."
13661 msgstr ""
13662
13663 #. type: item
13664 #: guix-git/doc/guix.texi:6989
13665 #, no-wrap
13666 msgid "@code{recursive?} (default: @code{#f})"
13667 msgstr ""
13668
13669 #. type: table
13670 #: guix-git/doc/guix.texi:6991
13671 msgid "This Boolean indicates whether to recursively fetch Git sub-modules."
13672 msgstr ""
13673
13674 #. type: deftp
13675 #: guix-git/doc/guix.texi:6995
13676 msgid "The example below denotes the @code{v2.10} tag of the GNU@tie{}Hello repository:"
13677 msgstr ""
13678
13679 #. type: lisp
13680 #: guix-git/doc/guix.texi:7000
13681 #, no-wrap
13682 msgid ""
13683 "(git-reference\n"
13684 " (url \"https://git.savannah.gnu.org/git/hello.git\")\n"
13685 " (commit \"v2.10\"))\n"
13686 msgstr ""
13687
13688 #. type: deftp
13689 #: guix-git/doc/guix.texi:7004
13690 msgid "This is equivalent to the reference below, which explicitly names the commit:"
13691 msgstr ""
13692
13693 #. type: lisp
13694 #: guix-git/doc/guix.texi:7009
13695 #, no-wrap
13696 msgid ""
13697 "(git-reference\n"
13698 " (url \"https://git.savannah.gnu.org/git/hello.git\")\n"
13699 " (commit \"dc7dc56a00e48fe6f231a58f6537139fe2908fb9\"))\n"
13700 msgstr ""
13701
13702 #. type: Plain text
13703 #: guix-git/doc/guix.texi:7015
13704 msgid "For Mercurial repositories, the module @code{(guix hg-download)} defines the @code{hg-fetch} origin method and @code{hg-reference} data type for support of the Mercurial version control system."
13705 msgstr ""
13706
13707 #. type: deffn
13708 #: guix-git/doc/guix.texi:7016
13709 #, no-wrap
13710 msgid "{Scheme Procedure} hg-fetch @var{ref} @var{hash-algo} @var{hash} @"
13711 msgstr ""
13712
13713 #. type: deffn
13714 #: guix-git/doc/guix.texi:7022
13715 msgid "[name] Return a fixed-output derivation that fetches @var{ref}, a @code{<hg-reference>} object. The output is expected to have recursive hash @var{hash} of type @var{hash-algo} (a symbol). Use @var{name} as the file name, or a generic name if @code{#false}."
13716 msgstr ""
13717
13718 #. type: cindex
13719 #: guix-git/doc/guix.texi:7027
13720 #, no-wrap
13721 msgid "customizing packages"
13722 msgstr ""
13723
13724 #. type: cindex
13725 #: guix-git/doc/guix.texi:7028
13726 #, no-wrap
13727 msgid "variants, of packages"
13728 msgstr ""
13729
13730 #. type: Plain text
13731 #: guix-git/doc/guix.texi:7038
13732 msgid "One of the nice things with Guix is that, given a package definition, you can easily @emph{derive} variants of that package---for a different upstream version, with different dependencies, different compilation options, and so on. Some of these custom packages can be defined straight from the command line (@pxref{Package Transformation Options}). This section describes how to define package variants in code. This can be useful in ``manifests'' (@pxref{profile-manifest, @option{--manifest}}) and in your own package collection (@pxref{Creating a Channel}), among others!"
13733 msgstr ""
13734
13735 #. type: cindex
13736 #: guix-git/doc/guix.texi:7039
13737 #, no-wrap
13738 msgid "inherit, for package definitions"
13739 msgstr ""
13740
13741 #. type: Plain text
13742 #: guix-git/doc/guix.texi:7046
13743 msgid "As discussed earlier, packages are first-class objects in the Scheme language. The @code{(guix packages)} module provides the @code{package} construct to define new package objects (@pxref{package Reference}). The easiest way to define a package variant is using the @code{inherit} keyword together with @code{package}. This allows you to inherit from a package definition while overriding the fields you want."
13744 msgstr ""
13745
13746 #. type: Plain text
13747 #: guix-git/doc/guix.texi:7051
13748 msgid "For example, given the @code{hello} variable, which contains a definition for the current version of GNU@tie{}Hello, here's how you would define a variant for version 2.2 (released in 2006, it's vintage!):"
13749 msgstr ""
13750
13751 #. type: lisp
13752 #: guix-git/doc/guix.texi:7054
13753 #, no-wrap
13754 msgid ""
13755 "(use-modules (gnu packages base)) ;for 'hello'\n"
13756 "\n"
13757 msgstr ""
13758
13759 #. type: lisp
13760 #: guix-git/doc/guix.texi:7066
13761 #, no-wrap
13762 msgid ""
13763 "(define hello-2.2\n"
13764 " (package\n"
13765 " (inherit hello)\n"
13766 " (version \"2.2\")\n"
13767 " (source (origin\n"
13768 " (method url-fetch)\n"
13769 " (uri (string-append \"mirror://gnu/hello/hello-\" version\n"
13770 " \".tar.gz\"))\n"
13771 " (sha256\n"
13772 " (base32\n"
13773 " \"0lappv4slgb5spyqbh6yl5r013zv72yqg2pcl30mginf3wdqd8k9\"))))))\n"
13774 msgstr ""
13775
13776 #. type: Plain text
13777 #: guix-git/doc/guix.texi:7075
13778 msgid "The example above corresponds to what the @option{--with-source} package transformation option does. Essentially @code{hello-2.2} preserves all the fields of @code{hello}, except @code{version} and @code{source}, which it overrides. Note that the original @code{hello} variable is still there, in the @code{(gnu packages base)} module, unchanged. When you define a custom package like this, you are really @emph{adding} a new package definition; the original one remains available."
13779 msgstr ""
13780
13781 #. type: Plain text
13782 #: guix-git/doc/guix.texi:7081
13783 msgid "You can just as well define variants with a different set of dependencies than the original package. For example, the default @code{gdb} package depends on @code{guile}, but since that is an optional dependency, you can define a variant that removes that dependency like so:"
13784 msgstr ""
13785
13786 #. type: lisp
13787 #: guix-git/doc/guix.texi:7085
13788 #, no-wrap
13789 msgid ""
13790 "(use-modules (gnu packages gdb) ;for 'gdb'\n"
13791 " (srfi srfi-1)) ;for 'alist-delete'\n"
13792 "\n"
13793 msgstr ""
13794
13795 #. type: lisp
13796 #: guix-git/doc/guix.texi:7091
13797 #, no-wrap
13798 msgid ""
13799 "(define gdb-sans-guile\n"
13800 " (package\n"
13801 " (inherit gdb)\n"
13802 " (inputs (alist-delete \"guile\"\n"
13803 " (package-inputs gdb)))))\n"
13804 msgstr ""
13805
13806 #. type: Plain text
13807 #: guix-git/doc/guix.texi:7097
13808 msgid "The @code{alist-delete} call above removes the tuple from the @code{inputs} field that has @code{\"guile\"} as its first element (@pxref{SRFI-1 Association Lists,,, guile, GNU Guile Reference Manual})."
13809 msgstr ""
13810
13811 #. type: Plain text
13812 #: guix-git/doc/guix.texi:7105
13813 msgid "In some cases, you may find it useful to write functions (``procedures'', in Scheme parlance) that return a package based on some parameters. For example, consider the @code{luasocket} library for the Lua programming language. We want to create @code{luasocket} packages for major versions of Lua. One way to do that is to define a procedure that takes a Lua package and returns a @code{luasocket} package that depends on it:"
13814 msgstr ""
13815
13816 #. type: lisp
13817 #: guix-git/doc/guix.texi:7116
13818 #, no-wrap
13819 msgid ""
13820 "(define (make-lua-socket name lua)\n"
13821 " ;; Return a luasocket package built with LUA.\n"
13822 " (package\n"
13823 " (name name)\n"
13824 " (version \"3.0\")\n"
13825 " ;; several fields omitted\n"
13826 " (inputs\n"
13827 " `((\"lua\" ,lua)))\n"
13828 " (synopsis \"Socket library for Lua\")))\n"
13829 "\n"
13830 msgstr ""
13831
13832 #. type: lisp
13833 #: guix-git/doc/guix.texi:7119
13834 #, no-wrap
13835 msgid ""
13836 "(define-public lua5.1-socket\n"
13837 " (make-lua-socket \"lua5.1-socket\" lua-5.1))\n"
13838 "\n"
13839 msgstr ""
13840
13841 #. type: lisp
13842 #: guix-git/doc/guix.texi:7122
13843 #, no-wrap
13844 msgid ""
13845 "(define-public lua5.2-socket\n"
13846 " (make-lua-socket \"lua5.2-socket\" lua-5.2))\n"
13847 msgstr ""
13848
13849 #. type: Plain text
13850 #: guix-git/doc/guix.texi:7130
13851 msgid "Here we have defined packages @code{lua5.1-socket} and @code{lua5.2-socket} by calling @code{make-lua-socket} with different arguments. @xref{Procedures,,, guile, GNU Guile Reference Manual}, for more info on procedures. Having top-level public definitions for these two packages means that they can be referred to from the command line (@pxref{Package Modules})."
13852 msgstr ""
13853
13854 #. type: cindex
13855 #: guix-git/doc/guix.texi:7131
13856 #, no-wrap
13857 msgid "package transformations"
13858 msgstr ""
13859
13860 #. type: Plain text
13861 #: guix-git/doc/guix.texi:7136
13862 msgid "These are pretty simple package variants. As a convenience, the @code{(guix transformations)} module provides a high-level interface that directly maps to the more sophisticated package transformation options (@pxref{Package Transformation Options}):"
13863 msgstr ""
13864
13865 #. type: deffn
13866 #: guix-git/doc/guix.texi:7137
13867 #, no-wrap
13868 msgid "{Scheme Procedure} options->transformation @var{opts}"
13869 msgstr ""
13870
13871 #. type: deffn
13872 #: guix-git/doc/guix.texi:7141
13873 msgid "Return a procedure that, when passed an object to build (package, derivation, etc.), applies the transformations specified by @var{opts} and returns the resulting objects. @var{opts} must be a list of symbol/string pairs such as:"
13874 msgstr ""
13875
13876 #. type: lisp
13877 #: guix-git/doc/guix.texi:7145
13878 #, no-wrap
13879 msgid ""
13880 "((with-branch . \"guile-gcrypt=master\")\n"
13881 " (without-tests . \"libgcrypt\"))\n"
13882 msgstr ""
13883
13884 #. type: deffn
13885 #: guix-git/doc/guix.texi:7149
13886 msgid "Each symbol names a transformation and the corresponding string is an argument to that transformation."
13887 msgstr ""
13888
13889 #. type: Plain text
13890 #: guix-git/doc/guix.texi:7152
13891 msgid "For instance, a manifest equivalent to this command:"
13892 msgstr ""
13893
13894 #. type: example
13895 #: guix-git/doc/guix.texi:7157
13896 #, no-wrap
13897 msgid ""
13898 "guix build guix \\\n"
13899 " --with-branch=guile-gcrypt=master \\\n"
13900 " --with-debug-info=zlib\n"
13901 msgstr ""
13902
13903 #. type: Plain text
13904 #: guix-git/doc/guix.texi:7161
13905 msgid "... would look like this:"
13906 msgstr ""
13907
13908 #. type: lisp
13909 #: guix-git/doc/guix.texi:7164
13910 #, no-wrap
13911 msgid ""
13912 "(use-modules (guix transformations))\n"
13913 "\n"
13914 msgstr ""
13915
13916 #. type: lisp
13917 #: guix-git/doc/guix.texi:7170
13918 #, no-wrap
13919 msgid ""
13920 "(define transform\n"
13921 " ;; The package transformation procedure.\n"
13922 " (options->transformation\n"
13923 " '((with-branch . \"guile-gcrypt=master\")\n"
13924 " (with-debug-info . \"zlib\"))))\n"
13925 "\n"
13926 msgstr ""
13927
13928 #. type: lisp
13929 #: guix-git/doc/guix.texi:7173
13930 #, no-wrap
13931 msgid ""
13932 "(packages->manifest\n"
13933 " (list (transform (specification->package \"guix\"))))\n"
13934 msgstr ""
13935
13936 #. type: cindex
13937 #: guix-git/doc/guix.texi:7175
13938 #, no-wrap
13939 msgid "input rewriting"
13940 msgstr ""
13941
13942 #. type: cindex
13943 #: guix-git/doc/guix.texi:7176
13944 #, no-wrap
13945 msgid "dependency graph rewriting"
13946 msgstr ""
13947
13948 #. type: Plain text
13949 #: guix-git/doc/guix.texi:7183
13950 msgid "The @code{options->transformation} procedure is convenient, but it's perhaps also not as flexible as you may like. How is it implemented? The astute reader probably noticed that most package transformation options go beyond the superficial changes shown in the first examples of this section: they involve @dfn{input rewriting}, whereby the dependency graph of a package is rewritten by replacing specific inputs by others."
13951 msgstr ""
13952
13953 #. type: Plain text
13954 #: guix-git/doc/guix.texi:7187
13955 msgid "Dependency graph rewriting, for the purposes of swapping packages in the graph, is what the @code{package-input-rewriting} procedure in @code{(guix packages)} implements."
13956 msgstr ""
13957
13958 #. type: deffn
13959 #: guix-git/doc/guix.texi:7188
13960 #, no-wrap
13961 msgid "{Scheme Procedure} package-input-rewriting @var{replacements} @"
13962 msgstr ""
13963
13964 #. type: deffn
13965 #: guix-git/doc/guix.texi:7195
13966 msgid "[@var{rewrite-name}] [#:deep? #t] Return a procedure that, when passed a package, replaces its direct and indirect dependencies, including implicit inputs when @var{deep?} is true, according to @var{replacements}. @var{replacements} is a list of package pairs; the first element of each pair is the package to replace, and the second one is the replacement."
13967 msgstr ""
13968
13969 #. type: deffn
13970 #: guix-git/doc/guix.texi:7198
13971 msgid "Optionally, @var{rewrite-name} is a one-argument procedure that takes the name of a package and returns its new name after rewrite."
13972 msgstr ""
13973
13974 #. type: table
13975 #: guix-git/doc/guix.texi:7202 guix-git/doc/guix.texi:10528
13976 msgid "Consider this example:"
13977 msgstr ""
13978
13979 #. type: lisp
13980 #: guix-git/doc/guix.texi:7208
13981 #, no-wrap
13982 msgid ""
13983 "(define libressl-instead-of-openssl\n"
13984 " ;; This is a procedure to replace OPENSSL by LIBRESSL,\n"
13985 " ;; recursively.\n"
13986 " (package-input-rewriting `((,openssl . ,libressl))))\n"
13987 "\n"
13988 msgstr ""
13989
13990 #. type: lisp
13991 #: guix-git/doc/guix.texi:7211
13992 #, no-wrap
13993 msgid ""
13994 "(define git-with-libressl\n"
13995 " (libressl-instead-of-openssl git))\n"
13996 msgstr ""
13997
13998 #. type: Plain text
13999 #: guix-git/doc/guix.texi:7219
14000 msgid "Here we first define a rewriting procedure that replaces @var{openssl} with @var{libressl}. Then we use it to define a @dfn{variant} of the @var{git} package that uses @var{libressl} instead of @var{openssl}. This is exactly what the @option{--with-input} command-line option does (@pxref{Package Transformation Options, @option{--with-input}})."
14001 msgstr ""
14002
14003 #. type: Plain text
14004 #: guix-git/doc/guix.texi:7222
14005 msgid "The following variant of @code{package-input-rewriting} can match packages to be replaced by name rather than by identity."
14006 msgstr ""
14007
14008 #. type: deffn
14009 #: guix-git/doc/guix.texi:7223
14010 #, no-wrap
14011 msgid "{Scheme Procedure} package-input-rewriting/spec @var{replacements} [#:deep? #t]"
14012 msgstr ""
14013
14014 #. type: deffn
14015 #: guix-git/doc/guix.texi:7230
14016 msgid "Return a procedure that, given a package, applies the given @var{replacements} to all the package graph, including implicit inputs unless @var{deep?} is false. @var{replacements} is a list of spec/procedures pair; each spec is a package specification such as @code{\"gcc\"} or @code{\"guile@@2\"}, and each procedure takes a matching package and returns a replacement for that package."
14017 msgstr ""
14018
14019 #. type: Plain text
14020 #: guix-git/doc/guix.texi:7233
14021 msgid "The example above could be rewritten this way:"
14022 msgstr ""
14023
14024 #. type: lisp
14025 #: guix-git/doc/guix.texi:7238
14026 #, no-wrap
14027 msgid ""
14028 "(define libressl-instead-of-openssl\n"
14029 " ;; Replace all the packages called \"openssl\" with LibreSSL.\n"
14030 " (package-input-rewriting/spec `((\"openssl\" . ,(const libressl)))))\n"
14031 msgstr ""
14032
14033 #. type: Plain text
14034 #: guix-git/doc/guix.texi:7243
14035 msgid "The key difference here is that, this time, packages are matched by spec and not by identity. In other words, any package in the graph that is called @code{openssl} will be replaced."
14036 msgstr ""
14037
14038 #. type: Plain text
14039 #: guix-git/doc/guix.texi:7247
14040 msgid "A more generic procedure to rewrite a package dependency graph is @code{package-mapping}: it supports arbitrary changes to nodes in the graph."
14041 msgstr ""
14042
14043 #. type: deffn
14044 #: guix-git/doc/guix.texi:7248
14045 #, no-wrap
14046 msgid "{Scheme Procedure} package-mapping @var{proc} [@var{cut?}] [#:deep? #f]"
14047 msgstr ""
14048
14049 #. type: deffn
14050 #: guix-git/doc/guix.texi:7253
14051 msgid "Return a procedure that, given a package, applies @var{proc} to all the packages depended on and returns the resulting package. The procedure stops recursion when @var{cut?} returns true for a given package. When @var{deep?} is true, @var{proc} is applied to implicit inputs as well."
14052 msgstr ""
14053
14054 #. type: cindex
14055 #: guix-git/doc/guix.texi:7259
14056 #, no-wrap
14057 msgid "build system"
14058 msgstr ""
14059
14060 #. type: Plain text
14061 #: guix-git/doc/guix.texi:7264
14062 msgid "Each package definition specifies a @dfn{build system} and arguments for that build system (@pxref{Defining Packages}). This @code{build-system} field represents the build procedure of the package, as well as implicit dependencies of that build procedure."
14063 msgstr ""
14064
14065 #. type: Plain text
14066 #: guix-git/doc/guix.texi:7268
14067 msgid "Build systems are @code{<build-system>} objects. The interface to create and manipulate them is provided by the @code{(guix build-system)} module, and actual build systems are exported by specific modules."
14068 msgstr ""
14069
14070 #. type: cindex
14071 #: guix-git/doc/guix.texi:7269
14072 #, no-wrap
14073 msgid "bag (low-level package representation)"
14074 msgstr ""
14075
14076 #. type: Plain text
14077 #: guix-git/doc/guix.texi:7279
14078 msgid "Under the hood, build systems first compile package objects to @dfn{bags}. A @dfn{bag} is like a package, but with less ornamentation---in other words, a bag is a lower-level representation of a package, which includes all the inputs of that package, including some that were implicitly added by the build system. This intermediate representation is then compiled to a derivation (@pxref{Derivations}). The @code{package-with-c-toolchain} is an example of a way to change the implicit inputs that a package's build system pulls in (@pxref{package Reference, @code{package-with-c-toolchain}})."
14079 msgstr ""
14080
14081 #. type: Plain text
14082 #: guix-git/doc/guix.texi:7287
14083 msgid "Build systems accept an optional list of @dfn{arguments}. In package definitions, these are passed @i{via} the @code{arguments} field (@pxref{Defining Packages}). They are typically keyword arguments (@pxref{Optional Arguments, keyword arguments in Guile,, guile, GNU Guile Reference Manual}). The value of these arguments is usually evaluated in the @dfn{build stratum}---i.e., by a Guile process launched by the daemon (@pxref{Derivations})."
14084 msgstr ""
14085
14086 #. type: Plain text
14087 #: guix-git/doc/guix.texi:7291
14088 msgid "The main build system is @code{gnu-build-system}, which implements the standard build procedure for GNU and many other packages. It is provided by the @code{(guix build-system gnu)} module."
14089 msgstr ""
14090
14091 #. type: defvr
14092 #: guix-git/doc/guix.texi:7292
14093 #, no-wrap
14094 msgid "{Scheme Variable} gnu-build-system"
14095 msgstr ""
14096
14097 #. type: defvr
14098 #: guix-git/doc/guix.texi:7296
14099 msgid "@code{gnu-build-system} represents the GNU Build System, and variants thereof (@pxref{Configuration, configuration and makefile conventions,, standards, GNU Coding Standards})."
14100 msgstr ""
14101
14102 #. type: cindex
14103 #: guix-git/doc/guix.texi:7297 guix-git/doc/guix.texi:8223
14104 #: guix-git/doc/guix.texi:8678
14105 #, no-wrap
14106 msgid "build phases"
14107 msgstr ""
14108
14109 #. type: defvr
14110 #: guix-git/doc/guix.texi:7304
14111 msgid "In a nutshell, packages using it are configured, built, and installed with the usual @code{./configure && make && make check && make install} command sequence. In practice, a few additional steps are often needed. All these steps are split up in separate @dfn{phases}. @xref{Build Phases}, for more info on build phases and ways to customize them."
14112 msgstr ""
14113
14114 #. type: defvr
14115 #: guix-git/doc/guix.texi:7311
14116 msgid "In addition, this build system ensures that the ``standard'' environment for GNU packages is available. This includes tools such as GCC, libc, Coreutils, Bash, Make, Diffutils, grep, and sed (see the @code{(guix build-system gnu)} module for a complete list). We call these the @dfn{implicit inputs} of a package, because package definitions do not have to mention them."
14117 msgstr ""
14118
14119 #. type: defvr
14120 #: guix-git/doc/guix.texi:7315
14121 msgid "This build system supports a number of keyword arguments, which can be passed @i{via} the @code{arguments} field of a package. Here are some of the main parameters:"
14122 msgstr ""
14123
14124 #. type: item
14125 #: guix-git/doc/guix.texi:7317
14126 #, no-wrap
14127 msgid "#:phases"
14128 msgstr ""
14129
14130 #. type: table
14131 #: guix-git/doc/guix.texi:7320
14132 msgid "This argument specifies build-side code that evaluates to an alist of build phases. @xref{Build Phases}, for more information."
14133 msgstr ""
14134
14135 #. type: item
14136 #: guix-git/doc/guix.texi:7321
14137 #, no-wrap
14138 msgid "#:configure-flags"
14139 msgstr ""
14140
14141 #. type: table
14142 #: guix-git/doc/guix.texi:7324
14143 msgid "This is a list of flags (strings) passed to the @command{configure} script. @xref{Defining Packages}, for an example."
14144 msgstr ""
14145
14146 #. type: item
14147 #: guix-git/doc/guix.texi:7325
14148 #, no-wrap
14149 msgid "#:make-flags"
14150 msgstr ""
14151
14152 #. type: table
14153 #: guix-git/doc/guix.texi:7329
14154 msgid "This list of strings contains flags passed as arguments to @command{make} invocations in the @code{build}, @code{check}, and @code{install} phases."
14155 msgstr ""
14156
14157 #. type: item
14158 #: guix-git/doc/guix.texi:7330
14159 #, no-wrap
14160 msgid "#:out-of-source?"
14161 msgstr ""
14162
14163 #. type: table
14164 #: guix-git/doc/guix.texi:7333
14165 msgid "This Boolean, @code{#f} by default, indicates whether to run builds in a build directory separate from the source tree."
14166 msgstr ""
14167
14168 #. type: table
14169 #: guix-git/doc/guix.texi:7338
14170 msgid "When it is true, the @code{configure} phase creates a separate build directory, changes to that directory, and runs the @code{configure} script from there. This is useful for packages that require it, such as @code{glibc}."
14171 msgstr ""
14172
14173 #. type: item
14174 #: guix-git/doc/guix.texi:7339
14175 #, no-wrap
14176 msgid "#:tests?"
14177 msgstr ""
14178
14179 #. type: table
14180 #: guix-git/doc/guix.texi:7342
14181 msgid "This Boolean, @code{#t} by default, indicates whether the @code{check} phase should run the package's test suite."
14182 msgstr ""
14183
14184 #. type: item
14185 #: guix-git/doc/guix.texi:7343
14186 #, no-wrap
14187 msgid "#:test-target"
14188 msgstr ""
14189
14190 #. type: table
14191 #: guix-git/doc/guix.texi:7346
14192 msgid "This string, @code{\"check\"} by default, gives the name of the makefile target used by the @code{check} phase."
14193 msgstr ""
14194
14195 #. type: item
14196 #: guix-git/doc/guix.texi:7347
14197 #, no-wrap
14198 msgid "#:parallel-build?"
14199 msgstr ""
14200
14201 #. type: itemx
14202 #: guix-git/doc/guix.texi:7348
14203 #, no-wrap
14204 msgid "#:parallel-tests?"
14205 msgstr ""
14206
14207 #. type: table
14208 #: guix-git/doc/guix.texi:7355
14209 msgid "These Boolean values specify whether to build, respectively run the test suite, in parallel, with the @code{-j} flag of @command{make}. When they are true, @code{make} is passed @code{-j@var{n}}, where @var{n} is the number specified as the @option{--cores} option of @command{guix-daemon} or that of the @command{guix} client command (@pxref{Common Build Options, @option{--cores}})."
14210 msgstr ""
14211
14212 #. type: cindex
14213 #: guix-git/doc/guix.texi:7356
14214 #, no-wrap
14215 msgid "RUNPATH, validation"
14216 msgstr ""
14217
14218 #. type: item
14219 #: guix-git/doc/guix.texi:7357
14220 #, no-wrap
14221 msgid "#:validate-runpath?"
14222 msgstr ""
14223
14224 #. type: table
14225 #: guix-git/doc/guix.texi:7361
14226 msgid "This Boolean, @code{#t} by default, determines whether to ``validate'' the @code{RUNPATH} of ELF binaries (@code{.so} shared libraries as well as executables) previously installed by the @code{install} phase."
14227 msgstr ""
14228
14229 #. type: table
14230 #: guix-git/doc/guix.texi:7369
14231 msgid "This validation step consists in making sure that all the shared libraries needed by an ELF binaries, which are listed as @code{DT_NEEDED} entries in its @code{PT_DYNAMIC} segment, appear in the @code{DT_RUNPATH} entry of that binary. In other words, it ensures that running or using those binaries will not result in a ``file not found'' error at run time. @xref{Options, @option{-rpath},, ld, The GNU Linker}, for more information on @code{RUNPATH}."
14232 msgstr ""
14233
14234 #. type: item
14235 #: guix-git/doc/guix.texi:7370
14236 #, no-wrap
14237 msgid "#:substitutable?"
14238 msgstr ""
14239
14240 #. type: table
14241 #: guix-git/doc/guix.texi:7374
14242 msgid "This Boolean, @code{#t} by default, tells whether the package outputs should be substitutable---i.e., whether users should be able to obtain substitutes for them instead of building locally (@pxref{Substitutes})."
14243 msgstr ""
14244
14245 #. type: item
14246 #: guix-git/doc/guix.texi:7375
14247 #, no-wrap
14248 msgid "#:allowed-references"
14249 msgstr ""
14250
14251 #. type: itemx
14252 #: guix-git/doc/guix.texi:7376
14253 #, no-wrap
14254 msgid "#:disallowed-references"
14255 msgstr ""
14256
14257 #. type: table
14258 #: guix-git/doc/guix.texi:7381
14259 msgid "When true, these arguments must be a list of dependencies that must not appear among the references of the build results. If, upon build completion, some of these references are retained, the build process fails."
14260 msgstr ""
14261
14262 #. type: table
14263 #: guix-git/doc/guix.texi:7386
14264 msgid "This is useful to ensure that a package does not erroneously keep a reference to some of it build-time inputs, in cases where doing so would, for example, unnecessarily increase its size (@pxref{Invoking guix size})."
14265 msgstr ""
14266
14267 #. type: defvr
14268 #: guix-git/doc/guix.texi:7389
14269 msgid "Most other build systems support these keyword arguments."
14270 msgstr ""
14271
14272 #. type: Plain text
14273 #: guix-git/doc/guix.texi:7396
14274 msgid "Other @code{<build-system>} objects are defined to support other conventions and tools used by free software packages. They inherit most of @code{gnu-build-system}, and differ mainly in the set of inputs implicitly added to the build process, and in the list of phases executed. Some of these build systems are listed below."
14275 msgstr ""
14276
14277 #. type: defvr
14278 #: guix-git/doc/guix.texi:7397
14279 #, no-wrap
14280 msgid "{Scheme Variable} ant-build-system"
14281 msgstr ""
14282
14283 #. type: defvr
14284 #: guix-git/doc/guix.texi:7401
14285 msgid "This variable is exported by @code{(guix build-system ant)}. It implements the build procedure for Java packages that can be built with @url{https://ant.apache.org/, Ant build tool}."
14286 msgstr ""
14287
14288 #. type: defvr
14289 #: guix-git/doc/guix.texi:7406
14290 msgid "It adds both @code{ant} and the @dfn{Java Development Kit} (JDK) as provided by the @code{icedtea} package to the set of inputs. Different packages can be specified with the @code{#:ant} and @code{#:jdk} parameters, respectively."
14291 msgstr ""
14292
14293 #. type: defvr
14294 #: guix-git/doc/guix.texi:7412
14295 msgid "When the original package does not provide a suitable Ant build file, the parameter @code{#:jar-name} can be used to generate a minimal Ant build file @file{build.xml} with tasks to build the specified jar archive. In this case the parameter @code{#:source-dir} can be used to specify the source sub-directory, defaulting to ``src''."
14296 msgstr ""
14297
14298 #. type: defvr
14299 #: guix-git/doc/guix.texi:7420
14300 msgid "The @code{#:main-class} parameter can be used with the minimal ant buildfile to specify the main class of the resulting jar. This makes the jar file executable. The @code{#:test-include} parameter can be used to specify the list of junit tests to run. It defaults to @code{(list \"**/*Test.java\")}. The @code{#:test-exclude} can be used to disable some tests. It defaults to @code{(list \"**/Abstract*.java\")}, because abstract classes cannot be run as tests."
14301 msgstr ""
14302
14303 #. type: defvr
14304 #: guix-git/doc/guix.texi:7424
14305 msgid "The parameter @code{#:build-target} can be used to specify the Ant task that should be run during the @code{build} phase. By default the ``jar'' task will be run."
14306 msgstr ""
14307
14308 #. type: defvr
14309 #: guix-git/doc/guix.texi:7427
14310 #, no-wrap
14311 msgid "{Scheme Variable} android-ndk-build-system"
14312 msgstr ""
14313
14314 #. type: cindex
14315 #: guix-git/doc/guix.texi:7428
14316 #, no-wrap
14317 msgid "Android distribution"
14318 msgstr ""
14319
14320 #. type: cindex
14321 #: guix-git/doc/guix.texi:7429
14322 #, no-wrap
14323 msgid "Android NDK build system"
14324 msgstr ""
14325
14326 #. type: defvr
14327 #: guix-git/doc/guix.texi:7433
14328 msgid "This variable is exported by @code{(guix build-system android-ndk)}. It implements a build procedure for Android NDK (native development kit) packages using a Guix-specific build process."
14329 msgstr ""
14330
14331 #. type: defvr
14332 #: guix-git/doc/guix.texi:7437
14333 msgid "The build system assumes that packages install their public interface (header) files to the subdirectory @file{include} of the @code{out} output and their libraries to the subdirectory @file{lib} the @code{out} output."
14334 msgstr ""
14335
14336 #. type: defvr
14337 #: guix-git/doc/guix.texi:7440
14338 msgid "It's also assumed that the union of all the dependencies of a package has no conflicting files."
14339 msgstr ""
14340
14341 #. type: defvr
14342 #: guix-git/doc/guix.texi:7443
14343 msgid "For the time being, cross-compilation is not supported - so right now the libraries and header files are assumed to be host tools."
14344 msgstr ""
14345
14346 #. type: defvr
14347 #: guix-git/doc/guix.texi:7446
14348 #, no-wrap
14349 msgid "{Scheme Variable} asdf-build-system/source"
14350 msgstr ""
14351
14352 #. type: defvrx
14353 #: guix-git/doc/guix.texi:7447
14354 #, no-wrap
14355 msgid "{Scheme Variable} asdf-build-system/sbcl"
14356 msgstr ""
14357
14358 #. type: defvrx
14359 #: guix-git/doc/guix.texi:7448
14360 #, no-wrap
14361 msgid "{Scheme Variable} asdf-build-system/ecl"
14362 msgstr ""
14363
14364 #. type: defvr
14365 #: guix-git/doc/guix.texi:7454
14366 msgid "These variables, exported by @code{(guix build-system asdf)}, implement build procedures for Common Lisp packages using @url{https://common-lisp.net/project/asdf/, ``ASDF''}. ASDF is a system definition facility for Common Lisp programs and libraries."
14367 msgstr ""
14368
14369 #. type: defvr
14370 #: guix-git/doc/guix.texi:7461
14371 msgid "The @code{asdf-build-system/source} system installs the packages in source form, and can be loaded using any common lisp implementation, via ASDF@. The others, such as @code{asdf-build-system/sbcl}, install binary systems in the format which a particular implementation understands. These build systems can also be used to produce executable programs, or lisp images which contain a set of packages pre-loaded."
14372 msgstr ""
14373
14374 #. type: defvr
14375 #: guix-git/doc/guix.texi:7465
14376 msgid "The build system uses naming conventions. For binary packages, the package name should be prefixed with the lisp implementation, such as @code{sbcl-} for @code{asdf-build-system/sbcl}."
14377 msgstr ""
14378
14379 #. type: defvr
14380 #: guix-git/doc/guix.texi:7469
14381 msgid "Additionally, the corresponding source package should be labeled using the same convention as python packages (see @ref{Python Modules}), using the @code{cl-} prefix."
14382 msgstr ""
14383
14384 #. type: defvr
14385 #: guix-git/doc/guix.texi:7477
14386 msgid "In order to create executable programs and images, the build-side procedures @code{build-program} and @code{build-image} can be used. They should be called in a build phase after the @code{create-asdf-configuration} phase, so that the system which was just built can be used within the resulting image. @code{build-program} requires a list of Common Lisp expressions to be passed as the @code{#:entry-program} argument."
14387 msgstr ""
14388
14389 #. type: defvr
14390 #: guix-git/doc/guix.texi:7486
14391 msgid "By default, all the @file{.asd} files present in the sources are read to find system definitions. The @code{#:asd-files} parameter can be used to specify the list of @file{.asd} files to read. Furthermore, if the package defines a system for its tests in a separate file, it will be loaded before the tests are run if it is specified by the @code{#:test-asd-file} parameter. If it is not set, the files @code{<system>-tests.asd}, @code{<system>-test.asd}, @code{tests.asd}, and @code{test.asd} will be tried if they exist."
14392 msgstr ""
14393
14394 #. type: defvr
14395 #: guix-git/doc/guix.texi:7491
14396 msgid "If for some reason the package must be named in a different way than the naming conventions suggest, or if several systems must be compiled, the @code{#:asd-systems} parameter can be used to specify the list of system names."
14397 msgstr ""
14398
14399 #. type: defvr
14400 #: guix-git/doc/guix.texi:7494
14401 #, no-wrap
14402 msgid "{Scheme Variable} cargo-build-system"
14403 msgstr ""
14404
14405 #. type: cindex
14406 #: guix-git/doc/guix.texi:7495
14407 #, no-wrap
14408 msgid "Rust programming language"
14409 msgstr ""
14410
14411 #. type: cindex
14412 #: guix-git/doc/guix.texi:7496
14413 #, no-wrap
14414 msgid "Cargo (Rust build system)"
14415 msgstr ""
14416
14417 #. type: defvr
14418 #: guix-git/doc/guix.texi:7500
14419 msgid "This variable is exported by @code{(guix build-system cargo)}. It supports builds of packages using Cargo, the build tool of the @uref{https://www.rust-lang.org, Rust programming language}."
14420 msgstr ""
14421
14422 #. type: defvr
14423 #: guix-git/doc/guix.texi:7503
14424 msgid "It adds @code{rustc} and @code{cargo} to the set of inputs. A different Rust package can be specified with the @code{#:rust} parameter."
14425 msgstr ""
14426
14427 #. type: defvr
14428 #: guix-git/doc/guix.texi:7513
14429 msgid "Regular cargo dependencies should be added to the package definition similarly to other packages; those needed only at build time to native-inputs, others to inputs. If you need to add source-only crates then you should add them to via the @code{#:cargo-inputs} parameter as a list of name and spec pairs, where the spec can be a package or a source definition. Note that the spec must evaluate to a path to a gzipped tarball which includes a @code{Cargo.toml} file at its root, or it will be ignored. Similarly, cargo dev-dependencies should be added to the package definition via the @code{#:cargo-development-inputs} parameter."
14430 msgstr ""
14431
14432 #. type: defvr
14433 #: guix-git/doc/guix.texi:7523
14434 msgid "In its @code{configure} phase, this build system will make any source inputs specified in the @code{#:cargo-inputs} and @code{#:cargo-development-inputs} parameters available to cargo. It will also remove an included @code{Cargo.lock} file to be recreated by @code{cargo} during the @code{build} phase. The @code{package} phase will run @code{cargo package} to create a source crate for future use. The @code{install} phase installs the binaries defined by the crate. Unless @code{install-source? #f} is defined it will also install a source crate repository of itself and unpacked sources, to ease in future hacking on rust packages."
14435 msgstr ""
14436
14437 #. type: defvr
14438 #: guix-git/doc/guix.texi:7525
14439 #, no-wrap
14440 msgid "{Scheme Variable} chicken-build-system"
14441 msgstr ""
14442
14443 #. type: defvr
14444 #: guix-git/doc/guix.texi:7530
14445 msgid "This variable is exported by @code{(guix build-system chicken)}. It builds @uref{https://call-cc.org/, CHICKEN Scheme} modules, also called ``eggs'' or ``extensions''. CHICKEN generates C source code, which then gets compiled by a C compiler, in this case GCC."
14446 msgstr ""
14447
14448 #. type: defvr
14449 #: guix-git/doc/guix.texi:7533
14450 msgid "This build system adds @code{chicken} to the package inputs, as well as the packages of @code{gnu-build-system}."
14451 msgstr ""
14452
14453 #. type: defvr
14454 #: guix-git/doc/guix.texi:7537
14455 msgid "The build system can't (yet) deduce the egg's name automatically, so just like with @code{go-build-system} and its @code{#:import-path}, you should define @code{#:egg-name} in the package's @code{arguments} field."
14456 msgstr ""
14457
14458 #. type: defvr
14459 #: guix-git/doc/guix.texi:7539
14460 msgid "For example, if you are packaging the @code{srfi-1} egg:"
14461 msgstr ""
14462
14463 #. type: lisp
14464 #: guix-git/doc/guix.texi:7542
14465 #, no-wrap
14466 msgid "(arguments '(#:egg-name \"srfi-1\"))\n"
14467 msgstr ""
14468
14469 #. type: defvr
14470 #: guix-git/doc/guix.texi:7547
14471 msgid "Egg dependencies must be defined in @code{propagated-inputs}, not @code{inputs} because CHICKEN doesn't embed absolute references in compiled eggs. Test dependencies should go to @code{native-inputs}, as usual."
14472 msgstr ""
14473
14474 #. type: defvr
14475 #: guix-git/doc/guix.texi:7549
14476 #, no-wrap
14477 msgid "{Scheme Variable} copy-build-system"
14478 msgstr ""
14479
14480 #. type: defvr
14481 #: guix-git/doc/guix.texi:7553
14482 msgid "This variable is exported by @code{(guix build-system copy)}. It supports builds of simple packages that don't require much compiling, mostly just moving files around."
14483 msgstr ""
14484
14485 #. type: defvr
14486 #: guix-git/doc/guix.texi:7558
14487 msgid "It adds much of the @code{gnu-build-system} packages to the set of inputs. Because of this, the @code{copy-build-system} does not require all the boilerplate code often needed for the @code{trivial-build-system}."
14488 msgstr ""
14489
14490 #. type: defvr
14491 #: guix-git/doc/guix.texi:7563
14492 msgid "To further simplify the file installation process, an @code{#:install-plan} argument is exposed to let the packager specify which files go where. The install plan is a list of @code{(@var{source} @var{target} [@var{filters}])}. @var{filters} are optional."
14493 msgstr ""
14494
14495 #. type: item
14496 #: guix-git/doc/guix.texi:7565
14497 #, no-wrap
14498 msgid "When @var{source} matches a file or directory without trailing slash, install it to @var{target}."
14499 msgstr ""
14500
14501 #. type: item
14502 #: guix-git/doc/guix.texi:7567
14503 #, no-wrap
14504 msgid "If @var{target} has a trailing slash, install @var{source} basename beneath @var{target}."
14505 msgstr ""
14506
14507 #. type: item
14508 #: guix-git/doc/guix.texi:7568
14509 #, no-wrap
14510 msgid "Otherwise install @var{source} as @var{target}."
14511 msgstr ""
14512
14513 #. type: item
14514 #: guix-git/doc/guix.texi:7571
14515 #, no-wrap
14516 msgid "When @var{source} is a directory with a trailing slash, or when @var{filters} are used,"
14517 msgstr ""
14518
14519 #. type: itemize
14520 #: guix-git/doc/guix.texi:7574
14521 msgid "the trailing slash of @var{target} is implied with the same meaning as above."
14522 msgstr ""
14523
14524 #. type: item
14525 #: guix-git/doc/guix.texi:7575
14526 #, no-wrap
14527 msgid "Without @var{filters}, install the full @var{source} @emph{content} to @var{target}."
14528 msgstr ""
14529
14530 #. type: item
14531 #: guix-git/doc/guix.texi:7576
14532 #, no-wrap
14533 msgid "With @var{filters} among @code{#:include}, @code{#:include-regexp}, @code{#:exclude},"
14534 msgstr ""
14535
14536 #. type: itemize
14537 #: guix-git/doc/guix.texi:7579
14538 msgid "@code{#:exclude-regexp}, only select files are installed depending on the filters. Each filters is specified by a list of strings."
14539 msgstr ""
14540
14541 #. type: item
14542 #: guix-git/doc/guix.texi:7580
14543 #, no-wrap
14544 msgid "With @code{#:include}, install all the files which the path suffix matches"
14545 msgstr ""
14546
14547 #. type: itemize
14548 #: guix-git/doc/guix.texi:7582
14549 msgid "at least one of the elements in the given list."
14550 msgstr ""
14551
14552 #. type: item
14553 #: guix-git/doc/guix.texi:7582
14554 #, no-wrap
14555 msgid "With @code{#:include-regexp}, install all the files which the"
14556 msgstr ""
14557
14558 #. type: itemize
14559 #: guix-git/doc/guix.texi:7585
14560 msgid "subpaths match at least one of the regular expressions in the given list."
14561 msgstr ""
14562
14563 #. type: item
14564 #: guix-git/doc/guix.texi:7585
14565 #, no-wrap
14566 msgid "The @code{#:exclude} and @code{#:exclude-regexp} filters"
14567 msgstr ""
14568
14569 #. type: itemize
14570 #: guix-git/doc/guix.texi:7590
14571 msgid "are the complement of their inclusion counterpart. Without @code{#:include} flags, install all files but those matching the exclusion filters. If both inclusions and exclusions are specified, the exclusions are done on top of the inclusions."
14572 msgstr ""
14573
14574 #. type: itemize
14575 #: guix-git/doc/guix.texi:7594
14576 msgid "In all cases, the paths relative to @var{source} are preserved within @var{target}."
14577 msgstr ""
14578
14579 #. type: defvr
14580 #: guix-git/doc/guix.texi:7597
14581 msgid "Examples:"
14582 msgstr ""
14583
14584 #. type: item
14585 #: guix-git/doc/guix.texi:7599
14586 #, no-wrap
14587 msgid "@code{(\"foo/bar\" \"share/my-app/\")}: Install @file{bar} to @file{share/my-app/bar}."
14588 msgstr ""
14589
14590 #. type: item
14591 #: guix-git/doc/guix.texi:7600
14592 #, no-wrap
14593 msgid "@code{(\"foo/bar\" \"share/my-app/baz\")}: Install @file{bar} to @file{share/my-app/baz}."
14594 msgstr ""
14595
14596 #. type: item
14597 #: guix-git/doc/guix.texi:7601
14598 #, no-wrap
14599 msgid "@code{(\"foo/\" \"share/my-app\")}: Install the content of @file{foo} inside @file{share/my-app},"
14600 msgstr ""
14601
14602 #. type: itemize
14603 #: guix-git/doc/guix.texi:7603
14604 msgid "e.g., install @file{foo/sub/file} to @file{share/my-app/sub/file}."
14605 msgstr ""
14606
14607 #. type: item
14608 #: guix-git/doc/guix.texi:7603
14609 #, no-wrap
14610 msgid "@code{(\"foo/\" \"share/my-app\" #:include (\"sub/file\"))}: Install only @file{foo/sub/file} to"
14611 msgstr ""
14612
14613 #. type: itemize
14614 #: guix-git/doc/guix.texi:7605
14615 msgid "@file{share/my-app/sub/file}."
14616 msgstr ""
14617
14618 #. type: item
14619 #: guix-git/doc/guix.texi:7605
14620 #, no-wrap
14621 msgid "@code{(\"foo/sub\" \"share/my-app\" #:include (\"file\"))}: Install @file{foo/sub/file} to"
14622 msgstr ""
14623
14624 #. type: itemize
14625 #: guix-git/doc/guix.texi:7607
14626 msgid "@file{share/my-app/file}."
14627 msgstr ""
14628
14629 #. type: cindex
14630 #: guix-git/doc/guix.texi:7611
14631 #, no-wrap
14632 msgid "Clojure (programming language)"
14633 msgstr ""
14634
14635 #. type: cindex
14636 #: guix-git/doc/guix.texi:7612
14637 #, no-wrap
14638 msgid "simple Clojure build system"
14639 msgstr ""
14640
14641 #. type: defvr
14642 #: guix-git/doc/guix.texi:7613
14643 #, no-wrap
14644 msgid "{Scheme Variable} clojure-build-system"
14645 msgstr ""
14646
14647 #. type: defvr
14648 #: guix-git/doc/guix.texi:7618
14649 msgid "This variable is exported by @code{(guix build-system clojure)}. It implements a simple build procedure for @uref{https://clojure.org/, Clojure} packages using plain old @code{compile} in Clojure. Cross-compilation is not supported yet."
14650 msgstr ""
14651
14652 #. type: defvr
14653 #: guix-git/doc/guix.texi:7622
14654 msgid "It adds @code{clojure}, @code{icedtea} and @code{zip} to the set of inputs. Different packages can be specified with the @code{#:clojure}, @code{#:jdk} and @code{#:zip} parameters, respectively."
14655 msgstr ""
14656
14657 #. type: defvr
14658 #: guix-git/doc/guix.texi:7628
14659 msgid "A list of source directories, test directories and jar names can be specified with the @code{#:source-dirs}, @code{#:test-dirs} and @code{#:jar-names} parameters, respectively. Compile directory and main class can be specified with the @code{#:compile-dir} and @code{#:main-class} parameters, respectively. Other parameters are documented below."
14660 msgstr ""
14661
14662 #. type: defvr
14663 #: guix-git/doc/guix.texi:7631
14664 msgid "This build system is an extension of @code{ant-build-system}, but with the following phases changed:"
14665 msgstr ""
14666
14667 #. type: item
14668 #: guix-git/doc/guix.texi:7634 guix-git/doc/guix.texi:8186
14669 #: guix-git/doc/guix.texi:8233 guix-git/doc/guix.texi:8302
14670 #: guix-git/doc/guix.texi:32958
14671 #, no-wrap
14672 msgid "build"
14673 msgstr ""
14674
14675 #. type: table
14676 #: guix-git/doc/guix.texi:7643
14677 msgid "This phase calls @code{compile} in Clojure to compile source files and runs @command{jar} to create jars from both source files and compiled files according to the include list and exclude list specified in @code{#:aot-include} and @code{#:aot-exclude}, respectively. The exclude list has priority over the include list. These lists consist of symbols representing Clojure libraries or the special keyword @code{#:all} representing all Clojure libraries found under the source directories. The parameter @code{#:omit-source?} decides if source should be included into the jars."
14678 msgstr ""
14679
14680 #. type: item
14681 #: guix-git/doc/guix.texi:7644 guix-git/doc/guix.texi:8190
14682 #: guix-git/doc/guix.texi:8307
14683 #, no-wrap
14684 msgid "check"
14685 msgstr ""
14686
14687 #. type: table
14688 #: guix-git/doc/guix.texi:7651
14689 msgid "This phase runs tests according to the include list and exclude list specified in @code{#:test-include} and @code{#:test-exclude}, respectively. Their meanings are analogous to that of @code{#:aot-include} and @code{#:aot-exclude}, except that the special keyword @code{#:all} now stands for all Clojure libraries found under the test directories. The parameter @code{#:tests?} decides if tests should be run."
14690 msgstr ""
14691
14692 #. type: item
14693 #: guix-git/doc/guix.texi:7652 guix-git/doc/guix.texi:8194
14694 #: guix-git/doc/guix.texi:8237 guix-git/doc/guix.texi:8313
14695 #, no-wrap
14696 msgid "install"
14697 msgstr ""
14698
14699 #. type: table
14700 #: guix-git/doc/guix.texi:7654
14701 msgid "This phase installs all jars built previously."
14702 msgstr ""
14703
14704 #. type: defvr
14705 #: guix-git/doc/guix.texi:7657
14706 msgid "Apart from the above, this build system also contains an additional phase:"
14707 msgstr ""
14708
14709 #. type: item
14710 #: guix-git/doc/guix.texi:7660
14711 #, no-wrap
14712 msgid "install-doc"
14713 msgstr ""
14714
14715 #. type: table
14716 #: guix-git/doc/guix.texi:7665
14717 msgid "This phase installs all top-level files with base name matching @code{%doc-regex}. A different regex can be specified with the @code{#:doc-regex} parameter. All files (recursively) inside the documentation directories specified in @code{#:doc-dirs} are installed as well."
14718 msgstr ""
14719
14720 #. type: defvr
14721 #: guix-git/doc/guix.texi:7668
14722 #, no-wrap
14723 msgid "{Scheme Variable} cmake-build-system"
14724 msgstr ""
14725
14726 #. type: defvr
14727 #: guix-git/doc/guix.texi:7672
14728 msgid "This variable is exported by @code{(guix build-system cmake)}. It implements the build procedure for packages using the @url{https://www.cmake.org, CMake build tool}."
14729 msgstr ""
14730
14731 #. type: defvr
14732 #: guix-git/doc/guix.texi:7676
14733 msgid "It automatically adds the @code{cmake} package to the set of inputs. Which package is used can be specified with the @code{#:cmake} parameter."
14734 msgstr ""
14735
14736 #. type: defvr
14737 #: guix-git/doc/guix.texi:7683
14738 msgid "The @code{#:configure-flags} parameter is taken as a list of flags passed to the @command{cmake} command. The @code{#:build-type} parameter specifies in abstract terms the flags passed to the compiler; it defaults to @code{\"RelWithDebInfo\"} (short for ``release mode with debugging information''), which roughly means that code is compiled with @code{-O2 -g}, as is the case for Autoconf-based packages by default."
14739 msgstr ""
14740
14741 #. type: defvr
14742 #: guix-git/doc/guix.texi:7685
14743 #, no-wrap
14744 msgid "{Scheme Variable} dune-build-system"
14745 msgstr ""
14746
14747 #. type: defvr
14748 #: guix-git/doc/guix.texi:7692
14749 msgid "This variable is exported by @code{(guix build-system dune)}. It supports builds of packages using @uref{https://dune.build/, Dune}, a build tool for the OCaml programming language. It is implemented as an extension of the @code{ocaml-build-system} which is described below. As such, the @code{#:ocaml} and @code{#:findlib} parameters can be passed to this build system."
14750 msgstr ""
14751
14752 #. type: defvr
14753 #: guix-git/doc/guix.texi:7696
14754 msgid "It automatically adds the @code{dune} package to the set of inputs. Which package is used can be specified with the @code{#:dune} parameter."
14755 msgstr ""
14756
14757 #. type: defvr
14758 #: guix-git/doc/guix.texi:7700
14759 msgid "There is no @code{configure} phase because dune packages typically don't need to be configured. The @code{#:build-flags} parameter is taken as a list of flags passed to the @code{dune} command during the build."
14760 msgstr ""
14761
14762 #. type: defvr
14763 #: guix-git/doc/guix.texi:7704
14764 msgid "The @code{#:jbuild?} parameter can be passed to use the @code{jbuild} command instead of the more recent @code{dune} command while building a package. Its default value is @code{#f}."
14765 msgstr ""
14766
14767 #. type: defvr
14768 #: guix-git/doc/guix.texi:7709
14769 msgid "The @code{#:package} parameter can be passed to specify a package name, which is useful when a package contains multiple packages and you want to build only one of them. This is equivalent to passing the @code{-p} argument to @code{dune}."
14770 msgstr ""
14771
14772 #. type: defvr
14773 #: guix-git/doc/guix.texi:7711
14774 #, no-wrap
14775 msgid "{Scheme Variable} go-build-system"
14776 msgstr ""
14777
14778 #. type: defvr
14779 #: guix-git/doc/guix.texi:7716
14780 msgid "This variable is exported by @code{(guix build-system go)}. It implements a build procedure for Go packages using the standard @url{https://golang.org/cmd/go/#hdr-Compile_packages_and_dependencies, Go build mechanisms}."
14781 msgstr ""
14782
14783 #. type: defvr
14784 #: guix-git/doc/guix.texi:7727
14785 msgid "The user is expected to provide a value for the key @code{#:import-path} and, in some cases, @code{#:unpack-path}. The @url{https://golang.org/doc/code.html#ImportPaths, import path} corresponds to the file system path expected by the package's build scripts and any referring packages, and provides a unique way to refer to a Go package. It is typically based on a combination of the package source code's remote URI and file system hierarchy structure. In some cases, you will need to unpack the package's source code to a different directory structure than the one indicated by the import path, and @code{#:unpack-path} should be used in such cases."
14786 msgstr ""
14787
14788 #. type: defvr
14789 #: guix-git/doc/guix.texi:7732
14790 msgid "Packages that provide Go libraries should install their source code into the built output. The key @code{#:install-source?}, which defaults to @code{#t}, controls whether or not the source code is installed. It can be set to @code{#f} for packages that only provide executable files."
14791 msgstr ""
14792
14793 #. type: defvr
14794 #: guix-git/doc/guix.texi:7734
14795 #, no-wrap
14796 msgid "{Scheme Variable} glib-or-gtk-build-system"
14797 msgstr ""
14798
14799 #. type: defvr
14800 #: guix-git/doc/guix.texi:7737
14801 msgid "This variable is exported by @code{(guix build-system glib-or-gtk)}. It is intended for use with packages making use of GLib or GTK+."
14802 msgstr ""
14803
14804 #. type: defvr
14805 #: guix-git/doc/guix.texi:7740
14806 msgid "This build system adds the following two phases to the ones defined by @code{gnu-build-system}:"
14807 msgstr ""
14808
14809 #. type: item
14810 #: guix-git/doc/guix.texi:7742 guix-git/doc/guix.texi:8210
14811 #, no-wrap
14812 msgid "glib-or-gtk-wrap"
14813 msgstr ""
14814
14815 #. type: table
14816 #: guix-git/doc/guix.texi:7749
14817 msgid "The phase @code{glib-or-gtk-wrap} ensures that programs in @file{bin/} are able to find GLib ``schemas'' and @uref{https://developer.gnome.org/gtk3/stable/gtk-running.html, GTK+ modules}. This is achieved by wrapping the programs in launch scripts that appropriately set the @env{XDG_DATA_DIRS} and @env{GTK_PATH} environment variables."
14818 msgstr ""
14819
14820 #. type: table
14821 #: guix-git/doc/guix.texi:7756
14822 msgid "It is possible to exclude specific package outputs from that wrapping process by listing their names in the @code{#:glib-or-gtk-wrap-excluded-outputs} parameter. This is useful when an output is known not to contain any GLib or GTK+ binaries, and where wrapping would gratuitously add a dependency of that output on GLib and GTK+."
14823 msgstr ""
14824
14825 #. type: item
14826 #: guix-git/doc/guix.texi:7757 guix-git/doc/guix.texi:8214
14827 #, no-wrap
14828 msgid "glib-or-gtk-compile-schemas"
14829 msgstr ""
14830
14831 #. type: table
14832 #: guix-git/doc/guix.texi:7765
14833 msgid "The phase @code{glib-or-gtk-compile-schemas} makes sure that all @uref{https://developer.gnome.org/gio/stable/glib-compile-schemas.html, GSettings schemas} of GLib are compiled. Compilation is performed by the @command{glib-compile-schemas} program. It is provided by the package @code{glib:bin} which is automatically imported by the build system. The @code{glib} package providing @command{glib-compile-schemas} can be specified with the @code{#:glib} parameter."
14834 msgstr ""
14835
14836 #. type: defvr
14837 #: guix-git/doc/guix.texi:7768
14838 msgid "Both phases are executed after the @code{install} phase."
14839 msgstr ""
14840
14841 #. type: defvr
14842 #: guix-git/doc/guix.texi:7770
14843 #, no-wrap
14844 msgid "{Scheme Variable} guile-build-system"
14845 msgstr ""
14846
14847 #. type: defvr
14848 #: guix-git/doc/guix.texi:7777
14849 msgid "This build system is for Guile packages that consist exclusively of Scheme code and that are so lean that they don't even have a makefile, let alone a @file{configure} script. It compiles Scheme code using @command{guild compile} (@pxref{Compilation,,, guile, GNU Guile Reference Manual}) and installs the @file{.scm} and @file{.go} files in the right place. It also installs documentation."
14850 msgstr ""
14851
14852 #. type: defvr
14853 #: guix-git/doc/guix.texi:7780
14854 msgid "This build system supports cross-compilation by using the @option{--target} option of @samp{guild compile}."
14855 msgstr ""
14856
14857 #. type: defvr
14858 #: guix-git/doc/guix.texi:7783
14859 msgid "Packages built with @code{guile-build-system} must provide a Guile package in their @code{native-inputs} field."
14860 msgstr ""
14861
14862 #. type: defvr
14863 #: guix-git/doc/guix.texi:7785
14864 #, no-wrap
14865 msgid "{Scheme Variable} julia-build-system"
14866 msgstr ""
14867
14868 #. type: defvr
14869 #: guix-git/doc/guix.texi:7792
14870 msgid "This variable is exported by @code{(guix build-system julia)}. It implements the build procedure used by @uref{https://julialang.org/, julia} packages, which essentially is similar to running @samp{julia -e 'using Pkg; Pkg.add(package)'} in an environment where @env{JULIA_LOAD_PATH} contains the paths to all Julia package inputs. Tests are run by calling @code{/test/runtests.jl}."
14871 msgstr ""
14872
14873 #. type: defvr
14874 #: guix-git/doc/guix.texi:7796
14875 msgid "The Julia package name is read from the file @file{Project.toml}. This value can be overridden by passing the argument @code{#:julia-package-name} (which must be correctly capitalized)."
14876 msgstr ""
14877
14878 #. type: defvr
14879 #: guix-git/doc/guix.texi:7800
14880 msgid "Julia packages usually manage their binary dependencies via @code{JLLWrappers.jl}, a Julia package that creates a module (named after the wrapped library followed by @code{_jll.jl}."
14881 msgstr ""
14882
14883 #. type: defvr
14884 #: guix-git/doc/guix.texi:7805
14885 msgid "To add the binary path @code{_jll.jl} packages, you need to patch the files under @file{src/wrappers/}, replacing the call to the macro @code{JLLWrappers.@@generate_wrapper_header}, adding as a second argument containing the store path the binary."
14886 msgstr ""
14887
14888 #. type: defvr
14889 #: guix-git/doc/guix.texi:7809
14890 msgid "As an example, in the MbedTLS Julia package, we add a build phase (@pxref{Build Phases}) to insert the absolute file name of the wrapped MbedTLS package:"
14891 msgstr ""
14892
14893 #. type: lisp
14894 #: guix-git/doc/guix.texi:7821
14895 #, no-wrap
14896 msgid ""
14897 "(add-after 'unpack 'override-binary-path\n"
14898 " (lambda* (#:key inputs #:allow-other-keys)\n"
14899 " (for-each (lambda (wrapper)\n"
14900 " (substitute* wrapper\n"
14901 " ((\"generate_wrapper_header.*\")\n"
14902 " (string-append\n"
14903 " \"generate_wrapper_header(\\\"MbedTLS\\\", \\\"\"\n"
14904 " (assoc-ref inputs \"mbedtls-apache\") \"\\\")\\n\"))))\n"
14905 " ;; There's a Julia file for each platform, override them all.\n"
14906 " (find-files \"src/wrappers/\" \"\\\\.jl$\"))))\n"
14907 msgstr ""
14908
14909 #. type: defvr
14910 #: guix-git/doc/guix.texi:7829
14911 msgid "Some older packages that aren't using @file{Package.toml} yet, will require this file to be created, too. The function @code{julia-create-package-toml} helps creating the file. You need to pass the outputs and the source of the package, it's name (the same as the @code{file-name} parameter), the package uuid, the package version, and a list of dependencies specified by their name and their uuid."
14912 msgstr ""
14913
14914 #. type: defvr
14915 #: guix-git/doc/guix.texi:7831
14916 #, no-wrap
14917 msgid "{Scheme Variable} maven-build-system"
14918 msgstr ""
14919
14920 #. type: defvr
14921 #: guix-git/doc/guix.texi:7838
14922 msgid "This variable is exported by @code{(guix build-system maven)}. It implements a build procedure for @uref{https://maven.apache.org, Maven} packages. Maven is a dependency and lifecycle management tool for Java. A user of Maven specifies dependencies and plugins in a @file{pom.xml} file that Maven reads. When Maven does not have one of the dependencies or plugins in its repository, it will download them and use them to build the package."
14923 msgstr ""
14924
14925 #. type: defvr
14926 #: guix-git/doc/guix.texi:7848
14927 msgid "The maven build system ensures that maven will not try to download any dependency by running in offline mode. Maven will fail if a dependency is missing. Before running Maven, the @file{pom.xml} (and subprojects) are modified to specify the version of dependencies and plugins that match the versions available in the guix build environment. Dependencies and plugins must be installed in the fake maven repository at @file{lib/m2}, and are symlinked into a proper repository before maven is run. Maven is instructed to use that repository for the build and installs built artifacts there. Changed files are copied to the @file{lib/m2} directory of the package output."
14928 msgstr ""
14929
14930 #. type: defvr
14931 #: guix-git/doc/guix.texi:7851
14932 msgid "You can specify a @file{pom.xml} file with the @code{#:pom-file} argument, or let the build system use the default @file{pom.xml} file in the sources."
14933 msgstr ""
14934
14935 #. type: defvr
14936 #: guix-git/doc/guix.texi:7857
14937 msgid "In case you need to specify a dependency's version manually, you can use the @code{#:local-packages} argument. It takes an association list where the key is the groupId of the package and its value is an association list where the key is the artifactId of the package and its value is the version you want to override in the @file{pom.xml}."
14938 msgstr ""
14939
14940 #. type: defvr
14941 #: guix-git/doc/guix.texi:7863
14942 msgid "Some packages use dependencies or plugins that are not useful at runtime nor at build time in Guix. You can alter the @file{pom.xml} file to remove them using the @code{#:exclude} argument. Its value is an association list where the key is the groupId of the plugin or dependency you want to remove, and the value is a list of artifactId you want to remove."
14943 msgstr ""
14944
14945 #. type: defvr
14946 #: guix-git/doc/guix.texi:7866
14947 msgid "You can override the default @code{jdk} and @code{maven} packages with the corresponding argument, @code{#:jdk} and @code{#:maven}."
14948 msgstr ""
14949
14950 #. type: defvr
14951 #: guix-git/doc/guix.texi:7871
14952 msgid "The @code{#:maven-plugins} argument is a list of maven plugins used during the build, with the same format as the @code{inputs} fields of the package declaration. Its default value is @code{(default-maven-plugins)} which is also exported."
14953 msgstr ""
14954
14955 #. type: defvr
14956 #: guix-git/doc/guix.texi:7873
14957 #, no-wrap
14958 msgid "{Scheme Variable} minify-build-system"
14959 msgstr ""
14960
14961 #. type: defvr
14962 #: guix-git/doc/guix.texi:7876
14963 msgid "This variable is exported by @code{(guix build-system minify)}. It implements a minification procedure for simple JavaScript packages."
14964 msgstr ""
14965
14966 #. type: defvr
14967 #: guix-git/doc/guix.texi:7882
14968 msgid "It adds @code{uglify-js} to the set of inputs and uses it to compress all JavaScript files in the @file{src} directory. A different minifier package can be specified with the @code{#:uglify-js} parameter, but it is expected that the package writes the minified code to the standard output."
14969 msgstr ""
14970
14971 #. type: defvr
14972 #: guix-git/doc/guix.texi:7886
14973 msgid "When the input JavaScript files are not all located in the @file{src} directory, the parameter @code{#:javascript-files} can be used to specify a list of file names to feed to the minifier."
14974 msgstr ""
14975
14976 #. type: defvr
14977 #: guix-git/doc/guix.texi:7888
14978 #, no-wrap
14979 msgid "{Scheme Variable} ocaml-build-system"
14980 msgstr ""
14981
14982 #. type: defvr
14983 #: guix-git/doc/guix.texi:7894
14984 msgid "This variable is exported by @code{(guix build-system ocaml)}. It implements a build procedure for @uref{https://ocaml.org, OCaml} packages, which consists of choosing the correct set of commands to run for each package. OCaml packages can expect many different commands to be run. This build system will try some of them."
14985 msgstr ""
14986
14987 #. type: defvr
14988 #: guix-git/doc/guix.texi:7904
14989 msgid "When the package has a @file{setup.ml} file present at the top-level, it will run @code{ocaml setup.ml -configure}, @code{ocaml setup.ml -build} and @code{ocaml setup.ml -install}. The build system will assume that this file was generated by @uref{http://oasis.forge.ocamlcore.org/, OASIS} and will take care of setting the prefix and enabling tests if they are not disabled. You can pass configure and build flags with the @code{#:configure-flags} and @code{#:build-flags}. The @code{#:test-flags} key can be passed to change the set of flags used to enable tests. The @code{#:use-make?} key can be used to bypass this system in the build and install phases."
14990 msgstr ""
14991
14992 #. type: defvr
14993 #: guix-git/doc/guix.texi:7909
14994 msgid "When the package has a @file{configure} file, it is assumed that it is a hand-made configure script that requires a different argument format than in the @code{gnu-build-system}. You can add more flags with the @code{#:configure-flags} key."
14995 msgstr ""
14996
14997 #. type: defvr
14998 #: guix-git/doc/guix.texi:7913
14999 msgid "When the package has a @file{Makefile} file (or @code{#:use-make?} is @code{#t}), it will be used and more flags can be passed to the build and install phases with the @code{#:make-flags} key."
15000 msgstr ""
15001
15002 #. type: defvr
15003 #: guix-git/doc/guix.texi:7921
15004 msgid "Finally, some packages do not have these files and use a somewhat standard location for its build system. In that case, the build system will run @code{ocaml pkg/pkg.ml} or @code{ocaml pkg/build.ml} and take care of providing the path to the required findlib module. Additional flags can be passed via the @code{#:build-flags} key. Install is taken care of by @command{opam-installer}. In this case, the @code{opam} package must be added to the @code{native-inputs} field of the package definition."
15005 msgstr ""
15006
15007 #. type: defvr
15008 #: guix-git/doc/guix.texi:7929
15009 msgid "Note that most OCaml packages assume they will be installed in the same directory as OCaml, which is not what we want in guix. In particular, they will install @file{.so} files in their module's directory, which is usually fine because it is in the OCaml compiler directory. In guix though, these libraries cannot be found and we use @env{CAML_LD_LIBRARY_PATH}. This variable points to @file{lib/ocaml/site-lib/stubslibs} and this is where @file{.so} libraries should be installed."
15010 msgstr ""
15011
15012 #. type: defvr
15013 #: guix-git/doc/guix.texi:7931
15014 #, no-wrap
15015 msgid "{Scheme Variable} python-build-system"
15016 msgstr ""
15017
15018 #. type: defvr
15019 #: guix-git/doc/guix.texi:7936
15020 msgid "This variable is exported by @code{(guix build-system python)}. It implements the more or less standard build procedure used by Python packages, which consists in running @code{python setup.py build} and then @code{python setup.py install --prefix=/gnu/store/@dots{}}."
15021 msgstr ""
15022
15023 #. type: defvr
15024 #: guix-git/doc/guix.texi:7940
15025 msgid "For packages that install stand-alone Python programs under @code{bin/}, it takes care of wrapping these programs so that their @env{PYTHONPATH} environment variable points to all the Python libraries they depend on."
15026 msgstr ""
15027
15028 #. type: defvr
15029 #: guix-git/doc/guix.texi:7946
15030 msgid "Which Python package is used to perform the build can be specified with the @code{#:python} parameter. This is a useful way to force a package to be built for a specific version of the Python interpreter, which might be necessary if the package is only compatible with a single interpreter version."
15031 msgstr ""
15032
15033 #. type: defvr
15034 #: guix-git/doc/guix.texi:7951
15035 msgid "By default guix calls @code{setup.py} under control of @code{setuptools}, much like @command{pip} does. Some packages are not compatible with setuptools (and pip), thus you can disable this by setting the @code{#:use-setuptools?} parameter to @code{#f}."
15036 msgstr ""
15037
15038 #. type: defvr
15039 #: guix-git/doc/guix.texi:7953
15040 #, no-wrap
15041 msgid "{Scheme Variable} perl-build-system"
15042 msgstr ""
15043
15044 #. type: defvr
15045 #: guix-git/doc/guix.texi:7965
15046 msgid "This variable is exported by @code{(guix build-system perl)}. It implements the standard build procedure for Perl packages, which either consists in running @code{perl Build.PL --prefix=/gnu/store/@dots{}}, followed by @code{Build} and @code{Build install}; or in running @code{perl Makefile.PL PREFIX=/gnu/store/@dots{}}, followed by @code{make} and @code{make install}, depending on which of @code{Build.PL} or @code{Makefile.PL} is present in the package distribution. Preference is given to the former if both @code{Build.PL} and @code{Makefile.PL} exist in the package distribution. This preference can be reversed by specifying @code{#t} for the @code{#:make-maker?} parameter."
15047 msgstr ""
15048
15049 #. type: defvr
15050 #: guix-git/doc/guix.texi:7969
15051 msgid "The initial @code{perl Makefile.PL} or @code{perl Build.PL} invocation passes flags specified by the @code{#:make-maker-flags} or @code{#:module-build-flags} parameter, respectively."
15052 msgstr ""
15053
15054 #. type: defvr
15055 #: guix-git/doc/guix.texi:7971
15056 msgid "Which Perl package is used can be specified with @code{#:perl}."
15057 msgstr ""
15058
15059 #. type: defvr
15060 #: guix-git/doc/guix.texi:7973
15061 #, no-wrap
15062 msgid "{Scheme Variable} renpy-build-system"
15063 msgstr ""
15064
15065 #. type: defvr
15066 #: guix-git/doc/guix.texi:7977
15067 msgid "This variable is exported by @code{(guix build-system renpy)}. It implements the more or less standard build procedure used by Ren'py games, which consists of loading @code{#:game} once, thereby creating bytecode for it."
15068 msgstr ""
15069
15070 #. type: defvr
15071 #: guix-git/doc/guix.texi:7980
15072 msgid "It further creates a wrapper script in @code{bin/} and a desktop entry in @code{share/applications}, both of which can be used to launch the game."
15073 msgstr ""
15074
15075 #. type: defvr
15076 #: guix-git/doc/guix.texi:7984
15077 msgid "Which Ren'py package is used can be specified with @code{#:renpy}. Games can also be installed in outputs other than ``out'' by using @code{#:output}."
15078 msgstr ""
15079
15080 #. type: defvr
15081 #: guix-git/doc/guix.texi:7986
15082 #, no-wrap
15083 msgid "{Scheme Variable} qt-build-system"
15084 msgstr ""
15085
15086 #. type: defvr
15087 #: guix-git/doc/guix.texi:7989
15088 msgid "This variable is exported by @code{(guix build-system qt)}. It is intended for use with applications using Qt or KDE."
15089 msgstr ""
15090
15091 #. type: defvr
15092 #: guix-git/doc/guix.texi:7992
15093 msgid "This build system adds the following two phases to the ones defined by @code{cmake-build-system}:"
15094 msgstr ""
15095
15096 #. type: item
15097 #: guix-git/doc/guix.texi:7994
15098 #, no-wrap
15099 msgid "check-setup"
15100 msgstr ""
15101
15102 #. type: table
15103 #: guix-git/doc/guix.texi:8001
15104 msgid "The phase @code{check-setup} prepares the environment for running the checks as commonly used by Qt test programs. For now this only sets some environment variables: @code{QT_QPA_PLATFORM=offscreen}, @code{DBUS_FATAL_WARNINGS=0} and @code{CTEST_OUTPUT_ON_FAILURE=1}."
15105 msgstr ""
15106
15107 #. type: table
15108 #: guix-git/doc/guix.texi:8004
15109 msgid "This phase is added before the @code{check} phase. It's a separate phase to ease adjusting if necessary."
15110 msgstr ""
15111
15112 #. type: item
15113 #: guix-git/doc/guix.texi:8005
15114 #, no-wrap
15115 msgid "qt-wrap"
15116 msgstr ""
15117
15118 #. type: table
15119 #: guix-git/doc/guix.texi:8011
15120 msgid "The phase @code{qt-wrap} searches for Qt5 plugin paths, QML paths and some XDG in the inputs and output. In case some path is found, all programs in the output's @file{bin/}, @file{sbin/}, @file{libexec/} and @file{lib/libexec/} directories are wrapped in scripts defining the necessary environment variables."
15121 msgstr ""
15122
15123 #. type: table
15124 #: guix-git/doc/guix.texi:8017
15125 msgid "It is possible to exclude specific package outputs from that wrapping process by listing their names in the @code{#:qt-wrap-excluded-outputs} parameter. This is useful when an output is known not to contain any Qt binaries, and where wrapping would gratuitously add a dependency of that output on Qt, KDE, or such."
15126 msgstr ""
15127
15128 #. type: table
15129 #: guix-git/doc/guix.texi:8019
15130 msgid "This phase is added after the @code{install} phase."
15131 msgstr ""
15132
15133 #. type: defvr
15134 #: guix-git/doc/guix.texi:8022
15135 #, no-wrap
15136 msgid "{Scheme Variable} r-build-system"
15137 msgstr ""
15138
15139 #. type: defvr
15140 #: guix-git/doc/guix.texi:8030
15141 msgid "This variable is exported by @code{(guix build-system r)}. It implements the build procedure used by @uref{https://r-project.org, R} packages, which essentially is little more than running @samp{R CMD INSTALL --library=/gnu/store/@dots{}} in an environment where @env{R_LIBS_SITE} contains the paths to all R package inputs. Tests are run after installation using the R function @code{tools::testInstalledPackage}."
15142 msgstr ""
15143
15144 #. type: defvr
15145 #: guix-git/doc/guix.texi:8032
15146 #, no-wrap
15147 msgid "{Scheme Variable} rakudo-build-system"
15148 msgstr ""
15149
15150 #. type: defvr
15151 #: guix-git/doc/guix.texi:8040
15152 msgid "This variable is exported by @code{(guix build-system rakudo)}. It implements the build procedure used by @uref{https://rakudo.org/, Rakudo} for @uref{https://perl6.org/, Perl6} packages. It installs the package to @code{/gnu/store/@dots{}/NAME-VERSION/share/perl6} and installs the binaries, library files and the resources, as well as wrap the files under the @code{bin/} directory. Tests can be skipped by passing @code{#f} to the @code{tests?} parameter."
15153 msgstr ""
15154
15155 #. type: defvr
15156 #: guix-git/doc/guix.texi:8048
15157 msgid "Which rakudo package is used can be specified with @code{rakudo}. Which perl6-tap-harness package used for the tests can be specified with @code{#:prove6} or removed by passing @code{#f} to the @code{with-prove6?} parameter. Which perl6-zef package used for tests and installing can be specified with @code{#:zef} or removed by passing @code{#f} to the @code{with-zef?} parameter."
15158 msgstr ""
15159
15160 #. type: defvr
15161 #: guix-git/doc/guix.texi:8050
15162 #, no-wrap
15163 msgid "{Scheme Variable} texlive-build-system"
15164 msgstr ""
15165
15166 #. type: defvr
15167 #: guix-git/doc/guix.texi:8055
15168 msgid "This variable is exported by @code{(guix build-system texlive)}. It is used to build TeX packages in batch mode with a specified engine. The build system sets the @env{TEXINPUTS} variable to find all TeX source files in the inputs."
15169 msgstr ""
15170
15171 #. type: defvr
15172 #: guix-git/doc/guix.texi:8064
15173 msgid "By default it runs @code{luatex} on all files ending on @code{ins}. A different engine and format can be specified with the @code{#:tex-format} argument. Different build targets can be specified with the @code{#:build-targets} argument, which expects a list of file names. The build system adds only @code{texlive-bin} and @code{texlive-latex-base} (both from @code{(gnu packages tex}) to the inputs. Both can be overridden with the arguments @code{#:texlive-bin} and @code{#:texlive-latex-base}, respectively."
15174 msgstr ""
15175
15176 #. type: defvr
15177 #: guix-git/doc/guix.texi:8067
15178 msgid "The @code{#:tex-directory} parameter tells the build system where to install the built files under the texmf tree."
15179 msgstr ""
15180
15181 #. type: defvr
15182 #: guix-git/doc/guix.texi:8069
15183 #, no-wrap
15184 msgid "{Scheme Variable} ruby-build-system"
15185 msgstr ""
15186
15187 #. type: defvr
15188 #: guix-git/doc/guix.texi:8073
15189 msgid "This variable is exported by @code{(guix build-system ruby)}. It implements the RubyGems build procedure used by Ruby packages, which involves running @code{gem build} followed by @code{gem install}."
15190 msgstr ""
15191
15192 #. type: defvr
15193 #: guix-git/doc/guix.texi:8081
15194 msgid "The @code{source} field of a package that uses this build system typically references a gem archive, since this is the format that Ruby developers use when releasing their software. The build system unpacks the gem archive, potentially patches the source, runs the test suite, repackages the gem, and installs it. Additionally, directories and tarballs may be referenced to allow building unreleased gems from Git or a traditional source release tarball."
15195 msgstr ""
15196
15197 #. type: defvr
15198 #: guix-git/doc/guix.texi:8085
15199 msgid "Which Ruby package is used can be specified with the @code{#:ruby} parameter. A list of additional flags to be passed to the @command{gem} command can be specified with the @code{#:gem-flags} parameter."
15200 msgstr ""
15201
15202 #. type: defvr
15203 #: guix-git/doc/guix.texi:8087
15204 #, no-wrap
15205 msgid "{Scheme Variable} waf-build-system"
15206 msgstr ""
15207
15208 #. type: defvr
15209 #: guix-git/doc/guix.texi:8093
15210 msgid "This variable is exported by @code{(guix build-system waf)}. It implements a build procedure around the @code{waf} script. The common phases---@code{configure}, @code{build}, and @code{install}---are implemented by passing their names as arguments to the @code{waf} script."
15211 msgstr ""
15212
15213 #. type: defvr
15214 #: guix-git/doc/guix.texi:8097
15215 msgid "The @code{waf} script is executed by the Python interpreter. Which Python package is used to run the script can be specified with the @code{#:python} parameter."
15216 msgstr ""
15217
15218 #. type: defvr
15219 #: guix-git/doc/guix.texi:8099
15220 #, no-wrap
15221 msgid "{Scheme Variable} scons-build-system"
15222 msgstr ""
15223
15224 #. type: defvr
15225 #: guix-git/doc/guix.texi:8105
15226 msgid "This variable is exported by @code{(guix build-system scons)}. It implements the build procedure used by the SCons software construction tool. This build system runs @code{scons} to build the package, @code{scons test} to run tests, and then @code{scons install} to install the package."
15227 msgstr ""
15228
15229 #. type: defvr
15230 #: guix-git/doc/guix.texi:8112
15231 msgid "Additional flags to be passed to @code{scons} can be specified with the @code{#:scons-flags} parameter. The default build and install targets can be overridden with @code{#:build-targets} and @code{#:install-targets} respectively. The version of Python used to run SCons can be specified by selecting the appropriate SCons package with the @code{#:scons} parameter."
15232 msgstr ""
15233
15234 #. type: defvr
15235 #: guix-git/doc/guix.texi:8114
15236 #, no-wrap
15237 msgid "{Scheme Variable} haskell-build-system"
15238 msgstr ""
15239
15240 #. type: defvr
15241 #: guix-git/doc/guix.texi:8128
15242 msgid "This variable is exported by @code{(guix build-system haskell)}. It implements the Cabal build procedure used by Haskell packages, which involves running @code{runhaskell Setup.hs configure --prefix=/gnu/store/@dots{}} and @code{runhaskell Setup.hs build}. Instead of installing the package by running @code{runhaskell Setup.hs install}, to avoid trying to register libraries in the read-only compiler store directory, the build system uses @code{runhaskell Setup.hs copy}, followed by @code{runhaskell Setup.hs register}. In addition, the build system generates the package documentation by running @code{runhaskell Setup.hs haddock}, unless @code{#:haddock? #f} is passed. Optional Haddock parameters can be passed with the help of the @code{#:haddock-flags} parameter. If the file @code{Setup.hs} is not found, the build system looks for @code{Setup.lhs} instead."
15243 msgstr ""
15244
15245 #. type: defvr
15246 #: guix-git/doc/guix.texi:8131
15247 msgid "Which Haskell compiler is used can be specified with the @code{#:haskell} parameter which defaults to @code{ghc}."
15248 msgstr ""
15249
15250 #. type: defvr
15251 #: guix-git/doc/guix.texi:8133
15252 #, no-wrap
15253 msgid "{Scheme Variable} dub-build-system"
15254 msgstr ""
15255
15256 #. type: defvr
15257 #: guix-git/doc/guix.texi:8138
15258 msgid "This variable is exported by @code{(guix build-system dub)}. It implements the Dub build procedure used by D packages, which involves running @code{dub build} and @code{dub run}. Installation is done by copying the files manually."
15259 msgstr ""
15260
15261 #. type: defvr
15262 #: guix-git/doc/guix.texi:8141
15263 msgid "Which D compiler is used can be specified with the @code{#:ldc} parameter which defaults to @code{ldc}."
15264 msgstr ""
15265
15266 #. type: anchor{#1}
15267 #: guix-git/doc/guix.texi:8144
15268 msgid "emacs-build-system"
15269 msgstr ""
15270
15271 #. type: defvr
15272 #: guix-git/doc/guix.texi:8144
15273 #, no-wrap
15274 msgid "{Scheme Variable} emacs-build-system"
15275 msgstr ""
15276
15277 #. type: defvr
15278 #: guix-git/doc/guix.texi:8148
15279 msgid "This variable is exported by @code{(guix build-system emacs)}. It implements an installation procedure similar to the packaging system of Emacs itself (@pxref{Packages,,, emacs, The GNU Emacs Manual})."
15280 msgstr ""
15281
15282 #. type: defvr
15283 #: guix-git/doc/guix.texi:8154
15284 msgid "It first creates the @code{@code{package}-autoloads.el} file, then it byte compiles all Emacs Lisp files. Differently from the Emacs packaging system, the Info documentation files are moved to the standard documentation directory and the @file{dir} file is deleted. The Elisp package files are installed directly under @file{share/emacs/site-lisp}."
15285 msgstr ""
15286
15287 #. type: defvr
15288 #: guix-git/doc/guix.texi:8156
15289 #, no-wrap
15290 msgid "{Scheme Variable} font-build-system"
15291 msgstr ""
15292
15293 #. type: defvr
15294 #: guix-git/doc/guix.texi:8162
15295 msgid "This variable is exported by @code{(guix build-system font)}. It implements an installation procedure for font packages where upstream provides pre-compiled TrueType, OpenType, etc.@: font files that merely need to be copied into place. It copies font files to standard locations in the output directory."
15296 msgstr ""
15297
15298 #. type: defvr
15299 #: guix-git/doc/guix.texi:8164
15300 #, no-wrap
15301 msgid "{Scheme Variable} meson-build-system"
15302 msgstr ""
15303
15304 #. type: defvr
15305 #: guix-git/doc/guix.texi:8168
15306 msgid "This variable is exported by @code{(guix build-system meson)}. It implements the build procedure for packages that use @url{https://mesonbuild.com, Meson} as their build system."
15307 msgstr ""
15308
15309 #. type: defvr
15310 #: guix-git/doc/guix.texi:8174
15311 msgid "It adds both Meson and @uref{https://ninja-build.org/, Ninja} to the set of inputs, and they can be changed with the parameters @code{#:meson} and @code{#:ninja} if needed. The default Meson is @code{meson-for-build}, which is special because it doesn't clear the @code{RUNPATH} of binaries and libraries when they are installed."
15312 msgstr ""
15313
15314 #. type: defvr
15315 #: guix-git/doc/guix.texi:8177
15316 msgid "This build system is an extension of @code{gnu-build-system}, but with the following phases changed to some specific for Meson:"
15317 msgstr ""
15318
15319 #. type: item
15320 #: guix-git/doc/guix.texi:8180 guix-git/doc/guix.texi:8229
15321 #: guix-git/doc/guix.texi:8297
15322 #, no-wrap
15323 msgid "configure"
15324 msgstr ""
15325
15326 #. type: table
15327 #: guix-git/doc/guix.texi:8185
15328 msgid "The phase runs @code{meson} with the flags specified in @code{#:configure-flags}. The flag @option{--buildtype} is always set to @code{debugoptimized} unless something else is specified in @code{#:build-type}."
15329 msgstr ""
15330
15331 #. type: table
15332 #: guix-git/doc/guix.texi:8189
15333 msgid "The phase runs @code{ninja} to build the package in parallel by default, but this can be changed with @code{#:parallel-build?}."
15334 msgstr ""
15335
15336 #. type: table
15337 #: guix-git/doc/guix.texi:8193
15338 msgid "The phase runs @code{ninja} with the target specified in @code{#:test-target}, which is @code{\"test\"} by default."
15339 msgstr ""
15340
15341 #. type: table
15342 #: guix-git/doc/guix.texi:8196
15343 msgid "The phase runs @code{ninja install} and can not be changed."
15344 msgstr ""
15345
15346 #. type: defvr
15347 #: guix-git/doc/guix.texi:8199
15348 msgid "Apart from that, the build system also adds the following phases:"
15349 msgstr ""
15350
15351 #. type: item
15352 #: guix-git/doc/guix.texi:8202
15353 #, no-wrap
15354 msgid "fix-runpath"
15355 msgstr ""
15356
15357 #. type: table
15358 #: guix-git/doc/guix.texi:8209
15359 msgid "This phase ensures that all binaries can find the libraries they need. It searches for required libraries in subdirectories of the package being built, and adds those to @code{RUNPATH} where needed. It also removes references to libraries left over from the build phase by @code{meson-for-build}, such as test dependencies, that aren't actually required for the program to run."
15360 msgstr ""
15361
15362 #. type: table
15363 #: guix-git/doc/guix.texi:8213 guix-git/doc/guix.texi:8217
15364 msgid "This phase is the phase provided by @code{glib-or-gtk-build-system}, and it is not enabled by default. It can be enabled with @code{#:glib-or-gtk?}."
15365 msgstr ""
15366
15367 #. type: defvr
15368 #: guix-git/doc/guix.texi:8220
15369 #, no-wrap
15370 msgid "{Scheme Variable} linux-module-build-system"
15371 msgstr ""
15372
15373 #. type: defvr
15374 #: guix-git/doc/guix.texi:8222
15375 msgid "@code{linux-module-build-system} allows building Linux kernel modules."
15376 msgstr ""
15377
15378 #. type: defvr
15379 #: guix-git/doc/guix.texi:8226
15380 msgid "This build system is an extension of @code{gnu-build-system}, but with the following phases changed:"
15381 msgstr ""
15382
15383 #. type: table
15384 #: guix-git/doc/guix.texi:8232
15385 msgid "This phase configures the environment so that the Linux kernel's Makefile can be used to build the external kernel module."
15386 msgstr ""
15387
15388 #. type: table
15389 #: guix-git/doc/guix.texi:8236
15390 msgid "This phase uses the Linux kernel's Makefile in order to build the external kernel module."
15391 msgstr ""
15392
15393 #. type: table
15394 #: guix-git/doc/guix.texi:8240
15395 msgid "This phase uses the Linux kernel's Makefile in order to install the external kernel module."
15396 msgstr ""
15397
15398 #. type: defvr
15399 #: guix-git/doc/guix.texi:8245
15400 msgid "It is possible and useful to specify the Linux kernel to use for building the module (in the @code{arguments} form of a package using the @code{linux-module-build-system}, use the key @code{#:linux} to specify it)."
15401 msgstr ""
15402
15403 #. type: defvr
15404 #: guix-git/doc/guix.texi:8247
15405 #, no-wrap
15406 msgid "{Scheme Variable} node-build-system"
15407 msgstr ""
15408
15409 #. type: defvr
15410 #: guix-git/doc/guix.texi:8252
15411 msgid "This variable is exported by @code{(guix build-system node)}. It implements the build procedure used by @uref{https://nodejs.org, Node.js}, which implements an approximation of the @code{npm install} command, followed by an @code{npm test} command."
15412 msgstr ""
15413
15414 #. type: defvr
15415 #: guix-git/doc/guix.texi:8256
15416 msgid "Which Node.js package is used to interpret the @code{npm} commands can be specified with the @code{#:node} parameter which defaults to @code{node}."
15417 msgstr ""
15418
15419 #. type: Plain text
15420 #: guix-git/doc/guix.texi:8262
15421 msgid "Lastly, for packages that do not need anything as sophisticated, a ``trivial'' build system is provided. It is trivial in the sense that it provides basically no support: it does not pull any implicit inputs, and does not have a notion of build phases."
15422 msgstr ""
15423
15424 #. type: defvr
15425 #: guix-git/doc/guix.texi:8263
15426 #, no-wrap
15427 msgid "{Scheme Variable} trivial-build-system"
15428 msgstr ""
15429
15430 #. type: defvr
15431 #: guix-git/doc/guix.texi:8265
15432 msgid "This variable is exported by @code{(guix build-system trivial)}."
15433 msgstr ""
15434
15435 #. type: defvr
15436 #: guix-git/doc/guix.texi:8270
15437 msgid "This build system requires a @code{#:builder} argument. This argument must be a Scheme expression that builds the package output(s)---as with @code{build-expression->derivation} (@pxref{Derivations, @code{build-expression->derivation}})."
15438 msgstr ""
15439
15440 #. type: cindex
15441 #: guix-git/doc/guix.texi:8275
15442 #, no-wrap
15443 msgid "build phases, for packages"
15444 msgstr ""
15445
15446 #. type: Plain text
15447 #: guix-git/doc/guix.texi:8281
15448 msgid "Almost all package build systems implement a notion @dfn{build phases}: a sequence of actions that the build system executes, when you build the package, leading to the installed byproducts in the store. A notable exception is the ``bare-bones'' @code{trivial-build-system} (@pxref{Build Systems})."
15449 msgstr ""
15450
15451 #. type: Plain text
15452 #: guix-git/doc/guix.texi:8285
15453 msgid "As discussed in the previous section, those build systems provide a standard list of phases. For @code{gnu-build-system}, the main build phases are the following:"
15454 msgstr ""
15455
15456 #. type: item
15457 #: guix-git/doc/guix.texi:8287
15458 #, no-wrap
15459 msgid "unpack"
15460 msgstr ""
15461
15462 #. type: table
15463 #: guix-git/doc/guix.texi:8291
15464 msgid "Unpack the source tarball, and change the current directory to the extracted source tree. If the source is actually a directory, copy it to the build tree, and enter that directory."
15465 msgstr ""
15466
15467 #. type: item
15468 #: guix-git/doc/guix.texi:8292
15469 #, no-wrap
15470 msgid "patch-source-shebangs"
15471 msgstr ""
15472
15473 #. type: table
15474 #: guix-git/doc/guix.texi:8296
15475 msgid "Patch shebangs encountered in source files so they refer to the right store file names. For instance, this changes @code{#!/bin/sh} to @code{#!/gnu/store/@dots{}-bash-4.3/bin/sh}."
15476 msgstr ""
15477
15478 #. type: table
15479 #: guix-git/doc/guix.texi:8301
15480 msgid "Run the @file{configure} script with a number of default options, such as @option{--prefix=/gnu/store/@dots{}}, as well as the options specified by the @code{#:configure-flags} argument."
15481 msgstr ""
15482
15483 #. type: table
15484 #: guix-git/doc/guix.texi:8306
15485 msgid "Run @code{make} with the list of flags specified with @code{#:make-flags}. If the @code{#:parallel-build?} argument is true (the default), build with @code{make -j}."
15486 msgstr ""
15487
15488 #. type: table
15489 #: guix-git/doc/guix.texi:8312
15490 msgid "Run @code{make check}, or some other target specified with @code{#:test-target}, unless @code{#:tests? #f} is passed. If the @code{#:parallel-tests?} argument is true (the default), run @code{make check -j}."
15491 msgstr ""
15492
15493 #. type: table
15494 #: guix-git/doc/guix.texi:8315
15495 msgid "Run @code{make install} with the flags listed in @code{#:make-flags}."
15496 msgstr ""
15497
15498 #. type: item
15499 #: guix-git/doc/guix.texi:8316
15500 #, no-wrap
15501 msgid "patch-shebangs"
15502 msgstr ""
15503
15504 #. type: table
15505 #: guix-git/doc/guix.texi:8318
15506 msgid "Patch shebangs on the installed executable files."
15507 msgstr ""
15508
15509 #. type: item
15510 #: guix-git/doc/guix.texi:8319
15511 #, no-wrap
15512 msgid "strip"
15513 msgstr ""
15514
15515 #. type: table
15516 #: guix-git/doc/guix.texi:8323
15517 msgid "Strip debugging symbols from ELF files (unless @code{#:strip-binaries?} is false), copying them to the @code{debug} output when available (@pxref{Installing Debugging Files})."
15518 msgstr ""
15519
15520 #. type: Plain text
15521 #: guix-git/doc/guix.texi:8332
15522 msgid "Other build systems have similar phases, with some variations. For example, @code{cmake-build-system} has same-named phases but its @code{configure} phases runs @code{cmake} instead of @code{./configure}. Others, such as @code{python-build-system}, have a wholly different list of standard phases. All this code runs on the @dfn{build side}: it is evaluated when you actually build the package, in a dedicated build process spawned by the build daemon (@pxref{Invoking guix-daemon})."
15523 msgstr ""
15524
15525 #. type: Plain text
15526 #: guix-git/doc/guix.texi:8339
15527 msgid "Build phases are represented as association lists or ``alists'' (@pxref{Association Lists,,, guile, GNU Guile Reference Manual}) where each key is a symbol for the name of the phase and the associated value is a procedure that accepts an arbitrary number of arguments. By convention, those procedures receive information about the build in the form of @dfn{keyword parameters}, which they can use or ignore."
15528 msgstr ""
15529
15530 #. type: vindex
15531 #: guix-git/doc/guix.texi:8340
15532 #, no-wrap
15533 msgid "%standard-phases"
15534 msgstr ""
15535
15536 #. type: Plain text
15537 #: guix-git/doc/guix.texi:8346
15538 msgid "For example, here is how @code{(guix build gnu-build-system)} defines @code{%standard-phases}, the variable holding its alist of build phases@footnote{We present a simplified view of those build phases, but do take a look at @code{(guix build gnu-build-system)} to see all the details!}:"
15539 msgstr ""
15540
15541 #. type: lisp
15542 #: guix-git/doc/guix.texi:8349
15543 #, no-wrap
15544 msgid ""
15545 ";; The build phases of 'gnu-build-system'.\n"
15546 "\n"
15547 msgstr ""
15548
15549 #. type: lisp
15550 #: guix-git/doc/guix.texi:8353
15551 #, no-wrap
15552 msgid ""
15553 "(define* (unpack #:key source #:allow-other-keys)\n"
15554 " ;; Extract the source tarball.\n"
15555 " (invoke \"tar\" \"xvf\" source))\n"
15556 "\n"
15557 msgstr ""
15558
15559 #. type: lisp
15560 #: guix-git/doc/guix.texi:8359
15561 #, no-wrap
15562 msgid ""
15563 "(define* (configure #:key outputs #:allow-other-keys)\n"
15564 " ;; Run the 'configure' script. Install to output \"out\".\n"
15565 " (let ((out (assoc-ref outputs \"out\")))\n"
15566 " (invoke \"./configure\"\n"
15567 " (string-append \"--prefix=\" out))))\n"
15568 "\n"
15569 msgstr ""
15570
15571 #. type: lisp
15572 #: guix-git/doc/guix.texi:8363
15573 #, no-wrap
15574 msgid ""
15575 "(define* (build #:allow-other-keys)\n"
15576 " ;; Compile.\n"
15577 " (invoke \"make\"))\n"
15578 "\n"
15579 msgstr ""
15580
15581 #. type: lisp
15582 #: guix-git/doc/guix.texi:8370
15583 #, no-wrap
15584 msgid ""
15585 "(define* (check #:key (test-target \"check\") (tests? #true)\n"
15586 " #:allow-other-keys)\n"
15587 " ;; Run the test suite.\n"
15588 " (if tests?\n"
15589 " (invoke \"make\" test-target)\n"
15590 " (display \"test suite not run\\n\")))\n"
15591 "\n"
15592 msgstr ""
15593
15594 #. type: lisp
15595 #: guix-git/doc/guix.texi:8374
15596 #, no-wrap
15597 msgid ""
15598 "(define* (install #:allow-other-keys)\n"
15599 " ;; Install files to the prefix 'configure' specified.\n"
15600 " (invoke \"make\" \"install\"))\n"
15601 "\n"
15602 msgstr ""
15603
15604 #. type: lisp
15605 #: guix-git/doc/guix.texi:8383
15606 #, no-wrap
15607 msgid ""
15608 "(define %standard-phases\n"
15609 " ;; The list of standard phases (quite a few are omitted\n"
15610 " ;; for brevity). Each element is a symbol/procedure pair.\n"
15611 " (list (cons 'unpack unpack)\n"
15612 " (cons 'configure configure)\n"
15613 " (cons 'build build)\n"
15614 " (cons 'check check)\n"
15615 " (cons 'install install)))\n"
15616 msgstr ""
15617
15618 #. type: Plain text
15619 #: guix-git/doc/guix.texi:8393
15620 msgid "This shows how @code{%standard-phases} is defined as a list of symbol/procedure pairs (@pxref{Pairs,,, guile, GNU Guile Reference Manual}). The first pair associates the @code{unpack} procedure with the @code{unpack} symbol---a name; the second pair defines the @code{configure} phase similarly, and so on. When building a package that uses @code{gnu-build-system} with its default list of phases, those phases are executed sequentially. You can see the name of each phase started and completed in the build log of packages that you build."
15621 msgstr ""
15622
15623 #. type: Plain text
15624 #: guix-git/doc/guix.texi:8399
15625 msgid "Let's now look at the procedures themselves. Each one is defined with @code{define*}: @code{#:key} lists keyword parameters the procedure accepts, possibly with a default value, and @code{#:allow-other-keys} specifies that other keyword parameters are ignored (@pxref{Optional Arguments,,, guile, GNU Guile Reference Manual})."
15626 msgstr ""
15627
15628 #. type: Plain text
15629 #: guix-git/doc/guix.texi:8415
15630 msgid "The @code{unpack} procedure honors the @code{source} parameter, which the build system uses to pass the file name of the source tarball (or version control checkout), and it ignores other parameters. The @code{configure} phase only cares about the @code{outputs} parameter, an alist mapping package output names to their store file name (@pxref{Packages with Multiple Outputs}). It extracts the file name of for @code{out}, the default output, and passes it to @command{./configure} as the installation prefix, meaning that @command{make install} will eventually copy all the files in that directory (@pxref{Configuration, configuration and makefile conventions,, standards, GNU Coding Standards}). @code{build} and @code{install} ignore all their arguments. @code{check} honors the @code{test-target} argument, which specifies the name of the Makefile target to run tests; it prints a message and skips tests when @code{tests?} is false."
15631 msgstr ""
15632
15633 #. type: cindex
15634 #: guix-git/doc/guix.texi:8416
15635 #, no-wrap
15636 msgid "build phases, customizing"
15637 msgstr ""
15638
15639 #. type: Plain text
15640 #: guix-git/doc/guix.texi:8425
15641 msgid "The list of phases used for a particular package can be changed with the @code{#:phases} parameter of the build system. Changing the set of build phases boils down to building a new alist of phases based on the @code{%standard-phases} alist described above. This can be done with standard alist procedures such as @code{alist-delete} (@pxref{SRFI-1 Association Lists,,, guile, GNU Guile Reference Manual}); however, it is more convenient to do so with @code{modify-phases} (@pxref{Build Utilities, @code{modify-phases}})."
15642 msgstr ""
15643
15644 #. type: Plain text
15645 #: guix-git/doc/guix.texi:8430
15646 msgid "Here is an example of a package definition that removes the @code{configure} phase of @code{%standard-phases} and inserts a new phase before the @code{build} phase, called @code{set-prefix-in-makefile}:"
15647 msgstr ""
15648
15649 #. type: lisp
15650 #: guix-git/doc/guix.texi:8450
15651 #, no-wrap
15652 msgid ""
15653 "(define-public example\n"
15654 " (package\n"
15655 " (name \"example\")\n"
15656 " ;; other fields omitted\n"
15657 " (build-system gnu-build-system)\n"
15658 " (arguments\n"
15659 " '(#:phases (modify-phases %standard-phases\n"
15660 " (delete 'configure)\n"
15661 " (add-before 'build 'set-prefix-in-makefile\n"
15662 " (lambda* (#:key outputs #:allow-other-keys)\n"
15663 " ;; Modify the makefile so that its\n"
15664 " ;; 'PREFIX' variable points to \"out\".\n"
15665 " (let ((out (assoc-ref outputs \"out\")))\n"
15666 " (substitute* \"Makefile\"\n"
15667 " ((\"PREFIX =.*\")\n"
15668 " (string-append \"PREFIX = \"\n"
15669 " out \"\\n\")))\n"
15670 " #true))))))))\n"
15671 msgstr ""
15672
15673 #. type: Plain text
15674 #: guix-git/doc/guix.texi:8456
15675 msgid "The new phase that is inserted is written as an anonymous procedure, introduced with @code{lambda*}; it honors the @code{outputs} parameter we have seen before. @xref{Build Utilities}, for more about the helpers used by this phase, and for more examples of @code{modify-phases}."
15676 msgstr ""
15677
15678 #. type: cindex
15679 #: guix-git/doc/guix.texi:8457 guix-git/doc/guix.texi:9430
15680 #, no-wrap
15681 msgid "code staging"
15682 msgstr ""
15683
15684 #. type: cindex
15685 #: guix-git/doc/guix.texi:8458 guix-git/doc/guix.texi:9431
15686 #, no-wrap
15687 msgid "staging, of code"
15688 msgstr ""
15689
15690 #. type: Plain text
15691 #: guix-git/doc/guix.texi:8465
15692 msgid "Keep in mind that build phases are code evaluated at the time the package is actually built. This explains why the whole @code{modify-phases} expression above is quoted (it comes after the @code{'} or apostrophe): it is @dfn{staged} for later execution. @xref{G-Expressions}, for an explanation of code staging and the @dfn{code strata} involved."
15693 msgstr ""
15694
15695 #. type: Plain text
15696 #: guix-git/doc/guix.texi:8475
15697 msgid "As soon as you start writing non-trivial package definitions (@pxref{Defining Packages}) or other build actions (@pxref{G-Expressions}), you will likely start looking for helpers for ``shell-like'' actions---creating directories, copying and deleting files recursively, manipulating build phases, and so on. The @code{(guix build utils)} module provides such utility procedures."
15698 msgstr ""
15699
15700 #. type: Plain text
15701 #: guix-git/doc/guix.texi:8479
15702 msgid "Most build systems load @code{(guix build utils)} (@pxref{Build Systems}). Thus, when writing custom build phases for your package definitions, you can usually assume those procedures are in scope."
15703 msgstr ""
15704
15705 #. type: Plain text
15706 #: guix-git/doc/guix.texi:8484
15707 msgid "When writing G-expressions, you can import @code{(guix build utils)} on the ``build side'' using @code{with-imported-modules} and then put it in scope with the @code{use-modules} form (@pxref{Using Guile Modules,,, guile, GNU Guile Reference Manual}):"
15708 msgstr ""
15709
15710 #. type: lisp
15711 #: guix-git/doc/guix.texi:8491
15712 #, no-wrap
15713 msgid ""
15714 "(with-imported-modules '((guix build utils)) ;import it\n"
15715 " (computed-file \"empty-tree\"\n"
15716 " #~(begin\n"
15717 " ;; Put it in scope.\n"
15718 " (use-modules (guix build utils))\n"
15719 "\n"
15720 msgstr ""
15721
15722 #. type: lisp
15723 #: guix-git/doc/guix.texi:8494
15724 #, no-wrap
15725 msgid ""
15726 " ;; Happily use its 'mkdir-p' procedure.\n"
15727 " (mkdir-p (string-append #$output \"/a/b/c\")))))\n"
15728 msgstr ""
15729
15730 #. type: Plain text
15731 #: guix-git/doc/guix.texi:8498
15732 msgid "The remainder of this section is the reference for most of the utility procedures provided by @code{(guix build utils)}."
15733 msgstr ""
15734
15735 #. type: subsection
15736 #: guix-git/doc/guix.texi:8501
15737 #, no-wrap
15738 msgid "Dealing with Store File Names"
15739 msgstr ""
15740
15741 #. type: Plain text
15742 #: guix-git/doc/guix.texi:8504
15743 msgid "This section documents procedures that deal with store file names."
15744 msgstr ""
15745
15746 #. type: deffn
15747 #: guix-git/doc/guix.texi:8505
15748 #, no-wrap
15749 msgid "{Scheme Procedure} %store-directory"
15750 msgstr ""
15751
15752 #. type: deffn
15753 #: guix-git/doc/guix.texi:8507
15754 msgid "Return the directory name of the store."
15755 msgstr ""
15756
15757 #. type: deffn
15758 #: guix-git/doc/guix.texi:8509
15759 #, no-wrap
15760 msgid "{Scheme Procedure} store-file-name? @var{file}"
15761 msgstr ""
15762
15763 #. type: deffn
15764 #: guix-git/doc/guix.texi:8511
15765 msgid "Return true if @var{file} is in the store."
15766 msgstr ""
15767
15768 #. type: deffn
15769 #: guix-git/doc/guix.texi:8513
15770 #, no-wrap
15771 msgid "{Scheme Procedure} strip-store-file-name @var{file}"
15772 msgstr ""
15773
15774 #. type: deffn
15775 #: guix-git/doc/guix.texi:8516
15776 msgid "Strip the @file{/gnu/store} and hash from @var{file}, a store file name. The result is typically a @code{\"@var{package}-@var{version}\"} string."
15777 msgstr ""
15778
15779 #. type: deffn
15780 #: guix-git/doc/guix.texi:8518
15781 #, no-wrap
15782 msgid "{Scheme Procedure} package-name->name+version @var{name}"
15783 msgstr ""
15784
15785 #. type: deffn
15786 #: guix-git/doc/guix.texi:8523
15787 msgid "Given @var{name}, a package name like @code{\"foo-0.9.1b\"}, return two values: @code{\"foo\"} and @code{\"0.9.1b\"}. When the version part is unavailable, @var{name} and @code{#f} are returned. The first hyphen followed by a digit is considered to introduce the version part."
15788 msgstr ""
15789
15790 #. type: subsection
15791 #: guix-git/doc/guix.texi:8525
15792 #, no-wrap
15793 msgid "File Types"
15794 msgstr ""
15795
15796 #. type: Plain text
15797 #: guix-git/doc/guix.texi:8528
15798 msgid "The procedures below deal with files and file types."
15799 msgstr ""
15800
15801 #. type: deffn
15802 #: guix-git/doc/guix.texi:8529
15803 #, no-wrap
15804 msgid "{Scheme Procedure} directory-exists? @var{dir}"
15805 msgstr ""
15806
15807 #. type: deffn
15808 #: guix-git/doc/guix.texi:8531
15809 msgid "Return @code{#t} if @var{dir} exists and is a directory."
15810 msgstr ""
15811
15812 #. type: deffn
15813 #: guix-git/doc/guix.texi:8533
15814 #, no-wrap
15815 msgid "{Scheme Procedure} executable-file? @var{file}"
15816 msgstr ""
15817
15818 #. type: deffn
15819 #: guix-git/doc/guix.texi:8535
15820 msgid "Return @code{#t} if @var{file} exists and is executable."
15821 msgstr ""
15822
15823 #. type: deffn
15824 #: guix-git/doc/guix.texi:8537
15825 #, no-wrap
15826 msgid "{Scheme Procedure} symbolic-link? @var{file}"
15827 msgstr ""
15828
15829 #. type: deffn
15830 #: guix-git/doc/guix.texi:8539
15831 msgid "Return @code{#t} if @var{file} is a symbolic link (aka. a ``symlink'')."
15832 msgstr ""
15833
15834 #. type: deffn
15835 #: guix-git/doc/guix.texi:8541
15836 #, no-wrap
15837 msgid "{Scheme Procedure} elf-file? @var{file}"
15838 msgstr ""
15839
15840 #. type: deffnx
15841 #: guix-git/doc/guix.texi:8542
15842 #, no-wrap
15843 msgid "{Scheme Procedure} ar-file? @var{file}"
15844 msgstr ""
15845
15846 #. type: deffnx
15847 #: guix-git/doc/guix.texi:8543
15848 #, no-wrap
15849 msgid "{Scheme Procedure} gzip-file? @var{file}"
15850 msgstr ""
15851
15852 #. type: deffn
15853 #: guix-git/doc/guix.texi:8546
15854 msgid "Return @code{#t} if @var{file} is, respectively, an ELF file, an @code{ar} archive (such as a @file{.a} static library), or a gzip file."
15855 msgstr ""
15856
15857 #. type: deffn
15858 #: guix-git/doc/guix.texi:8548
15859 #, no-wrap
15860 msgid "{Scheme Procedure} reset-gzip-timestamp @var{file} [#:keep-mtime? #t]"
15861 msgstr ""
15862
15863 #. type: deffn
15864 #: guix-git/doc/guix.texi:8552
15865 msgid "If @var{file} is a gzip file, reset its embedded timestamp (as with @command{gzip --no-name}) and return true. Otherwise return @code{#f}. When @var{keep-mtime?} is true, preserve @var{file}'s modification time."
15866 msgstr ""
15867
15868 #. type: subsection
15869 #: guix-git/doc/guix.texi:8554
15870 #, no-wrap
15871 msgid "File Manipulation"
15872 msgstr ""
15873
15874 #. type: Plain text
15875 #: guix-git/doc/guix.texi:8561
15876 msgid "The following procedures and macros help create, modify, and delete files. They provide functionality comparable to common shell utilities such as @command{mkdir -p}, @command{cp -r}, @command{rm -r}, and @command{sed}. They complement Guile's extensive, but low-level, file system interface (@pxref{POSIX,,, guile, GNU Guile Reference Manual})."
15877 msgstr ""
15878
15879 #. type: deffn
15880 #: guix-git/doc/guix.texi:8562
15881 #, no-wrap
15882 msgid "{Scheme Syntax} with-directory-excursion @var{directory} @var{body}@dots{}"
15883 msgstr ""
15884
15885 #. type: deffn
15886 #: guix-git/doc/guix.texi:8564
15887 msgid "Run @var{body} with @var{directory} as the process's current directory."
15888 msgstr ""
15889
15890 #. type: deffn
15891 #: guix-git/doc/guix.texi:8571
15892 msgid "Essentially, this macro changes the current directory to @var{directory} before evaluating @var{body}, using @code{chdir} (@pxref{Processes,,, guile, GNU Guile Reference Manual}). It changes back to the initial directory when the dynamic extent of @var{body} is left, be it @i{via} normal procedure return or @i{via} a non-local exit such as an exception."
15893 msgstr ""
15894
15895 #. type: deffn
15896 #: guix-git/doc/guix.texi:8573
15897 #, no-wrap
15898 msgid "{Scheme Procedure} mkdir-p @var{dir}"
15899 msgstr ""
15900
15901 #. type: deffn
15902 #: guix-git/doc/guix.texi:8575
15903 msgid "Create directory @var{dir} and all its ancestors."
15904 msgstr ""
15905
15906 #. type: deffn
15907 #: guix-git/doc/guix.texi:8577
15908 #, no-wrap
15909 msgid "{Scheme Procedure} install-file @var{file} @var{directory}"
15910 msgstr ""
15911
15912 #. type: deffn
15913 #: guix-git/doc/guix.texi:8580
15914 msgid "Create @var{directory} if it does not exist and copy @var{file} in there under the same name."
15915 msgstr ""
15916
15917 #. type: deffn
15918 #: guix-git/doc/guix.texi:8582
15919 #, no-wrap
15920 msgid "{Scheme Procedure} make-file-writable @var{file}"
15921 msgstr ""
15922
15923 #. type: deffn
15924 #: guix-git/doc/guix.texi:8584
15925 msgid "Make @var{file} writable for its owner."
15926 msgstr ""
15927
15928 #. type: deffn
15929 #: guix-git/doc/guix.texi:8586
15930 #, no-wrap
15931 msgid "{Scheme Procedure} copy-recursively @var{source} @var{destination} @"
15932 msgstr ""
15933
15934 #. type: deffn
15935 #: guix-git/doc/guix.texi:8593
15936 msgid "[#:log (current-output-port)] [#:follow-symlinks? #f] [#:keep-mtime? #f] Copy @var{source} directory to @var{destination}. Follow symlinks if @var{follow-symlinks?} is true; otherwise, just preserve them. When @var{keep-mtime?} is true, keep the modification time of the files in @var{source} on those of @var{destination}. Write verbose output to the @var{log} port."
15937 msgstr ""
15938
15939 #. type: deffn
15940 #: guix-git/doc/guix.texi:8595
15941 #, no-wrap
15942 msgid "{Scheme Procedure} delete-file-recursively @var{dir} @"
15943 msgstr ""
15944
15945 #. type: deffn
15946 #: guix-git/doc/guix.texi:8600
15947 msgid "[#:follow-mounts? #f] Delete @var{dir} recursively, like @command{rm -rf}, without following symlinks. Don't follow mount points either, unless @var{follow-mounts?} is true. Report but ignore errors."
15948 msgstr ""
15949
15950 #. type: deffn
15951 #: guix-git/doc/guix.texi:8602
15952 #, no-wrap
15953 msgid "{Scheme Syntax} substitute* @var{file} @"
15954 msgstr ""
15955
15956 #. type: deffn
15957 #: guix-git/doc/guix.texi:8607
15958 msgid "((@var{regexp} @var{match-var}@dots{}) @var{body}@dots{}) @dots{} Substitute @var{regexp} in @var{file} by the string returned by @var{body}. @var{body} is evaluated with each @var{match-var} bound to the corresponding positional regexp sub-expression. For example:"
15959 msgstr ""
15960
15961 #. type: lisp
15962 #: guix-git/doc/guix.texi:8614
15963 #, no-wrap
15964 msgid ""
15965 "(substitute* file\n"
15966 " ((\"hello\")\n"
15967 " \"good morning\\n\")\n"
15968 " ((\"foo([a-z]+)bar(.*)$\" all letters end)\n"
15969 " (string-append \"baz\" letter end)))\n"
15970 msgstr ""
15971
15972 #. type: deffn
15973 #: guix-git/doc/guix.texi:8620
15974 msgid "Here, anytime a line of @var{file} contains @code{hello}, it is replaced by @code{good morning}. Anytime a line of @var{file} matches the second regexp, @code{all} is bound to the complete match, @code{letters} is bound to the first sub-expression, and @code{end} is bound to the last one."
15975 msgstr ""
15976
15977 #. type: deffn
15978 #: guix-git/doc/guix.texi:8623
15979 msgid "When one of the @var{match-var} is @code{_}, no variable is bound to the corresponding match substring."
15980 msgstr ""
15981
15982 #. type: deffn
15983 #: guix-git/doc/guix.texi:8626
15984 msgid "Alternatively, @var{file} may be a list of file names, in which case they are all subject to the substitutions."
15985 msgstr ""
15986
15987 #. type: deffn
15988 #: guix-git/doc/guix.texi:8629
15989 msgid "Be careful about using @code{$} to match the end of a line; by itself it won't match the terminating newline of a line."
15990 msgstr ""
15991
15992 #. type: subsection
15993 #: guix-git/doc/guix.texi:8631
15994 #, no-wrap
15995 msgid "File Search"
15996 msgstr ""
15997
15998 #. type: cindex
15999 #: guix-git/doc/guix.texi:8633
16000 #, no-wrap
16001 msgid "file, searching"
16002 msgstr ""
16003
16004 #. type: Plain text
16005 #: guix-git/doc/guix.texi:8635
16006 msgid "This section documents procedures to search and filter files."
16007 msgstr ""
16008
16009 #. type: deffn
16010 #: guix-git/doc/guix.texi:8636
16011 #, no-wrap
16012 msgid "{Scheme Procedure} file-name-predicate @var{regexp}"
16013 msgstr ""
16014
16015 #. type: deffn
16016 #: guix-git/doc/guix.texi:8639
16017 msgid "Return a predicate that returns true when passed a file name whose base name matches @var{regexp}."
16018 msgstr ""
16019
16020 #. type: deffn
16021 #: guix-git/doc/guix.texi:8641
16022 #, no-wrap
16023 msgid "{Scheme Procedure} find-files @var{dir} [@var{pred}] @"
16024 msgstr ""
16025
16026 #. type: deffn
16027 #: guix-git/doc/guix.texi:8652
16028 msgid "[#:stat lstat] [#:directories? #f] [#:fail-on-error? #f] Return the lexicographically sorted list of files under @var{dir} for which @var{pred} returns true. @var{pred} is passed two arguments: the absolute file name, and its stat buffer; the default predicate always returns true. @var{pred} can also be a regular expression, in which case it is equivalent to @code{(file-name-predicate @var{pred})}. @var{stat} is used to obtain file information; using @code{lstat} means that symlinks are not followed. If @var{directories?} is true, then directories will also be included. If @var{fail-on-error?} is true, raise an exception upon error."
16029 msgstr ""
16030
16031 #. type: Plain text
16032 #: guix-git/doc/guix.texi:8656
16033 msgid "Here are a few examples where we assume that the current directory is the root of the Guix source tree:"
16034 msgstr ""
16035
16036 #. type: lisp
16037 #: guix-git/doc/guix.texi:8661
16038 #, no-wrap
16039 msgid ""
16040 ";; List all the regular files in the current directory.\n"
16041 "(find-files \".\")\n"
16042 "@result{} (\"./.dir-locals.el\" \"./.gitignore\" @dots{})\n"
16043 "\n"
16044 msgstr ""
16045
16046 #. type: lisp
16047 #: guix-git/doc/guix.texi:8665
16048 #, no-wrap
16049 msgid ""
16050 ";; List all the .scm files under gnu/services.\n"
16051 "(find-files \"gnu/services\" \"\\\\.scm$\")\n"
16052 "@result{} (\"gnu/services/admin.scm\" \"gnu/services/audio.scm\" @dots{})\n"
16053 "\n"
16054 msgstr ""
16055
16056 #. type: lisp
16057 #: guix-git/doc/guix.texi:8669
16058 #, no-wrap
16059 msgid ""
16060 ";; List ar files in the current directory.\n"
16061 "(find-files \".\" (lambda (file stat) (ar-file? file)))\n"
16062 "@result{} (\"./libformat.a\" \"./libstore.a\" @dots{})\n"
16063 msgstr ""
16064
16065 #. type: deffn
16066 #: guix-git/doc/guix.texi:8671
16067 #, no-wrap
16068 msgid "{Scheme Procedure} which @var{program}"
16069 msgstr ""
16070
16071 #. type: deffn
16072 #: guix-git/doc/guix.texi:8674
16073 msgid "Return the complete file name for @var{program} as found in @code{$PATH}, or @code{#f} if @var{program} could not be found."
16074 msgstr ""
16075
16076 #. type: Plain text
16077 #: guix-git/doc/guix.texi:8685
16078 msgid "The @code{(guix build utils)} also contains tools to manipulate build phases as used by build systems (@pxref{Build Systems}). Build phases are represented as association lists or ``alists'' (@pxref{Association Lists,,, guile, GNU Guile Reference Manual}) where each key is a symbol naming the phase and the associated value is a procedure (@pxref{Build Phases})."
16079 msgstr ""
16080
16081 #. type: Plain text
16082 #: guix-git/doc/guix.texi:8689
16083 msgid "Guile core and the @code{(srfi srfi-1)} module both provide tools to manipulate alists. The @code{(guix build utils)} module complements those with tools written with build phases in mind."
16084 msgstr ""
16085
16086 #. type: cindex
16087 #: guix-git/doc/guix.texi:8690
16088 #, no-wrap
16089 msgid "build phases, modifying"
16090 msgstr ""
16091
16092 #. type: deffn
16093 #: guix-git/doc/guix.texi:8691
16094 #, no-wrap
16095 msgid "{Scheme Syntax} modify-phases @var{phases} @var{clause}@dots{}"
16096 msgstr ""
16097
16098 #. type: deffn
16099 #: guix-git/doc/guix.texi:8694
16100 msgid "Modify @var{phases} sequentially as per each @var{clause}, which may have one of the following forms:"
16101 msgstr ""
16102
16103 #. type: lisp
16104 #: guix-git/doc/guix.texi:8700
16105 #, no-wrap
16106 msgid ""
16107 "(delete @var{old-phase-name})\n"
16108 "(replace @var{old-phase-name} @var{new-phase})\n"
16109 "(add-before @var{old-phase-name} @var{new-phase-name} @var{new-phase})\n"
16110 "(add-after @var{old-phase-name} @var{new-phase-name} @var{new-phase})\n"
16111 msgstr ""
16112
16113 #. type: deffn
16114 #: guix-git/doc/guix.texi:8704
16115 msgid "Where every @var{phase-name} above is an expression evaluating to a symbol, and @var{new-phase} an expression evaluating to a procedure."
16116 msgstr ""
16117
16118 #. type: Plain text
16119 #: guix-git/doc/guix.texi:8715
16120 msgid "The example below is taken from the definition of the @code{grep} package. It adds a phase to run after the @code{install} phase, called @code{fix-egrep-and-fgrep}. That phase is a procedure (@code{lambda*} is for anonymous procedures) that takes a @code{#:outputs} keyword argument and ignores extra keyword arguments (@pxref{Optional Arguments,,, guile, GNU Guile Reference Manual}, for more on @code{lambda*} and optional and keyword arguments.) The phase uses @code{substitute*} to modify the installed @file{egrep} and @file{fgrep} scripts so that they refer to @code{grep} by its absolute file name:"
16121 msgstr ""
16122
16123 #. type: lisp
16124 #: guix-git/doc/guix.texi:8729
16125 #, no-wrap
16126 msgid ""
16127 "(modify-phases %standard-phases\n"
16128 " (add-after 'install 'fix-egrep-and-fgrep\n"
16129 " ;; Patch 'egrep' and 'fgrep' to execute 'grep' via its\n"
16130 " ;; absolute file name instead of searching for it in $PATH.\n"
16131 " (lambda* (#:key outputs #:allow-other-keys)\n"
16132 " (let* ((out (assoc-ref outputs \"out\"))\n"
16133 " (bin (string-append out \"/bin\")))\n"
16134 " (substitute* (list (string-append bin \"/egrep\")\n"
16135 " (string-append bin \"/fgrep\"))\n"
16136 " ((\"^exec grep\")\n"
16137 " (string-append \"exec \" bin \"/grep\")))\n"
16138 " #t))))\n"
16139 msgstr ""
16140
16141 #. type: Plain text
16142 #: guix-git/doc/guix.texi:8736
16143 msgid "In the example below, phases are modified in two ways: the standard @code{configure} phase is deleted, presumably because the package does not have a @file{configure} script or anything similar, and the default @code{install} phase is replaced by one that manually copies the executable files to be installed:"
16144 msgstr ""
16145
16146 #. type: lisp
16147 #: guix-git/doc/guix.texi:8749
16148 #, no-wrap
16149 msgid ""
16150 "(modify-phases %standard-phases\n"
16151 " (delete 'configure) ;no 'configure' script\n"
16152 " (replace 'install\n"
16153 " (lambda* (#:key outputs #:allow-other-keys)\n"
16154 " ;; The package's Makefile doesn't provide an \"install\"\n"
16155 " ;; rule so do it by ourselves.\n"
16156 " (let ((bin (string-append (assoc-ref outputs \"out\")\n"
16157 " \"/bin\")))\n"
16158 " (install-file \"footswitch\" bin)\n"
16159 " (install-file \"scythe\" bin)\n"
16160 " #t))))\n"
16161 msgstr ""
16162
16163 #. type: cindex
16164 #: guix-git/doc/guix.texi:8757
16165 #, no-wrap
16166 msgid "store items"
16167 msgstr ""
16168
16169 #. type: cindex
16170 #: guix-git/doc/guix.texi:8758
16171 #, no-wrap
16172 msgid "store paths"
16173 msgstr ""
16174
16175 #. type: Plain text
16176 #: guix-git/doc/guix.texi:8769
16177 msgid "Conceptually, the @dfn{store} is the place where derivations that have been built successfully are stored---by default, @file{/gnu/store}. Sub-directories in the store are referred to as @dfn{store items} or sometimes @dfn{store paths}. The store has an associated database that contains information such as the store paths referred to by each store path, and the list of @emph{valid} store items---results of successful builds. This database resides in @file{@var{localstatedir}/guix/db}, where @var{localstatedir} is the state directory specified @i{via} @option{--localstatedir} at configure time, usually @file{/var}."
16178 msgstr ""
16179
16180 #. type: Plain text
16181 #: guix-git/doc/guix.texi:8774
16182 msgid "The store is @emph{always} accessed by the daemon on behalf of its clients (@pxref{Invoking guix-daemon}). To manipulate the store, clients connect to the daemon over a Unix-domain socket, send requests to it, and read the result---these are remote procedure calls, or RPCs."
16183 msgstr ""
16184
16185 #. type: quotation
16186 #: guix-git/doc/guix.texi:8779
16187 msgid "Users must @emph{never} modify files under @file{/gnu/store} directly. This would lead to inconsistencies and break the immutability assumptions of Guix's functional model (@pxref{Introduction})."
16188 msgstr ""
16189
16190 #. type: quotation
16191 #: guix-git/doc/guix.texi:8783
16192 msgid "@xref{Invoking guix gc, @command{guix gc --verify}}, for information on how to check the integrity of the store and attempt recovery from accidental modifications."
16193 msgstr ""
16194
16195 #. type: Plain text
16196 #: guix-git/doc/guix.texi:8790
16197 msgid "The @code{(guix store)} module provides procedures to connect to the daemon, and to perform RPCs. These are described below. By default, @code{open-connection}, and thus all the @command{guix} commands, connect to the local daemon or to the URI specified by the @env{GUIX_DAEMON_SOCKET} environment variable."
16198 msgstr ""
16199
16200 #. type: defvr
16201 #: guix-git/doc/guix.texi:8791
16202 #, no-wrap
16203 msgid "{Environment Variable} GUIX_DAEMON_SOCKET"
16204 msgstr ""
16205
16206 #. type: defvr
16207 #: guix-git/doc/guix.texi:8796
16208 msgid "When set, the value of this variable should be a file name or a URI designating the daemon endpoint. When it is a file name, it denotes a Unix-domain socket to connect to. In addition to file names, the supported URI schemes are:"
16209 msgstr ""
16210
16211 #. type: code{#1}
16212 #: guix-git/doc/guix.texi:8798 guix-git/doc/guix.texi:24528
16213 #, no-wrap
16214 msgid "file"
16215 msgstr ""
16216
16217 #. type: itemx
16218 #: guix-git/doc/guix.texi:8799
16219 #, no-wrap
16220 msgid "unix"
16221 msgstr ""
16222
16223 #. type: table
16224 #: guix-git/doc/guix.texi:8803
16225 msgid "These are for Unix-domain sockets. @code{file:///var/guix/daemon-socket/socket} is equivalent to @file{/var/guix/daemon-socket/socket}."
16226 msgstr ""
16227
16228 #. type: item
16229 #: guix-git/doc/guix.texi:8804
16230 #, no-wrap
16231 msgid "guix"
16232 msgstr ""
16233
16234 #. type: table
16235 #: guix-git/doc/guix.texi:8812
16236 msgid "These URIs denote connections over TCP/IP, without encryption nor authentication of the remote host. The URI must specify the host name and optionally a port number (by default port 44146 is used):"
16237 msgstr ""
16238
16239 #. type: example
16240 #: guix-git/doc/guix.texi:8815
16241 #, no-wrap
16242 msgid "guix://master.guix.example.org:1234\n"
16243 msgstr ""
16244
16245 #. type: table
16246 #: guix-git/doc/guix.texi:8820
16247 msgid "This setup is suitable on local networks, such as clusters, where only trusted nodes may connect to the build daemon at @code{master.guix.example.org}."
16248 msgstr ""
16249
16250 #. type: table
16251 #: guix-git/doc/guix.texi:8824
16252 msgid "The @option{--listen} option of @command{guix-daemon} can be used to instruct it to listen for TCP connections (@pxref{Invoking guix-daemon, @option{--listen}})."
16253 msgstr ""
16254
16255 #. type: item
16256 #: guix-git/doc/guix.texi:8825
16257 #, no-wrap
16258 msgid "ssh"
16259 msgstr ""
16260
16261 #. type: cindex
16262 #: guix-git/doc/guix.texi:8826
16263 #, no-wrap
16264 msgid "SSH access to build daemons"
16265 msgstr ""
16266
16267 #. type: table
16268 #: guix-git/doc/guix.texi:8832
16269 msgid "These URIs allow you to connect to a remote daemon over SSH@. This feature requires Guile-SSH (@pxref{Requirements}) and a working @command{guile} binary in @env{PATH} on the destination machine. It supports public key and GSSAPI authentication. A typical URL might look like this:"
16270 msgstr ""
16271
16272 #. type: example
16273 #: guix-git/doc/guix.texi:8835
16274 #, no-wrap
16275 msgid "ssh://charlie@@guix.example.org:22\n"
16276 msgstr ""
16277
16278 #. type: table
16279 #: guix-git/doc/guix.texi:8839
16280 msgid "As for @command{guix copy}, the usual OpenSSH client configuration files are honored (@pxref{Invoking guix copy})."
16281 msgstr ""
16282
16283 #. type: defvr
16284 #: guix-git/doc/guix.texi:8842
16285 msgid "Additional URI schemes may be supported in the future."
16286 msgstr ""
16287
16288 #. type: quotation
16289 #: guix-git/doc/guix.texi:8849
16290 msgid "The ability to connect to remote build daemons is considered experimental as of @value{VERSION}. Please get in touch with us to share any problems or suggestions you may have (@pxref{Contributing})."
16291 msgstr ""
16292
16293 #. type: deffn
16294 #: guix-git/doc/guix.texi:8852
16295 #, no-wrap
16296 msgid "{Scheme Procedure} open-connection [@var{uri}] [#:reserve-space? #t]"
16297 msgstr ""
16298
16299 #. type: deffn
16300 #: guix-git/doc/guix.texi:8857
16301 msgid "Connect to the daemon over the Unix-domain socket at @var{uri} (a string). When @var{reserve-space?} is true, instruct it to reserve a little bit of extra space on the file system so that the garbage collector can still operate should the disk become full. Return a server object."
16302 msgstr ""
16303
16304 #. type: deffn
16305 #: guix-git/doc/guix.texi:8860
16306 msgid "@var{file} defaults to @code{%default-socket-path}, which is the normal location given the options that were passed to @command{configure}."
16307 msgstr ""
16308
16309 #. type: deffn
16310 #: guix-git/doc/guix.texi:8862
16311 #, no-wrap
16312 msgid "{Scheme Procedure} close-connection @var{server}"
16313 msgstr ""
16314
16315 #. type: deffn
16316 #: guix-git/doc/guix.texi:8864
16317 msgid "Close the connection to @var{server}."
16318 msgstr ""
16319
16320 #. type: defvr
16321 #: guix-git/doc/guix.texi:8866
16322 #, no-wrap
16323 msgid "{Scheme Variable} current-build-output-port"
16324 msgstr ""
16325
16326 #. type: defvr
16327 #: guix-git/doc/guix.texi:8869
16328 msgid "This variable is bound to a SRFI-39 parameter, which refers to the port where build and error logs sent by the daemon should be written."
16329 msgstr ""
16330
16331 #. type: Plain text
16332 #: guix-git/doc/guix.texi:8873
16333 msgid "Procedures that make RPCs all take a server object as their first argument."
16334 msgstr ""
16335
16336 #. type: deffn
16337 #: guix-git/doc/guix.texi:8874
16338 #, no-wrap
16339 msgid "{Scheme Procedure} valid-path? @var{server} @var{path}"
16340 msgstr ""
16341
16342 #. type: cindex
16343 #: guix-git/doc/guix.texi:8875
16344 #, no-wrap
16345 msgid "invalid store items"
16346 msgstr ""
16347
16348 #. type: deffn
16349 #: guix-git/doc/guix.texi:8880
16350 msgid "Return @code{#t} when @var{path} designates a valid store item and @code{#f} otherwise (an invalid item may exist on disk but still be invalid, for instance because it is the result of an aborted or failed build)."
16351 msgstr ""
16352
16353 #. type: deffn
16354 #: guix-git/doc/guix.texi:8883
16355 msgid "A @code{&store-protocol-error} condition is raised if @var{path} is not prefixed by the store directory (@file{/gnu/store})."
16356 msgstr ""
16357
16358 #. type: deffn
16359 #: guix-git/doc/guix.texi:8885
16360 #, no-wrap
16361 msgid "{Scheme Procedure} add-text-to-store @var{server} @var{name} @var{text} [@var{references}]"
16362 msgstr ""
16363
16364 #. type: deffn
16365 #: guix-git/doc/guix.texi:8889
16366 msgid "Add @var{text} under file @var{name} in the store, and return its store path. @var{references} is the list of store paths referred to by the resulting store path."
16367 msgstr ""
16368
16369 #. type: deffn
16370 #: guix-git/doc/guix.texi:8891
16371 #, no-wrap
16372 msgid "{Scheme Procedure} build-derivations @var{store} @var{derivations} @"
16373 msgstr ""
16374
16375 #. type: deffn
16376 #: guix-git/doc/guix.texi:8896
16377 msgid "[@var{mode}] Build @var{derivations}, a list of @code{<derivation>} objects, @file{.drv} file names, or derivation/output pairs, using the specified @var{mode}---@code{(build-mode normal)} by default."
16378 msgstr ""
16379
16380 #. type: Plain text
16381 #: guix-git/doc/guix.texi:8902
16382 msgid "Note that the @code{(guix monads)} module provides a monad as well as monadic versions of the above procedures, with the goal of making it more convenient to work with code that accesses the store (@pxref{The Store Monad})."
16383 msgstr ""
16384
16385 #. type: i{#1}
16386 #: guix-git/doc/guix.texi:8905
16387 msgid "This section is currently incomplete."
16388 msgstr ""
16389
16390 #. type: cindex
16391 #: guix-git/doc/guix.texi:8909
16392 #, no-wrap
16393 msgid "derivations"
16394 msgstr ""
16395
16396 #. type: Plain text
16397 #: guix-git/doc/guix.texi:8913
16398 msgid "Low-level build actions and the environment in which they are performed are represented by @dfn{derivations}. A derivation contains the following pieces of information:"
16399 msgstr ""
16400
16401 #. type: itemize
16402 #: guix-git/doc/guix.texi:8918
16403 msgid "The outputs of the derivation---derivations produce at least one file or directory in the store, but may produce more."
16404 msgstr ""
16405
16406 #. type: cindex
16407 #: guix-git/doc/guix.texi:8920
16408 #, no-wrap
16409 msgid "build-time dependencies"
16410 msgstr ""
16411
16412 #. type: cindex
16413 #: guix-git/doc/guix.texi:8921
16414 #, no-wrap
16415 msgid "dependencies, build-time"
16416 msgstr ""
16417
16418 #. type: itemize
16419 #: guix-git/doc/guix.texi:8925
16420 msgid "The inputs of the derivations---i.e., its build-time dependencies---which may be other derivations or plain files in the store (patches, build scripts, etc.)."
16421 msgstr ""
16422
16423 #. type: itemize
16424 #: guix-git/doc/guix.texi:8928
16425 msgid "The system type targeted by the derivation---e.g., @code{x86_64-linux}."
16426 msgstr ""
16427
16428 #. type: itemize
16429 #: guix-git/doc/guix.texi:8932
16430 msgid "The file name of a build script in the store, along with the arguments to be passed."
16431 msgstr ""
16432
16433 #. type: itemize
16434 #: guix-git/doc/guix.texi:8935
16435 msgid "A list of environment variables to be defined."
16436 msgstr ""
16437
16438 #. type: cindex
16439 #: guix-git/doc/guix.texi:8938
16440 #, no-wrap
16441 msgid "derivation path"
16442 msgstr ""
16443
16444 #. type: Plain text
16445 #: guix-git/doc/guix.texi:8946
16446 msgid "Derivations allow clients of the daemon to communicate build actions to the store. They exist in two forms: as an in-memory representation, both on the client- and daemon-side, and as files in the store whose name end in @file{.drv}---these files are referred to as @dfn{derivation paths}. Derivations paths can be passed to the @code{build-derivations} procedure to perform the build actions they prescribe (@pxref{The Store})."
16447 msgstr ""
16448
16449 #. type: cindex
16450 #: guix-git/doc/guix.texi:8947
16451 #, no-wrap
16452 msgid "fixed-output derivations"
16453 msgstr ""
16454
16455 #. type: Plain text
16456 #: guix-git/doc/guix.texi:8954
16457 msgid "Operations such as file downloads and version-control checkouts for which the expected content hash is known in advance are modeled as @dfn{fixed-output derivations}. Unlike regular derivations, the outputs of a fixed-output derivation are independent of its inputs---e.g., a source code download produces the same result regardless of the download method and tools being used."
16458 msgstr ""
16459
16460 #. type: item
16461 #: guix-git/doc/guix.texi:8955 guix-git/doc/guix.texi:12445
16462 #, no-wrap
16463 msgid "references"
16464 msgstr ""
16465
16466 #. type: cindex
16467 #: guix-git/doc/guix.texi:8956
16468 #, no-wrap
16469 msgid "run-time dependencies"
16470 msgstr ""
16471
16472 #. type: cindex
16473 #: guix-git/doc/guix.texi:8957
16474 #, no-wrap
16475 msgid "dependencies, run-time"
16476 msgstr ""
16477
16478 #. type: Plain text
16479 #: guix-git/doc/guix.texi:8964
16480 msgid "The outputs of derivations---i.e., the build results---have a set of @dfn{references}, as reported by the @code{references} RPC or the @command{guix gc --references} command (@pxref{Invoking guix gc}). References are the set of run-time dependencies of the build results. References are a subset of the inputs of the derivation; this subset is automatically computed by the build daemon by scanning all the files in the outputs."
16481 msgstr ""
16482
16483 #. type: Plain text
16484 #: guix-git/doc/guix.texi:8969
16485 msgid "The @code{(guix derivations)} module provides a representation of derivations as Scheme objects, along with procedures to create and otherwise manipulate derivations. The lowest-level primitive to create a derivation is the @code{derivation} procedure:"
16486 msgstr ""
16487
16488 #. type: deffn
16489 #: guix-git/doc/guix.texi:8970
16490 #, no-wrap
16491 msgid "{Scheme Procedure} derivation @var{store} @var{name} @var{builder} @"
16492 msgstr ""
16493
16494 #. type: deffn
16495 #: guix-git/doc/guix.texi:8979
16496 msgid "@var{args} [#:outputs '(\"out\")] [#:hash #f] [#:hash-algo #f] @ [#:recursive? #f] [#:inputs '()] [#:env-vars '()] @ [#:system (%current-system)] [#:references-graphs #f] @ [#:allowed-references #f] [#:disallowed-references #f] @ [#:leaked-env-vars #f] [#:local-build? #f] @ [#:substitutable? #t] [#:properties '()] Build a derivation with the given arguments, and return the resulting @code{<derivation>} object."
16497 msgstr ""
16498
16499 #. type: deffn
16500 #: guix-git/doc/guix.texi:8986
16501 msgid "When @var{hash} and @var{hash-algo} are given, a @dfn{fixed-output derivation} is created---i.e., one whose result is known in advance, such as a file download. If, in addition, @var{recursive?} is true, then that fixed output may be an executable file or a directory and @var{hash} must be the hash of an archive containing this output."
16502 msgstr ""
16503
16504 #. type: deffn
16505 #: guix-git/doc/guix.texi:8991
16506 msgid "When @var{references-graphs} is true, it must be a list of file name/store path pairs. In that case, the reference graph of each store path is exported in the build environment in the corresponding file, in a simple text format."
16507 msgstr ""
16508
16509 #. type: deffn
16510 #: guix-git/doc/guix.texi:8996
16511 msgid "When @var{allowed-references} is true, it must be a list of store items or outputs that the derivation's output may refer to. Likewise, @var{disallowed-references}, if true, must be a list of things the outputs may @emph{not} refer to."
16512 msgstr ""
16513
16514 #. type: deffn
16515 #: guix-git/doc/guix.texi:9003
16516 msgid "When @var{leaked-env-vars} is true, it must be a list of strings denoting environment variables that are allowed to ``leak'' from the daemon's environment to the build environment. This is only applicable to fixed-output derivations---i.e., when @var{hash} is true. The main use is to allow variables such as @code{http_proxy} to be passed to derivations that download files."
16517 msgstr ""
16518
16519 #. type: deffn
16520 #: guix-git/doc/guix.texi:9008
16521 msgid "When @var{local-build?} is true, declare that the derivation is not a good candidate for offloading and should rather be built locally (@pxref{Daemon Offload Setup}). This is the case for small derivations where the costs of data transfers would outweigh the benefits."
16522 msgstr ""
16523
16524 #. type: deffn
16525 #: guix-git/doc/guix.texi:9013
16526 msgid "When @var{substitutable?} is false, declare that substitutes of the derivation's output should not be used (@pxref{Substitutes}). This is useful, for instance, when building packages that capture details of the host CPU instruction set."
16527 msgstr ""
16528
16529 #. type: deffn
16530 #: guix-git/doc/guix.texi:9016
16531 msgid "@var{properties} must be an association list describing ``properties'' of the derivation. It is kept as-is, uninterpreted, in the derivation."
16532 msgstr ""
16533
16534 #. type: Plain text
16535 #: guix-git/doc/guix.texi:9022
16536 msgid "Here's an example with a shell script as its builder, assuming @var{store} is an open connection to the daemon, and @var{bash} points to a Bash executable in the store:"
16537 msgstr ""
16538
16539 #. type: lisp
16540 #: guix-git/doc/guix.texi:9027
16541 #, no-wrap
16542 msgid ""
16543 "(use-modules (guix utils)\n"
16544 " (guix store)\n"
16545 " (guix derivations))\n"
16546 "\n"
16547 msgstr ""
16548
16549 #. type: lisp
16550 #: guix-git/doc/guix.texi:9036
16551 #, no-wrap
16552 msgid ""
16553 "(let ((builder ; add the Bash script to the store\n"
16554 " (add-text-to-store store \"my-builder.sh\"\n"
16555 " \"echo hello world > $out\\n\" '())))\n"
16556 " (derivation store \"foo\"\n"
16557 " bash `(\"-e\" ,builder)\n"
16558 " #:inputs `((,bash) (,builder))\n"
16559 " #:env-vars '((\"HOME\" . \"/homeless\"))))\n"
16560 "@result{} #<derivation /gnu/store/@dots{}-foo.drv => /gnu/store/@dots{}-foo>\n"
16561 msgstr ""
16562
16563 #. type: Plain text
16564 #: guix-git/doc/guix.texi:9043
16565 msgid "As can be guessed, this primitive is cumbersome to use directly. A better approach is to write build scripts in Scheme, of course! The best course of action for that is to write the build code as a ``G-expression'', and to pass it to @code{gexp->derivation}. For more information, @pxref{G-Expressions}."
16566 msgstr ""
16567
16568 #. type: Plain text
16569 #: guix-git/doc/guix.texi:9048
16570 msgid "Once upon a time, @code{gexp->derivation} did not exist and constructing derivations with build code written in Scheme was achieved with @code{build-expression->derivation}, documented below. This procedure is now deprecated in favor of the much nicer @code{gexp->derivation}."
16571 msgstr ""
16572
16573 #. type: deffn
16574 #: guix-git/doc/guix.texi:9049
16575 #, no-wrap
16576 msgid "{Scheme Procedure} build-expression->derivation @var{store} @"
16577 msgstr ""
16578
16579 #. type: deffn
16580 #: guix-git/doc/guix.texi:9065
16581 msgid "@var{name} @var{exp} @ [#:system (%current-system)] [#:inputs '()] @ [#:outputs '(\"out\")] [#:hash #f] [#:hash-algo #f] @ [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ [#:references-graphs #f] [#:allowed-references #f] @ [#:disallowed-references #f] @ [#:local-build? #f] [#:substitutable? #t] [#:guile-for-build #f] Return a derivation that executes Scheme expression @var{exp} as a builder for derivation @var{name}. @var{inputs} must be a list of @code{(name drv-path sub-drv)} tuples; when @var{sub-drv} is omitted, @code{\"out\"} is assumed. @var{modules} is a list of names of Guile modules from the current search path to be copied in the store, compiled, and made available in the load path during the execution of @var{exp}---e.g., @code{((guix build utils) (guix build gnu-build-system))}."
16582 msgstr ""
16583
16584 #. type: deffn
16585 #: guix-git/doc/guix.texi:9073
16586 msgid "@var{exp} is evaluated in an environment where @code{%outputs} is bound to a list of output/path pairs, and where @code{%build-inputs} is bound to a list of string/output-path pairs made from @var{inputs}. Optionally, @var{env-vars} is a list of string pairs specifying the name and value of environment variables visible to the builder. The builder terminates by passing the result of @var{exp} to @code{exit}; thus, when @var{exp} returns @code{#f}, the build is considered to have failed."
16587 msgstr ""
16588
16589 #. type: deffn
16590 #: guix-git/doc/guix.texi:9077
16591 msgid "@var{exp} is built using @var{guile-for-build} (a derivation). When @var{guile-for-build} is omitted or is @code{#f}, the value of the @code{%guile-for-build} fluid is used instead."
16592 msgstr ""
16593
16594 #. type: deffn
16595 #: guix-git/doc/guix.texi:9082
16596 msgid "See the @code{derivation} procedure for the meaning of @var{references-graphs}, @var{allowed-references}, @var{disallowed-references}, @var{local-build?}, and @var{substitutable?}."
16597 msgstr ""
16598
16599 #. type: Plain text
16600 #: guix-git/doc/guix.texi:9087
16601 msgid "Here's an example of a single-output derivation that creates a directory containing one file:"
16602 msgstr ""
16603
16604 #. type: lisp
16605 #: guix-git/doc/guix.texi:9095
16606 #, no-wrap
16607 msgid ""
16608 "(let ((builder '(let ((out (assoc-ref %outputs \"out\")))\n"
16609 " (mkdir out) ; create /gnu/store/@dots{}-goo\n"
16610 " (call-with-output-file (string-append out \"/test\")\n"
16611 " (lambda (p)\n"
16612 " (display '(hello guix) p))))))\n"
16613 " (build-expression->derivation store \"goo\" builder))\n"
16614 "\n"
16615 msgstr ""
16616
16617 #. type: lisp
16618 #: guix-git/doc/guix.texi:9097
16619 #, no-wrap
16620 msgid "@result{} #<derivation /gnu/store/@dots{}-goo.drv => @dots{}>\n"
16621 msgstr ""
16622
16623 #. type: cindex
16624 #: guix-git/doc/guix.texi:9103
16625 #, no-wrap
16626 msgid "monad"
16627 msgstr ""
16628
16629 #. type: Plain text
16630 #: guix-git/doc/guix.texi:9109
16631 msgid "The procedures that operate on the store described in the previous sections all take an open connection to the build daemon as their first argument. Although the underlying model is functional, they either have side effects or depend on the current state of the store."
16632 msgstr ""
16633
16634 #. type: Plain text
16635 #: guix-git/doc/guix.texi:9115
16636 msgid "The former is inconvenient: the connection to the build daemon has to be carried around in all those functions, making it impossible to compose functions that do not take that parameter with functions that do. The latter can be problematic: since store operations have side effects and/or depend on external state, they have to be properly sequenced."
16637 msgstr ""
16638
16639 #. type: cindex
16640 #: guix-git/doc/guix.texi:9116
16641 #, no-wrap
16642 msgid "monadic values"
16643 msgstr ""
16644
16645 #. type: cindex
16646 #: guix-git/doc/guix.texi:9117
16647 #, no-wrap
16648 msgid "monadic functions"
16649 msgstr ""
16650
16651 #. type: Plain text
16652 #: guix-git/doc/guix.texi:9127
16653 msgid "This is where the @code{(guix monads)} module comes in. This module provides a framework for working with @dfn{monads}, and a particularly useful monad for our uses, the @dfn{store monad}. Monads are a construct that allows two things: associating ``context'' with values (in our case, the context is the store), and building sequences of computations (here computations include accesses to the store). Values in a monad---values that carry this additional context---are called @dfn{monadic values}; procedures that return such values are called @dfn{monadic procedures}."
16654 msgstr ""
16655
16656 #. type: Plain text
16657 #: guix-git/doc/guix.texi:9129
16658 msgid "Consider this ``normal'' procedure:"
16659 msgstr ""
16660
16661 #. type: lisp
16662 #: guix-git/doc/guix.texi:9138
16663 #, no-wrap
16664 msgid ""
16665 "(define (sh-symlink store)\n"
16666 " ;; Return a derivation that symlinks the 'bash' executable.\n"
16667 " (let* ((drv (package-derivation store bash))\n"
16668 " (out (derivation->output-path drv))\n"
16669 " (sh (string-append out \"/bin/bash\")))\n"
16670 " (build-expression->derivation store \"sh\"\n"
16671 " `(symlink ,sh %output))))\n"
16672 msgstr ""
16673
16674 #. type: Plain text
16675 #: guix-git/doc/guix.texi:9142
16676 msgid "Using @code{(guix monads)} and @code{(guix gexp)}, it may be rewritten as a monadic function:"
16677 msgstr ""
16678
16679 #. type: lisp
16680 #: guix-git/doc/guix.texi:9150
16681 #, no-wrap
16682 msgid ""
16683 "(define (sh-symlink)\n"
16684 " ;; Same, but return a monadic value.\n"
16685 " (mlet %store-monad ((drv (package->derivation bash)))\n"
16686 " (gexp->derivation \"sh\"\n"
16687 " #~(symlink (string-append #$drv \"/bin/bash\")\n"
16688 " #$output))))\n"
16689 msgstr ""
16690
16691 #. type: Plain text
16692 #: guix-git/doc/guix.texi:9157
16693 msgid "There are several things to note in the second version: the @code{store} parameter is now implicit and is ``threaded'' in the calls to the @code{package->derivation} and @code{gexp->derivation} monadic procedures, and the monadic value returned by @code{package->derivation} is @dfn{bound} using @code{mlet} instead of plain @code{let}."
16694 msgstr ""
16695
16696 #. type: Plain text
16697 #: guix-git/doc/guix.texi:9161
16698 msgid "As it turns out, the call to @code{package->derivation} can even be omitted since it will take place implicitly, as we will see later (@pxref{G-Expressions}):"
16699 msgstr ""
16700
16701 #. type: lisp
16702 #: guix-git/doc/guix.texi:9167
16703 #, no-wrap
16704 msgid ""
16705 "(define (sh-symlink)\n"
16706 " (gexp->derivation \"sh\"\n"
16707 " #~(symlink (string-append #$bash \"/bin/bash\")\n"
16708 " #$output)))\n"
16709 msgstr ""
16710
16711 #. type: Plain text
16712 #: guix-git/doc/guix.texi:9176
16713 msgid "Calling the monadic @code{sh-symlink} has no effect. As someone once said, ``you exit a monad like you exit a building on fire: by running''. So, to exit the monad and get the desired effect, one must use @code{run-with-store}:"
16714 msgstr ""
16715
16716 #. type: lisp
16717 #: guix-git/doc/guix.texi:9180
16718 #, no-wrap
16719 msgid ""
16720 "(run-with-store (open-connection) (sh-symlink))\n"
16721 "@result{} /gnu/store/...-sh-symlink\n"
16722 msgstr ""
16723
16724 #. type: Plain text
16725 #: guix-git/doc/guix.texi:9186
16726 msgid "Note that the @code{(guix monad-repl)} module extends the Guile REPL with new ``meta-commands'' to make it easier to deal with monadic procedures: @code{run-in-store}, and @code{enter-store-monad}. The former is used to ``run'' a single monadic value through the store:"
16727 msgstr ""
16728
16729 #. type: example
16730 #: guix-git/doc/guix.texi:9190
16731 #, no-wrap
16732 msgid ""
16733 "scheme@@(guile-user)> ,run-in-store (package->derivation hello)\n"
16734 "$1 = #<derivation /gnu/store/@dots{}-hello-2.9.drv => @dots{}>\n"
16735 msgstr ""
16736
16737 #. type: Plain text
16738 #: guix-git/doc/guix.texi:9194
16739 msgid "The latter enters a recursive REPL, where all the return values are automatically run through the store:"
16740 msgstr ""
16741
16742 #. type: example
16743 #: guix-git/doc/guix.texi:9203
16744 #, no-wrap
16745 msgid ""
16746 "scheme@@(guile-user)> ,enter-store-monad\n"
16747 "store-monad@@(guile-user) [1]> (package->derivation hello)\n"
16748 "$2 = #<derivation /gnu/store/@dots{}-hello-2.9.drv => @dots{}>\n"
16749 "store-monad@@(guile-user) [1]> (text-file \"foo\" \"Hello!\")\n"
16750 "$3 = \"/gnu/store/@dots{}-foo\"\n"
16751 "store-monad@@(guile-user) [1]> ,q\n"
16752 "scheme@@(guile-user)>\n"
16753 msgstr ""
16754
16755 #. type: Plain text
16756 #: guix-git/doc/guix.texi:9208
16757 msgid "Note that non-monadic values cannot be returned in the @code{store-monad} REPL."
16758 msgstr ""
16759
16760 #. type: Plain text
16761 #: guix-git/doc/guix.texi:9211
16762 msgid "The main syntactic forms to deal with monads in general are provided by the @code{(guix monads)} module and are described below."
16763 msgstr ""
16764
16765 #. type: deffn
16766 #: guix-git/doc/guix.texi:9212
16767 #, no-wrap
16768 msgid "{Scheme Syntax} with-monad @var{monad} @var{body} ..."
16769 msgstr ""
16770
16771 #. type: deffn
16772 #: guix-git/doc/guix.texi:9215
16773 msgid "Evaluate any @code{>>=} or @code{return} forms in @var{body} as being in @var{monad}."
16774 msgstr ""
16775
16776 #. type: deffn
16777 #: guix-git/doc/guix.texi:9217
16778 #, no-wrap
16779 msgid "{Scheme Syntax} return @var{val}"
16780 msgstr ""
16781
16782 #. type: deffn
16783 #: guix-git/doc/guix.texi:9219
16784 msgid "Return a monadic value that encapsulates @var{val}."
16785 msgstr ""
16786
16787 #. type: deffn
16788 #: guix-git/doc/guix.texi:9221
16789 #, no-wrap
16790 msgid "{Scheme Syntax} >>= @var{mval} @var{mproc} ..."
16791 msgstr ""
16792
16793 #. type: deffn
16794 #: guix-git/doc/guix.texi:9228
16795 msgid "@dfn{Bind} monadic value @var{mval}, passing its ``contents'' to monadic procedures @var{mproc}@dots{}@footnote{This operation is commonly referred to as ``bind'', but that name denotes an unrelated procedure in Guile. Thus we use this somewhat cryptic symbol inherited from the Haskell language.}. There can be one @var{mproc} or several of them, as in this example:"
16796 msgstr ""
16797
16798 #. type: lisp
16799 #: guix-git/doc/guix.texi:9236
16800 #, no-wrap
16801 msgid ""
16802 "(run-with-state\n"
16803 " (with-monad %state-monad\n"
16804 " (>>= (return 1)\n"
16805 " (lambda (x) (return (+ 1 x)))\n"
16806 " (lambda (x) (return (* 2 x)))))\n"
16807 " 'some-state)\n"
16808 "\n"
16809 msgstr ""
16810
16811 #. type: lisp
16812 #: guix-git/doc/guix.texi:9239
16813 #, no-wrap
16814 msgid ""
16815 "@result{} 4\n"
16816 "@result{} some-state\n"
16817 msgstr ""
16818
16819 #. type: deffn
16820 #: guix-git/doc/guix.texi:9242
16821 #, no-wrap
16822 msgid "{Scheme Syntax} mlet @var{monad} ((@var{var} @var{mval}) ...) @"
16823 msgstr ""
16824
16825 #. type: deffn
16826 #: guix-git/doc/guix.texi:9244
16827 msgid "@var{body} ..."
16828 msgstr ""
16829
16830 #. type: deffnx
16831 #: guix-git/doc/guix.texi:9244
16832 #, no-wrap
16833 msgid "{Scheme Syntax} mlet* @var{monad} ((@var{var} @var{mval}) ...) @"
16834 msgstr ""
16835
16836 #. type: deffn
16837 #: guix-git/doc/guix.texi:9256
16838 msgid "@var{body} ... Bind the variables @var{var} to the monadic values @var{mval} in @var{body}, which is a sequence of expressions. As with the bind operator, this can be thought of as ``unpacking'' the raw, non-monadic value ``contained'' in @var{mval} and making @var{var} refer to that raw, non-monadic value within the scope of the @var{body}. The form (@var{var} -> @var{val}) binds @var{var} to the ``normal'' value @var{val}, as per @code{let}. The binding operations occur in sequence from left to right. The last expression of @var{body} must be a monadic expression, and its result will become the result of the @code{mlet} or @code{mlet*} when run in the @var{monad}."
16839 msgstr ""
16840
16841 #. type: deffn
16842 #: guix-git/doc/guix.texi:9259
16843 msgid "@code{mlet*} is to @code{mlet} what @code{let*} is to @code{let} (@pxref{Local Bindings,,, guile, GNU Guile Reference Manual})."
16844 msgstr ""
16845
16846 #. type: deffn
16847 #: guix-git/doc/guix.texi:9261
16848 #, no-wrap
16849 msgid "{Scheme System} mbegin @var{monad} @var{mexp} ..."
16850 msgstr ""
16851
16852 #. type: deffn
16853 #: guix-git/doc/guix.texi:9265
16854 msgid "Bind @var{mexp} and the following monadic expressions in sequence, returning the result of the last expression. Every expression in the sequence must be a monadic expression."
16855 msgstr ""
16856
16857 #. type: deffn
16858 #: guix-git/doc/guix.texi:9269
16859 msgid "This is akin to @code{mlet}, except that the return values of the monadic expressions are ignored. In that sense, it is analogous to @code{begin}, but applied to monadic expressions."
16860 msgstr ""
16861
16862 #. type: deffn
16863 #: guix-git/doc/guix.texi:9271
16864 #, no-wrap
16865 msgid "{Scheme System} mwhen @var{condition} @var{mexp0} @var{mexp*} ..."
16866 msgstr ""
16867
16868 #. type: deffn
16869 #: guix-git/doc/guix.texi:9276
16870 msgid "When @var{condition} is true, evaluate the sequence of monadic expressions @var{mexp0}..@var{mexp*} as in an @code{mbegin}. When @var{condition} is false, return @code{*unspecified*} in the current monad. Every expression in the sequence must be a monadic expression."
16871 msgstr ""
16872
16873 #. type: deffn
16874 #: guix-git/doc/guix.texi:9278
16875 #, no-wrap
16876 msgid "{Scheme System} munless @var{condition} @var{mexp0} @var{mexp*} ..."
16877 msgstr ""
16878
16879 #. type: deffn
16880 #: guix-git/doc/guix.texi:9283
16881 msgid "When @var{condition} is false, evaluate the sequence of monadic expressions @var{mexp0}..@var{mexp*} as in an @code{mbegin}. When @var{condition} is true, return @code{*unspecified*} in the current monad. Every expression in the sequence must be a monadic expression."
16882 msgstr ""
16883
16884 #. type: cindex
16885 #: guix-git/doc/guix.texi:9285
16886 #, no-wrap
16887 msgid "state monad"
16888 msgstr ""
16889
16890 #. type: Plain text
16891 #: guix-git/doc/guix.texi:9289
16892 msgid "The @code{(guix monads)} module provides the @dfn{state monad}, which allows an additional value---the state---to be @emph{threaded} through monadic procedure calls."
16893 msgstr ""
16894
16895 #. type: defvr
16896 #: guix-git/doc/guix.texi:9290
16897 #, no-wrap
16898 msgid "{Scheme Variable} %state-monad"
16899 msgstr ""
16900
16901 #. type: defvr
16902 #: guix-git/doc/guix.texi:9293
16903 msgid "The state monad. Procedures in the state monad can access and change the state that is threaded."
16904 msgstr ""
16905
16906 #. type: defvr
16907 #: guix-git/doc/guix.texi:9297
16908 msgid "Consider the example below. The @code{square} procedure returns a value in the state monad. It returns the square of its argument, but also increments the current state value:"
16909 msgstr ""
16910
16911 #. type: lisp
16912 #: guix-git/doc/guix.texi:9304
16913 #, no-wrap
16914 msgid ""
16915 "(define (square x)\n"
16916 " (mlet %state-monad ((count (current-state)))\n"
16917 " (mbegin %state-monad\n"
16918 " (set-current-state (+ 1 count))\n"
16919 " (return (* x x)))))\n"
16920 "\n"
16921 msgstr ""
16922
16923 #. type: lisp
16924 #: guix-git/doc/guix.texi:9308
16925 #, no-wrap
16926 msgid ""
16927 "(run-with-state (sequence %state-monad (map square (iota 3))) 0)\n"
16928 "@result{} (0 1 4)\n"
16929 "@result{} 3\n"
16930 msgstr ""
16931
16932 #. type: defvr
16933 #: guix-git/doc/guix.texi:9312
16934 msgid "When ``run'' through @code{%state-monad}, we obtain that additional state value, which is the number of @code{square} calls."
16935 msgstr ""
16936
16937 #. type: deffn
16938 #: guix-git/doc/guix.texi:9314
16939 #, no-wrap
16940 msgid "{Monadic Procedure} current-state"
16941 msgstr ""
16942
16943 #. type: deffn
16944 #: guix-git/doc/guix.texi:9316
16945 msgid "Return the current state as a monadic value."
16946 msgstr ""
16947
16948 #. type: deffn
16949 #: guix-git/doc/guix.texi:9318
16950 #, no-wrap
16951 msgid "{Monadic Procedure} set-current-state @var{value}"
16952 msgstr ""
16953
16954 #. type: deffn
16955 #: guix-git/doc/guix.texi:9321
16956 msgid "Set the current state to @var{value} and return the previous state as a monadic value."
16957 msgstr ""
16958
16959 #. type: deffn
16960 #: guix-git/doc/guix.texi:9323
16961 #, no-wrap
16962 msgid "{Monadic Procedure} state-push @var{value}"
16963 msgstr ""
16964
16965 #. type: deffn
16966 #: guix-git/doc/guix.texi:9326
16967 msgid "Push @var{value} to the current state, which is assumed to be a list, and return the previous state as a monadic value."
16968 msgstr ""
16969
16970 #. type: deffn
16971 #: guix-git/doc/guix.texi:9328
16972 #, no-wrap
16973 msgid "{Monadic Procedure} state-pop"
16974 msgstr ""
16975
16976 #. type: deffn
16977 #: guix-git/doc/guix.texi:9331
16978 msgid "Pop a value from the current state and return it as a monadic value. The state is assumed to be a list."
16979 msgstr ""
16980
16981 #. type: deffn
16982 #: guix-git/doc/guix.texi:9333
16983 #, no-wrap
16984 msgid "{Scheme Procedure} run-with-state @var{mval} [@var{state}]"
16985 msgstr ""
16986
16987 #. type: deffn
16988 #: guix-git/doc/guix.texi:9336
16989 msgid "Run monadic value @var{mval} starting with @var{state} as the initial state. Return two values: the resulting value, and the resulting state."
16990 msgstr ""
16991
16992 #. type: Plain text
16993 #: guix-git/doc/guix.texi:9340
16994 msgid "The main interface to the store monad, provided by the @code{(guix store)} module, is as follows."
16995 msgstr ""
16996
16997 #. type: defvr
16998 #: guix-git/doc/guix.texi:9341
16999 #, no-wrap
17000 msgid "{Scheme Variable} %store-monad"
17001 msgstr ""
17002
17003 #. type: defvr
17004 #: guix-git/doc/guix.texi:9343
17005 msgid "The store monad---an alias for @code{%state-monad}."
17006 msgstr ""
17007
17008 #. type: defvr
17009 #: guix-git/doc/guix.texi:9347
17010 msgid "Values in the store monad encapsulate accesses to the store. When its effect is needed, a value of the store monad must be ``evaluated'' by passing it to the @code{run-with-store} procedure (see below)."
17011 msgstr ""
17012
17013 #. type: deffn
17014 #: guix-git/doc/guix.texi:9349
17015 #, no-wrap
17016 msgid "{Scheme Procedure} run-with-store @var{store} @var{mval} [#:guile-for-build] [#:system (%current-system)]"
17017 msgstr ""
17018
17019 #. type: deffn
17020 #: guix-git/doc/guix.texi:9352
17021 msgid "Run @var{mval}, a monadic value in the store monad, in @var{store}, an open store connection."
17022 msgstr ""
17023
17024 #. type: deffn
17025 #: guix-git/doc/guix.texi:9354
17026 #, no-wrap
17027 msgid "{Monadic Procedure} text-file @var{name} @var{text} [@var{references}]"
17028 msgstr ""
17029
17030 #. type: deffn
17031 #: guix-git/doc/guix.texi:9358
17032 msgid "Return as a monadic value the absolute file name in the store of the file containing @var{text}, a string. @var{references} is a list of store items that the resulting text file refers to; it defaults to the empty list."
17033 msgstr ""
17034
17035 #. type: deffn
17036 #: guix-git/doc/guix.texi:9360
17037 #, no-wrap
17038 msgid "{Monadic Procedure} binary-file @var{name} @var{data} [@var{references}]"
17039 msgstr ""
17040
17041 #. type: deffn
17042 #: guix-git/doc/guix.texi:9364
17043 msgid "Return as a monadic value the absolute file name in the store of the file containing @var{data}, a bytevector. @var{references} is a list of store items that the resulting binary file refers to; it defaults to the empty list."
17044 msgstr ""
17045
17046 #. type: deffn
17047 #: guix-git/doc/guix.texi:9366
17048 #, no-wrap
17049 msgid "{Monadic Procedure} interned-file @var{file} [@var{name}] @"
17050 msgstr ""
17051
17052 #. type: deffn
17053 #: guix-git/doc/guix.texi:9371
17054 msgid "[#:recursive? #t] [#:select? (const #t)] Return the name of @var{file} once interned in the store. Use @var{name} as its store name, or the basename of @var{file} if @var{name} is omitted."
17055 msgstr ""
17056
17057 #. type: deffn
17058 #: guix-git/doc/guix.texi:9375 guix-git/doc/guix.texi:9798
17059 msgid "When @var{recursive?} is true, the contents of @var{file} are added recursively; if @var{file} designates a flat file and @var{recursive?} is true, its contents are added, and its permission bits are kept."
17060 msgstr ""
17061
17062 #. type: deffn
17063 #: guix-git/doc/guix.texi:9380 guix-git/doc/guix.texi:9803
17064 msgid "When @var{recursive?} is true, call @code{(@var{select?} @var{file} @var{stat})} for each directory entry, where @var{file} is the entry's absolute file name and @var{stat} is the result of @code{lstat}; exclude entries for which @var{select?} does not return true."
17065 msgstr ""
17066
17067 #. type: deffn
17068 #: guix-git/doc/guix.texi:9382
17069 msgid "The example below adds a file to the store, under two different names:"
17070 msgstr ""
17071
17072 #. type: lisp
17073 #: guix-git/doc/guix.texi:9388
17074 #, no-wrap
17075 msgid ""
17076 "(run-with-store (open-connection)\n"
17077 " (mlet %store-monad ((a (interned-file \"README\"))\n"
17078 " (b (interned-file \"README\" \"LEGU-MIN\")))\n"
17079 " (return (list a b))))\n"
17080 "\n"
17081 msgstr ""
17082
17083 #. type: lisp
17084 #: guix-git/doc/guix.texi:9390
17085 #, no-wrap
17086 msgid "@result{} (\"/gnu/store/rwm@dots{}-README\" \"/gnu/store/44i@dots{}-LEGU-MIN\")\n"
17087 msgstr ""
17088
17089 #. type: Plain text
17090 #: guix-git/doc/guix.texi:9396
17091 msgid "The @code{(guix packages)} module exports the following package-related monadic procedures:"
17092 msgstr ""
17093
17094 #. type: deffn
17095 #: guix-git/doc/guix.texi:9397
17096 #, no-wrap
17097 msgid "{Monadic Procedure} package-file @var{package} [@var{file}] @"
17098 msgstr ""
17099
17100 #. type: deffn
17101 #: guix-git/doc/guix.texi:9405
17102 msgid "[#:system (%current-system)] [#:target #f] @ [#:output \"out\"] Return as a monadic value in the absolute file name of @var{file} within the @var{output} directory of @var{package}. When @var{file} is omitted, return the name of the @var{output} directory of @var{package}. When @var{target} is true, use it as a cross-compilation target triplet."
17103 msgstr ""
17104
17105 #. type: deffn
17106 #: guix-git/doc/guix.texi:9409
17107 msgid "Note that this procedure does @emph{not} build @var{package}. Thus, the result might or might not designate an existing file. We recommend not using this procedure unless you know what you are doing."
17108 msgstr ""
17109
17110 #. type: deffn
17111 #: guix-git/doc/guix.texi:9411
17112 #, no-wrap
17113 msgid "{Monadic Procedure} package->derivation @var{package} [@var{system}]"
17114 msgstr ""
17115
17116 #. type: deffnx
17117 #: guix-git/doc/guix.texi:9412
17118 #, no-wrap
17119 msgid "{Monadic Procedure} package->cross-derivation @var{package} @"
17120 msgstr ""
17121
17122 #. type: deffn
17123 #: guix-git/doc/guix.texi:9416
17124 msgid "@var{target} [@var{system}] Monadic version of @code{package-derivation} and @code{package-cross-derivation} (@pxref{Defining Packages})."
17125 msgstr ""
17126
17127 #. type: cindex
17128 #: guix-git/doc/guix.texi:9422
17129 #, no-wrap
17130 msgid "G-expression"
17131 msgstr ""
17132
17133 #. type: cindex
17134 #: guix-git/doc/guix.texi:9423
17135 #, no-wrap
17136 msgid "build code quoting"
17137 msgstr ""
17138
17139 #. type: Plain text
17140 #: guix-git/doc/guix.texi:9429
17141 msgid "So we have ``derivations'', which represent a sequence of build actions to be performed to produce an item in the store (@pxref{Derivations}). These build actions are performed when asking the daemon to actually build the derivations; they are run by the daemon in a container (@pxref{Invoking guix-daemon})."
17142 msgstr ""
17143
17144 #. type: cindex
17145 #: guix-git/doc/guix.texi:9432
17146 #, no-wrap
17147 msgid "strata of code"
17148 msgstr ""
17149
17150 #. type: Plain text
17151 #: guix-git/doc/guix.texi:9444
17152 msgid "It should come as no surprise that we like to write these build actions in Scheme. When we do that, we end up with two @dfn{strata} of Scheme code@footnote{The term @dfn{stratum} in this context was coined by Manuel Serrano et al.@: in the context of their work on Hop. Oleg Kiselyov, who has written insightful @url{http://okmij.org/ftp/meta-programming/#meta-scheme, essays and code on this topic}, refers to this kind of code generation as @dfn{staging}.}: the ``host code''---code that defines packages, talks to the daemon, etc.---and the ``build code''---code that actually performs build actions, such as making directories, invoking @command{make}, and so on (@pxref{Build Phases})."
17153 msgstr ""
17154
17155 #. type: Plain text
17156 #: guix-git/doc/guix.texi:9451
17157 msgid "To describe a derivation and its build actions, one typically needs to embed build code inside host code. It boils down to manipulating build code as data, and the homoiconicity of Scheme---code has a direct representation as data---comes in handy for that. But we need more than the normal @code{quasiquote} mechanism in Scheme to construct build expressions."
17158 msgstr ""
17159
17160 #. type: Plain text
17161 #: guix-git/doc/guix.texi:9460
17162 msgid "The @code{(guix gexp)} module implements @dfn{G-expressions}, a form of S-expressions adapted to build expressions. G-expressions, or @dfn{gexps}, consist essentially of three syntactic forms: @code{gexp}, @code{ungexp}, and @code{ungexp-splicing} (or simply: @code{#~}, @code{#$}, and @code{#$@@}), which are comparable to @code{quasiquote}, @code{unquote}, and @code{unquote-splicing}, respectively (@pxref{Expression Syntax, @code{quasiquote},, guile, GNU Guile Reference Manual}). However, there are major differences:"
17163 msgstr ""
17164
17165 #. type: itemize
17166 #: guix-git/doc/guix.texi:9465
17167 msgid "Gexps are meant to be written to a file and run or manipulated by other processes."
17168 msgstr ""
17169
17170 #. type: itemize
17171 #: guix-git/doc/guix.texi:9470
17172 msgid "When a high-level object such as a package or derivation is unquoted inside a gexp, the result is as if its output file name had been introduced."
17173 msgstr ""
17174
17175 #. type: itemize
17176 #: guix-git/doc/guix.texi:9475
17177 msgid "Gexps carry information about the packages or derivations they refer to, and these dependencies are automatically added as inputs to the build processes that use them."
17178 msgstr ""
17179
17180 #. type: cindex
17181 #: guix-git/doc/guix.texi:9477 guix-git/doc/guix.texi:10034
17182 #, no-wrap
17183 msgid "lowering, of high-level objects in gexps"
17184 msgstr ""
17185
17186 #. type: Plain text
17187 #: guix-git/doc/guix.texi:9487
17188 msgid "This mechanism is not limited to package and derivation objects: @dfn{compilers} able to ``lower'' other high-level objects to derivations or files in the store can be defined, such that these objects can also be inserted into gexps. For example, a useful type of high-level objects that can be inserted in a gexp is ``file-like objects'', which make it easy to add files to the store and to refer to them in derivations and such (see @code{local-file} and @code{plain-file} below)."
17189 msgstr ""
17190
17191 #. type: Plain text
17192 #: guix-git/doc/guix.texi:9489
17193 msgid "To illustrate the idea, here is an example of a gexp:"
17194 msgstr ""
17195
17196 #. type: lisp
17197 #: guix-git/doc/guix.texi:9497
17198 #, no-wrap
17199 msgid ""
17200 "(define build-exp\n"
17201 " #~(begin\n"
17202 " (mkdir #$output)\n"
17203 " (chdir #$output)\n"
17204 " (symlink (string-append #$coreutils \"/bin/ls\")\n"
17205 " \"list-files\")))\n"
17206 msgstr ""
17207
17208 #. type: Plain text
17209 #: guix-git/doc/guix.texi:9502
17210 msgid "This gexp can be passed to @code{gexp->derivation}; we obtain a derivation that builds a directory containing exactly one symlink to @file{/gnu/store/@dots{}-coreutils-8.22/bin/ls}:"
17211 msgstr ""
17212
17213 #. type: lisp
17214 #: guix-git/doc/guix.texi:9505
17215 #, no-wrap
17216 msgid "(gexp->derivation \"the-thing\" build-exp)\n"
17217 msgstr ""
17218
17219 #. type: Plain text
17220 #: guix-git/doc/guix.texi:9513
17221 msgid "As one would expect, the @code{\"/gnu/store/@dots{}-coreutils-8.22\"} string is substituted to the reference to the @var{coreutils} package in the actual build code, and @var{coreutils} is automatically made an input to the derivation. Likewise, @code{#$output} (equivalent to @code{(ungexp output)}) is replaced by a string containing the directory name of the output of the derivation."
17222 msgstr ""
17223
17224 #. type: cindex
17225 #: guix-git/doc/guix.texi:9514
17226 #, no-wrap
17227 msgid "cross compilation"
17228 msgstr ""
17229
17230 #. type: Plain text
17231 #: guix-git/doc/guix.texi:9520
17232 msgid "In a cross-compilation context, it is useful to distinguish between references to the @emph{native} build of a package---that can run on the host---versus references to cross builds of a package. To that end, the @code{#+} plays the same role as @code{#$}, but is a reference to a native package build:"
17233 msgstr ""
17234
17235 #. type: lisp
17236 #: guix-git/doc/guix.texi:9531
17237 #, no-wrap
17238 msgid ""
17239 "(gexp->derivation \"vi\"\n"
17240 " #~(begin\n"
17241 " (mkdir #$output)\n"
17242 " (mkdir (string-append #$output \"/bin\"))\n"
17243 " (system* (string-append #+coreutils \"/bin/ln\")\n"
17244 " \"-s\"\n"
17245 " (string-append #$emacs \"/bin/emacs\")\n"
17246 " (string-append #$output \"/bin/vi\")))\n"
17247 " #:target \"aarch64-linux-gnu\")\n"
17248 msgstr ""
17249
17250 #. type: Plain text
17251 #: guix-git/doc/guix.texi:9537
17252 msgid "In the example above, the native build of @var{coreutils} is used, so that @command{ln} can actually run on the host; but then the cross-compiled build of @var{emacs} is referenced."
17253 msgstr ""
17254
17255 #. type: cindex
17256 #: guix-git/doc/guix.texi:9538
17257 #, no-wrap
17258 msgid "imported modules, for gexps"
17259 msgstr ""
17260
17261 #. type: findex
17262 #: guix-git/doc/guix.texi:9539
17263 #, no-wrap
17264 msgid "with-imported-modules"
17265 msgstr ""
17266
17267 #. type: Plain text
17268 #: guix-git/doc/guix.texi:9544
17269 msgid "Another gexp feature is @dfn{imported modules}: sometimes you want to be able to use certain Guile modules from the ``host environment'' in the gexp, so those modules should be imported in the ``build environment''. The @code{with-imported-modules} form allows you to express that:"
17270 msgstr ""
17271
17272 #. type: lisp
17273 #: guix-git/doc/guix.texi:9555
17274 #, no-wrap
17275 msgid ""
17276 "(let ((build (with-imported-modules '((guix build utils))\n"
17277 " #~(begin\n"
17278 " (use-modules (guix build utils))\n"
17279 " (mkdir-p (string-append #$output \"/bin\"))))))\n"
17280 " (gexp->derivation \"empty-dir\"\n"
17281 " #~(begin\n"
17282 " #$build\n"
17283 " (display \"success!\\n\")\n"
17284 " #t)))\n"
17285 msgstr ""
17286
17287 #. type: Plain text
17288 #: guix-git/doc/guix.texi:9561
17289 msgid "In this example, the @code{(guix build utils)} module is automatically pulled into the isolated build environment of our gexp, such that @code{(use-modules (guix build utils))} works as expected."
17290 msgstr ""
17291
17292 #. type: cindex
17293 #: guix-git/doc/guix.texi:9562
17294 #, no-wrap
17295 msgid "module closure"
17296 msgstr ""
17297
17298 #. type: findex
17299 #: guix-git/doc/guix.texi:9563
17300 #, no-wrap
17301 msgid "source-module-closure"
17302 msgstr ""
17303
17304 #. type: Plain text
17305 #: guix-git/doc/guix.texi:9570
17306 msgid "Usually you want the @emph{closure} of the module to be imported---i.e., the module itself and all the modules it depends on---rather than just the module; failing to do that, attempts to use the module will fail because of missing dependent modules. The @code{source-module-closure} procedure computes the closure of a module by looking at its source file headers, which comes in handy in this case:"
17307 msgstr ""
17308
17309 #. type: lisp
17310 #: guix-git/doc/guix.texi:9573
17311 #, no-wrap
17312 msgid ""
17313 "(use-modules (guix modules)) ;for 'source-module-closure'\n"
17314 "\n"
17315 msgstr ""
17316
17317 #. type: lisp
17318 #: guix-git/doc/guix.texi:9582
17319 #, no-wrap
17320 msgid ""
17321 "(with-imported-modules (source-module-closure\n"
17322 " '((guix build utils)\n"
17323 " (gnu build vm)))\n"
17324 " (gexp->derivation \"something-with-vms\"\n"
17325 " #~(begin\n"
17326 " (use-modules (guix build utils)\n"
17327 " (gnu build vm))\n"
17328 " @dots{})))\n"
17329 msgstr ""
17330
17331 #. type: cindex
17332 #: guix-git/doc/guix.texi:9584
17333 #, no-wrap
17334 msgid "extensions, for gexps"
17335 msgstr ""
17336
17337 #. type: findex
17338 #: guix-git/doc/guix.texi:9585
17339 #, no-wrap
17340 msgid "with-extensions"
17341 msgstr ""
17342
17343 #. type: Plain text
17344 #: guix-git/doc/guix.texi:9590
17345 msgid "In the same vein, sometimes you want to import not just pure-Scheme modules, but also ``extensions'' such as Guile bindings to C libraries or other ``full-blown'' packages. Say you need the @code{guile-json} package available on the build side, here's how you would do it:"
17346 msgstr ""
17347
17348 #. type: lisp
17349 #: guix-git/doc/guix.texi:9593
17350 #, no-wrap
17351 msgid ""
17352 "(use-modules (gnu packages guile)) ;for 'guile-json'\n"
17353 "\n"
17354 msgstr ""
17355
17356 #. type: lisp
17357 #: guix-git/doc/guix.texi:9599
17358 #, no-wrap
17359 msgid ""
17360 "(with-extensions (list guile-json)\n"
17361 " (gexp->derivation \"something-with-json\"\n"
17362 " #~(begin\n"
17363 " (use-modules (json))\n"
17364 " @dots{})))\n"
17365 msgstr ""
17366
17367 #. type: Plain text
17368 #: guix-git/doc/guix.texi:9602
17369 msgid "The syntactic form to construct gexps is summarized below."
17370 msgstr ""
17371
17372 #. type: deffn
17373 #: guix-git/doc/guix.texi:9603
17374 #, no-wrap
17375 msgid "{Scheme Syntax} #~@var{exp}"
17376 msgstr ""
17377
17378 #. type: deffnx
17379 #: guix-git/doc/guix.texi:9604
17380 #, no-wrap
17381 msgid "{Scheme Syntax} (gexp @var{exp})"
17382 msgstr ""
17383
17384 #. type: deffn
17385 #: guix-git/doc/guix.texi:9607
17386 msgid "Return a G-expression containing @var{exp}. @var{exp} may contain one or more of the following forms:"
17387 msgstr ""
17388
17389 #. type: item
17390 #: guix-git/doc/guix.texi:9609
17391 #, no-wrap
17392 msgid "#$@var{obj}"
17393 msgstr ""
17394
17395 #. type: itemx
17396 #: guix-git/doc/guix.texi:9610
17397 #, no-wrap
17398 msgid "(ungexp @var{obj})"
17399 msgstr ""
17400
17401 #. type: table
17402 #: guix-git/doc/guix.texi:9615
17403 msgid "Introduce a reference to @var{obj}. @var{obj} may have one of the supported types, for example a package or a derivation, in which case the @code{ungexp} form is replaced by its output file name---e.g., @code{\"/gnu/store/@dots{}-coreutils-8.22}."
17404 msgstr ""
17405
17406 #. type: table
17407 #: guix-git/doc/guix.texi:9618
17408 msgid "If @var{obj} is a list, it is traversed and references to supported objects are substituted similarly."
17409 msgstr ""
17410
17411 #. type: table
17412 #: guix-git/doc/guix.texi:9621
17413 msgid "If @var{obj} is another gexp, its contents are inserted and its dependencies are added to those of the containing gexp."
17414 msgstr ""
17415
17416 #. type: table
17417 #: guix-git/doc/guix.texi:9623
17418 msgid "If @var{obj} is another kind of object, it is inserted as is."
17419 msgstr ""
17420
17421 #. type: item
17422 #: guix-git/doc/guix.texi:9624
17423 #, no-wrap
17424 msgid "#$@var{obj}:@var{output}"
17425 msgstr ""
17426
17427 #. type: itemx
17428 #: guix-git/doc/guix.texi:9625
17429 #, no-wrap
17430 msgid "(ungexp @var{obj} @var{output})"
17431 msgstr ""
17432
17433 #. type: table
17434 #: guix-git/doc/guix.texi:9629
17435 msgid "This is like the form above, but referring explicitly to the @var{output} of @var{obj}---this is useful when @var{obj} produces multiple outputs (@pxref{Packages with Multiple Outputs})."
17436 msgstr ""
17437
17438 #. type: item
17439 #: guix-git/doc/guix.texi:9630
17440 #, no-wrap
17441 msgid "#+@var{obj}"
17442 msgstr ""
17443
17444 #. type: itemx
17445 #: guix-git/doc/guix.texi:9631
17446 #, no-wrap
17447 msgid "#+@var{obj}:output"
17448 msgstr ""
17449
17450 #. type: itemx
17451 #: guix-git/doc/guix.texi:9632
17452 #, no-wrap
17453 msgid "(ungexp-native @var{obj})"
17454 msgstr ""
17455
17456 #. type: itemx
17457 #: guix-git/doc/guix.texi:9633
17458 #, no-wrap
17459 msgid "(ungexp-native @var{obj} @var{output})"
17460 msgstr ""
17461
17462 #. type: table
17463 #: guix-git/doc/guix.texi:9636
17464 msgid "Same as @code{ungexp}, but produces a reference to the @emph{native} build of @var{obj} when used in a cross compilation context."
17465 msgstr ""
17466
17467 #. type: item
17468 #: guix-git/doc/guix.texi:9637
17469 #, no-wrap
17470 msgid "#$output[:@var{output}]"
17471 msgstr ""
17472
17473 #. type: itemx
17474 #: guix-git/doc/guix.texi:9638
17475 #, no-wrap
17476 msgid "(ungexp output [@var{output}])"
17477 msgstr ""
17478
17479 #. type: table
17480 #: guix-git/doc/guix.texi:9641
17481 msgid "Insert a reference to derivation output @var{output}, or to the main output when @var{output} is omitted."
17482 msgstr ""
17483
17484 #. type: table
17485 #: guix-git/doc/guix.texi:9643
17486 msgid "This only makes sense for gexps passed to @code{gexp->derivation}."
17487 msgstr ""
17488
17489 #. type: item
17490 #: guix-git/doc/guix.texi:9644
17491 #, no-wrap
17492 msgid "#$@@@var{lst}"
17493 msgstr ""
17494
17495 #. type: itemx
17496 #: guix-git/doc/guix.texi:9645
17497 #, no-wrap
17498 msgid "(ungexp-splicing @var{lst})"
17499 msgstr ""
17500
17501 #. type: table
17502 #: guix-git/doc/guix.texi:9648
17503 msgid "Like the above, but splices the contents of @var{lst} inside the containing list."
17504 msgstr ""
17505
17506 #. type: item
17507 #: guix-git/doc/guix.texi:9649
17508 #, no-wrap
17509 msgid "#+@@@var{lst}"
17510 msgstr ""
17511
17512 #. type: itemx
17513 #: guix-git/doc/guix.texi:9650
17514 #, no-wrap
17515 msgid "(ungexp-native-splicing @var{lst})"
17516 msgstr ""
17517
17518 #. type: table
17519 #: guix-git/doc/guix.texi:9653
17520 msgid "Like the above, but refers to native builds of the objects listed in @var{lst}."
17521 msgstr ""
17522
17523 #. type: deffn
17524 #: guix-git/doc/guix.texi:9658
17525 msgid "G-expressions created by @code{gexp} or @code{#~} are run-time objects of the @code{gexp?} type (see below)."
17526 msgstr ""
17527
17528 #. type: deffn
17529 #: guix-git/doc/guix.texi:9660
17530 #, no-wrap
17531 msgid "{Scheme Syntax} with-imported-modules @var{modules} @var{body}@dots{}"
17532 msgstr ""
17533
17534 #. type: deffn
17535 #: guix-git/doc/guix.texi:9663
17536 msgid "Mark the gexps defined in @var{body}@dots{} as requiring @var{modules} in their execution environment."
17537 msgstr ""
17538
17539 #. type: deffn
17540 #: guix-git/doc/guix.texi:9667
17541 msgid "Each item in @var{modules} can be the name of a module, such as @code{(guix build utils)}, or it can be a module name, followed by an arrow, followed by a file-like object:"
17542 msgstr ""
17543
17544 #. type: lisp
17545 #: guix-git/doc/guix.texi:9673
17546 #, no-wrap
17547 msgid ""
17548 "`((guix build utils)\n"
17549 " (guix gcrypt)\n"
17550 " ((guix config) => ,(scheme-file \"config.scm\"\n"
17551 " #~(define-module @dots{}))))\n"
17552 msgstr ""
17553
17554 #. type: deffn
17555 #: guix-git/doc/guix.texi:9678
17556 msgid "In the example above, the first two modules are taken from the search path, and the last one is created from the given file-like object."
17557 msgstr ""
17558
17559 #. type: deffn
17560 #: guix-git/doc/guix.texi:9682
17561 msgid "This form has @emph{lexical} scope: it has an effect on the gexps directly defined in @var{body}@dots{}, but not on those defined, say, in procedures called from @var{body}@dots{}."
17562 msgstr ""
17563
17564 #. type: deffn
17565 #: guix-git/doc/guix.texi:9684
17566 #, no-wrap
17567 msgid "{Scheme Syntax} with-extensions @var{extensions} @var{body}@dots{}"
17568 msgstr ""
17569
17570 #. type: deffn
17571 #: guix-git/doc/guix.texi:9689
17572 msgid "Mark the gexps defined in @var{body}@dots{} as requiring @var{extensions} in their build and execution environment. @var{extensions} is typically a list of package objects such as those defined in the @code{(gnu packages guile)} module."
17573 msgstr ""
17574
17575 #. type: deffn
17576 #: guix-git/doc/guix.texi:9694
17577 msgid "Concretely, the packages listed in @var{extensions} are added to the load path while compiling imported modules in @var{body}@dots{}; they are also added to the load path of the gexp returned by @var{body}@dots{}."
17578 msgstr ""
17579
17580 #. type: deffn
17581 #: guix-git/doc/guix.texi:9696
17582 #, no-wrap
17583 msgid "{Scheme Procedure} gexp? @var{obj}"
17584 msgstr ""
17585
17586 #. type: deffn
17587 #: guix-git/doc/guix.texi:9698
17588 msgid "Return @code{#t} if @var{obj} is a G-expression."
17589 msgstr ""
17590
17591 #. type: Plain text
17592 #: guix-git/doc/guix.texi:9704
17593 msgid "G-expressions are meant to be written to disk, either as code building some derivation, or as plain files in the store. The monadic procedures below allow you to do that (@pxref{The Store Monad}, for more information about monads)."
17594 msgstr ""
17595
17596 #. type: deffn
17597 #: guix-git/doc/guix.texi:9705
17598 #, no-wrap
17599 msgid "{Monadic Procedure} gexp->derivation @var{name} @var{exp} @"
17600 msgstr ""
17601
17602 #. type: deffn
17603 #: guix-git/doc/guix.texi:9723
17604 msgid "[#:system (%current-system)] [#:target #f] [#:graft? #t] @ [#:hash #f] [#:hash-algo #f] @ [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ [#:module-path @code{%load-path}] @ [#:effective-version \"2.2\"] @ [#:references-graphs #f] [#:allowed-references #f] @ [#:disallowed-references #f] @ [#:leaked-env-vars #f] @ [#:script-name (string-append @var{name} \"-builder\")] @ [#:deprecation-warnings #f] @ [#:local-build? #f] [#:substitutable? #t] @ [#:properties '()] [#:guile-for-build #f] Return a derivation @var{name} that runs @var{exp} (a gexp) with @var{guile-for-build} (a derivation) on @var{system}; @var{exp} is stored in a file called @var{script-name}. When @var{target} is true, it is used as the cross-compilation target triplet for packages referred to by @var{exp}."
17605 msgstr ""
17606
17607 #. type: deffn
17608 #: guix-git/doc/guix.texi:9731
17609 msgid "@var{modules} is deprecated in favor of @code{with-imported-modules}. Its meaning is to make @var{modules} available in the evaluation context of @var{exp}; @var{modules} is a list of names of Guile modules searched in @var{module-path} to be copied in the store, compiled, and made available in the load path during the execution of @var{exp}---e.g., @code{((guix build utils) (guix build gnu-build-system))}."
17610 msgstr ""
17611
17612 #. type: deffn
17613 #: guix-git/doc/guix.texi:9734
17614 msgid "@var{effective-version} determines the string to use when adding extensions of @var{exp} (see @code{with-extensions}) to the search path---e.g., @code{\"2.2\"}."
17615 msgstr ""
17616
17617 #. type: deffn
17618 #: guix-git/doc/guix.texi:9737
17619 msgid "@var{graft?} determines whether packages referred to by @var{exp} should be grafted when applicable."
17620 msgstr ""
17621
17622 #. type: deffn
17623 #: guix-git/doc/guix.texi:9740
17624 msgid "When @var{references-graphs} is true, it must be a list of tuples of one of the following forms:"
17625 msgstr ""
17626
17627 #. type: example
17628 #: guix-git/doc/guix.texi:9747
17629 #, no-wrap
17630 msgid ""
17631 "(@var{file-name} @var{package})\n"
17632 "(@var{file-name} @var{package} @var{output})\n"
17633 "(@var{file-name} @var{derivation})\n"
17634 "(@var{file-name} @var{derivation} @var{output})\n"
17635 "(@var{file-name} @var{store-item})\n"
17636 msgstr ""
17637
17638 #. type: deffn
17639 #: guix-git/doc/guix.texi:9753
17640 msgid "The right-hand-side of each element of @var{references-graphs} is automatically made an input of the build process of @var{exp}. In the build environment, each @var{file-name} contains the reference graph of the corresponding item, in a simple text format."
17641 msgstr ""
17642
17643 #. type: deffn
17644 #: guix-git/doc/guix.texi:9759
17645 msgid "@var{allowed-references} must be either @code{#f} or a list of output names and packages. In the latter case, the list denotes store items that the result is allowed to refer to. Any reference to another store item will lead to a build error. Similarly for @var{disallowed-references}, which can list items that must not be referenced by the outputs."
17646 msgstr ""
17647
17648 #. type: deffn
17649 #: guix-git/doc/guix.texi:9762
17650 msgid "@var{deprecation-warnings} determines whether to show deprecation warnings while compiling modules. It can be @code{#f}, @code{#t}, or @code{'detailed}."
17651 msgstr ""
17652
17653 #. type: deffn
17654 #: guix-git/doc/guix.texi:9764
17655 msgid "The other arguments are as for @code{derivation} (@pxref{Derivations})."
17656 msgstr ""
17657
17658 #. type: cindex
17659 #: guix-git/doc/guix.texi:9766
17660 #, no-wrap
17661 msgid "file-like objects"
17662 msgstr ""
17663
17664 #. type: Plain text
17665 #: guix-git/doc/guix.texi:9771
17666 msgid "The @code{local-file}, @code{plain-file}, @code{computed-file}, @code{program-file}, and @code{scheme-file} procedures below return @dfn{file-like objects}. That is, when unquoted in a G-expression, these objects lead to a file in the store. Consider this G-expression:"
17667 msgstr ""
17668
17669 #. type: lisp
17670 #: guix-git/doc/guix.texi:9775
17671 #, no-wrap
17672 msgid ""
17673 "#~(system* #$(file-append glibc \"/sbin/nscd\") \"-f\"\n"
17674 " #$(local-file \"/tmp/my-nscd.conf\"))\n"
17675 msgstr ""
17676
17677 #. type: Plain text
17678 #: guix-git/doc/guix.texi:9784
17679 msgid "The effect here is to ``intern'' @file{/tmp/my-nscd.conf} by copying it to the store. Once expanded, for instance @i{via} @code{gexp->derivation}, the G-expression refers to that copy under @file{/gnu/store}; thus, modifying or removing the file in @file{/tmp} does not have any effect on what the G-expression does. @code{plain-file} can be used similarly; it differs in that the file content is directly passed as a string."
17680 msgstr ""
17681
17682 #. type: deffn
17683 #: guix-git/doc/guix.texi:9785
17684 #, no-wrap
17685 msgid "{Scheme Procedure} local-file @var{file} [@var{name}] @"
17686 msgstr ""
17687
17688 #. type: deffn
17689 #: guix-git/doc/guix.texi:9794
17690 msgid "[#:recursive? #f] [#:select? (const #t)] Return an object representing local file @var{file} to add to the store; this object can be used in a gexp. If @var{file} is a literal string denoting a relative file name, it is looked up relative to the source file where it appears; if @var{file} is not a literal string, it is looked up relative to the current working directory at run time. @var{file} will be added to the store under @var{name}--by default the base name of @var{file}."
17691 msgstr ""
17692
17693 #. type: deffn
17694 #: guix-git/doc/guix.texi:9806
17695 msgid "This is the declarative counterpart of the @code{interned-file} monadic procedure (@pxref{The Store Monad, @code{interned-file}})."
17696 msgstr ""
17697
17698 #. type: deffn
17699 #: guix-git/doc/guix.texi:9808
17700 #, no-wrap
17701 msgid "{Scheme Procedure} plain-file @var{name} @var{content}"
17702 msgstr ""
17703
17704 #. type: deffn
17705 #: guix-git/doc/guix.texi:9811
17706 msgid "Return an object representing a text file called @var{name} with the given @var{content} (a string or a bytevector) to be added to the store."
17707 msgstr ""
17708
17709 #. type: deffn
17710 #: guix-git/doc/guix.texi:9813
17711 msgid "This is the declarative counterpart of @code{text-file}."
17712 msgstr ""
17713
17714 #. type: deffn
17715 #: guix-git/doc/guix.texi:9815
17716 #, no-wrap
17717 msgid "{Scheme Procedure} computed-file @var{name} @var{gexp} @"
17718 msgstr ""
17719
17720 #. type: deffn
17721 #: guix-git/doc/guix.texi:9822
17722 msgid "[#:local-build? #t] [#:options '()] Return an object representing the store item @var{name}, a file or directory computed by @var{gexp}. When @var{local-build?} is true (the default), the derivation is built locally. @var{options} is a list of additional arguments to pass to @code{gexp->derivation}."
17723 msgstr ""
17724
17725 #. type: deffn
17726 #: guix-git/doc/guix.texi:9824
17727 msgid "This is the declarative counterpart of @code{gexp->derivation}."
17728 msgstr ""
17729
17730 #. type: deffn
17731 #: guix-git/doc/guix.texi:9826
17732 #, no-wrap
17733 msgid "{Monadic Procedure} gexp->script @var{name} @var{exp} @"
17734 msgstr ""
17735
17736 #. type: deffn
17737 #: guix-git/doc/guix.texi:9832
17738 msgid "[#:guile (default-guile)] [#:module-path %load-path] @ [#:system (%current-system)] [#:target #f] Return an executable script @var{name} that runs @var{exp} using @var{guile}, with @var{exp}'s imported modules in its search path. Look up @var{exp}'s modules in @var{module-path}."
17739 msgstr ""
17740
17741 #. type: deffn
17742 #: guix-git/doc/guix.texi:9835
17743 msgid "The example below builds a script that simply invokes the @command{ls} command:"
17744 msgstr ""
17745
17746 #. type: lisp
17747 #: guix-git/doc/guix.texi:9838
17748 #, no-wrap
17749 msgid ""
17750 "(use-modules (guix gexp) (gnu packages base))\n"
17751 "\n"
17752 msgstr ""
17753
17754 #. type: lisp
17755 #: guix-git/doc/guix.texi:9842
17756 #, no-wrap
17757 msgid ""
17758 "(gexp->script \"list-files\"\n"
17759 " #~(execl #$(file-append coreutils \"/bin/ls\")\n"
17760 " \"ls\"))\n"
17761 msgstr ""
17762
17763 #. type: deffn
17764 #: guix-git/doc/guix.texi:9847
17765 msgid "When ``running'' it through the store (@pxref{The Store Monad, @code{run-with-store}}), we obtain a derivation that produces an executable file @file{/gnu/store/@dots{}-list-files} along these lines:"
17766 msgstr ""
17767
17768 #. type: example
17769 #: guix-git/doc/guix.texi:9852
17770 #, no-wrap
17771 msgid ""
17772 "#!/gnu/store/@dots{}-guile-2.0.11/bin/guile -ds\n"
17773 "!#\n"
17774 "(execl \"/gnu/store/@dots{}-coreutils-8.22\"/bin/ls\" \"ls\")\n"
17775 msgstr ""
17776
17777 #. type: deffn
17778 #: guix-git/doc/guix.texi:9855
17779 #, no-wrap
17780 msgid "{Scheme Procedure} program-file @var{name} @var{exp} @"
17781 msgstr ""
17782
17783 #. type: deffn
17784 #: guix-git/doc/guix.texi:9860
17785 msgid "[#:guile #f] [#:module-path %load-path] Return an object representing the executable store item @var{name} that runs @var{gexp}. @var{guile} is the Guile package used to execute that script. Imported modules of @var{gexp} are looked up in @var{module-path}."
17786 msgstr ""
17787
17788 #. type: deffn
17789 #: guix-git/doc/guix.texi:9862
17790 msgid "This is the declarative counterpart of @code{gexp->script}."
17791 msgstr ""
17792
17793 #. type: deffn
17794 #: guix-git/doc/guix.texi:9864
17795 #, no-wrap
17796 msgid "{Monadic Procedure} gexp->file @var{name} @var{exp} @"
17797 msgstr ""
17798
17799 #. type: deffn
17800 #: guix-git/doc/guix.texi:9871
17801 msgid "[#:set-load-path? #t] [#:module-path %load-path] @ [#:splice? #f] @ [#:guile (default-guile)] Return a derivation that builds a file @var{name} containing @var{exp}. When @var{splice?} is true, @var{exp} is considered to be a list of expressions that will be spliced in the resulting file."
17802 msgstr ""
17803
17804 #. type: deffn
17805 #: guix-git/doc/guix.texi:9876
17806 msgid "When @var{set-load-path?} is true, emit code in the resulting file to set @code{%load-path} and @code{%load-compiled-path} to honor @var{exp}'s imported modules. Look up @var{exp}'s modules in @var{module-path}."
17807 msgstr ""
17808
17809 #. type: deffn
17810 #: guix-git/doc/guix.texi:9879
17811 msgid "The resulting file holds references to all the dependencies of @var{exp} or a subset thereof."
17812 msgstr ""
17813
17814 #. type: deffn
17815 #: guix-git/doc/guix.texi:9881
17816 #, no-wrap
17817 msgid "{Scheme Procedure} scheme-file @var{name} @var{exp} @"
17818 msgstr ""
17819
17820 #. type: deffn
17821 #: guix-git/doc/guix.texi:9885
17822 msgid "[#:splice? #f] [#:set-load-path? #t] Return an object representing the Scheme file @var{name} that contains @var{exp}."
17823 msgstr ""
17824
17825 #. type: deffn
17826 #: guix-git/doc/guix.texi:9887
17827 msgid "This is the declarative counterpart of @code{gexp->file}."
17828 msgstr ""
17829
17830 #. type: deffn
17831 #: guix-git/doc/guix.texi:9889
17832 #, no-wrap
17833 msgid "{Monadic Procedure} text-file* @var{name} @var{text} @dots{}"
17834 msgstr ""
17835
17836 #. type: deffn
17837 #: guix-git/doc/guix.texi:9895
17838 msgid "Return as a monadic value a derivation that builds a text file containing all of @var{text}. @var{text} may list, in addition to strings, objects of any type that can be used in a gexp: packages, derivations, local file objects, etc. The resulting store file holds references to all these."
17839 msgstr ""
17840
17841 #. type: deffn
17842 #: guix-git/doc/guix.texi:9900
17843 msgid "This variant should be preferred over @code{text-file} anytime the file to create will reference items from the store. This is typically the case when building a configuration file that embeds store file names, like this:"
17844 msgstr ""
17845
17846 #. type: lisp
17847 #: guix-git/doc/guix.texi:9908
17848 #, no-wrap
17849 msgid ""
17850 "(define (profile.sh)\n"
17851 " ;; Return the name of a shell script in the store that\n"
17852 " ;; initializes the 'PATH' environment variable.\n"
17853 " (text-file* \"profile.sh\"\n"
17854 " \"export PATH=\" coreutils \"/bin:\"\n"
17855 " grep \"/bin:\" sed \"/bin\\n\"))\n"
17856 msgstr ""
17857
17858 #. type: deffn
17859 #: guix-git/doc/guix.texi:9913
17860 msgid "In this example, the resulting @file{/gnu/store/@dots{}-profile.sh} file will reference @var{coreutils}, @var{grep}, and @var{sed}, thereby preventing them from being garbage-collected during its lifetime."
17861 msgstr ""
17862
17863 #. type: deffn
17864 #: guix-git/doc/guix.texi:9915
17865 #, no-wrap
17866 msgid "{Scheme Procedure} mixed-text-file @var{name} @var{text} @dots{}"
17867 msgstr ""
17868
17869 #. type: deffn
17870 #: guix-git/doc/guix.texi:9919
17871 msgid "Return an object representing store file @var{name} containing @var{text}. @var{text} is a sequence of strings and file-like objects, as in:"
17872 msgstr ""
17873
17874 #. type: lisp
17875 #: guix-git/doc/guix.texi:9923
17876 #, no-wrap
17877 msgid ""
17878 "(mixed-text-file \"profile\"\n"
17879 " \"export PATH=\" coreutils \"/bin:\" grep \"/bin\")\n"
17880 msgstr ""
17881
17882 #. type: deffn
17883 #: guix-git/doc/guix.texi:9926
17884 msgid "This is the declarative counterpart of @code{text-file*}."
17885 msgstr ""
17886
17887 #. type: deffn
17888 #: guix-git/doc/guix.texi:9928
17889 #, no-wrap
17890 msgid "{Scheme Procedure} file-union @var{name} @var{files}"
17891 msgstr ""
17892
17893 #. type: deffn
17894 #: guix-git/doc/guix.texi:9933
17895 msgid "Return a @code{<computed-file>} that builds a directory containing all of @var{files}. Each item in @var{files} must be a two-element list where the first element is the file name to use in the new directory, and the second element is a gexp denoting the target file. Here's an example:"
17896 msgstr ""
17897
17898 #. type: lisp
17899 #: guix-git/doc/guix.texi:9940
17900 #, no-wrap
17901 msgid ""
17902 "(file-union \"etc\"\n"
17903 " `((\"hosts\" ,(plain-file \"hosts\"\n"
17904 " \"127.0.0.1 localhost\"))\n"
17905 " (\"bashrc\" ,(plain-file \"bashrc\"\n"
17906 " \"alias ls='ls --color=auto'\"))))\n"
17907 msgstr ""
17908
17909 #. type: deffn
17910 #: guix-git/doc/guix.texi:9943
17911 msgid "This yields an @code{etc} directory containing these two files."
17912 msgstr ""
17913
17914 #. type: deffn
17915 #: guix-git/doc/guix.texi:9945
17916 #, no-wrap
17917 msgid "{Scheme Procedure} directory-union @var{name} @var{things}"
17918 msgstr ""
17919
17920 #. type: deffn
17921 #: guix-git/doc/guix.texi:9948
17922 msgid "Return a directory that is the union of @var{things}, where @var{things} is a list of file-like objects denoting directories. For example:"
17923 msgstr ""
17924
17925 #. type: lisp
17926 #: guix-git/doc/guix.texi:9951
17927 #, no-wrap
17928 msgid "(directory-union \"guile+emacs\" (list guile emacs))\n"
17929 msgstr ""
17930
17931 #. type: deffn
17932 #: guix-git/doc/guix.texi:9954
17933 msgid "yields a directory that is the union of the @code{guile} and @code{emacs} packages."
17934 msgstr ""
17935
17936 #. type: deffn
17937 #: guix-git/doc/guix.texi:9956
17938 #, no-wrap
17939 msgid "{Scheme Procedure} file-append @var{obj} @var{suffix} @dots{}"
17940 msgstr ""
17941
17942 #. type: deffn
17943 #: guix-git/doc/guix.texi:9960
17944 msgid "Return a file-like object that expands to the concatenation of @var{obj} and @var{suffix}, where @var{obj} is a lowerable object and each @var{suffix} is a string."
17945 msgstr ""
17946
17947 #. type: deffn
17948 #: guix-git/doc/guix.texi:9962
17949 msgid "As an example, consider this gexp:"
17950 msgstr ""
17951
17952 #. type: lisp
17953 #: guix-git/doc/guix.texi:9967
17954 #, no-wrap
17955 msgid ""
17956 "(gexp->script \"run-uname\"\n"
17957 " #~(system* #$(file-append coreutils\n"
17958 " \"/bin/uname\")))\n"
17959 msgstr ""
17960
17961 #. type: deffn
17962 #: guix-git/doc/guix.texi:9970
17963 msgid "The same effect could be achieved with:"
17964 msgstr ""
17965
17966 #. type: lisp
17967 #: guix-git/doc/guix.texi:9975
17968 #, no-wrap
17969 msgid ""
17970 "(gexp->script \"run-uname\"\n"
17971 " #~(system* (string-append #$coreutils\n"
17972 " \"/bin/uname\")))\n"
17973 msgstr ""
17974
17975 #. type: deffn
17976 #: guix-git/doc/guix.texi:9981
17977 msgid "There is one difference though: in the @code{file-append} case, the resulting script contains the absolute file name as a string, whereas in the second case, the resulting script contains a @code{(string-append @dots{})} expression to construct the file name @emph{at run time}."
17978 msgstr ""
17979
17980 #. type: deffn
17981 #: guix-git/doc/guix.texi:9983
17982 #, no-wrap
17983 msgid "{Scheme Syntax} let-system @var{system} @var{body}@dots{}"
17984 msgstr ""
17985
17986 #. type: deffnx
17987 #: guix-git/doc/guix.texi:9984
17988 #, no-wrap
17989 msgid "{Scheme Syntax} let-system (@var{system} @var{target}) @var{body}@dots{}"
17990 msgstr ""
17991
17992 #. type: deffn
17993 #: guix-git/doc/guix.texi:9987
17994 msgid "Bind @var{system} to the currently targeted system---e.g., @code{\"x86_64-linux\"}---within @var{body}."
17995 msgstr ""
17996
17997 #. type: deffn
17998 #: guix-git/doc/guix.texi:9992
17999 msgid "In the second case, additionally bind @var{target} to the current cross-compilation target---a GNU triplet such as @code{\"arm-linux-gnueabihf\"}---or @code{#f} if we are not cross-compiling."
18000 msgstr ""
18001
18002 #. type: deffn
18003 #: guix-git/doc/guix.texi:9995
18004 msgid "@code{let-system} is useful in the occasional case where the object spliced into the gexp depends on the target system, as in this example:"
18005 msgstr ""
18006
18007 #. type: lisp
18008 #: guix-git/doc/guix.texi:10006
18009 #, no-wrap
18010 msgid ""
18011 "#~(system*\n"
18012 " #+(let-system system\n"
18013 " (cond ((string-prefix? \"armhf-\" system)\n"
18014 " (file-append qemu \"/bin/qemu-system-arm\"))\n"
18015 " ((string-prefix? \"x86_64-\" system)\n"
18016 " (file-append qemu \"/bin/qemu-system-x86_64\"))\n"
18017 " (else\n"
18018 " (error \"dunno!\"))))\n"
18019 " \"-net\" \"user\" #$image)\n"
18020 msgstr ""
18021
18022 #. type: deffn
18023 #: guix-git/doc/guix.texi:10009
18024 #, no-wrap
18025 msgid "{Scheme Syntax} with-parameters ((@var{parameter} @var{value}) @dots{}) @var{exp}"
18026 msgstr ""
18027
18028 #. type: deffn
18029 #: guix-git/doc/guix.texi:10015
18030 msgid "This macro is similar to the @code{parameterize} form for dynamically-bound @dfn{parameters} (@pxref{Parameters,,, guile, GNU Guile Reference Manual}). The key difference is that it takes effect when the file-like object returned by @var{exp} is lowered to a derivation or store item."
18031 msgstr ""
18032
18033 #. type: deffn
18034 #: guix-git/doc/guix.texi:10018
18035 msgid "A typical use of @code{with-parameters} is to force the system in effect for a given object:"
18036 msgstr ""
18037
18038 #. type: lisp
18039 #: guix-git/doc/guix.texi:10022
18040 #, no-wrap
18041 msgid ""
18042 "(with-parameters ((%current-system \"i686-linux\"))\n"
18043 " coreutils)\n"
18044 msgstr ""
18045
18046 #. type: deffn
18047 #: guix-git/doc/guix.texi:10026
18048 msgid "The example above returns an object that corresponds to the i686 build of Coreutils, regardless of the current value of @code{%current-system}."
18049 msgstr ""
18050
18051 #. type: Plain text
18052 #: guix-git/doc/guix.texi:10033
18053 msgid "Of course, in addition to gexps embedded in ``host'' code, there are also modules containing build tools. To make it clear that they are meant to be used in the build stratum, these modules are kept in the @code{(guix build @dots{})} name space."
18054 msgstr ""
18055
18056 #. type: Plain text
18057 #: guix-git/doc/guix.texi:10039
18058 msgid "Internally, high-level objects are @dfn{lowered}, using their compiler, to either derivations or store items. For instance, lowering a package yields a derivation, and lowering a @code{plain-file} yields a store item. This is achieved using the @code{lower-object} monadic procedure."
18059 msgstr ""
18060
18061 #. type: deffn
18062 #: guix-git/doc/guix.texi:10040
18063 #, no-wrap
18064 msgid "{Monadic Procedure} lower-object @var{obj} [@var{system}] @"
18065 msgstr ""
18066
18067 #. type: deffn
18068 #: guix-git/doc/guix.texi:10046
18069 msgid "[#:target #f] Return as a value in @code{%store-monad} the derivation or store item corresponding to @var{obj} for @var{system}, cross-compiling for @var{target} if @var{target} is true. @var{obj} must be an object that has an associated gexp compiler, such as a @code{<package>}."
18070 msgstr ""
18071
18072 #. type: section
18073 #: guix-git/doc/guix.texi:10049
18074 #, no-wrap
18075 msgid "Invoking @command{guix repl}"
18076 msgstr ""
18077
18078 #. type: cindex
18079 #: guix-git/doc/guix.texi:10051
18080 #, no-wrap
18081 msgid "REPL, read-eval-print loop, script"
18082 msgstr ""
18083
18084 #. type: Plain text
18085 #: guix-git/doc/guix.texi:10061
18086 msgid "The @command{guix repl} command makes it easier to program Guix in Guile by launching a Guile @dfn{read-eval-print loop} (REPL) for interactive programming (@pxref{Using Guile Interactively,,, guile, GNU Guile Reference Manual}), or by running Guile scripts (@pxref{Running Guile Scripts,,, guile, GNU Guile Reference Manual}). Compared to just launching the @command{guile} command, @command{guix repl} guarantees that all the Guix modules and all its dependencies are available in the search path."
18087 msgstr ""
18088
18089 #. type: example
18090 #: guix-git/doc/guix.texi:10066
18091 #, no-wrap
18092 msgid "guix repl @var{options} [@var{file} @var{args}]\n"
18093 msgstr ""
18094
18095 #. type: Plain text
18096 #: guix-git/doc/guix.texi:10070
18097 msgid "When a @var{file} argument is provided, @var{file} is executed as a Guile scripts:"
18098 msgstr ""
18099
18100 #. type: example
18101 #: guix-git/doc/guix.texi:10073
18102 #, no-wrap
18103 msgid "guix repl my-script.scm\n"
18104 msgstr ""
18105
18106 #. type: Plain text
18107 #: guix-git/doc/guix.texi:10077
18108 msgid "To pass arguments to the script, use @code{--} to prevent them from being interpreted as arguments to @command{guix repl} itself:"
18109 msgstr ""
18110
18111 #. type: example
18112 #: guix-git/doc/guix.texi:10080
18113 #, no-wrap
18114 msgid "guix repl -- my-script.scm --input=foo.txt\n"
18115 msgstr ""
18116
18117 #. type: Plain text
18118 #: guix-git/doc/guix.texi:10085
18119 msgid "To make a script executable directly from the shell, using the guix executable that is on the user's search path, add the following two lines at the top of the script:"
18120 msgstr ""
18121
18122 #. type: example
18123 #: guix-git/doc/guix.texi:10089
18124 #, no-wrap
18125 msgid ""
18126 "@code{#!/usr/bin/env -S guix repl --}\n"
18127 "@code{!#}\n"
18128 msgstr ""
18129
18130 #. type: Plain text
18131 #: guix-git/doc/guix.texi:10092
18132 msgid "Without a file name argument, a Guile REPL is started:"
18133 msgstr ""
18134
18135 #. type: example
18136 #: guix-git/doc/guix.texi:10098
18137 #, no-wrap
18138 msgid ""
18139 "$ guix repl\n"
18140 "scheme@@(guile-user)> ,use (gnu packages base)\n"
18141 "scheme@@(guile-user)> coreutils\n"
18142 "$1 = #<package coreutils@@8.29 gnu/packages/base.scm:327 3e28300>\n"
18143 msgstr ""
18144
18145 #. type: Plain text
18146 #: guix-git/doc/guix.texi:10105
18147 msgid "In addition, @command{guix repl} implements a simple machine-readable REPL protocol for use by @code{(guix inferior)}, a facility to interact with @dfn{inferiors}, separate processes running a potentially different revision of Guix."
18148 msgstr ""
18149
18150 #. type: Plain text
18151 #: guix-git/doc/guix.texi:10107
18152 msgid "The available options are as follows:"
18153 msgstr ""
18154
18155 #. type: item
18156 #: guix-git/doc/guix.texi:10109 guix-git/doc/guix.texi:12501
18157 #, no-wrap
18158 msgid "--type=@var{type}"
18159 msgstr ""
18160
18161 #. type: itemx
18162 #: guix-git/doc/guix.texi:10110 guix-git/doc/guix.texi:12502
18163 #: guix-git/doc/guix.texi:33191
18164 #, no-wrap
18165 msgid "-t @var{type}"
18166 msgstr ""
18167
18168 #. type: table
18169 #: guix-git/doc/guix.texi:10112
18170 msgid "Start a REPL of the given @var{TYPE}, which can be one of the following:"
18171 msgstr ""
18172
18173 #. type: item
18174 #: guix-git/doc/guix.texi:10114
18175 #, no-wrap
18176 msgid "guile"
18177 msgstr ""
18178
18179 #. type: table
18180 #: guix-git/doc/guix.texi:10116
18181 msgid "This is default, and it spawns a standard full-featured Guile REPL."
18182 msgstr ""
18183
18184 #. type: item
18185 #: guix-git/doc/guix.texi:10116
18186 #, no-wrap
18187 msgid "machine"
18188 msgstr ""
18189
18190 #. type: table
18191 #: guix-git/doc/guix.texi:10119
18192 msgid "Spawn a REPL that uses the machine-readable protocol. This is the protocol that the @code{(guix inferior)} module speaks."
18193 msgstr ""
18194
18195 #. type: table
18196 #: guix-git/doc/guix.texi:10125
18197 msgid "By default, @command{guix repl} reads from standard input and writes to standard output. When this option is passed, it will instead listen for connections on @var{endpoint}. Here are examples of valid options:"
18198 msgstr ""
18199
18200 #. type: item
18201 #: guix-git/doc/guix.texi:10127
18202 #, no-wrap
18203 msgid "--listen=tcp:37146"
18204 msgstr ""
18205
18206 #. type: table
18207 #: guix-git/doc/guix.texi:10129
18208 msgid "Accept connections on localhost on port 37146."
18209 msgstr ""
18210
18211 #. type: item
18212 #: guix-git/doc/guix.texi:10130
18213 #, no-wrap
18214 msgid "--listen=unix:/tmp/socket"
18215 msgstr ""
18216
18217 #. type: table
18218 #: guix-git/doc/guix.texi:10132
18219 msgid "Accept connections on the Unix-domain socket @file{/tmp/socket}."
18220 msgstr ""
18221
18222 #. type: item
18223 #: guix-git/doc/guix.texi:10134 guix-git/doc/guix.texi:10238
18224 #: guix-git/doc/guix.texi:11970 guix-git/doc/guix.texi:12150
18225 #: guix-git/doc/guix.texi:12295 guix-git/doc/guix.texi:12549
18226 #, no-wrap
18227 msgid "--load-path=@var{directory}"
18228 msgstr ""
18229
18230 #. type: itemx
18231 #: guix-git/doc/guix.texi:10135 guix-git/doc/guix.texi:10239
18232 #: guix-git/doc/guix.texi:12151 guix-git/doc/guix.texi:12296
18233 #: guix-git/doc/guix.texi:12550
18234 #, no-wrap
18235 msgid "-L @var{directory}"
18236 msgstr ""
18237
18238 #. type: table
18239 #: guix-git/doc/guix.texi:10138 guix-git/doc/guix.texi:10242
18240 #: guix-git/doc/guix.texi:11973 guix-git/doc/guix.texi:12154
18241 #: guix-git/doc/guix.texi:12299 guix-git/doc/guix.texi:12553
18242 msgid "Add @var{directory} to the front of the package module search path (@pxref{Package Modules})."
18243 msgstr ""
18244
18245 #. type: table
18246 #: guix-git/doc/guix.texi:10141
18247 msgid "This allows users to define their own packages and make them visible to the script or REPL."
18248 msgstr ""
18249
18250 #. type: itemx
18251 #: guix-git/doc/guix.texi:10142 guix-git/doc/guix.texi:10701
18252 #, no-wrap
18253 msgid "-q"
18254 msgstr ""
18255
18256 #. type: table
18257 #: guix-git/doc/guix.texi:10145
18258 msgid "Inhibit loading of the @file{~/.guile} file. By default, that configuration file is loaded when spawning a @code{guile} REPL."
18259 msgstr ""
18260
18261 #. type: Plain text
18262 #: guix-git/doc/guix.texi:10155
18263 msgid "This section describes Guix command-line utilities. Some of them are primarily targeted at developers and users who write new package definitions, while others are more generally useful. They complement the Scheme programming interface of Guix in a convenient way."
18264 msgstr ""
18265
18266 #. type: cindex
18267 #: guix-git/doc/guix.texi:10177
18268 #, no-wrap
18269 msgid "package building"
18270 msgstr ""
18271
18272 #. type: command{#1}
18273 #: guix-git/doc/guix.texi:10178
18274 #, no-wrap
18275 msgid "guix build"
18276 msgstr ""
18277
18278 #. type: Plain text
18279 #: guix-git/doc/guix.texi:10184
18280 msgid "The @command{guix build} command builds packages or derivations and their dependencies, and prints the resulting store paths. Note that it does not modify the user's profile---this is the job of the @command{guix package} command (@pxref{Invoking guix package}). Thus, it is mainly useful for distribution developers."
18281 msgstr ""
18282
18283 #. type: example
18284 #: guix-git/doc/guix.texi:10189
18285 #, no-wrap
18286 msgid "guix build @var{options} @var{package-or-derivation}@dots{}\n"
18287 msgstr ""
18288
18289 #. type: Plain text
18290 #: guix-git/doc/guix.texi:10194
18291 msgid "As an example, the following command builds the latest versions of Emacs and of Guile, displays their build logs, and finally displays the resulting directories:"
18292 msgstr ""
18293
18294 #. type: example
18295 #: guix-git/doc/guix.texi:10197
18296 #, no-wrap
18297 msgid "guix build emacs guile\n"
18298 msgstr ""
18299
18300 #. type: Plain text
18301 #: guix-git/doc/guix.texi:10200
18302 msgid "Similarly, the following command builds all the available packages:"
18303 msgstr ""
18304
18305 #. type: example
18306 #: guix-git/doc/guix.texi:10204
18307 #, no-wrap
18308 msgid ""
18309 "guix build --quiet --keep-going \\\n"
18310 " $(guix package -A | cut -f1,2 --output-delimiter=@@)\n"
18311 msgstr ""
18312
18313 #. type: Plain text
18314 #: guix-git/doc/guix.texi:10212
18315 msgid "@var{package-or-derivation} may be either the name of a package found in the software distribution such as @code{coreutils} or @code{coreutils@@8.20}, or a derivation such as @file{/gnu/store/@dots{}-coreutils-8.19.drv}. In the former case, a package with the corresponding name (and optionally version) is searched for among the GNU distribution modules (@pxref{Package Modules})."
18316 msgstr ""
18317
18318 #. type: Plain text
18319 #: guix-git/doc/guix.texi:10217
18320 msgid "Alternatively, the @option{--expression} option may be used to specify a Scheme expression that evaluates to a package; this is useful when disambiguating among several same-named packages or package variants is needed."
18321 msgstr ""
18322
18323 #. type: Plain text
18324 #: guix-git/doc/guix.texi:10220
18325 msgid "There may be zero or more @var{options}. The available options are described in the subsections below."
18326 msgstr ""
18327
18328 #. type: Plain text
18329 #: guix-git/doc/guix.texi:10235
18330 msgid "A number of options that control the build process are common to @command{guix build} and other commands that can spawn builds, such as @command{guix package} or @command{guix archive}. These are the following:"
18331 msgstr ""
18332
18333 #. type: table
18334 #: guix-git/doc/guix.texi:10245 guix-git/doc/guix.texi:11976
18335 #: guix-git/doc/guix.texi:12157 guix-git/doc/guix.texi:12302
18336 #: guix-git/doc/guix.texi:12556
18337 msgid "This allows users to define their own packages and make them visible to the command-line tools."
18338 msgstr ""
18339
18340 #. type: item
18341 #: guix-git/doc/guix.texi:10246
18342 #, no-wrap
18343 msgid "--keep-failed"
18344 msgstr ""
18345
18346 #. type: itemx
18347 #: guix-git/doc/guix.texi:10247
18348 #, no-wrap
18349 msgid "-K"
18350 msgstr ""
18351
18352 #. type: table
18353 #: guix-git/doc/guix.texi:10253
18354 msgid "Keep the build tree of failed builds. Thus, if a build fails, its build tree is kept under @file{/tmp}, in a directory whose name is shown at the end of the build log. This is useful when debugging build issues. @xref{Debugging Build Failures}, for tips and tricks on how to debug build issues."
18355 msgstr ""
18356
18357 #. type: table
18358 #: guix-git/doc/guix.texi:10257
18359 msgid "This option implies @option{--no-offload}, and it has no effect when connecting to a remote daemon with a @code{guix://} URI (@pxref{The Store, the @env{GUIX_DAEMON_SOCKET} variable})."
18360 msgstr ""
18361
18362 #. type: item
18363 #: guix-git/doc/guix.texi:10258
18364 #, no-wrap
18365 msgid "--keep-going"
18366 msgstr ""
18367
18368 #. type: itemx
18369 #: guix-git/doc/guix.texi:10259
18370 #, no-wrap
18371 msgid "-k"
18372 msgstr ""
18373
18374 #. type: table
18375 #: guix-git/doc/guix.texi:10262
18376 msgid "Keep going when some of the derivations fail to build; return only once all the builds have either completed or failed."
18377 msgstr ""
18378
18379 #. type: table
18380 #: guix-git/doc/guix.texi:10265
18381 msgid "The default behavior is to stop as soon as one of the specified derivations has failed."
18382 msgstr ""
18383
18384 #. type: table
18385 #: guix-git/doc/guix.texi:10269
18386 msgid "Do not build the derivations."
18387 msgstr ""
18388
18389 #. type: anchor{#1}
18390 #: guix-git/doc/guix.texi:10271
18391 msgid "fallback-option"
18392 msgstr ""
18393
18394 #. type: item
18395 #: guix-git/doc/guix.texi:10271
18396 #, no-wrap
18397 msgid "--fallback"
18398 msgstr ""
18399
18400 #. type: table
18401 #: guix-git/doc/guix.texi:10274
18402 msgid "When substituting a pre-built binary fails, fall back to building packages locally (@pxref{Substitution Failure})."
18403 msgstr ""
18404
18405 #. type: anchor{#1}
18406 #: guix-git/doc/guix.texi:10280
18407 msgid "client-substitute-urls"
18408 msgstr ""
18409
18410 #. type: table
18411 #: guix-git/doc/guix.texi:10280
18412 msgid "Consider @var{urls} the whitespace-separated list of substitute source URLs, overriding the default list of URLs of @command{guix-daemon} (@pxref{daemon-substitute-urls,, @command{guix-daemon} URLs})."
18413 msgstr ""
18414
18415 #. type: table
18416 #: guix-git/doc/guix.texi:10284
18417 msgid "This means that substitutes may be downloaded from @var{urls}, provided they are signed by a key authorized by the system administrator (@pxref{Substitutes})."
18418 msgstr ""
18419
18420 #. type: table
18421 #: guix-git/doc/guix.texi:10287
18422 msgid "When @var{urls} is the empty string, substitutes are effectively disabled."
18423 msgstr ""
18424
18425 #. type: item
18426 #: guix-git/doc/guix.texi:10293
18427 #, no-wrap
18428 msgid "--no-grafts"
18429 msgstr ""
18430
18431 #. type: table
18432 #: guix-git/doc/guix.texi:10297
18433 msgid "Do not ``graft'' packages. In practice, this means that package updates available as grafts are not applied. @xref{Security Updates}, for more information on grafts."
18434 msgstr ""
18435
18436 #. type: item
18437 #: guix-git/doc/guix.texi:10298
18438 #, no-wrap
18439 msgid "--rounds=@var{n}"
18440 msgstr ""
18441
18442 #. type: table
18443 #: guix-git/doc/guix.texi:10301
18444 msgid "Build each derivation @var{n} times in a row, and raise an error if consecutive build results are not bit-for-bit identical."
18445 msgstr ""
18446
18447 #. type: table
18448 #: guix-git/doc/guix.texi:10306
18449 msgid "This is a useful way to detect non-deterministic builds processes. Non-deterministic build processes are a problem because they make it practically impossible for users to @emph{verify} whether third-party binaries are genuine. @xref{Invoking guix challenge}, for more."
18450 msgstr ""
18451
18452 #. type: table
18453 #: guix-git/doc/guix.texi:10322
18454 msgid "By default, the daemon's setting is honored (@pxref{Invoking guix-daemon, @option{--max-silent-time}})."
18455 msgstr ""
18456
18457 #. type: table
18458 #: guix-git/doc/guix.texi:10329
18459 msgid "By default, the daemon's setting is honored (@pxref{Invoking guix-daemon, @option{--timeout}})."
18460 msgstr ""
18461
18462 #. type: cindex
18463 #: guix-git/doc/guix.texi:10332
18464 #, no-wrap
18465 msgid "verbosity, of the command-line tools"
18466 msgstr ""
18467
18468 #. type: cindex
18469 #: guix-git/doc/guix.texi:10333
18470 #, no-wrap
18471 msgid "build logs, verbosity"
18472 msgstr ""
18473
18474 #. type: item
18475 #: guix-git/doc/guix.texi:10334
18476 #, no-wrap
18477 msgid "-v @var{level}"
18478 msgstr ""
18479
18480 #. type: itemx
18481 #: guix-git/doc/guix.texi:10335
18482 #, no-wrap
18483 msgid "--verbosity=@var{level}"
18484 msgstr ""
18485
18486 #. type: table
18487 #: guix-git/doc/guix.texi:10340
18488 msgid "Use the given verbosity @var{level}, an integer. Choosing 0 means that no output is produced, 1 is for quiet output; 2 is similar to 1 but it additionally displays download URLs; 3 shows all the build log output on standard error."
18489 msgstr ""
18490
18491 #. type: table
18492 #: guix-git/doc/guix.texi:10345
18493 msgid "Allow the use of up to @var{n} CPU cores for the build. The special value @code{0} means to use as many CPU cores as available."
18494 msgstr ""
18495
18496 #. type: table
18497 #: guix-git/doc/guix.texi:10351
18498 msgid "Allow at most @var{n} build jobs in parallel. @xref{Invoking guix-daemon, @option{--max-jobs}}, for details about this option and the equivalent @command{guix-daemon} option."
18499 msgstr ""
18500
18501 #. type: item
18502 #: guix-git/doc/guix.texi:10352
18503 #, no-wrap
18504 msgid "--debug=@var{level}"
18505 msgstr ""
18506
18507 #. type: table
18508 #: guix-git/doc/guix.texi:10356
18509 msgid "Produce debugging output coming from the build daemon. @var{level} must be an integer between 0 and 5; higher means more verbose output. Setting a level of 4 or more may be helpful when debugging setup issues with the build daemon."
18510 msgstr ""
18511
18512 #. type: Plain text
18513 #: guix-git/doc/guix.texi:10363
18514 msgid "Behind the scenes, @command{guix build} is essentially an interface to the @code{package-derivation} procedure of the @code{(guix packages)} module, and to the @code{build-derivations} procedure of the @code{(guix derivations)} module."
18515 msgstr ""
18516
18517 #. type: Plain text
18518 #: guix-git/doc/guix.texi:10367
18519 msgid "In addition to options explicitly passed on the command line, @command{guix build} and other @command{guix} commands that support building honor the @env{GUIX_BUILD_OPTIONS} environment variable."
18520 msgstr ""
18521
18522 #. type: defvr
18523 #: guix-git/doc/guix.texi:10368
18524 #, no-wrap
18525 msgid "{Environment Variable} GUIX_BUILD_OPTIONS"
18526 msgstr ""
18527
18528 #. type: defvr
18529 #: guix-git/doc/guix.texi:10373
18530 msgid "Users can define this variable to a list of command line options that will automatically be used by @command{guix build} and other @command{guix} commands that can perform builds, as in the example below:"
18531 msgstr ""
18532
18533 #. type: example
18534 #: guix-git/doc/guix.texi:10376
18535 #, no-wrap
18536 msgid "$ export GUIX_BUILD_OPTIONS=\"--no-substitutes -c 2 -L /foo/bar\"\n"
18537 msgstr ""
18538
18539 #. type: defvr
18540 #: guix-git/doc/guix.texi:10380
18541 msgid "These options are parsed independently, and the result is appended to the parsed command-line options."
18542 msgstr ""
18543
18544 #. type: cindex
18545 #: guix-git/doc/guix.texi:10386
18546 #, no-wrap
18547 msgid "package variants"
18548 msgstr ""
18549
18550 #. type: Plain text
18551 #: guix-git/doc/guix.texi:10394
18552 msgid "Another set of command-line options supported by @command{guix build} and also @command{guix package} are @dfn{package transformation options}. These are options that make it possible to define @dfn{package variants}---for instance, packages built from different source code. This is a convenient way to create customized packages on the fly without having to type in the definitions of package variants (@pxref{Defining Packages})."
18553 msgstr ""
18554
18555 #. type: Plain text
18556 #: guix-git/doc/guix.texi:10398
18557 msgid "Package transformation options are preserved across upgrades: @command{guix upgrade} attempts to apply transformation options initially used when creating the profile to the upgraded packages."
18558 msgstr ""
18559
18560 #. type: Plain text
18561 #: guix-git/doc/guix.texi:10403
18562 msgid "The available options are listed below. Most commands support them and also support a @option{--help-transform} option that lists all the available options and a synopsis (these options are not shown in the @option{--help} output for brevity)."
18563 msgstr ""
18564
18565 #. type: item
18566 #: guix-git/doc/guix.texi:10406
18567 #, no-wrap
18568 msgid "--with-source=@var{source}"
18569 msgstr ""
18570
18571 #. type: itemx
18572 #: guix-git/doc/guix.texi:10407
18573 #, no-wrap
18574 msgid "--with-source=@var{package}=@var{source}"
18575 msgstr ""
18576
18577 #. type: itemx
18578 #: guix-git/doc/guix.texi:10408
18579 #, no-wrap
18580 msgid "--with-source=@var{package}@@@var{version}=@var{source}"
18581 msgstr ""
18582
18583 #. type: table
18584 #: guix-git/doc/guix.texi:10413
18585 msgid "Use @var{source} as the source of @var{package}, and @var{version} as its version number. @var{source} must be a file name or a URL, as for @command{guix download} (@pxref{Invoking guix download})."
18586 msgstr ""
18587
18588 #. type: table
18589 #: guix-git/doc/guix.texi:10419
18590 msgid "When @var{package} is omitted, it is taken to be the package name specified on the command line that matches the base of @var{source}---e.g., if @var{source} is @code{/src/guile-2.0.10.tar.gz}, the corresponding package is @code{guile}."
18591 msgstr ""
18592
18593 #. type: table
18594 #: guix-git/doc/guix.texi:10422
18595 msgid "Likewise, when @var{version} is omitted, the version string is inferred from @var{source}; in the previous example, it is @code{2.0.10}."
18596 msgstr ""
18597
18598 #. type: table
18599 #: guix-git/doc/guix.texi:10427
18600 msgid "This option allows users to try out versions of packages other than the one provided by the distribution. The example below downloads @file{ed-1.7.tar.gz} from a GNU mirror and uses that as the source for the @code{ed} package:"
18601 msgstr ""
18602
18603 #. type: example
18604 #: guix-git/doc/guix.texi:10430
18605 #, no-wrap
18606 msgid "guix build ed --with-source=mirror://gnu/ed/ed-1.7.tar.gz\n"
18607 msgstr ""
18608
18609 #. type: table
18610 #: guix-git/doc/guix.texi:10434
18611 msgid "As a developer, @option{--with-source} makes it easy to test release candidates:"
18612 msgstr ""
18613
18614 #. type: example
18615 #: guix-git/doc/guix.texi:10437
18616 #, no-wrap
18617 msgid "guix build guile --with-source=../guile-2.0.9.219-e1bb7.tar.xz\n"
18618 msgstr ""
18619
18620 #. type: table
18621 #: guix-git/doc/guix.texi:10440
18622 msgid "@dots{} or to build from a checkout in a pristine environment:"
18623 msgstr ""
18624
18625 #. type: example
18626 #: guix-git/doc/guix.texi:10444
18627 #, no-wrap
18628 msgid ""
18629 "$ git clone git://git.sv.gnu.org/guix.git\n"
18630 "$ guix build guix --with-source=guix@@1.0=./guix\n"
18631 msgstr ""
18632
18633 #. type: item
18634 #: guix-git/doc/guix.texi:10446
18635 #, no-wrap
18636 msgid "--with-input=@var{package}=@var{replacement}"
18637 msgstr ""
18638
18639 #. type: table
18640 #: guix-git/doc/guix.texi:10451
18641 msgid "Replace dependency on @var{package} by a dependency on @var{replacement}. @var{package} must be a package name, and @var{replacement} must be a package specification such as @code{guile} or @code{guile@@1.8}."
18642 msgstr ""
18643
18644 #. type: table
18645 #: guix-git/doc/guix.texi:10455
18646 msgid "For instance, the following command builds Guix, but replaces its dependency on the current stable version of Guile with a dependency on the legacy version of Guile, @code{guile@@2.0}:"
18647 msgstr ""
18648
18649 #. type: example
18650 #: guix-git/doc/guix.texi:10458
18651 #, no-wrap
18652 msgid "guix build --with-input=guile=guile@@2.0 guix\n"
18653 msgstr ""
18654
18655 #. type: table
18656 #: guix-git/doc/guix.texi:10463
18657 msgid "This is a recursive, deep replacement. So in this example, both @code{guix} and its dependency @code{guile-json} (which also depends on @code{guile}) get rebuilt against @code{guile@@2.0}."
18658 msgstr ""
18659
18660 #. type: table
18661 #: guix-git/doc/guix.texi:10466
18662 msgid "This is implemented using the @code{package-input-rewriting} Scheme procedure (@pxref{Defining Packages, @code{package-input-rewriting}})."
18663 msgstr ""
18664
18665 #. type: item
18666 #: guix-git/doc/guix.texi:10467
18667 #, no-wrap
18668 msgid "--with-graft=@var{package}=@var{replacement}"
18669 msgstr ""
18670
18671 #. type: table
18672 #: guix-git/doc/guix.texi:10473
18673 msgid "This is similar to @option{--with-input} but with an important difference: instead of rebuilding the whole dependency chain, @var{replacement} is built and then @dfn{grafted} onto the binaries that were initially referring to @var{package}. @xref{Security Updates}, for more information on grafts."
18674 msgstr ""
18675
18676 #. type: table
18677 #: guix-git/doc/guix.texi:10477
18678 msgid "For example, the command below grafts version 3.5.4 of GnuTLS onto Wget and all its dependencies, replacing references to the version of GnuTLS they currently refer to:"
18679 msgstr ""
18680
18681 #. type: example
18682 #: guix-git/doc/guix.texi:10480
18683 #, no-wrap
18684 msgid "guix build --with-graft=gnutls=gnutls@@3.5.4 wget\n"
18685 msgstr ""
18686
18687 #. type: table
18688 #: guix-git/doc/guix.texi:10489
18689 msgid "This has the advantage of being much faster than rebuilding everything. But there is a caveat: it works if and only if @var{package} and @var{replacement} are strictly compatible---for example, if they provide a library, the application binary interface (ABI) of those libraries must be compatible. If @var{replacement} is somehow incompatible with @var{package}, then the resulting package may be unusable. Use with care!"
18690 msgstr ""
18691
18692 #. type: cindex
18693 #: guix-git/doc/guix.texi:10490 guix-git/doc/guix.texi:34534
18694 #, no-wrap
18695 msgid "debugging info, rebuilding"
18696 msgstr ""
18697
18698 #. type: item
18699 #: guix-git/doc/guix.texi:10491
18700 #, no-wrap
18701 msgid "--with-debug-info=@var{package}"
18702 msgstr ""
18703
18704 #. type: table
18705 #: guix-git/doc/guix.texi:10496
18706 msgid "Build @var{package} in a way that preserves its debugging info and graft it onto packages that depend on it. This is useful if @var{package} does not already provide debugging info as a @code{debug} output (@pxref{Installing Debugging Files})."
18707 msgstr ""
18708
18709 #. type: table
18710 #: guix-git/doc/guix.texi:10502
18711 msgid "For example, suppose you're experiencing a crash in Inkscape and would like to see what's up in GLib, a library deep down in Inkscape's dependency graph. GLib lacks a @code{debug} output, so debugging is tough. Fortunately, you rebuild GLib with debugging info and tack it on Inkscape:"
18712 msgstr ""
18713
18714 #. type: example
18715 #: guix-git/doc/guix.texi:10505 guix-git/doc/guix.texi:34565
18716 #, no-wrap
18717 msgid "guix install inkscape --with-debug-info=glib\n"
18718 msgstr ""
18719
18720 #. type: table
18721 #: guix-git/doc/guix.texi:10509
18722 msgid "Only GLib needs to be recompiled so this takes a reasonable amount of time. @xref{Installing Debugging Files}, for more info."
18723 msgstr ""
18724
18725 #. type: quotation
18726 #: guix-git/doc/guix.texi:10515
18727 msgid "Under the hood, this option works by passing the @samp{#:strip-binaries? #f} to the build system of the package of interest (@pxref{Build Systems}). Most build systems support that option but some do not. In that case, an error is raised."
18728 msgstr ""
18729
18730 #. type: quotation
18731 #: guix-git/doc/guix.texi:10519
18732 msgid "Likewise, if a C/C++ package is built without @code{-g} (which is rarely the case), debugging info will remain unavailable even when @code{#:strip-binaries?} is false."
18733 msgstr ""
18734
18735 #. type: cindex
18736 #: guix-git/doc/guix.texi:10521
18737 #, no-wrap
18738 msgid "tool chain, changing the build tool chain of a package"
18739 msgstr ""
18740
18741 #. type: item
18742 #: guix-git/doc/guix.texi:10522
18743 #, no-wrap
18744 msgid "--with-c-toolchain=@var{package}=@var{toolchain}"
18745 msgstr ""
18746
18747 #. type: table
18748 #: guix-git/doc/guix.texi:10526
18749 msgid "This option changes the compilation of @var{package} and everything that depends on it so that they get built with @var{toolchain} instead of the default GNU tool chain for C/C++."
18750 msgstr ""
18751
18752 #. type: example
18753 #: guix-git/doc/guix.texi:10533
18754 #, no-wrap
18755 msgid ""
18756 "guix build octave-cli \\\n"
18757 " --with-c-toolchain=fftw=gcc-toolchain@@10 \\\n"
18758 " --with-c-toolchain=fftwf=gcc-toolchain@@10\n"
18759 msgstr ""
18760
18761 #. type: table
18762 #: guix-git/doc/guix.texi:10540
18763 msgid "The command above builds a variant of the @code{fftw} and @code{fftwf} packages using version 10 of @code{gcc-toolchain} instead of the default tool chain, and then builds a variant of the GNU@tie{}Octave command-line interface using them. GNU@tie{}Octave itself is also built with @code{gcc-toolchain@@10}."
18764 msgstr ""
18765
18766 #. type: table
18767 #: guix-git/doc/guix.texi:10544
18768 msgid "This other example builds the Hardware Locality (@code{hwloc}) library and its dependents up to @code{intel-mpi-benchmarks} with the Clang C compiler:"
18769 msgstr ""
18770
18771 #. type: example
18772 #: guix-git/doc/guix.texi:10548
18773 #, no-wrap
18774 msgid ""
18775 "guix build --with-c-toolchain=hwloc=clang-toolchain \\\n"
18776 " intel-mpi-benchmarks\n"
18777 msgstr ""
18778
18779 #. type: quotation
18780 #: guix-git/doc/guix.texi:10557
18781 msgid "There can be application binary interface (ABI) incompatibilities among tool chains. This is particularly true of the C++ standard library and run-time support libraries such as that of OpenMP@. By rebuilding all dependents with the same tool chain, @option{--with-c-toolchain} minimizes the risks of incompatibility but cannot entirely eliminate them. Choose @var{package} wisely."
18782 msgstr ""
18783
18784 #. type: item
18785 #: guix-git/doc/guix.texi:10559
18786 #, no-wrap
18787 msgid "--with-git-url=@var{package}=@var{url}"
18788 msgstr ""
18789
18790 #. type: cindex
18791 #: guix-git/doc/guix.texi:10560
18792 #, no-wrap
18793 msgid "Git, using the latest commit"
18794 msgstr ""
18795
18796 #. type: cindex
18797 #: guix-git/doc/guix.texi:10561
18798 #, no-wrap
18799 msgid "latest commit, building"
18800 msgstr ""
18801
18802 #. type: table
18803 #: guix-git/doc/guix.texi:10565
18804 msgid "Build @var{package} from the latest commit of the @code{master} branch of the Git repository at @var{url}. Git sub-modules of the repository are fetched, recursively."
18805 msgstr ""
18806
18807 #. type: table
18808 #: guix-git/doc/guix.texi:10568
18809 msgid "For example, the following command builds the NumPy Python library against the latest commit of the master branch of Python itself:"
18810 msgstr ""
18811
18812 #. type: example
18813 #: guix-git/doc/guix.texi:10572
18814 #, no-wrap
18815 msgid ""
18816 "guix build python-numpy \\\n"
18817 " --with-git-url=python=https://github.com/python/cpython\n"
18818 msgstr ""
18819
18820 #. type: table
18821 #: guix-git/doc/guix.texi:10576
18822 msgid "This option can also be combined with @option{--with-branch} or @option{--with-commit} (see below)."
18823 msgstr ""
18824
18825 #. type: cindex
18826 #: guix-git/doc/guix.texi:10577 guix-git/doc/guix.texi:27233
18827 #, no-wrap
18828 msgid "continuous integration"
18829 msgstr ""
18830
18831 #. type: table
18832 #: guix-git/doc/guix.texi:10583
18833 msgid "Obviously, since it uses the latest commit of the given branch, the result of such a command varies over time. Nevertheless it is a convenient way to rebuild entire software stacks against the latest commit of one or more packages. This is particularly useful in the context of continuous integration (CI)."
18834 msgstr ""
18835
18836 #. type: table
18837 #: guix-git/doc/guix.texi:10587
18838 msgid "Checkouts are kept in a cache under @file{~/.cache/guix/checkouts} to speed up consecutive accesses to the same repository. You may want to clean it up once in a while to save disk space."
18839 msgstr ""
18840
18841 #. type: item
18842 #: guix-git/doc/guix.texi:10588
18843 #, no-wrap
18844 msgid "--with-branch=@var{package}=@var{branch}"
18845 msgstr ""
18846
18847 #. type: table
18848 #: guix-git/doc/guix.texi:10594
18849 msgid "Build @var{package} from the latest commit of @var{branch}. If the @code{source} field of @var{package} is an origin with the @code{git-fetch} method (@pxref{origin Reference}) or a @code{git-checkout} object, the repository URL is taken from that @code{source}. Otherwise you have to use @option{--with-git-url} to specify the URL of the Git repository."
18850 msgstr ""
18851
18852 #. type: table
18853 #: guix-git/doc/guix.texi:10599
18854 msgid "For instance, the following command builds @code{guile-sqlite3} from the latest commit of its @code{master} branch, and then builds @code{guix} (which depends on it) and @code{cuirass} (which depends on @code{guix}) against this specific @code{guile-sqlite3} build:"
18855 msgstr ""
18856
18857 #. type: example
18858 #: guix-git/doc/guix.texi:10602
18859 #, no-wrap
18860 msgid "guix build --with-branch=guile-sqlite3=master cuirass\n"
18861 msgstr ""
18862
18863 #. type: item
18864 #: guix-git/doc/guix.texi:10604
18865 #, no-wrap
18866 msgid "--with-commit=@var{package}=@var{commit}"
18867 msgstr ""
18868
18869 #. type: table
18870 #: guix-git/doc/guix.texi:10608
18871 msgid "This is similar to @option{--with-branch}, except that it builds from @var{commit} rather than the tip of a branch. @var{commit} must be a valid Git commit SHA1 identifier or a tag."
18872 msgstr ""
18873
18874 #. type: item
18875 #: guix-git/doc/guix.texi:10609
18876 #, no-wrap
18877 msgid "--with-patch=@var{package}=@var{file}"
18878 msgstr ""
18879
18880 #. type: table
18881 #: guix-git/doc/guix.texi:10616
18882 msgid "Add @var{file} to the list of patches applied to @var{package}, where @var{package} is a spec such as @code{python@@3.8} or @code{glibc}. @var{file} must contain a patch; it is applied with the flags specified in the @code{origin} of @var{package} (@pxref{origin Reference}), which by default includes @code{-p1} (@pxref{patch Directories,,, diffutils, Comparing and Merging Files})."
18883 msgstr ""
18884
18885 #. type: table
18886 #: guix-git/doc/guix.texi:10619
18887 msgid "As an example, the command below rebuilds Coreutils with the GNU C Library (glibc) patched with the given patch:"
18888 msgstr ""
18889
18890 #. type: example
18891 #: guix-git/doc/guix.texi:10622
18892 #, no-wrap
18893 msgid "guix build coreutils --with-patch=glibc=./glibc-frob.patch\n"
18894 msgstr ""
18895
18896 #. type: table
18897 #: guix-git/doc/guix.texi:10626
18898 msgid "In this example, glibc itself as well as everything that leads to Coreutils in the dependency graph is rebuilt."
18899 msgstr ""
18900
18901 #. type: cindex
18902 #: guix-git/doc/guix.texi:10627
18903 #, no-wrap
18904 msgid "upstream, latest version"
18905 msgstr ""
18906
18907 #. type: item
18908 #: guix-git/doc/guix.texi:10628
18909 #, no-wrap
18910 msgid "--with-latest=@var{package}"
18911 msgstr ""
18912
18913 #. type: table
18914 #: guix-git/doc/guix.texi:10633
18915 msgid "So you like living on the bleeding edge? This option is for you! It replaces occurrences of @var{package} in the dependency graph with its latest upstream version, as reported by @command{guix refresh} (@pxref{Invoking guix refresh})."
18916 msgstr ""
18917
18918 #. type: table
18919 #: guix-git/doc/guix.texi:10637
18920 msgid "It does so by determining the latest upstream release of @var{package} (if possible), downloading it, and authenticating it @emph{if} it comes with an OpenPGP signature."
18921 msgstr ""
18922
18923 #. type: table
18924 #: guix-git/doc/guix.texi:10640
18925 msgid "As an example, the command below builds Guix against the latest version of Guile-JSON:"
18926 msgstr ""
18927
18928 #. type: example
18929 #: guix-git/doc/guix.texi:10643
18930 #, no-wrap
18931 msgid "guix build guix --with-latest=guile-json\n"
18932 msgstr ""
18933
18934 #. type: table
18935 #: guix-git/doc/guix.texi:10652
18936 msgid "There are limitations. First, in cases where the tool cannot or does not know how to authenticate source code, you are at risk of running malicious code; a warning is emitted in this case. Second, this option simply changes the source used in the existing package definitions, which is not always sufficient: there might be additional dependencies that need to be added, patches to apply, and more generally the quality assurance work that Guix developers normally do will be missing."
18937 msgstr ""
18938
18939 #. type: table
18940 #: guix-git/doc/guix.texi:10657
18941 msgid "You've been warned! In all the other cases, it's a snappy way to stay on top. We encourage you to submit patches updating the actual package definitions once you have successfully tested an upgrade (@pxref{Contributing})."
18942 msgstr ""
18943
18944 #. type: cindex
18945 #: guix-git/doc/guix.texi:10658
18946 #, no-wrap
18947 msgid "test suite, skipping"
18948 msgstr ""
18949
18950 #. type: item
18951 #: guix-git/doc/guix.texi:10659
18952 #, no-wrap
18953 msgid "--without-tests=@var{package}"
18954 msgstr ""
18955
18956 #. type: table
18957 #: guix-git/doc/guix.texi:10665
18958 msgid "Build @var{package} without running its tests. This can be useful in situations where you want to skip the lengthy test suite of a intermediate package, or if a package's test suite fails in a non-deterministic fashion. It should be used with care because running the test suite is a good way to ensure a package is working as intended."
18959 msgstr ""
18960
18961 #. type: table
18962 #: guix-git/doc/guix.texi:10669
18963 msgid "Turning off tests leads to a different store item. Consequently, when using this option, anything that depends on @var{package} must be rebuilt, as in this example:"
18964 msgstr ""
18965
18966 #. type: example
18967 #: guix-git/doc/guix.texi:10672
18968 #, no-wrap
18969 msgid "guix install --without-tests=python python-notebook\n"
18970 msgstr ""
18971
18972 #. type: table
18973 #: guix-git/doc/guix.texi:10678
18974 msgid "The command above installs @code{python-notebook} on top of @code{python} built without running its test suite. To do so, it also rebuilds everything that depends on @code{python}, including @code{python-notebook} itself."
18975 msgstr ""
18976
18977 #. type: table
18978 #: guix-git/doc/guix.texi:10684
18979 msgid "Internally, @option{--without-tests} relies on changing the @code{#:tests?} option of a package's @code{check} phase (@pxref{Build Systems}). Note that some packages use a customized @code{check} phase that does not respect a @code{#:tests? #f} setting. Therefore, @option{--without-tests} has no effect on these packages."
18980 msgstr ""
18981
18982 #. type: Plain text
18983 #: guix-git/doc/guix.texi:10691
18984 msgid "Wondering how to achieve the same effect using Scheme code, for example in your manifest, or how to write your own package transformation? @xref{Defining Package Variants}, for an overview of the programming interfaces available."
18985 msgstr ""
18986
18987 #. type: Plain text
18988 #: guix-git/doc/guix.texi:10697
18989 msgid "The command-line options presented below are specific to @command{guix build}."
18990 msgstr ""
18991
18992 #. type: item
18993 #: guix-git/doc/guix.texi:10700
18994 #, no-wrap
18995 msgid "--quiet"
18996 msgstr ""
18997
18998 #. type: table
18999 #: guix-git/doc/guix.texi:10705
19000 msgid "Build quietly, without displaying the build log; this is equivalent to @option{--verbosity=0}. Upon completion, the build log is kept in @file{/var} (or similar) and can always be retrieved using the @option{--log-file} option."
19001 msgstr ""
19002
19003 #. type: item
19004 #: guix-git/doc/guix.texi:10706
19005 #, no-wrap
19006 msgid "--file=@var{file}"
19007 msgstr ""
19008
19009 #. type: table
19010 #: guix-git/doc/guix.texi:10710
19011 msgid "Build the package, derivation, or other file-like object that the code within @var{file} evaluates to (@pxref{G-Expressions, file-like objects})."
19012 msgstr ""
19013
19014 #. type: table
19015 #: guix-git/doc/guix.texi:10713
19016 msgid "As an example, @var{file} might contain a package definition like this (@pxref{Defining Packages}):"
19017 msgstr ""
19018
19019 #. type: table
19020 #: guix-git/doc/guix.texi:10722
19021 msgid "The @var{file} may also contain a JSON representation of one or more package definitions. Running @code{guix build -f} on @file{hello.json} with the following contents would result in building the packages @code{myhello} and @code{greeter}:"
19022 msgstr ""
19023
19024 #. type: item
19025 #: guix-git/doc/guix.texi:10727
19026 #, no-wrap
19027 msgid "--manifest=@var{manifest}"
19028 msgstr ""
19029
19030 #. type: itemx
19031 #: guix-git/doc/guix.texi:10728
19032 #, no-wrap
19033 msgid "-m @var{manifest}"
19034 msgstr ""
19035
19036 #. type: table
19037 #: guix-git/doc/guix.texi:10731
19038 msgid "Build all packages listed in the given @var{manifest} (@pxref{profile-manifest, @option{--manifest}})."
19039 msgstr ""
19040
19041 #. type: table
19042 #: guix-git/doc/guix.texi:10735
19043 msgid "Build the package or derivation @var{expr} evaluates to."
19044 msgstr ""
19045
19046 #. type: table
19047 #: guix-git/doc/guix.texi:10739
19048 msgid "For example, @var{expr} may be @code{(@@ (gnu packages guile) guile-1.8)}, which unambiguously designates this specific variant of version 1.8 of Guile."
19049 msgstr ""
19050
19051 #. type: table
19052 #: guix-git/doc/guix.texi:10743
19053 msgid "Alternatively, @var{expr} may be a G-expression, in which case it is used as a build program passed to @code{gexp->derivation} (@pxref{G-Expressions})."
19054 msgstr ""
19055
19056 #. type: table
19057 #: guix-git/doc/guix.texi:10747
19058 msgid "Lastly, @var{expr} may refer to a zero-argument monadic procedure (@pxref{The Store Monad}). The procedure must return a derivation as a monadic value, which is then passed through @code{run-with-store}."
19059 msgstr ""
19060
19061 #. type: item
19062 #: guix-git/doc/guix.texi:10748
19063 #, no-wrap
19064 msgid "--source"
19065 msgstr ""
19066
19067 #. type: itemx
19068 #: guix-git/doc/guix.texi:10749
19069 #, no-wrap
19070 msgid "-S"
19071 msgstr ""
19072
19073 #. type: table
19074 #: guix-git/doc/guix.texi:10752
19075 msgid "Build the source derivations of the packages, rather than the packages themselves."
19076 msgstr ""
19077
19078 #. type: table
19079 #: guix-git/doc/guix.texi:10756
19080 msgid "For instance, @code{guix build -S gcc} returns something like @file{/gnu/store/@dots{}-gcc-4.7.2.tar.bz2}, which is the GCC source tarball."
19081 msgstr ""
19082
19083 #. type: table
19084 #: guix-git/doc/guix.texi:10760
19085 msgid "The returned source tarball is the result of applying any patches and code snippets specified in the package @code{origin} (@pxref{Defining Packages})."
19086 msgstr ""
19087
19088 #. type: cindex
19089 #: guix-git/doc/guix.texi:10761
19090 #, no-wrap
19091 msgid "source, verification"
19092 msgstr ""
19093
19094 #. type: table
19095 #: guix-git/doc/guix.texi:10767
19096 msgid "As with other derivations, the result of building a source derivation can be verified using the @option{--check} option (@pxref{build-check}). This is useful to validate that a (potentially already built or substituted, thus cached) package source matches against its declared hash."
19097 msgstr ""
19098
19099 #. type: table
19100 #: guix-git/doc/guix.texi:10772
19101 msgid "Note that @command{guix build -S} compiles the sources only of the specified packages. They do not include the sources of statically linked dependencies and by themselves are insufficient for reproducing the packages."
19102 msgstr ""
19103
19104 #. type: item
19105 #: guix-git/doc/guix.texi:10773
19106 #, no-wrap
19107 msgid "--sources"
19108 msgstr ""
19109
19110 #. type: table
19111 #: guix-git/doc/guix.texi:10780
19112 msgid "Fetch and return the source of @var{package-or-derivation} and all their dependencies, recursively. This is a handy way to obtain a local copy of all the source code needed to build @var{packages}, allowing you to eventually build them even without network access. It is an extension of the @option{--source} option and can accept one of the following optional argument values:"
19113 msgstr ""
19114
19115 #. type: item
19116 #: guix-git/doc/guix.texi:10782 guix-git/doc/guix.texi:12356
19117 #, no-wrap
19118 msgid "package"
19119 msgstr ""
19120
19121 #. type: table
19122 #: guix-git/doc/guix.texi:10785
19123 msgid "This value causes the @option{--sources} option to behave in the same way as the @option{--source} option."
19124 msgstr ""
19125
19126 #. type: item
19127 #: guix-git/doc/guix.texi:10786 guix-git/doc/guix.texi:18302
19128 #, no-wrap
19129 msgid "all"
19130 msgstr ""
19131
19132 #. type: table
19133 #: guix-git/doc/guix.texi:10789
19134 msgid "Build the source derivations of all packages, including any source that might be listed as @code{inputs}. This is the default value."
19135 msgstr ""
19136
19137 #. type: example
19138 #: guix-git/doc/guix.texi:10795
19139 #, no-wrap
19140 msgid ""
19141 "$ guix build --sources tzdata\n"
19142 "The following derivations will be built:\n"
19143 " /gnu/store/@dots{}-tzdata2015b.tar.gz.drv\n"
19144 " /gnu/store/@dots{}-tzcode2015b.tar.gz.drv\n"
19145 msgstr ""
19146
19147 #. type: item
19148 #: guix-git/doc/guix.texi:10797
19149 #, no-wrap
19150 msgid "transitive"
19151 msgstr ""
19152
19153 #. type: table
19154 #: guix-git/doc/guix.texi:10801
19155 msgid "Build the source derivations of all packages, as well of all transitive inputs to the packages. This can be used e.g.@: to prefetch package source for later offline building."
19156 msgstr ""
19157
19158 #. type: example
19159 #: guix-git/doc/guix.texi:10812
19160 #, no-wrap
19161 msgid ""
19162 "$ guix build --sources=transitive tzdata\n"
19163 "The following derivations will be built:\n"
19164 " /gnu/store/@dots{}-tzcode2015b.tar.gz.drv\n"
19165 " /gnu/store/@dots{}-findutils-4.4.2.tar.xz.drv\n"
19166 " /gnu/store/@dots{}-grep-2.21.tar.xz.drv\n"
19167 " /gnu/store/@dots{}-coreutils-8.23.tar.xz.drv\n"
19168 " /gnu/store/@dots{}-make-4.1.tar.xz.drv\n"
19169 " /gnu/store/@dots{}-bash-4.3.tar.xz.drv\n"
19170 "@dots{}\n"
19171 msgstr ""
19172
19173 #. type: table
19174 #: guix-git/doc/guix.texi:10822
19175 msgid "Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of the system type of the build host. The @command{guix build} command allows you to repeat this option several times, in which case it builds for all the specified systems; other commands ignore extraneous @option{-s} options."
19176 msgstr ""
19177
19178 #. type: quotation
19179 #: guix-git/doc/guix.texi:10827
19180 msgid "The @option{--system} flag is for @emph{native} compilation and must not be confused with cross-compilation. See @option{--target} below for information on cross-compilation."
19181 msgstr ""
19182
19183 #. type: table
19184 #: guix-git/doc/guix.texi:10834
19185 msgid "An example use of this is on Linux-based systems, which can emulate different personalities. For instance, passing @option{--system=i686-linux} on an @code{x86_64-linux} system or @option{--system=armhf-linux} on an @code{aarch64-linux} system allows you to build packages in a complete 32-bit environment."
19186 msgstr ""
19187
19188 #. type: quotation
19189 #: guix-git/doc/guix.texi:10839
19190 msgid "Building for an @code{armhf-linux} system is unconditionally enabled on @code{aarch64-linux} machines, although certain aarch64 chipsets do not allow for this functionality, notably the ThunderX."
19191 msgstr ""
19192
19193 #. type: table
19194 #: guix-git/doc/guix.texi:10845
19195 msgid "Similarly, when transparent emulation with QEMU and @code{binfmt_misc} is enabled (@pxref{Virtualization Services, @code{qemu-binfmt-service-type}}), you can build for any system for which a QEMU @code{binfmt_misc} handler is installed."
19196 msgstr ""
19197
19198 #. type: table
19199 #: guix-git/doc/guix.texi:10849
19200 msgid "Builds for a system other than that of the machine you are using can also be offloaded to a remote machine of the right architecture. @xref{Daemon Offload Setup}, for more information on offloading."
19201 msgstr ""
19202
19203 #. type: table
19204 #: guix-git/doc/guix.texi:10855
19205 msgid "Cross-build for @var{triplet}, which must be a valid GNU triplet, such as @code{\"aarch64-linux-gnu\"} (@pxref{Specifying Target Triplets, GNU configuration triplets,, autoconf, Autoconf})."
19206 msgstr ""
19207
19208 #. type: anchor{#1}
19209 #: guix-git/doc/guix.texi:10857
19210 msgid "build-check"
19211 msgstr ""
19212
19213 #. type: item
19214 #: guix-git/doc/guix.texi:10857
19215 #, no-wrap
19216 msgid "--check"
19217 msgstr ""
19218
19219 #. type: cindex
19220 #: guix-git/doc/guix.texi:10858
19221 #, no-wrap
19222 msgid "determinism, checking"
19223 msgstr ""
19224
19225 #. type: cindex
19226 #: guix-git/doc/guix.texi:10859
19227 #, no-wrap
19228 msgid "reproducibility, checking"
19229 msgstr ""
19230
19231 #. type: table
19232 #: guix-git/doc/guix.texi:10863
19233 msgid "Rebuild @var{package-or-derivation}, which are already available in the store, and raise an error if the build results are not bit-for-bit identical."
19234 msgstr ""
19235
19236 #. type: table
19237 #: guix-git/doc/guix.texi:10868
19238 msgid "This mechanism allows you to check whether previously installed substitutes are genuine (@pxref{Substitutes}), or whether the build result of a package is deterministic. @xref{Invoking guix challenge}, for more background information and tools."
19239 msgstr ""
19240
19241 #. type: item
19242 #: guix-git/doc/guix.texi:10873
19243 #, no-wrap
19244 msgid "--repair"
19245 msgstr ""
19246
19247 #. type: cindex
19248 #: guix-git/doc/guix.texi:10874
19249 #, no-wrap
19250 msgid "repairing store items"
19251 msgstr ""
19252
19253 #. type: table
19254 #: guix-git/doc/guix.texi:10878
19255 msgid "Attempt to repair the specified store items, if they are corrupt, by re-downloading or rebuilding them."
19256 msgstr ""
19257
19258 #. type: table
19259 #: guix-git/doc/guix.texi:10880
19260 msgid "This operation is not atomic and thus restricted to @code{root}."
19261 msgstr ""
19262
19263 #. type: item
19264 #: guix-git/doc/guix.texi:10881
19265 #, no-wrap
19266 msgid "--derivations"
19267 msgstr ""
19268
19269 #. type: table
19270 #: guix-git/doc/guix.texi:10885
19271 msgid "Return the derivation paths, not the output paths, of the given packages."
19272 msgstr ""
19273
19274 #. type: cindex
19275 #: guix-git/doc/guix.texi:10888
19276 #, no-wrap
19277 msgid "GC roots, adding"
19278 msgstr ""
19279
19280 #. type: cindex
19281 #: guix-git/doc/guix.texi:10889
19282 #, no-wrap
19283 msgid "garbage collector roots, adding"
19284 msgstr ""
19285
19286 #. type: table
19287 #: guix-git/doc/guix.texi:10892 guix-git/doc/guix.texi:33222
19288 msgid "Make @var{file} a symlink to the result, and register it as a garbage collector root."
19289 msgstr ""
19290
19291 #. type: table
19292 #: guix-git/doc/guix.texi:10898
19293 msgid "Consequently, the results of this @command{guix build} invocation are protected from garbage collection until @var{file} is removed. When that option is omitted, build results are eligible for garbage collection as soon as the build completes. @xref{Invoking guix gc}, for more on GC roots."
19294 msgstr ""
19295
19296 #. type: item
19297 #: guix-git/doc/guix.texi:10899
19298 #, no-wrap
19299 msgid "--log-file"
19300 msgstr ""
19301
19302 #. type: cindex
19303 #: guix-git/doc/guix.texi:10900
19304 #, no-wrap
19305 msgid "build logs, access"
19306 msgstr ""
19307
19308 #. type: table
19309 #: guix-git/doc/guix.texi:10904
19310 msgid "Return the build log file names or URLs for the given @var{package-or-derivation}, or raise an error if build logs are missing."
19311 msgstr ""
19312
19313 #. type: table
19314 #: guix-git/doc/guix.texi:10907
19315 msgid "This works regardless of how packages or derivations are specified. For instance, the following invocations are equivalent:"
19316 msgstr ""
19317
19318 #. type: example
19319 #: guix-git/doc/guix.texi:10913
19320 #, no-wrap
19321 msgid ""
19322 "guix build --log-file $(guix build -d guile)\n"
19323 "guix build --log-file $(guix build guile)\n"
19324 "guix build --log-file guile\n"
19325 "guix build --log-file -e '(@@ (gnu packages guile) guile-2.0)'\n"
19326 msgstr ""
19327
19328 #. type: table
19329 #: guix-git/doc/guix.texi:10918
19330 msgid "If a log is unavailable locally, and unless @option{--no-substitutes} is passed, the command looks for a corresponding log on one of the substitute servers (as specified with @option{--substitute-urls})."
19331 msgstr ""
19332
19333 #. type: table
19334 #: guix-git/doc/guix.texi:10921
19335 msgid "So for instance, imagine you want to see the build log of GDB on MIPS, but you are actually on an @code{x86_64} machine:"
19336 msgstr ""
19337
19338 #. type: example
19339 #: guix-git/doc/guix.texi:10925
19340 #, no-wrap
19341 msgid ""
19342 "$ guix build --log-file gdb -s aarch64-linux\n"
19343 "https://@value{SUBSTITUTE-SERVER}/log/@dots{}-gdb-7.10\n"
19344 msgstr ""
19345
19346 #. type: table
19347 #: guix-git/doc/guix.texi:10928
19348 msgid "You can freely access a huge library of build logs!"
19349 msgstr ""
19350
19351 #. type: cindex
19352 #: guix-git/doc/guix.texi:10933
19353 #, no-wrap
19354 msgid "build failures, debugging"
19355 msgstr ""
19356
19357 #. type: Plain text
19358 #: guix-git/doc/guix.texi:10939
19359 msgid "When defining a new package (@pxref{Defining Packages}), you will probably find yourself spending some time debugging and tweaking the build until it succeeds. To do that, you need to operate the build commands yourself in an environment as close as possible to the one the build daemon uses."
19360 msgstr ""
19361
19362 #. type: Plain text
19363 #: guix-git/doc/guix.texi:10944
19364 msgid "To that end, the first thing to do is to use the @option{--keep-failed} or @option{-K} option of @command{guix build}, which will keep the failed build tree in @file{/tmp} or whatever directory you specified as @env{TMPDIR} (@pxref{Common Build Options, @option{--keep-failed}})."
19365 msgstr ""
19366
19367 #. type: Plain text
19368 #: guix-git/doc/guix.texi:10950
19369 msgid "From there on, you can @command{cd} to the failed build tree and source the @file{environment-variables} file, which contains all the environment variable definitions that were in place when the build failed. So let's say you're debugging a build failure in package @code{foo}; a typical session would look like this:"
19370 msgstr ""
19371
19372 #. type: example
19373 #: guix-git/doc/guix.texi:10957
19374 #, no-wrap
19375 msgid ""
19376 "$ guix build foo -K\n"
19377 "@dots{} @i{build fails}\n"
19378 "$ cd /tmp/guix-build-foo.drv-0\n"
19379 "$ source ./environment-variables\n"
19380 "$ cd foo-1.2\n"
19381 msgstr ""
19382
19383 #. type: Plain text
19384 #: guix-git/doc/guix.texi:10961
19385 msgid "Now, you can invoke commands as if you were the daemon (almost) and troubleshoot your build process."
19386 msgstr ""
19387
19388 #. type: Plain text
19389 #: guix-git/doc/guix.texi:10967
19390 msgid "Sometimes it happens that, for example, a package's tests pass when you run them manually but they fail when the daemon runs them. This can happen because the daemon runs builds in containers where, unlike in our environment above, network access is missing, @file{/bin/sh} does not exist, etc. (@pxref{Build Environment Setup})."
19391 msgstr ""
19392
19393 #. type: Plain text
19394 #: guix-git/doc/guix.texi:10970
19395 msgid "In such cases, you may need to run inspect the build process from within a container similar to the one the build daemon creates:"
19396 msgstr ""
19397
19398 #. type: example
19399 #: guix-git/doc/guix.texi:10978
19400 #, no-wrap
19401 msgid ""
19402 "$ guix build -K foo\n"
19403 "@dots{}\n"
19404 "$ cd /tmp/guix-build-foo.drv-0\n"
19405 "$ guix environment --no-grafts -C foo --ad-hoc strace gdb\n"
19406 "[env]# source ./environment-variables\n"
19407 "[env]# cd foo-1.2\n"
19408 msgstr ""
19409
19410 #. type: Plain text
19411 #: guix-git/doc/guix.texi:10987
19412 msgid "Here, @command{guix environment -C} creates a container and spawns a new shell in it (@pxref{Invoking guix environment}). The @command{--ad-hoc strace gdb} part adds the @command{strace} and @command{gdb} commands to the container, which you may find handy while debugging. The @option{--no-grafts} option makes sure we get the exact same environment, with ungrafted packages (@pxref{Security Updates}, for more info on grafts)."
19413 msgstr ""
19414
19415 #. type: Plain text
19416 #: guix-git/doc/guix.texi:10990
19417 msgid "To get closer to a container like that used by the build daemon, we can remove @file{/bin/sh}:"
19418 msgstr ""
19419
19420 #. type: example
19421 #: guix-git/doc/guix.texi:10993
19422 #, no-wrap
19423 msgid "[env]# rm /bin/sh\n"
19424 msgstr ""
19425
19426 #. type: Plain text
19427 #: guix-git/doc/guix.texi:10997
19428 msgid "(Don't worry, this is harmless: this is all happening in the throw-away container created by @command{guix environment}.)"
19429 msgstr ""
19430
19431 #. type: Plain text
19432 #: guix-git/doc/guix.texi:11000
19433 msgid "The @command{strace} command is probably not in the search path, but we can run:"
19434 msgstr ""
19435
19436 #. type: example
19437 #: guix-git/doc/guix.texi:11003
19438 #, no-wrap
19439 msgid "[env]# $GUIX_ENVIRONMENT/bin/strace -f -o log make check\n"
19440 msgstr ""
19441
19442 #. type: Plain text
19443 #: guix-git/doc/guix.texi:11008
19444 msgid "In this way, not only you will have reproduced the environment variables the daemon uses, you will also be running the build process in a container similar to the one the daemon uses."
19445 msgstr ""
19446
19447 #. type: section
19448 #: guix-git/doc/guix.texi:11011
19449 #, no-wrap
19450 msgid "Invoking @command{guix edit}"
19451 msgstr ""
19452
19453 #. type: command{#1}
19454 #: guix-git/doc/guix.texi:11013
19455 #, no-wrap
19456 msgid "guix edit"
19457 msgstr ""
19458
19459 #. type: cindex
19460 #: guix-git/doc/guix.texi:11014
19461 #, no-wrap
19462 msgid "package definition, editing"
19463 msgstr ""
19464
19465 #. type: Plain text
19466 #: guix-git/doc/guix.texi:11019
19467 msgid "So many packages, so many source files! The @command{guix edit} command facilitates the life of users and packagers by pointing their editor at the source file containing the definition of the specified packages. For instance:"
19468 msgstr ""
19469
19470 #. type: example
19471 #: guix-git/doc/guix.texi:11022
19472 #, no-wrap
19473 msgid "guix edit gcc@@4.9 vim\n"
19474 msgstr ""
19475
19476 #. type: Plain text
19477 #: guix-git/doc/guix.texi:11028
19478 msgid "launches the program specified in the @env{VISUAL} or in the @env{EDITOR} environment variable to view the recipe of GCC@tie{}4.9.3 and that of Vim."
19479 msgstr ""
19480
19481 #. type: Plain text
19482 #: guix-git/doc/guix.texi:11034
19483 msgid "If you are using a Guix Git checkout (@pxref{Building from Git}), or have created your own packages on @env{GUIX_PACKAGE_PATH} (@pxref{Package Modules}), you will be able to edit the package recipes. In other cases, you will be able to examine the read-only recipes for packages currently in the store."
19484 msgstr ""
19485
19486 #. type: Plain text
19487 #: guix-git/doc/guix.texi:11039
19488 msgid "Instead of @env{GUIX_PACKAGE_PATH}, the command-line option @option{--load-path=@var{directory}} (or in short @option{-L @var{directory}}) allows you to add @var{directory} to the front of the package module search path and so make your own packages visible."
19489 msgstr ""
19490
19491 #. type: section
19492 #: guix-git/doc/guix.texi:11041
19493 #, no-wrap
19494 msgid "Invoking @command{guix download}"
19495 msgstr ""
19496
19497 #. type: command{#1}
19498 #: guix-git/doc/guix.texi:11043
19499 #, no-wrap
19500 msgid "guix download"
19501 msgstr ""
19502
19503 #. type: cindex
19504 #: guix-git/doc/guix.texi:11044
19505 #, no-wrap
19506 msgid "downloading package sources"
19507 msgstr ""
19508
19509 #. type: Plain text
19510 #: guix-git/doc/guix.texi:11051
19511 msgid "When writing a package definition, developers typically need to download a source tarball, compute its SHA256 hash, and write that hash in the package definition (@pxref{Defining Packages}). The @command{guix download} tool helps with this task: it downloads a file from the given URI, adds it to the store, and prints both its file name in the store and its SHA256 hash."
19512 msgstr ""
19513
19514 #. type: Plain text
19515 #: guix-git/doc/guix.texi:11058
19516 msgid "The fact that the downloaded file is added to the store saves bandwidth: when the developer eventually tries to build the newly defined package with @command{guix build}, the source tarball will not have to be downloaded again because it is already in the store. It is also a convenient way to temporarily stash files, which may be deleted eventually (@pxref{Invoking guix gc})."
19517 msgstr ""
19518
19519 #. type: Plain text
19520 #: guix-git/doc/guix.texi:11066
19521 msgid "The @command{guix download} command supports the same URIs as used in package definitions. In particular, it supports @code{mirror://} URIs. @code{https} URIs (HTTP over TLS) are supported @emph{provided} the Guile bindings for GnuTLS are available in the user's environment; when they are not available, an error is raised. @xref{Guile Preparations, how to install the GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile}, for more information."
19522 msgstr ""
19523
19524 #. type: Plain text
19525 #: guix-git/doc/guix.texi:11071
19526 msgid "@command{guix download} verifies HTTPS server certificates by loading the certificates of X.509 authorities from the directory pointed to by the @env{SSL_CERT_DIR} environment variable (@pxref{X.509 Certificates}), unless @option{--no-check-certificate} is used."
19527 msgstr ""
19528
19529 #. type: Plain text
19530 #: guix-git/doc/guix.texi:11073 guix-git/doc/guix.texi:12655
19531 msgid "The following options are available:"
19532 msgstr ""
19533
19534 #. type: item
19535 #: guix-git/doc/guix.texi:11075 guix-git/doc/guix.texi:11119
19536 #, no-wrap
19537 msgid "--hash=@var{algorithm}"
19538 msgstr ""
19539
19540 #. type: itemx
19541 #: guix-git/doc/guix.texi:11076 guix-git/doc/guix.texi:11120
19542 #, no-wrap
19543 msgid "-H @var{algorithm}"
19544 msgstr ""
19545
19546 #. type: table
19547 #: guix-git/doc/guix.texi:11079
19548 msgid "Compute a hash using the specified @var{algorithm}. @xref{Invoking guix hash}, for more information."
19549 msgstr ""
19550
19551 #. type: item
19552 #: guix-git/doc/guix.texi:11080 guix-git/doc/guix.texi:11129
19553 #, no-wrap
19554 msgid "--format=@var{fmt}"
19555 msgstr ""
19556
19557 #. type: itemx
19558 #: guix-git/doc/guix.texi:11081 guix-git/doc/guix.texi:11130
19559 #, no-wrap
19560 msgid "-f @var{fmt}"
19561 msgstr ""
19562
19563 #. type: table
19564 #: guix-git/doc/guix.texi:11084
19565 msgid "Write the hash in the format specified by @var{fmt}. For more information on the valid values for @var{fmt}, @pxref{Invoking guix hash}."
19566 msgstr ""
19567
19568 #. type: item
19569 #: guix-git/doc/guix.texi:11085
19570 #, no-wrap
19571 msgid "--no-check-certificate"
19572 msgstr ""
19573
19574 #. type: table
19575 #: guix-git/doc/guix.texi:11087
19576 msgid "Do not validate the X.509 certificates of HTTPS servers."
19577 msgstr ""
19578
19579 #. type: table
19580 #: guix-git/doc/guix.texi:11091
19581 msgid "When using this option, you have @emph{absolutely no guarantee} that you are communicating with the authentic server responsible for the given URL, which makes you vulnerable to ``man-in-the-middle'' attacks."
19582 msgstr ""
19583
19584 #. type: item
19585 #: guix-git/doc/guix.texi:11092
19586 #, no-wrap
19587 msgid "--output=@var{file}"
19588 msgstr ""
19589
19590 #. type: itemx
19591 #: guix-git/doc/guix.texi:11093
19592 #, no-wrap
19593 msgid "-o @var{file}"
19594 msgstr ""
19595
19596 #. type: table
19597 #: guix-git/doc/guix.texi:11096
19598 msgid "Save the downloaded file to @var{file} instead of adding it to the store."
19599 msgstr ""
19600
19601 #. type: section
19602 #: guix-git/doc/guix.texi:11099
19603 #, no-wrap
19604 msgid "Invoking @command{guix hash}"
19605 msgstr ""
19606
19607 #. type: command{#1}
19608 #: guix-git/doc/guix.texi:11101
19609 #, no-wrap
19610 msgid "guix hash"
19611 msgstr ""
19612
19613 #. type: Plain text
19614 #: guix-git/doc/guix.texi:11106
19615 msgid "The @command{guix hash} command computes the hash of a file. It is primarily a convenience tool for anyone contributing to the distribution: it computes the cryptographic hash of a file, which can be used in the definition of a package (@pxref{Defining Packages})."
19616 msgstr ""
19617
19618 #. type: example
19619 #: guix-git/doc/guix.texi:11111
19620 #, no-wrap
19621 msgid "guix hash @var{option} @var{file}\n"
19622 msgstr ""
19623
19624 #. type: Plain text
19625 #: guix-git/doc/guix.texi:11116
19626 msgid "When @var{file} is @code{-} (a hyphen), @command{guix hash} computes the hash of data read from standard input. @command{guix hash} has the following options:"
19627 msgstr ""
19628
19629 #. type: table
19630 #: guix-git/doc/guix.texi:11123
19631 msgid "Compute a hash using the specified @var{algorithm}, @code{sha256} by default."
19632 msgstr ""
19633
19634 #. type: table
19635 #: guix-git/doc/guix.texi:11128
19636 msgid "@var{algorithm} must the name of a cryptographic hash algorithm supported by Libgcrypt @i{via} Guile-Gcrypt---e.g., @code{sha512} or @code{sha3-256} (@pxref{Hash Functions,,, guile-gcrypt, Guile-Gcrypt Reference Manual})."
19637 msgstr ""
19638
19639 #. type: table
19640 #: guix-git/doc/guix.texi:11132
19641 msgid "Write the hash in the format specified by @var{fmt}."
19642 msgstr ""
19643
19644 #. type: table
19645 #: guix-git/doc/guix.texi:11135
19646 msgid "Supported formats: @code{base64}, @code{nix-base32}, @code{base32}, @code{base16} (@code{hex} and @code{hexadecimal} can be used as well)."
19647 msgstr ""
19648
19649 #. type: table
19650 #: guix-git/doc/guix.texi:11139
19651 msgid "If the @option{--format} option is not specified, @command{guix hash} will output the hash in @code{nix-base32}. This representation is used in the definitions of packages."
19652 msgstr ""
19653
19654 #. type: table
19655 #: guix-git/doc/guix.texi:11143
19656 msgid "Compute the hash on @var{file} recursively."
19657 msgstr ""
19658
19659 #. type: table
19660 #: guix-git/doc/guix.texi:11152
19661 msgid "In this case, the hash is computed on an archive containing @var{file}, including its children if it is a directory. Some of the metadata of @var{file} is part of the archive; for instance, when @var{file} is a regular file, the hash is different depending on whether @var{file} is executable or not. Metadata such as time stamps has no impact on the hash (@pxref{Invoking guix archive})."
19662 msgstr ""
19663
19664 #. type: item
19665 #: guix-git/doc/guix.texi:11153
19666 #, no-wrap
19667 msgid "--exclude-vcs"
19668 msgstr ""
19669
19670 #. type: itemx
19671 #: guix-git/doc/guix.texi:11154 guix-git/doc/guix.texi:12142
19672 #, no-wrap
19673 msgid "-x"
19674 msgstr ""
19675
19676 #. type: table
19677 #: guix-git/doc/guix.texi:11157
19678 msgid "When combined with @option{--recursive}, exclude version control system directories (@file{.bzr}, @file{.git}, @file{.hg}, etc.)."
19679 msgstr ""
19680
19681 #. type: vindex
19682 #: guix-git/doc/guix.texi:11158
19683 #, no-wrap
19684 msgid "git-fetch"
19685 msgstr ""
19686
19687 #. type: table
19688 #: guix-git/doc/guix.texi:11162
19689 msgid "As an example, here is how you would compute the hash of a Git checkout, which is useful when using the @code{git-fetch} method (@pxref{origin Reference}):"
19690 msgstr ""
19691
19692 #. type: example
19693 #: guix-git/doc/guix.texi:11167
19694 #, no-wrap
19695 msgid ""
19696 "$ git clone http://example.org/foo.git\n"
19697 "$ cd foo\n"
19698 "$ guix hash -rx .\n"
19699 msgstr ""
19700
19701 #. type: cindex
19702 #: guix-git/doc/guix.texi:11171 guix-git/doc/guix.texi:11176
19703 #, no-wrap
19704 msgid "Invoking @command{guix import}"
19705 msgstr ""
19706
19707 #. type: cindex
19708 #: guix-git/doc/guix.texi:11173
19709 #, no-wrap
19710 msgid "importing packages"
19711 msgstr ""
19712
19713 #. type: cindex
19714 #: guix-git/doc/guix.texi:11174
19715 #, no-wrap
19716 msgid "package import"
19717 msgstr ""
19718
19719 #. type: cindex
19720 #: guix-git/doc/guix.texi:11175
19721 #, no-wrap
19722 msgid "package conversion"
19723 msgstr ""
19724
19725 #. type: Plain text
19726 #: guix-git/doc/guix.texi:11183
19727 msgid "The @command{guix import} command is useful for people who would like to add a package to the distribution with as little work as possible---a legitimate demand. The command knows of a few repositories from which it can ``import'' package metadata. The result is a package definition, or a template thereof, in the format we know (@pxref{Defining Packages})."
19728 msgstr ""
19729
19730 #. type: example
19731 #: guix-git/doc/guix.texi:11188
19732 #, no-wrap
19733 msgid "guix import @var{importer} @var{options}@dots{}\n"
19734 msgstr ""
19735
19736 #. type: Plain text
19737 #: guix-git/doc/guix.texi:11193
19738 msgid "@var{importer} specifies the source from which to import package metadata, and @var{options} specifies a package identifier and other options specific to @var{importer}."
19739 msgstr ""
19740
19741 #. type: Plain text
19742 #: guix-git/doc/guix.texi:11197
19743 msgid "Some of the importers rely on the ability to run the @command{gpgv} command. For these, GnuPG must be installed and in @code{$PATH}; run @code{guix install gnupg} if needed."
19744 msgstr ""
19745
19746 #. type: Plain text
19747 #: guix-git/doc/guix.texi:11199
19748 msgid "Currently, the available ``importers'' are:"
19749 msgstr ""
19750
19751 #. type: item
19752 #: guix-git/doc/guix.texi:11201 guix-git/doc/guix.texi:11789
19753 #, no-wrap
19754 msgid "gnu"
19755 msgstr ""
19756
19757 #. type: table
19758 #: guix-git/doc/guix.texi:11205
19759 msgid "Import metadata for the given GNU package. This provides a template for the latest version of that GNU package, including the hash of its source tarball, and its canonical synopsis and description."
19760 msgstr ""
19761
19762 #. type: table
19763 #: guix-git/doc/guix.texi:11208
19764 msgid "Additional information such as the package dependencies and its license needs to be figured out manually."
19765 msgstr ""
19766
19767 #. type: table
19768 #: guix-git/doc/guix.texi:11211
19769 msgid "For example, the following command returns a package definition for GNU@tie{}Hello:"
19770 msgstr ""
19771
19772 #. type: example
19773 #: guix-git/doc/guix.texi:11214
19774 #, no-wrap
19775 msgid "guix import gnu hello\n"
19776 msgstr ""
19777
19778 #. type: table
19779 #: guix-git/doc/guix.texi:11217 guix-git/doc/guix.texi:11457
19780 #: guix-git/doc/guix.texi:11507 guix-git/doc/guix.texi:11536
19781 msgid "Specific command-line options are:"
19782 msgstr ""
19783
19784 #. type: item
19785 #: guix-git/doc/guix.texi:11219 guix-git/doc/guix.texi:11950
19786 #, no-wrap
19787 msgid "--key-download=@var{policy}"
19788 msgstr ""
19789
19790 #. type: table
19791 #: guix-git/doc/guix.texi:11223
19792 msgid "As for @command{guix refresh}, specify the policy to handle missing OpenPGP keys when verifying the package signature. @xref{Invoking guix refresh, @option{--key-download}}."
19793 msgstr ""
19794
19795 #. type: item
19796 #: guix-git/doc/guix.texi:11225 guix-git/doc/guix.texi:11226
19797 #: guix-git/doc/guix.texi:11811
19798 #, no-wrap
19799 msgid "pypi"
19800 msgstr ""
19801
19802 #. type: table
19803 #: guix-git/doc/guix.texi:11233
19804 msgid "Import metadata from the @uref{https://pypi.python.org/, Python Package Index}. Information is taken from the JSON-formatted description available at @code{pypi.python.org} and usually includes all the relevant information, including package dependencies. For maximum efficiency, it is recommended to install the @command{unzip} utility, so that the importer can unzip Python wheels and gather data from them."
19805 msgstr ""
19806
19807 #. type: table
19808 #: guix-git/doc/guix.texi:11236
19809 msgid "The command below imports metadata for the @code{itsdangerous} Python package:"
19810 msgstr ""
19811
19812 #. type: example
19813 #: guix-git/doc/guix.texi:11239
19814 #, no-wrap
19815 msgid "guix import pypi itsdangerous\n"
19816 msgstr ""
19817
19818 #. type: table
19819 #: guix-git/doc/guix.texi:11247 guix-git/doc/guix.texi:11272
19820 #: guix-git/doc/guix.texi:11480 guix-git/doc/guix.texi:11521
19821 #: guix-git/doc/guix.texi:11568 guix-git/doc/guix.texi:11593
19822 #: guix-git/doc/guix.texi:11609 guix-git/doc/guix.texi:11640
19823 msgid "Traverse the dependency graph of the given upstream package recursively and generate package expressions for all those packages that are not yet in Guix."
19824 msgstr ""
19825
19826 #. type: item
19827 #: guix-git/doc/guix.texi:11249 guix-git/doc/guix.texi:11250
19828 #: guix-git/doc/guix.texi:11813
19829 #, no-wrap
19830 msgid "gem"
19831 msgstr ""
19832
19833 #. type: table
19834 #: guix-git/doc/guix.texi:11259
19835 msgid "Import metadata from @uref{https://rubygems.org/, RubyGems}. Information is taken from the JSON-formatted description available at @code{rubygems.org} and includes most relevant information, including runtime dependencies. There are some caveats, however. The metadata doesn't distinguish between synopses and descriptions, so the same string is used for both fields. Additionally, the details of non-Ruby dependencies required to build native extensions is unavailable and left as an exercise to the packager."
19836 msgstr ""
19837
19838 #. type: table
19839 #: guix-git/doc/guix.texi:11261
19840 msgid "The command below imports metadata for the @code{rails} Ruby package:"
19841 msgstr ""
19842
19843 #. type: example
19844 #: guix-git/doc/guix.texi:11264
19845 #, no-wrap
19846 msgid "guix import gem rails\n"
19847 msgstr ""
19848
19849 #. type: item
19850 #: guix-git/doc/guix.texi:11274 guix-git/doc/guix.texi:11809
19851 #, no-wrap
19852 msgid "cpan"
19853 msgstr ""
19854
19855 #. type: cindex
19856 #: guix-git/doc/guix.texi:11275
19857 #, no-wrap
19858 msgid "CPAN"
19859 msgstr ""
19860
19861 #. type: table
19862 #: guix-git/doc/guix.texi:11283
19863 msgid "Import metadata from @uref{https://www.metacpan.org/, MetaCPAN}. Information is taken from the JSON-formatted metadata provided through @uref{https://fastapi.metacpan.org/, MetaCPAN's API} and includes most relevant information, such as module dependencies. License information should be checked closely. If Perl is available in the store, then the @code{corelist} utility will be used to filter core modules out of the list of dependencies."
19864 msgstr ""
19865
19866 #. type: table
19867 #: guix-git/doc/guix.texi:11286
19868 msgid "The command command below imports metadata for the Acme::Boolean Perl module:"
19869 msgstr ""
19870
19871 #. type: example
19872 #: guix-git/doc/guix.texi:11289
19873 #, no-wrap
19874 msgid "guix import cpan Acme::Boolean\n"
19875 msgstr ""
19876
19877 #. type: item
19878 #: guix-git/doc/guix.texi:11291 guix-git/doc/guix.texi:11805
19879 #, no-wrap
19880 msgid "cran"
19881 msgstr ""
19882
19883 #. type: cindex
19884 #: guix-git/doc/guix.texi:11292
19885 #, no-wrap
19886 msgid "CRAN"
19887 msgstr ""
19888
19889 #. type: cindex
19890 #: guix-git/doc/guix.texi:11293
19891 #, no-wrap
19892 msgid "Bioconductor"
19893 msgstr ""
19894
19895 #. type: table
19896 #: guix-git/doc/guix.texi:11297
19897 msgid "Import metadata from @uref{https://cran.r-project.org/, CRAN}, the central repository for the @uref{https://r-project.org, GNU@tie{}R statistical and graphical environment}."
19898 msgstr ""
19899
19900 #. type: table
19901 #: guix-git/doc/guix.texi:11299
19902 msgid "Information is extracted from the @file{DESCRIPTION} file of the package."
19903 msgstr ""
19904
19905 #. type: table
19906 #: guix-git/doc/guix.texi:11301
19907 msgid "The command command below imports metadata for the Cairo R package:"
19908 msgstr ""
19909
19910 #. type: example
19911 #: guix-git/doc/guix.texi:11304
19912 #, no-wrap
19913 msgid "guix import cran Cairo\n"
19914 msgstr ""
19915
19916 #. type: table
19917 #: guix-git/doc/guix.texi:11309
19918 msgid "When @option{--recursive} is added, the importer will traverse the dependency graph of the given upstream package recursively and generate package expressions for all those packages that are not yet in Guix."
19919 msgstr ""
19920
19921 #. type: table
19922 #: guix-git/doc/guix.texi:11316
19923 msgid "When @option{--style=specification} is added, the importer will generate package definitions whose inputs are package specifications instead of references to package variables. This is useful when generated package definitions are to be appended to existing user modules, as the list of used package modules need not be changed. The default is @option{--style=variable}."
19924 msgstr ""
19925
19926 #. type: table
19927 #: guix-git/doc/guix.texi:11321
19928 msgid "When @option{--archive=bioconductor} is added, metadata is imported from @uref{https://www.bioconductor.org/, Bioconductor}, a repository of R packages for the analysis and comprehension of high-throughput genomic data in bioinformatics."
19929 msgstr ""
19930
19931 #. type: table
19932 #: guix-git/doc/guix.texi:11324
19933 msgid "Information is extracted from the @file{DESCRIPTION} file contained in the package archive."
19934 msgstr ""
19935
19936 #. type: table
19937 #: guix-git/doc/guix.texi:11326
19938 msgid "The command below imports metadata for the GenomicRanges R package:"
19939 msgstr ""
19940
19941 #. type: example
19942 #: guix-git/doc/guix.texi:11329
19943 #, no-wrap
19944 msgid "guix import cran --archive=bioconductor GenomicRanges\n"
19945 msgstr ""
19946
19947 #. type: table
19948 #: guix-git/doc/guix.texi:11334
19949 msgid "Finally, you can also import R packages that have not yet been published on CRAN or Bioconductor as long as they are in a git repository. Use @option{--archive=git} followed by the URL of the git repository:"
19950 msgstr ""
19951
19952 #. type: example
19953 #: guix-git/doc/guix.texi:11337
19954 #, no-wrap
19955 msgid "guix import cran --archive=git https://github.com/immunogenomics/harmony\n"
19956 msgstr ""
19957
19958 #. type: item
19959 #: guix-git/doc/guix.texi:11339
19960 #, no-wrap
19961 msgid "texlive"
19962 msgstr ""
19963
19964 #. type: cindex
19965 #: guix-git/doc/guix.texi:11340
19966 #, no-wrap
19967 msgid "TeX Live"
19968 msgstr ""
19969
19970 #. type: cindex
19971 #: guix-git/doc/guix.texi:11341
19972 #, no-wrap
19973 msgid "CTAN"
19974 msgstr ""
19975
19976 #. type: table
19977 #: guix-git/doc/guix.texi:11345
19978 msgid "Import metadata from @uref{https://www.ctan.org/, CTAN}, the comprehensive TeX archive network for TeX packages that are part of the @uref{https://www.tug.org/texlive/, TeX Live distribution}."
19979 msgstr ""
19980
19981 #. type: table
19982 #: guix-git/doc/guix.texi:11350
19983 msgid "Information about the package is obtained through the XML API provided by CTAN, while the source code is downloaded from the SVN repository of the Tex Live project. This is done because the CTAN does not keep versioned archives."
19984 msgstr ""
19985
19986 #. type: table
19987 #: guix-git/doc/guix.texi:11353
19988 msgid "The command command below imports metadata for the @code{fontspec} TeX package:"
19989 msgstr ""
19990
19991 #. type: example
19992 #: guix-git/doc/guix.texi:11356
19993 #, no-wrap
19994 msgid "guix import texlive fontspec\n"
19995 msgstr ""
19996
19997 #. type: table
19998 #: guix-git/doc/guix.texi:11362
19999 msgid "When @option{--archive=@var{directory}} is added, the source code is downloaded not from the @file{latex} sub-directory of the @file{texmf-dist/source} tree in the TeX Live SVN repository, but from the specified sibling @var{directory} under the same root."
20000 msgstr ""
20001
20002 #. type: table
20003 #: guix-git/doc/guix.texi:11366
20004 msgid "The command below imports metadata for the @code{ifxetex} package from CTAN while fetching the sources from the directory @file{texmf/source/generic}:"
20005 msgstr ""
20006
20007 #. type: example
20008 #: guix-git/doc/guix.texi:11369
20009 #, no-wrap
20010 msgid "guix import texlive --archive=generic ifxetex\n"
20011 msgstr ""
20012
20013 #. type: cindex
20014 #: guix-git/doc/guix.texi:11372
20015 #, no-wrap
20016 msgid "JSON, import"
20017 msgstr ""
20018
20019 #. type: table
20020 #: guix-git/doc/guix.texi:11375
20021 msgid "Import package metadata from a local JSON file. Consider the following example package definition in JSON format:"
20022 msgstr ""
20023
20024 #. type: example
20025 #: guix-git/doc/guix.texi:11388
20026 #, no-wrap
20027 msgid ""
20028 "@{\n"
20029 " \"name\": \"hello\",\n"
20030 " \"version\": \"2.10\",\n"
20031 " \"source\": \"mirror://gnu/hello/hello-2.10.tar.gz\",\n"
20032 " \"build-system\": \"gnu\",\n"
20033 " \"home-page\": \"https://www.gnu.org/software/hello/\",\n"
20034 " \"synopsis\": \"Hello, GNU world: An example GNU package\",\n"
20035 " \"description\": \"GNU Hello prints a greeting.\",\n"
20036 " \"license\": \"GPL-3.0+\",\n"
20037 " \"native-inputs\": [\"gettext\"]\n"
20038 "@}\n"
20039 msgstr ""
20040
20041 #. type: table
20042 #: guix-git/doc/guix.texi:11394
20043 msgid "The field names are the same as for the @code{<package>} record (@xref{Defining Packages}). References to other packages are provided as JSON lists of quoted package specification strings such as @code{guile} or @code{guile@@2.0}."
20044 msgstr ""
20045
20046 #. type: table
20047 #: guix-git/doc/guix.texi:11397
20048 msgid "The importer also supports a more explicit source definition using the common fields for @code{<origin>} records:"
20049 msgstr ""
20050
20051 #. type: example
20052 #: guix-git/doc/guix.texi:11410
20053 #, no-wrap
20054 msgid ""
20055 "@{\n"
20056 " @dots{}\n"
20057 " \"source\": @{\n"
20058 " \"method\": \"url-fetch\",\n"
20059 " \"uri\": \"mirror://gnu/hello/hello-2.10.tar.gz\",\n"
20060 " \"sha256\": @{\n"
20061 " \"base32\": \"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\"\n"
20062 " @}\n"
20063 " @}\n"
20064 " @dots{}\n"
20065 "@}\n"
20066 msgstr ""
20067
20068 #. type: table
20069 #: guix-git/doc/guix.texi:11414
20070 msgid "The command below reads metadata from the JSON file @code{hello.json} and outputs a package expression:"
20071 msgstr ""
20072
20073 #. type: example
20074 #: guix-git/doc/guix.texi:11417
20075 #, no-wrap
20076 msgid "guix import json hello.json\n"
20077 msgstr ""
20078
20079 #. type: item
20080 #: guix-git/doc/guix.texi:11419
20081 #, no-wrap
20082 msgid "nix"
20083 msgstr ""
20084
20085 #. type: table
20086 #: guix-git/doc/guix.texi:11428
20087 msgid "Import metadata from a local copy of the source of the @uref{https://nixos.org/nixpkgs/, Nixpkgs distribution}@footnote{This relies on the @command{nix-instantiate} command of @uref{https://nixos.org/nix/, Nix}.}. Package definitions in Nixpkgs are typically written in a mixture of Nix-language and Bash code. This command only imports the high-level package structure that is written in the Nix language. It normally includes all the basic fields of a package definition."
20088 msgstr ""
20089
20090 #. type: table
20091 #: guix-git/doc/guix.texi:11431
20092 msgid "When importing a GNU package, the synopsis and descriptions are replaced by their canonical upstream variant."
20093 msgstr ""
20094
20095 #. type: table
20096 #: guix-git/doc/guix.texi:11433
20097 msgid "Usually, you will first need to do:"
20098 msgstr ""
20099
20100 #. type: example
20101 #: guix-git/doc/guix.texi:11436
20102 #, no-wrap
20103 msgid "export NIX_REMOTE=daemon\n"
20104 msgstr ""
20105
20106 #. type: table
20107 #: guix-git/doc/guix.texi:11440
20108 msgid "so that @command{nix-instantiate} does not try to open the Nix database."
20109 msgstr ""
20110
20111 #. type: table
20112 #: guix-git/doc/guix.texi:11444
20113 msgid "As an example, the command below imports the package definition of LibreOffice (more precisely, it imports the definition of the package bound to the @code{libreoffice} top-level attribute):"
20114 msgstr ""
20115
20116 #. type: example
20117 #: guix-git/doc/guix.texi:11447
20118 #, no-wrap
20119 msgid "guix import nix ~/path/to/nixpkgs libreoffice\n"
20120 msgstr ""
20121
20122 #. type: item
20123 #: guix-git/doc/guix.texi:11449 guix-git/doc/guix.texi:11450
20124 #: guix-git/doc/guix.texi:11817
20125 #, no-wrap
20126 msgid "hackage"
20127 msgstr ""
20128
20129 #. type: table
20130 #: guix-git/doc/guix.texi:11455
20131 msgid "Import metadata from the Haskell community's central package archive @uref{https://hackage.haskell.org/, Hackage}. Information is taken from Cabal files and includes all the relevant information, including package dependencies."
20132 msgstr ""
20133
20134 #. type: item
20135 #: guix-git/doc/guix.texi:11459
20136 #, no-wrap
20137 msgid "--stdin"
20138 msgstr ""
20139
20140 #. type: itemx
20141 #: guix-git/doc/guix.texi:11460
20142 #, no-wrap
20143 msgid "-s"
20144 msgstr ""
20145
20146 #. type: table
20147 #: guix-git/doc/guix.texi:11462
20148 msgid "Read a Cabal file from standard input."
20149 msgstr ""
20150
20151 #. type: item
20152 #: guix-git/doc/guix.texi:11462 guix-git/doc/guix.texi:11509
20153 #, no-wrap
20154 msgid "--no-test-dependencies"
20155 msgstr ""
20156
20157 #. type: table
20158 #: guix-git/doc/guix.texi:11465 guix-git/doc/guix.texi:11512
20159 msgid "Do not include dependencies required only by the test suites."
20160 msgstr ""
20161
20162 #. type: item
20163 #: guix-git/doc/guix.texi:11465
20164 #, no-wrap
20165 msgid "--cabal-environment=@var{alist}"
20166 msgstr ""
20167
20168 #. type: itemx
20169 #: guix-git/doc/guix.texi:11466
20170 #, no-wrap
20171 msgid "-e @var{alist}"
20172 msgstr ""
20173
20174 #. type: table
20175 #: guix-git/doc/guix.texi:11475
20176 msgid "@var{alist} is a Scheme alist defining the environment in which the Cabal conditionals are evaluated. The accepted keys are: @code{os}, @code{arch}, @code{impl} and a string representing the name of a flag. The value associated with a flag has to be either the symbol @code{true} or @code{false}. The value associated with other keys has to conform to the Cabal file format definition. The default value associated with the keys @code{os}, @code{arch} and @code{impl} is @samp{linux}, @samp{x86_64} and @samp{ghc}, respectively."
20177 msgstr ""
20178
20179 #. type: table
20180 #: guix-git/doc/guix.texi:11485
20181 msgid "The command below imports metadata for the latest version of the HTTP Haskell package without including test dependencies and specifying the value of the flag @samp{network-uri} as @code{false}:"
20182 msgstr ""
20183
20184 #. type: example
20185 #: guix-git/doc/guix.texi:11488
20186 #, no-wrap
20187 msgid "guix import hackage -t -e \"'((\\\"network-uri\\\" . false))\" HTTP\n"
20188 msgstr ""
20189
20190 #. type: table
20191 #: guix-git/doc/guix.texi:11492
20192 msgid "A specific package version may optionally be specified by following the package name by an at-sign and a version number as in the following example:"
20193 msgstr ""
20194
20195 #. type: example
20196 #: guix-git/doc/guix.texi:11495
20197 #, no-wrap
20198 msgid "guix import hackage mtl@@2.1.3.1\n"
20199 msgstr ""
20200
20201 #. type: item
20202 #: guix-git/doc/guix.texi:11497 guix-git/doc/guix.texi:11498
20203 #: guix-git/doc/guix.texi:11819
20204 #, no-wrap
20205 msgid "stackage"
20206 msgstr ""
20207
20208 #. type: table
20209 #: guix-git/doc/guix.texi:11505
20210 msgid "The @code{stackage} importer is a wrapper around the @code{hackage} one. It takes a package name, looks up the package version included in a long-term support (LTS) @uref{https://www.stackage.org, Stackage} release and uses the @code{hackage} importer to retrieve its metadata. Note that it is up to you to select an LTS release compatible with the GHC compiler used by Guix."
20211 msgstr ""
20212
20213 #. type: item
20214 #: guix-git/doc/guix.texi:11512
20215 #, no-wrap
20216 msgid "--lts-version=@var{version}"
20217 msgstr ""
20218
20219 #. type: itemx
20220 #: guix-git/doc/guix.texi:11513
20221 #, no-wrap
20222 msgid "-l @var{version}"
20223 msgstr ""
20224
20225 #. type: table
20226 #: guix-git/doc/guix.texi:11516
20227 msgid "@var{version} is the desired LTS release version. If omitted the latest release is used."
20228 msgstr ""
20229
20230 #. type: table
20231 #: guix-git/doc/guix.texi:11525
20232 msgid "The command below imports metadata for the HTTP Haskell package included in the LTS Stackage release version 7.18:"
20233 msgstr ""
20234
20235 #. type: example
20236 #: guix-git/doc/guix.texi:11528
20237 #, no-wrap
20238 msgid "guix import stackage --lts-version=7.18 HTTP\n"
20239 msgstr ""
20240
20241 #. type: item
20242 #: guix-git/doc/guix.texi:11530 guix-git/doc/guix.texi:11531
20243 #: guix-git/doc/guix.texi:11803
20244 #, no-wrap
20245 msgid "elpa"
20246 msgstr ""
20247
20248 #. type: table
20249 #: guix-git/doc/guix.texi:11534
20250 msgid "Import metadata from an Emacs Lisp Package Archive (ELPA) package repository (@pxref{Packages,,, emacs, The GNU Emacs Manual})."
20251 msgstr ""
20252
20253 #. type: item
20254 #: guix-git/doc/guix.texi:11538
20255 #, no-wrap
20256 msgid "--archive=@var{repo}"
20257 msgstr ""
20258
20259 #. type: itemx
20260 #: guix-git/doc/guix.texi:11539
20261 #, no-wrap
20262 msgid "-a @var{repo}"
20263 msgstr ""
20264
20265 #. type: table
20266 #: guix-git/doc/guix.texi:11543
20267 msgid "@var{repo} identifies the archive repository from which to retrieve the information. Currently the supported repositories and their identifiers are:"
20268 msgstr ""
20269
20270 #. type: itemize
20271 #: guix-git/doc/guix.texi:11547
20272 msgid "@uref{https://elpa.gnu.org/packages, GNU}, selected by the @code{gnu} identifier. This is the default."
20273 msgstr ""
20274
20275 #. type: itemize
20276 #: guix-git/doc/guix.texi:11553
20277 msgid "Packages from @code{elpa.gnu.org} are signed with one of the keys contained in the GnuPG keyring at @file{share/emacs/25.1/etc/package-keyring.gpg} (or similar) in the @code{emacs} package (@pxref{Package Installation, ELPA package signatures,, emacs, The GNU Emacs Manual})."
20278 msgstr ""
20279
20280 #. type: itemize
20281 #: guix-git/doc/guix.texi:11557
20282 msgid "@uref{https://stable.melpa.org/packages, MELPA-Stable}, selected by the @code{melpa-stable} identifier."
20283 msgstr ""
20284
20285 #. type: itemize
20286 #: guix-git/doc/guix.texi:11561
20287 msgid "@uref{https://melpa.org/packages, MELPA}, selected by the @code{melpa} identifier."
20288 msgstr ""
20289
20290 #. type: item
20291 #: guix-git/doc/guix.texi:11570 guix-git/doc/guix.texi:11571
20292 #: guix-git/doc/guix.texi:11821
20293 #, no-wrap
20294 msgid "crate"
20295 msgstr ""
20296
20297 #. type: table
20298 #: guix-git/doc/guix.texi:11574
20299 msgid "Import metadata from the crates.io Rust package repository @uref{https://crates.io, crates.io}, as in this example:"
20300 msgstr ""
20301
20302 #. type: example
20303 #: guix-git/doc/guix.texi:11577
20304 #, no-wrap
20305 msgid "guix import crate blake2-rfc\n"
20306 msgstr ""
20307
20308 #. type: table
20309 #: guix-git/doc/guix.texi:11580
20310 msgid "The crate importer also allows you to specify a version string:"
20311 msgstr ""
20312
20313 #. type: example
20314 #: guix-git/doc/guix.texi:11583
20315 #, no-wrap
20316 msgid "guix import crate constant-time-eq@@0.1.0\n"
20317 msgstr ""
20318
20319 #. type: table
20320 #: guix-git/doc/guix.texi:11586 guix-git/doc/guix.texi:11602
20321 #: guix-git/doc/guix.texi:11633
20322 msgid "Additional options include:"
20323 msgstr ""
20324
20325 #. type: item
20326 #: guix-git/doc/guix.texi:11595
20327 #, no-wrap
20328 msgid "opam"
20329 msgstr ""
20330
20331 #. type: cindex
20332 #: guix-git/doc/guix.texi:11596
20333 #, no-wrap
20334 msgid "OPAM"
20335 msgstr ""
20336
20337 #. type: cindex
20338 #: guix-git/doc/guix.texi:11597
20339 #, no-wrap
20340 msgid "OCaml"
20341 msgstr ""
20342
20343 #. type: table
20344 #: guix-git/doc/guix.texi:11600
20345 msgid "Import metadata from the @uref{https://opam.ocaml.org/, OPAM} package repository used by the OCaml community."
20346 msgstr ""
20347
20348 #. type: item
20349 #: guix-git/doc/guix.texi:11609
20350 #, no-wrap
20351 msgid "--repo"
20352 msgstr ""
20353
20354 #. type: table
20355 #: guix-git/doc/guix.texi:11611
20356 msgid "Select the given repository (a repository name). Possible values include:"
20357 msgstr ""
20358
20359 #. type: item
20360 #: guix-git/doc/guix.texi:11612
20361 #, no-wrap
20362 msgid "@code{opam}, the default opam repository,"
20363 msgstr ""
20364
20365 #. type: item
20366 #: guix-git/doc/guix.texi:11613
20367 #, no-wrap
20368 msgid "@code{coq} or @code{coq-released}, the stable repository for coq packages,"
20369 msgstr ""
20370
20371 #. type: item
20372 #: guix-git/doc/guix.texi:11614
20373 #, no-wrap
20374 msgid "@code{coq-core-dev}, the repository that contains development versions of coq,"
20375 msgstr ""
20376
20377 #. type: item
20378 #: guix-git/doc/guix.texi:11615
20379 #, no-wrap
20380 msgid "@code{coq-extra-dev}, the repository that contains development versions"
20381 msgstr ""
20382
20383 #. type: itemize
20384 #: guix-git/doc/guix.texi:11617
20385 msgid "of coq packages."
20386 msgstr ""
20387
20388 #. type: cindex
20389 #: guix-git/doc/guix.texi:11620 guix-git/doc/guix.texi:11621
20390 #, no-wrap
20391 msgid "go"
20392 msgstr ""
20393
20394 #. type: table
20395 #: guix-git/doc/guix.texi:11624
20396 msgid "Import metadata for a Go module using @uref{https://proxy.golang.org, proxy.golang.org}."
20397 msgstr ""
20398
20399 #. type: example
20400 #: guix-git/doc/guix.texi:11627
20401 #, no-wrap
20402 msgid "guix import go gopkg.in/yaml.v2\n"
20403 msgstr ""
20404
20405 #. type: table
20406 #: guix-git/doc/guix.texi:11631
20407 msgid "It is possible to use a package specification with a @code{@@VERSION} suffix to import a specific version."
20408 msgstr ""
20409
20410 #. type: item
20411 #: guix-git/doc/guix.texi:11640
20412 #, no-wrap
20413 msgid "--pin-versions"
20414 msgstr ""
20415
20416 #. type: table
20417 #: guix-git/doc/guix.texi:11648
20418 msgid "When using this option, the importer preserves the exact versions of the Go modules dependencies instead of using their latest available versions. This can be useful when attempting to import packages that recursively depend on former versions of themselves to build. When using this mode, the symbol of the package is made by appending the version to its name, so that multiple versions of the same package can coexist."
20419 msgstr ""
20420
20421 #. type: Plain text
20422 #: guix-git/doc/guix.texi:11654
20423 msgid "The structure of the @command{guix import} code is modular. It would be useful to have more importers for other package formats, and your help is welcome here (@pxref{Contributing})."
20424 msgstr ""
20425
20426 #. type: section
20427 #: guix-git/doc/guix.texi:11656
20428 #, no-wrap
20429 msgid "Invoking @command{guix refresh}"
20430 msgstr ""
20431
20432 #. type: command{#1}
20433 #: guix-git/doc/guix.texi:11658
20434 #, no-wrap
20435 msgid "guix refresh"
20436 msgstr ""
20437
20438 #. type: Plain text
20439 #: guix-git/doc/guix.texi:11666
20440 msgid "The primary audience of the @command{guix refresh} command is packagers. As a user, you may be interested in the @option{--with-latest} option, which can bring you package update superpowers built upon @command{guix refresh} (@pxref{Package Transformation Options, @option{--with-latest}}). By default, @command{guix refresh} reports any packages provided by the distribution that are outdated compared to the latest upstream version, like this:"
20441 msgstr ""
20442
20443 #. type: example
20444 #: guix-git/doc/guix.texi:11671
20445 #, no-wrap
20446 msgid ""
20447 "$ guix refresh\n"
20448 "gnu/packages/gettext.scm:29:13: gettext would be upgraded from 0.18.1.1 to 0.18.2.1\n"
20449 "gnu/packages/glib.scm:77:12: glib would be upgraded from 2.34.3 to 2.37.0\n"
20450 msgstr ""
20451
20452 #. type: Plain text
20453 #: guix-git/doc/guix.texi:11675
20454 msgid "Alternatively, one can specify packages to consider, in which case a warning is emitted for packages that lack an updater:"
20455 msgstr ""
20456
20457 #. type: example
20458 #: guix-git/doc/guix.texi:11680
20459 #, no-wrap
20460 msgid ""
20461 "$ guix refresh coreutils guile guile-ssh\n"
20462 "gnu/packages/ssh.scm:205:2: warning: no updater for guile-ssh\n"
20463 "gnu/packages/guile.scm:136:12: guile would be upgraded from 2.0.12 to 2.0.13\n"
20464 msgstr ""
20465
20466 #. type: Plain text
20467 #: guix-git/doc/guix.texi:11689
20468 msgid "@command{guix refresh} browses the upstream repository of each package and determines the highest version number of the releases therein. The command knows how to update specific types of packages: GNU packages, ELPA packages, etc.---see the documentation for @option{--type} below. There are many packages, though, for which it lacks a method to determine whether a new upstream release is available. However, the mechanism is extensible, so feel free to get in touch with us to add a new method!"
20469 msgstr ""
20470
20471 #. type: table
20472 #: guix-git/doc/guix.texi:11694
20473 msgid "Consider the packages specified, and all the packages upon which they depend."
20474 msgstr ""
20475
20476 #. type: example
20477 #: guix-git/doc/guix.texi:11702
20478 #, no-wrap
20479 msgid ""
20480 "$ guix refresh --recursive coreutils\n"
20481 "gnu/packages/acl.scm:40:13: acl would be upgraded from 2.2.53 to 2.3.1\n"
20482 "gnu/packages/m4.scm:30:12: 1.4.18 is already the latest version of m4\n"
20483 "gnu/packages/xml.scm:68:2: warning: no updater for expat\n"
20484 "gnu/packages/multiprecision.scm:40:12: 6.1.2 is already the latest version of gmp\n"
20485 "@dots{}\n"
20486 msgstr ""
20487
20488 #. type: Plain text
20489 #: guix-git/doc/guix.texi:11710
20490 msgid "Sometimes the upstream name differs from the package name used in Guix, and @command{guix refresh} needs a little help. Most updaters honor the @code{upstream-name} property in package definitions, which can be used to that effect:"
20491 msgstr ""
20492
20493 #. type: lisp
20494 #: guix-git/doc/guix.texi:11717
20495 #, no-wrap
20496 msgid ""
20497 "(define-public network-manager\n"
20498 " (package\n"
20499 " (name \"network-manager\")\n"
20500 " ;; @dots{}\n"
20501 " (properties '((upstream-name . \"NetworkManager\")))))\n"
20502 msgstr ""
20503
20504 #. type: Plain text
20505 #: guix-git/doc/guix.texi:11726
20506 msgid "When passed @option{--update}, it modifies distribution source files to update the version numbers and source tarball hashes of those package recipes (@pxref{Defining Packages}). This is achieved by downloading each package's latest source tarball and its associated OpenPGP signature, authenticating the downloaded tarball against its signature using @command{gpgv}, and finally computing its hash---note that GnuPG must be installed and in @code{$PATH}; run @code{guix install gnupg} if needed."
20507 msgstr ""
20508
20509 #. type: Plain text
20510 #: guix-git/doc/guix.texi:11732
20511 msgid "When the public key used to sign the tarball is missing from the user's keyring, an attempt is made to automatically retrieve it from a public key server; when this is successful, the key is added to the user's keyring; otherwise, @command{guix refresh} reports an error."
20512 msgstr ""
20513
20514 #. type: Plain text
20515 #: guix-git/doc/guix.texi:11734
20516 msgid "The following options are supported:"
20517 msgstr ""
20518
20519 #. type: table
20520 #: guix-git/doc/guix.texi:11742 guix-git/doc/guix.texi:12537
20521 msgid "This is useful to precisely refer to a package, as in this example:"
20522 msgstr ""
20523
20524 #. type: example
20525 #: guix-git/doc/guix.texi:11745
20526 #, no-wrap
20527 msgid "guix refresh -l -e '(@@@@ (gnu packages commencement) glibc-final)'\n"
20528 msgstr ""
20529
20530 #. type: table
20531 #: guix-git/doc/guix.texi:11749
20532 msgid "This command lists the dependents of the ``final'' libc (essentially all the packages)."
20533 msgstr ""
20534
20535 #. type: item
20536 #: guix-git/doc/guix.texi:11750
20537 #, no-wrap
20538 msgid "--update"
20539 msgstr ""
20540
20541 #. type: itemx
20542 #: guix-git/doc/guix.texi:11751
20543 #, no-wrap
20544 msgid "-u"
20545 msgstr ""
20546
20547 #. type: table
20548 #: guix-git/doc/guix.texi:11755
20549 msgid "Update distribution source files (package recipes) in place. This is usually run from a checkout of the Guix source tree (@pxref{Running Guix Before It Is Installed}):"
20550 msgstr ""
20551
20552 #. type: example
20553 #: guix-git/doc/guix.texi:11758
20554 #, no-wrap
20555 msgid "$ ./pre-inst-env guix refresh -s non-core -u\n"
20556 msgstr ""
20557
20558 #. type: table
20559 #: guix-git/doc/guix.texi:11761
20560 msgid "@xref{Defining Packages}, for more information on package definitions."
20561 msgstr ""
20562
20563 #. type: item
20564 #: guix-git/doc/guix.texi:11762
20565 #, no-wrap
20566 msgid "--select=[@var{subset}]"
20567 msgstr ""
20568
20569 #. type: itemx
20570 #: guix-git/doc/guix.texi:11763
20571 #, no-wrap
20572 msgid "-s @var{subset}"
20573 msgstr ""
20574
20575 #. type: table
20576 #: guix-git/doc/guix.texi:11766
20577 msgid "Select all the packages in @var{subset}, one of @code{core} or @code{non-core}."
20578 msgstr ""
20579
20580 #. type: table
20581 #: guix-git/doc/guix.texi:11773
20582 msgid "The @code{core} subset refers to all the packages at the core of the distribution---i.e., packages that are used to build ``everything else''. This includes GCC, libc, Binutils, Bash, etc. Usually, changing one of these packages in the distribution entails a rebuild of all the others. Thus, such updates are an inconvenience to users in terms of build time or bandwidth used to achieve the upgrade."
20583 msgstr ""
20584
20585 #. type: table
20586 #: guix-git/doc/guix.texi:11777
20587 msgid "The @code{non-core} subset refers to the remaining packages. It is typically useful in cases where an update of the core packages would be inconvenient."
20588 msgstr ""
20589
20590 #. type: table
20591 #: guix-git/doc/guix.texi:11782
20592 msgid "Select all the packages from the manifest in @var{file}. This is useful to check if any packages of the user manifest can be updated."
20593 msgstr ""
20594
20595 #. type: item
20596 #: guix-git/doc/guix.texi:11783
20597 #, no-wrap
20598 msgid "--type=@var{updater}"
20599 msgstr ""
20600
20601 #. type: itemx
20602 #: guix-git/doc/guix.texi:11784
20603 #, no-wrap
20604 msgid "-t @var{updater}"
20605 msgstr ""
20606
20607 #. type: table
20608 #: guix-git/doc/guix.texi:11787
20609 msgid "Select only packages handled by @var{updater} (may be a comma-separated list of updaters). Currently, @var{updater} may be one of:"
20610 msgstr ""
20611
20612 #. type: table
20613 #: guix-git/doc/guix.texi:11791
20614 msgid "the updater for GNU packages;"
20615 msgstr ""
20616
20617 #. type: item
20618 #: guix-git/doc/guix.texi:11791
20619 #, no-wrap
20620 msgid "savannah"
20621 msgstr ""
20622
20623 #. type: table
20624 #: guix-git/doc/guix.texi:11793
20625 msgid "the updater for packages hosted at @uref{https://savannah.gnu.org, Savannah};"
20626 msgstr ""
20627
20628 #. type: item
20629 #: guix-git/doc/guix.texi:11793
20630 #, no-wrap
20631 msgid "sourceforge"
20632 msgstr ""
20633
20634 #. type: table
20635 #: guix-git/doc/guix.texi:11795
20636 msgid "the updater for packages hosted at @uref{https://sourceforge.net, SourceForge};"
20637 msgstr ""
20638
20639 #. type: item
20640 #: guix-git/doc/guix.texi:11795
20641 #, no-wrap
20642 msgid "gnome"
20643 msgstr ""
20644
20645 #. type: table
20646 #: guix-git/doc/guix.texi:11797
20647 msgid "the updater for GNOME packages;"
20648 msgstr ""
20649
20650 #. type: item
20651 #: guix-git/doc/guix.texi:11797
20652 #, no-wrap
20653 msgid "kde"
20654 msgstr ""
20655
20656 #. type: table
20657 #: guix-git/doc/guix.texi:11799
20658 msgid "the updater for KDE packages;"
20659 msgstr ""
20660
20661 #. type: item
20662 #: guix-git/doc/guix.texi:11799
20663 #, no-wrap
20664 msgid "xorg"
20665 msgstr ""
20666
20667 #. type: table
20668 #: guix-git/doc/guix.texi:11801
20669 msgid "the updater for X.org packages;"
20670 msgstr ""
20671
20672 #. type: item
20673 #: guix-git/doc/guix.texi:11801
20674 #, no-wrap
20675 msgid "kernel.org"
20676 msgstr ""
20677
20678 #. type: table
20679 #: guix-git/doc/guix.texi:11803
20680 msgid "the updater for packages hosted on kernel.org;"
20681 msgstr ""
20682
20683 #. type: table
20684 #: guix-git/doc/guix.texi:11805
20685 msgid "the updater for @uref{https://elpa.gnu.org/, ELPA} packages;"
20686 msgstr ""
20687
20688 #. type: table
20689 #: guix-git/doc/guix.texi:11807
20690 msgid "the updater for @uref{https://cran.r-project.org/, CRAN} packages;"
20691 msgstr ""
20692
20693 #. type: item
20694 #: guix-git/doc/guix.texi:11807
20695 #, no-wrap
20696 msgid "bioconductor"
20697 msgstr ""
20698
20699 #. type: table
20700 #: guix-git/doc/guix.texi:11809
20701 msgid "the updater for @uref{https://www.bioconductor.org/, Bioconductor} R packages;"
20702 msgstr ""
20703
20704 #. type: table
20705 #: guix-git/doc/guix.texi:11811
20706 msgid "the updater for @uref{https://www.cpan.org/, CPAN} packages;"
20707 msgstr ""
20708
20709 #. type: table
20710 #: guix-git/doc/guix.texi:11813
20711 msgid "the updater for @uref{https://pypi.python.org, PyPI} packages."
20712 msgstr ""
20713
20714 #. type: table
20715 #: guix-git/doc/guix.texi:11815
20716 msgid "the updater for @uref{https://rubygems.org, RubyGems} packages."
20717 msgstr ""
20718
20719 #. type: item
20720 #: guix-git/doc/guix.texi:11815
20721 #, no-wrap
20722 msgid "github"
20723 msgstr ""
20724
20725 #. type: table
20726 #: guix-git/doc/guix.texi:11817
20727 msgid "the updater for @uref{https://github.com, GitHub} packages."
20728 msgstr ""
20729
20730 #. type: table
20731 #: guix-git/doc/guix.texi:11819
20732 msgid "the updater for @uref{https://hackage.haskell.org, Hackage} packages."
20733 msgstr ""
20734
20735 #. type: table
20736 #: guix-git/doc/guix.texi:11821
20737 msgid "the updater for @uref{https://www.stackage.org, Stackage} packages."
20738 msgstr ""
20739
20740 #. type: table
20741 #: guix-git/doc/guix.texi:11823
20742 msgid "the updater for @uref{https://crates.io, Crates} packages."
20743 msgstr ""
20744
20745 #. type: item
20746 #: guix-git/doc/guix.texi:11823
20747 #, no-wrap
20748 msgid "launchpad"
20749 msgstr ""
20750
20751 #. type: table
20752 #: guix-git/doc/guix.texi:11825
20753 msgid "the updater for @uref{https://launchpad.net, Launchpad} packages."
20754 msgstr ""
20755
20756 #. type: item
20757 #: guix-git/doc/guix.texi:11825
20758 #, no-wrap
20759 msgid "generic-html"
20760 msgstr ""
20761
20762 #. type: table
20763 #: guix-git/doc/guix.texi:11828
20764 msgid "a generic updater that crawls the HTML page where the source tarball of the package is hosted, when applicable."
20765 msgstr ""
20766
20767 #. type: table
20768 #: guix-git/doc/guix.texi:11832
20769 msgid "For instance, the following command only checks for updates of Emacs packages hosted at @code{elpa.gnu.org} and for updates of CRAN packages:"
20770 msgstr ""
20771
20772 #. type: example
20773 #: guix-git/doc/guix.texi:11837
20774 #, no-wrap
20775 msgid ""
20776 "$ guix refresh --type=elpa,cran\n"
20777 "gnu/packages/statistics.scm:819:13: r-testthat would be upgraded from 0.10.0 to 0.11.0\n"
20778 "gnu/packages/emacs.scm:856:13: emacs-auctex would be upgraded from 11.88.6 to 11.88.9\n"
20779 msgstr ""
20780
20781 #. type: item
20782 #: guix-git/doc/guix.texi:11839
20783 #, no-wrap
20784 msgid "--list-updaters"
20785 msgstr ""
20786
20787 #. type: itemx
20788 #: guix-git/doc/guix.texi:11840
20789 #, no-wrap
20790 msgid "-L"
20791 msgstr ""
20792
20793 #. type: table
20794 #: guix-git/doc/guix.texi:11842
20795 msgid "List available updaters and exit (see @option{--type} above)."
20796 msgstr ""
20797
20798 #. type: table
20799 #: guix-git/doc/guix.texi:11845
20800 msgid "For each updater, display the fraction of packages it covers; at the end, display the fraction of packages covered by all these updaters."
20801 msgstr ""
20802
20803 #. type: Plain text
20804 #: guix-git/doc/guix.texi:11849
20805 msgid "In addition, @command{guix refresh} can be passed one or more package names, as in this example:"
20806 msgstr ""
20807
20808 #. type: example
20809 #: guix-git/doc/guix.texi:11852
20810 #, no-wrap
20811 msgid "$ ./pre-inst-env guix refresh -u emacs idutils gcc@@4.8\n"
20812 msgstr ""
20813
20814 #. type: Plain text
20815 #: guix-git/doc/guix.texi:11859
20816 msgid "The command above specifically updates the @code{emacs} and @code{idutils} packages. The @option{--select} option would have no effect in this case. You might also want to update definitions that correspond to the packages installed in your profile:"
20817 msgstr ""
20818
20819 #. type: example
20820 #: guix-git/doc/guix.texi:11863
20821 #, no-wrap
20822 msgid ""
20823 "$ ./pre-inst-env guix refresh -u \\\n"
20824 " $(guix package --list-installed | cut -f1)\n"
20825 msgstr ""
20826
20827 #. type: Plain text
20828 #: guix-git/doc/guix.texi:11869
20829 msgid "When considering whether to upgrade a package, it is sometimes convenient to know which packages would be affected by the upgrade and should be checked for compatibility. For this the following option may be used when passing @command{guix refresh} one or more package names:"
20830 msgstr ""
20831
20832 #. type: item
20833 #: guix-git/doc/guix.texi:11872
20834 #, no-wrap
20835 msgid "--list-dependent"
20836 msgstr ""
20837
20838 #. type: itemx
20839 #: guix-git/doc/guix.texi:11873 guix-git/doc/guix.texi:12132
20840 #, no-wrap
20841 msgid "-l"
20842 msgstr ""
20843
20844 #. type: table
20845 #: guix-git/doc/guix.texi:11876
20846 msgid "List top-level dependent packages that would need to be rebuilt as a result of upgrading one or more packages."
20847 msgstr ""
20848
20849 #. type: table
20850 #: guix-git/doc/guix.texi:11880
20851 msgid "@xref{Invoking guix graph, the @code{reverse-package} type of @command{guix graph}}, for information on how to visualize the list of dependents of a package."
20852 msgstr ""
20853
20854 #. type: Plain text
20855 #: guix-git/doc/guix.texi:11886
20856 msgid "Be aware that the @option{--list-dependent} option only @emph{approximates} the rebuilds that would be required as a result of an upgrade. More rebuilds might be required under some circumstances."
20857 msgstr ""
20858
20859 #. type: example
20860 #: guix-git/doc/guix.texi:11891
20861 #, no-wrap
20862 msgid ""
20863 "$ guix refresh --list-dependent flex\n"
20864 "Building the following 120 packages would ensure 213 dependent packages are rebuilt:\n"
20865 "hop@@2.4.0 geiser@@0.4 notmuch@@0.18 mu@@0.9.9.5 cflow@@1.4 idutils@@4.6 @dots{}\n"
20866 msgstr ""
20867
20868 #. type: Plain text
20869 #: guix-git/doc/guix.texi:11895
20870 msgid "The command above lists a set of packages that could be built to check for compatibility with an upgraded @code{flex} package."
20871 msgstr ""
20872
20873 #. type: item
20874 #: guix-git/doc/guix.texi:11898
20875 #, no-wrap
20876 msgid "--list-transitive"
20877 msgstr ""
20878
20879 #. type: table
20880 #: guix-git/doc/guix.texi:11900
20881 msgid "List all the packages which one or more packages depend upon."
20882 msgstr ""
20883
20884 #. type: example
20885 #: guix-git/doc/guix.texi:11905
20886 #, no-wrap
20887 msgid ""
20888 "$ guix refresh --list-transitive flex\n"
20889 "flex@@2.6.4 depends on the following 25 packages: perl@@5.28.0 help2man@@1.47.6\n"
20890 "bison@@3.0.5 indent@@2.2.10 tar@@1.30 gzip@@1.9 bzip2@@1.0.6 xz@@5.2.4 file@@5.33 @dots{}\n"
20891 msgstr ""
20892
20893 #. type: Plain text
20894 #: guix-git/doc/guix.texi:11911
20895 msgid "The command above lists a set of packages which, when changed, would cause @code{flex} to be rebuilt."
20896 msgstr ""
20897
20898 #. type: Plain text
20899 #: guix-git/doc/guix.texi:11913
20900 msgid "The following options can be used to customize GnuPG operation:"
20901 msgstr ""
20902
20903 #. type: item
20904 #: guix-git/doc/guix.texi:11916
20905 #, no-wrap
20906 msgid "--gpg=@var{command}"
20907 msgstr ""
20908
20909 #. type: table
20910 #: guix-git/doc/guix.texi:11919
20911 msgid "Use @var{command} as the GnuPG 2.x command. @var{command} is searched for in @code{$PATH}."
20912 msgstr ""
20913
20914 #. type: item
20915 #: guix-git/doc/guix.texi:11920
20916 #, no-wrap
20917 msgid "--keyring=@var{file}"
20918 msgstr ""
20919
20920 #. type: table
20921 #: guix-git/doc/guix.texi:11926
20922 msgid "Use @var{file} as the keyring for upstream keys. @var{file} must be in the @dfn{keybox format}. Keybox files usually have a name ending in @file{.kbx} and the GNU@tie{}Privacy Guard (GPG) can manipulate these files (@pxref{kbxutil, @command{kbxutil},, gnupg, Using the GNU Privacy Guard}, for information on a tool to manipulate keybox files)."
20923 msgstr ""
20924
20925 #. type: table
20926 #: guix-git/doc/guix.texi:11932
20927 msgid "When this option is omitted, @command{guix refresh} uses @file{~/.config/guix/upstream/trustedkeys.kbx} as the keyring for upstream signing keys. OpenPGP signatures are checked against keys from this keyring; missing keys are downloaded to this keyring as well (see @option{--key-download} below)."
20928 msgstr ""
20929
20930 #. type: table
20931 #: guix-git/doc/guix.texi:11935
20932 msgid "You can export keys from your default GPG keyring into a keybox file using commands like this one:"
20933 msgstr ""
20934
20935 #. type: example
20936 #: guix-git/doc/guix.texi:11938
20937 #, no-wrap
20938 msgid "gpg --export rms@@gnu.org | kbxutil --import-openpgp >> mykeyring.kbx\n"
20939 msgstr ""
20940
20941 #. type: table
20942 #: guix-git/doc/guix.texi:11941
20943 msgid "Likewise, you can fetch keys to a specific keybox file like this:"
20944 msgstr ""
20945
20946 #. type: example
20947 #: guix-git/doc/guix.texi:11945
20948 #, no-wrap
20949 msgid ""
20950 "gpg --no-default-keyring --keyring mykeyring.kbx \\\n"
20951 " --recv-keys @value{OPENPGP-SIGNING-KEY-ID}\n"
20952 msgstr ""
20953
20954 #. type: table
20955 #: guix-git/doc/guix.texi:11949
20956 msgid "@xref{GPG Configuration Options, @option{--keyring},, gnupg, Using the GNU Privacy Guard}, for more information on GPG's @option{--keyring} option."
20957 msgstr ""
20958
20959 #. type: table
20960 #: guix-git/doc/guix.texi:11953
20961 msgid "Handle missing OpenPGP keys according to @var{policy}, which may be one of:"
20962 msgstr ""
20963
20964 #. type: item
20965 #: guix-git/doc/guix.texi:11955 guix-git/doc/guix.texi:20822
20966 #, no-wrap
20967 msgid "always"
20968 msgstr ""
20969
20970 #. type: table
20971 #: guix-git/doc/guix.texi:11958
20972 msgid "Always download missing OpenPGP keys from the key server, and add them to the user's GnuPG keyring."
20973 msgstr ""
20974
20975 #. type: item
20976 #: guix-git/doc/guix.texi:11959 guix-git/doc/guix.texi:20824
20977 #, no-wrap
20978 msgid "never"
20979 msgstr ""
20980
20981 #. type: table
20982 #: guix-git/doc/guix.texi:11961
20983 msgid "Never try to download missing OpenPGP keys. Instead just bail out."
20984 msgstr ""
20985
20986 #. type: item
20987 #: guix-git/doc/guix.texi:11962
20988 #, no-wrap
20989 msgid "interactive"
20990 msgstr ""
20991
20992 #. type: table
20993 #: guix-git/doc/guix.texi:11965
20994 msgid "When a package signed with an unknown OpenPGP key is encountered, ask the user whether to download it or not. This is the default behavior."
20995 msgstr ""
20996
20997 #. type: item
20998 #: guix-git/doc/guix.texi:11967
20999 #, no-wrap
21000 msgid "--key-server=@var{host}"
21001 msgstr ""
21002
21003 #. type: table
21004 #: guix-git/doc/guix.texi:11969
21005 msgid "Use @var{host} as the OpenPGP key server when importing a public key."
21006 msgstr ""
21007
21008 #. type: Plain text
21009 #: guix-git/doc/guix.texi:11989
21010 msgid "The @code{github} updater uses the @uref{https://developer.github.com/v3/, GitHub API} to query for new releases. When used repeatedly e.g.@: when refreshing all packages, GitHub will eventually refuse to answer any further API requests. By default 60 API requests per hour are allowed, and a full refresh on all GitHub packages in Guix requires more than this. Authentication with GitHub through the use of an API token alleviates these limits. To use an API token, set the environment variable @env{GUIX_GITHUB_TOKEN} to a token procured from @uref{https://github.com/settings/tokens} or otherwise."
21011 msgstr ""
21012
21013 #. type: section
21014 #: guix-git/doc/guix.texi:11992
21015 #, no-wrap
21016 msgid "Invoking @command{guix lint}"
21017 msgstr ""
21018
21019 #. type: command{#1}
21020 #: guix-git/doc/guix.texi:11994
21021 #, no-wrap
21022 msgid "guix lint"
21023 msgstr ""
21024
21025 #. type: cindex
21026 #: guix-git/doc/guix.texi:11995
21027 #, no-wrap
21028 msgid "package, checking for errors"
21029 msgstr ""
21030
21031 #. type: Plain text
21032 #: guix-git/doc/guix.texi:12001
21033 msgid "The @command{guix lint} command is meant to help package developers avoid common errors and use a consistent style. It runs a number of checks on a given set of packages in order to find common mistakes in their definitions. Available @dfn{checkers} include (see @option{--list-checkers} for a complete list):"
21034 msgstr ""
21035
21036 #. type: table
21037 #: guix-git/doc/guix.texi:12007
21038 msgid "Validate certain typographical and stylistic rules about package descriptions and synopses."
21039 msgstr ""
21040
21041 #. type: item
21042 #: guix-git/doc/guix.texi:12008
21043 #, no-wrap
21044 msgid "inputs-should-be-native"
21045 msgstr ""
21046
21047 #. type: table
21048 #: guix-git/doc/guix.texi:12010
21049 msgid "Identify inputs that should most likely be native inputs."
21050 msgstr ""
21051
21052 #. type: itemx
21053 #: guix-git/doc/guix.texi:12013
21054 #, no-wrap
21055 msgid "mirror-url"
21056 msgstr ""
21057
21058 #. type: itemx
21059 #: guix-git/doc/guix.texi:12014
21060 #, no-wrap
21061 msgid "github-url"
21062 msgstr ""
21063
21064 #. type: itemx
21065 #: guix-git/doc/guix.texi:12015
21066 #, no-wrap
21067 msgid "source-file-name"
21068 msgstr ""
21069
21070 #. type: table
21071 #: guix-git/doc/guix.texi:12022
21072 msgid "Probe @code{home-page} and @code{source} URLs and report those that are invalid. Suggest a @code{mirror://} URL when applicable. If the @code{source} URL redirects to a GitHub URL, recommend usage of the GitHub URL@. Check that the source file name is meaningful, e.g.@: is not just a version number or ``git-checkout'', without a declared @code{file-name} (@pxref{origin Reference})."
21073 msgstr ""
21074
21075 #. type: item
21076 #: guix-git/doc/guix.texi:12023
21077 #, no-wrap
21078 msgid "source-unstable-tarball"
21079 msgstr ""
21080
21081 #. type: table
21082 #: guix-git/doc/guix.texi:12027
21083 msgid "Parse the @code{source} URL to determine if a tarball from GitHub is autogenerated or if it is a release tarball. Unfortunately GitHub's autogenerated tarballs are sometimes regenerated."
21084 msgstr ""
21085
21086 #. type: table
21087 #: guix-git/doc/guix.texi:12031
21088 msgid "Check that the derivation of the given packages can be successfully computed for all the supported systems (@pxref{Derivations})."
21089 msgstr ""
21090
21091 #. type: item
21092 #: guix-git/doc/guix.texi:12032
21093 #, no-wrap
21094 msgid "profile-collisions"
21095 msgstr ""
21096
21097 #. type: table
21098 #: guix-git/doc/guix.texi:12038
21099 msgid "Check whether installing the given packages in a profile would lead to collisions. Collisions occur when several packages with the same name but a different version or a different store file name are propagated. @xref{package Reference, @code{propagated-inputs}}, for more information on propagated inputs."
21100 msgstr ""
21101
21102 #. type: item
21103 #: guix-git/doc/guix.texi:12039
21104 #, no-wrap
21105 msgid "archival"
21106 msgstr ""
21107
21108 #. type: cindex
21109 #: guix-git/doc/guix.texi:12040
21110 #, no-wrap
21111 msgid "Software Heritage, source code archive"
21112 msgstr ""
21113
21114 #. type: cindex
21115 #: guix-git/doc/guix.texi:12041
21116 #, no-wrap
21117 msgid "archival of source code, Software Heritage"
21118 msgstr ""
21119
21120 #. type: table
21121 #: guix-git/doc/guix.texi:12044
21122 msgid "Checks whether the package's source code is archived at @uref{https://www.softwareheritage.org, Software Heritage}."
21123 msgstr ""
21124
21125 #. type: table
21126 #: guix-git/doc/guix.texi:12052
21127 msgid "When the source code that is not archived comes from a version-control system (VCS)---e.g., it's obtained with @code{git-fetch}, send Software Heritage a ``save'' request so that it eventually archives it. This ensures that the source will remain available in the long term, and that Guix can fall back to Software Heritage should the source code disappear from its original host. The status of recent ``save'' requests can be @uref{https://archive.softwareheritage.org/save/#requests, viewed on-line}."
21128 msgstr ""
21129
21130 #. type: table
21131 #: guix-git/doc/guix.texi:12057
21132 msgid "When source code is a tarball obtained with @code{url-fetch}, simply print a message when it is not archived. As of this writing, Software Heritage does not allow requests to save arbitrary tarballs; we are working on ways to ensure that non-VCS source code is also archived."
21133 msgstr ""
21134
21135 #. type: table
21136 #: guix-git/doc/guix.texi:12063
21137 msgid "Software Heritage @uref{https://archive.softwareheritage.org/api/#rate-limiting, limits the request rate per IP address}. When the limit is reached, @command{guix lint} prints a message and the @code{archival} checker stops doing anything until that limit has been reset."
21138 msgstr ""
21139
21140 #. type: item
21141 #: guix-git/doc/guix.texi:12064
21142 #, no-wrap
21143 msgid "cve"
21144 msgstr ""
21145
21146 #. type: cindex
21147 #: guix-git/doc/guix.texi:12065 guix-git/doc/guix.texi:34598
21148 #, no-wrap
21149 msgid "security vulnerabilities"
21150 msgstr ""
21151
21152 #. type: cindex
21153 #: guix-git/doc/guix.texi:12066
21154 #, no-wrap
21155 msgid "CVE, Common Vulnerabilities and Exposures"
21156 msgstr ""
21157
21158 #. type: table
21159 #: guix-git/doc/guix.texi:12071
21160 msgid "Report known vulnerabilities found in the Common Vulnerabilities and Exposures (CVE) databases of the current and past year @uref{https://nvd.nist.gov/vuln/data-feeds, published by the US NIST}."
21161 msgstr ""
21162
21163 #. type: table
21164 #: guix-git/doc/guix.texi:12073
21165 msgid "To view information about a particular vulnerability, visit pages such as:"
21166 msgstr ""
21167
21168 #. type: indicateurl{#1}
21169 #: guix-git/doc/guix.texi:12077
21170 msgid "https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-YYYY-ABCD"
21171 msgstr ""
21172
21173 #. type: indicateurl{#1}
21174 #: guix-git/doc/guix.texi:12079
21175 msgid "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-YYYY-ABCD"
21176 msgstr ""
21177
21178 #. type: table
21179 #: guix-git/doc/guix.texi:12084
21180 msgid "where @code{CVE-YYYY-ABCD} is the CVE identifier---e.g., @code{CVE-2015-7554}."
21181 msgstr ""
21182
21183 #. type: table
21184 #: guix-git/doc/guix.texi:12089
21185 msgid "Package developers can specify in package recipes the @uref{https://nvd.nist.gov/products/cpe,Common Platform Enumeration (CPE)} name and version of the package when they differ from the name or version that Guix uses, as in this example:"
21186 msgstr ""
21187
21188 #. type: lisp
21189 #: guix-git/doc/guix.texi:12097
21190 #, no-wrap
21191 msgid ""
21192 "(package\n"
21193 " (name \"grub\")\n"
21194 " ;; @dots{}\n"
21195 " ;; CPE calls this package \"grub2\".\n"
21196 " (properties '((cpe-name . \"grub2\")\n"
21197 " (cpe-version . \"2.3\"))))\n"
21198 msgstr ""
21199
21200 #. type: table
21201 #: guix-git/doc/guix.texi:12104
21202 msgid "Some entries in the CVE database do not specify which version of a package they apply to, and would thus ``stick around'' forever. Package developers who found CVE alerts and verified they can be ignored can declare them as in this example:"
21203 msgstr ""
21204
21205 #. type: lisp
21206 #: guix-git/doc/guix.texi:12114
21207 #, no-wrap
21208 msgid ""
21209 "(package\n"
21210 " (name \"t1lib\")\n"
21211 " ;; @dots{}\n"
21212 " ;; These CVEs no longer apply and can be safely ignored.\n"
21213 " (properties `((lint-hidden-cve . (\"CVE-2011-0433\"\n"
21214 " \"CVE-2011-1553\"\n"
21215 " \"CVE-2011-1554\"\n"
21216 " \"CVE-2011-5244\")))))\n"
21217 msgstr ""
21218
21219 #. type: item
21220 #: guix-git/doc/guix.texi:12116
21221 #, no-wrap
21222 msgid "formatting"
21223 msgstr ""
21224
21225 #. type: table
21226 #: guix-git/doc/guix.texi:12119
21227 msgid "Warn about obvious source code formatting issues: trailing white space, use of tabulations, etc."
21228 msgstr ""
21229
21230 #. type: example
21231 #: guix-git/doc/guix.texi:12125
21232 #, no-wrap
21233 msgid "guix lint @var{options} @var{package}@dots{}\n"
21234 msgstr ""
21235
21236 #. type: Plain text
21237 #: guix-git/doc/guix.texi:12129
21238 msgid "If no package is given on the command line, then all packages are checked. The @var{options} may be zero or more of the following:"
21239 msgstr ""
21240
21241 #. type: item
21242 #: guix-git/doc/guix.texi:12131
21243 #, no-wrap
21244 msgid "--list-checkers"
21245 msgstr ""
21246
21247 #. type: table
21248 #: guix-git/doc/guix.texi:12135
21249 msgid "List and describe all the available checkers that will be run on packages and exit."
21250 msgstr ""
21251
21252 #. type: item
21253 #: guix-git/doc/guix.texi:12136
21254 #, no-wrap
21255 msgid "--checkers"
21256 msgstr ""
21257
21258 #. type: itemx
21259 #: guix-git/doc/guix.texi:12137
21260 #, no-wrap
21261 msgid "-c"
21262 msgstr ""
21263
21264 #. type: table
21265 #: guix-git/doc/guix.texi:12140
21266 msgid "Only enable the checkers specified in a comma-separated list using the names returned by @option{--list-checkers}."
21267 msgstr ""
21268
21269 #. type: item
21270 #: guix-git/doc/guix.texi:12141
21271 #, no-wrap
21272 msgid "--exclude"
21273 msgstr ""
21274
21275 #. type: table
21276 #: guix-git/doc/guix.texi:12145
21277 msgid "Only disable the checkers specified in a comma-separated list using the names returned by @option{--list-checkers}."
21278 msgstr ""
21279
21280 #. type: item
21281 #: guix-git/doc/guix.texi:12146
21282 #, no-wrap
21283 msgid "--no-network"
21284 msgstr ""
21285
21286 #. type: table
21287 #: guix-git/doc/guix.texi:12149
21288 msgid "Only enable the checkers that do not depend on Internet access."
21289 msgstr ""
21290
21291 #. type: section
21292 #: guix-git/doc/guix.texi:12161
21293 #, no-wrap
21294 msgid "Invoking @command{guix size}"
21295 msgstr ""
21296
21297 #. type: code{#1}
21298 #: guix-git/doc/guix.texi:12163 guix-git/doc/guix.texi:33534
21299 #, no-wrap
21300 msgid "size"
21301 msgstr ""
21302
21303 #. type: cindex
21304 #: guix-git/doc/guix.texi:12164
21305 #, no-wrap
21306 msgid "package size"
21307 msgstr ""
21308
21309 #. type: command{#1}
21310 #: guix-git/doc/guix.texi:12166
21311 #, no-wrap
21312 msgid "guix size"
21313 msgstr ""
21314
21315 #. type: Plain text
21316 #: guix-git/doc/guix.texi:12173
21317 msgid "The @command{guix size} command helps package developers profile the disk usage of packages. It is easy to overlook the impact of an additional dependency added to a package, or the impact of using a single output for a package that could easily be split (@pxref{Packages with Multiple Outputs}). Such are the typical issues that @command{guix size} can highlight."
21318 msgstr ""
21319
21320 #. type: Plain text
21321 #: guix-git/doc/guix.texi:12178
21322 msgid "The command can be passed one or more package specifications such as @code{gcc@@4.8} or @code{guile:debug}, or a file name in the store. Consider this example:"
21323 msgstr ""
21324
21325 #. type: example
21326 #: guix-git/doc/guix.texi:12191
21327 #, no-wrap
21328 msgid ""
21329 "$ guix size coreutils\n"
21330 "store item total self\n"
21331 "/gnu/store/@dots{}-gcc-5.5.0-lib 60.4 30.1 38.1%\n"
21332 "/gnu/store/@dots{}-glibc-2.27 30.3 28.8 36.6%\n"
21333 "/gnu/store/@dots{}-coreutils-8.28 78.9 15.0 19.0%\n"
21334 "/gnu/store/@dots{}-gmp-6.1.2 63.1 2.7 3.4%\n"
21335 "/gnu/store/@dots{}-bash-static-4.4.12 1.5 1.5 1.9%\n"
21336 "/gnu/store/@dots{}-acl-2.2.52 61.1 0.4 0.5%\n"
21337 "/gnu/store/@dots{}-attr-2.4.47 60.6 0.2 0.3%\n"
21338 "/gnu/store/@dots{}-libcap-2.25 60.5 0.2 0.2%\n"
21339 "total: 78.9 MiB\n"
21340 msgstr ""
21341
21342 #. type: Plain text
21343 #: guix-git/doc/guix.texi:12197
21344 msgid "The store items listed here constitute the @dfn{transitive closure} of Coreutils---i.e., Coreutils and all its dependencies, recursively---as would be returned by:"
21345 msgstr ""
21346
21347 #. type: example
21348 #: guix-git/doc/guix.texi:12200
21349 #, no-wrap
21350 msgid "$ guix gc -R /gnu/store/@dots{}-coreutils-8.23\n"
21351 msgstr ""
21352
21353 #. type: Plain text
21354 #: guix-git/doc/guix.texi:12208
21355 msgid "Here the output shows three columns next to store items. The first column, labeled ``total'', shows the size in mebibytes (MiB) of the closure of the store item---that is, its own size plus the size of all its dependencies. The next column, labeled ``self'', shows the size of the item itself. The last column shows the ratio of the size of the item itself to the space occupied by all the items listed here."
21356 msgstr ""
21357
21358 #. type: Plain text
21359 #: guix-git/doc/guix.texi:12214
21360 msgid "In this example, we see that the closure of Coreutils weighs in at 79@tie{}MiB, most of which is taken by libc and GCC's run-time support libraries. (That libc and GCC's libraries represent a large fraction of the closure is not a problem @i{per se} because they are always available on the system anyway.)"
21361 msgstr ""
21362
21363 #. type: Plain text
21364 #: guix-git/doc/guix.texi:12217
21365 msgid "Since the command also accepts store file names, assessing the size of a build result is straightforward:"
21366 msgstr ""
21367
21368 #. type: example
21369 #: guix-git/doc/guix.texi:12220
21370 #, no-wrap
21371 msgid "guix size $(guix system build config.scm)\n"
21372 msgstr ""
21373
21374 #. type: Plain text
21375 #: guix-git/doc/guix.texi:12230
21376 msgid "When the package(s) passed to @command{guix size} are available in the store@footnote{More precisely, @command{guix size} looks for the @emph{ungrafted} variant of the given package(s), as returned by @code{guix build @var{package} --no-grafts}. @xref{Security Updates}, for information on grafts.}, @command{guix size} queries the daemon to determine its dependencies, and measures its size in the store, similar to @command{du -ms --apparent-size} (@pxref{du invocation,,, coreutils, GNU Coreutils})."
21377 msgstr ""
21378
21379 #. type: Plain text
21380 #: guix-git/doc/guix.texi:12235
21381 msgid "When the given packages are @emph{not} in the store, @command{guix size} reports information based on the available substitutes (@pxref{Substitutes}). This makes it possible it to profile disk usage of store items that are not even on disk, only available remotely."
21382 msgstr ""
21383
21384 #. type: Plain text
21385 #: guix-git/doc/guix.texi:12237
21386 msgid "You can also specify several package names:"
21387 msgstr ""
21388
21389 #. type: example
21390 #: guix-git/doc/guix.texi:12247
21391 #, no-wrap
21392 msgid ""
21393 "$ guix size coreutils grep sed bash\n"
21394 "store item total self\n"
21395 "/gnu/store/@dots{}-coreutils-8.24 77.8 13.8 13.4%\n"
21396 "/gnu/store/@dots{}-grep-2.22 73.1 0.8 0.8%\n"
21397 "/gnu/store/@dots{}-bash-4.3.42 72.3 4.7 4.6%\n"
21398 "/gnu/store/@dots{}-readline-6.3 67.6 1.2 1.2%\n"
21399 "@dots{}\n"
21400 "total: 102.3 MiB\n"
21401 msgstr ""
21402
21403 #. type: Plain text
21404 #: guix-git/doc/guix.texi:12253
21405 msgid "In this example we see that the combination of the four packages takes 102.3@tie{}MiB in total, which is much less than the sum of each closure since they have a lot of dependencies in common."
21406 msgstr ""
21407
21408 #. type: Plain text
21409 #: guix-git/doc/guix.texi:12259
21410 msgid "When looking at the profile returned by @command{guix size}, you may find yourself wondering why a given package shows up in the profile at all. To understand it, you can use @command{guix graph --path -t references} to display the shortest path between the two packages (@pxref{Invoking guix graph})."
21411 msgstr ""
21412
21413 #. type: Plain text
21414 #: guix-git/doc/guix.texi:12261
21415 msgid "The available options are:"
21416 msgstr ""
21417
21418 #. type: table
21419 #: guix-git/doc/guix.texi:12267
21420 msgid "Use substitute information from @var{urls}. @xref{client-substitute-urls, the same option for @code{guix build}}."
21421 msgstr ""
21422
21423 #. type: item
21424 #: guix-git/doc/guix.texi:12268
21425 #, no-wrap
21426 msgid "--sort=@var{key}"
21427 msgstr ""
21428
21429 #. type: table
21430 #: guix-git/doc/guix.texi:12270
21431 msgid "Sort lines according to @var{key}, one of the following options:"
21432 msgstr ""
21433
21434 #. type: item
21435 #: guix-git/doc/guix.texi:12272
21436 #, no-wrap
21437 msgid "self"
21438 msgstr ""
21439
21440 #. type: table
21441 #: guix-git/doc/guix.texi:12274
21442 msgid "the size of each item (the default);"
21443 msgstr ""
21444
21445 #. type: table
21446 #: guix-git/doc/guix.texi:12276
21447 msgid "the total size of the item's closure."
21448 msgstr ""
21449
21450 #. type: item
21451 #: guix-git/doc/guix.texi:12278
21452 #, no-wrap
21453 msgid "--map-file=@var{file}"
21454 msgstr ""
21455
21456 #. type: table
21457 #: guix-git/doc/guix.texi:12280
21458 msgid "Write a graphical map of disk usage in PNG format to @var{file}."
21459 msgstr ""
21460
21461 #. type: table
21462 #: guix-git/doc/guix.texi:12282
21463 msgid "For the example above, the map looks like this:"
21464 msgstr ""
21465
21466 #. type: table
21467 #: guix-git/doc/guix.texi:12285
21468 msgid "@image{images/coreutils-size-map,5in,, map of Coreutils disk usage produced by @command{guix size}}"
21469 msgstr ""
21470
21471 #. type: table
21472 #: guix-git/doc/guix.texi:12290
21473 msgid "This option requires that @uref{https://wingolog.org/software/guile-charting/, Guile-Charting} be installed and visible in Guile's module search path. When that is not the case, @command{guix size} fails as it tries to load it."
21474 msgstr ""
21475
21476 #. type: table
21477 #: guix-git/doc/guix.texi:12294
21478 msgid "Consider packages for @var{system}---e.g., @code{x86_64-linux}."
21479 msgstr ""
21480
21481 #. type: section
21482 #: guix-git/doc/guix.texi:12305
21483 #, no-wrap
21484 msgid "Invoking @command{guix graph}"
21485 msgstr ""
21486
21487 #. type: cindex
21488 #: guix-git/doc/guix.texi:12307
21489 #, no-wrap
21490 msgid "DAG"
21491 msgstr ""
21492
21493 #. type: command{#1}
21494 #: guix-git/doc/guix.texi:12308
21495 #, no-wrap
21496 msgid "guix graph"
21497 msgstr ""
21498
21499 #. type: Plain text
21500 #: guix-git/doc/guix.texi:12323
21501 msgid "Packages and their dependencies form a @dfn{graph}, specifically a directed acyclic graph (DAG). It can quickly become difficult to have a mental model of the package DAG, so the @command{guix graph} command provides a visual representation of the DAG@. By default, @command{guix graph} emits a DAG representation in the input format of @uref{https://www.graphviz.org/, Graphviz}, so its output can be passed directly to the @command{dot} command of Graphviz. It can also emit an HTML page with embedded JavaScript code to display a ``chord diagram'' in a Web browser, using the @uref{https://d3js.org/, d3.js} library, or emit Cypher queries to construct a graph in a graph database supporting the @uref{https://www.opencypher.org/, openCypher} query language. With @option{--path}, it simply displays the shortest path between two packages. The general syntax is:"
21502 msgstr ""
21503
21504 #. type: example
21505 #: guix-git/doc/guix.texi:12326
21506 #, no-wrap
21507 msgid "guix graph @var{options} @var{package}@dots{}\n"
21508 msgstr ""
21509
21510 #. type: Plain text
21511 #: guix-git/doc/guix.texi:12331
21512 msgid "For example, the following command generates a PDF file representing the package DAG for the GNU@tie{}Core Utilities, showing its build-time dependencies:"
21513 msgstr ""
21514
21515 #. type: example
21516 #: guix-git/doc/guix.texi:12334
21517 #, no-wrap
21518 msgid "guix graph coreutils | dot -Tpdf > dag.pdf\n"
21519 msgstr ""
21520
21521 #. type: Plain text
21522 #: guix-git/doc/guix.texi:12337
21523 msgid "The output looks like this:"
21524 msgstr ""
21525
21526 #. type: Plain text
21527 #: guix-git/doc/guix.texi:12339
21528 msgid "@image{images/coreutils-graph,2in,,Dependency graph of the GNU Coreutils}"
21529 msgstr ""
21530
21531 #. type: Plain text
21532 #: guix-git/doc/guix.texi:12341
21533 msgid "Nice little graph, no?"
21534 msgstr ""
21535
21536 #. type: Plain text
21537 #: guix-git/doc/guix.texi:12344
21538 msgid "You may find it more pleasant to navigate the graph interactively with @command{xdot} (from the @code{xdot} package):"
21539 msgstr ""
21540
21541 #. type: example
21542 #: guix-git/doc/guix.texi:12347
21543 #, no-wrap
21544 msgid "guix graph coreutils | xdot -\n"
21545 msgstr ""
21546
21547 #. type: Plain text
21548 #: guix-git/doc/guix.texi:12354
21549 msgid "But there is more than one graph! The one above is concise: it is the graph of package objects, omitting implicit inputs such as GCC, libc, grep, etc. It is often useful to have such a concise graph, but sometimes one may want to see more details. @command{guix graph} supports several types of graphs, allowing you to choose the level of detail:"
21550 msgstr ""
21551
21552 #. type: table
21553 #: guix-git/doc/guix.texi:12360
21554 msgid "This is the default type used in the example above. It shows the DAG of package objects, excluding implicit dependencies. It is concise, but filters out many details."
21555 msgstr ""
21556
21557 #. type: item
21558 #: guix-git/doc/guix.texi:12361
21559 #, no-wrap
21560 msgid "reverse-package"
21561 msgstr ""
21562
21563 #. type: table
21564 #: guix-git/doc/guix.texi:12363
21565 msgid "This shows the @emph{reverse} DAG of packages. For example:"
21566 msgstr ""
21567
21568 #. type: example
21569 #: guix-git/doc/guix.texi:12366
21570 #, no-wrap
21571 msgid "guix graph --type=reverse-package ocaml\n"
21572 msgstr ""
21573
21574 #. type: table
21575 #: guix-git/doc/guix.texi:12371
21576 msgid "...@: yields the graph of packages that @emph{explicitly} depend on OCaml (if you are also interested in cases where OCaml is an implicit dependency, see @code{reverse-bag} below)."
21577 msgstr ""
21578
21579 #. type: table
21580 #: guix-git/doc/guix.texi:12376
21581 msgid "Note that for core packages this can yield huge graphs. If all you want is to know the number of packages that depend on a given package, use @command{guix refresh --list-dependent} (@pxref{Invoking guix refresh, @option{--list-dependent}})."
21582 msgstr ""
21583
21584 #. type: item
21585 #: guix-git/doc/guix.texi:12377
21586 #, no-wrap
21587 msgid "bag-emerged"
21588 msgstr ""
21589
21590 #. type: table
21591 #: guix-git/doc/guix.texi:12379
21592 msgid "This is the package DAG, @emph{including} implicit inputs."
21593 msgstr ""
21594
21595 #. type: table
21596 #: guix-git/doc/guix.texi:12381
21597 msgid "For instance, the following command:"
21598 msgstr ""
21599
21600 #. type: example
21601 #: guix-git/doc/guix.texi:12384
21602 #, no-wrap
21603 msgid "guix graph --type=bag-emerged coreutils\n"
21604 msgstr ""
21605
21606 #. type: table
21607 #: guix-git/doc/guix.texi:12387
21608 msgid "...@: yields this bigger graph:"
21609 msgstr ""
21610
21611 #. type: table
21612 #: guix-git/doc/guix.texi:12389
21613 msgid "@image{images/coreutils-bag-graph,,5in,Detailed dependency graph of the GNU Coreutils}"
21614 msgstr ""
21615
21616 #. type: table
21617 #: guix-git/doc/guix.texi:12392
21618 msgid "At the bottom of the graph, we see all the implicit inputs of @var{gnu-build-system} (@pxref{Build Systems, @code{gnu-build-system}})."
21619 msgstr ""
21620
21621 #. type: table
21622 #: guix-git/doc/guix.texi:12396
21623 msgid "Now, note that the dependencies of these implicit inputs---that is, the @dfn{bootstrap dependencies} (@pxref{Bootstrapping})---are not shown here, for conciseness."
21624 msgstr ""
21625
21626 #. type: item
21627 #: guix-git/doc/guix.texi:12397
21628 #, no-wrap
21629 msgid "bag"
21630 msgstr ""
21631
21632 #. type: table
21633 #: guix-git/doc/guix.texi:12400
21634 msgid "Similar to @code{bag-emerged}, but this time including all the bootstrap dependencies."
21635 msgstr ""
21636
21637 #. type: item
21638 #: guix-git/doc/guix.texi:12401
21639 #, no-wrap
21640 msgid "bag-with-origins"
21641 msgstr ""
21642
21643 #. type: table
21644 #: guix-git/doc/guix.texi:12403
21645 msgid "Similar to @code{bag}, but also showing origins and their dependencies."
21646 msgstr ""
21647
21648 #. type: item
21649 #: guix-git/doc/guix.texi:12404
21650 #, no-wrap
21651 msgid "reverse-bag"
21652 msgstr ""
21653
21654 #. type: table
21655 #: guix-git/doc/guix.texi:12407
21656 msgid "This shows the @emph{reverse} DAG of packages. Unlike @code{reverse-package}, it also takes implicit dependencies into account. For example:"
21657 msgstr ""
21658
21659 #. type: example
21660 #: guix-git/doc/guix.texi:12410
21661 #, no-wrap
21662 msgid "guix graph -t reverse-bag dune\n"
21663 msgstr ""
21664
21665 #. type: table
21666 #: guix-git/doc/guix.texi:12417
21667 msgid "...@: yields the graph of all packages that depend on Dune, directly or indirectly. Since Dune is an @emph{implicit} dependency of many packages @i{via} @code{dune-build-system}, this shows a large number of packages, whereas @code{reverse-package} would show very few if any."
21668 msgstr ""
21669
21670 #. type: table
21671 #: guix-git/doc/guix.texi:12423
21672 msgid "This is the most detailed representation: It shows the DAG of derivations (@pxref{Derivations}) and plain store items. Compared to the above representation, many additional nodes are visible, including build scripts, patches, Guile modules, etc."
21673 msgstr ""
21674
21675 #. type: table
21676 #: guix-git/doc/guix.texi:12426
21677 msgid "For this type of graph, it is also possible to pass a @file{.drv} file name instead of a package name, as in:"
21678 msgstr ""
21679
21680 #. type: example
21681 #: guix-git/doc/guix.texi:12429
21682 #, no-wrap
21683 msgid "guix graph -t derivation $(guix system build -d my-config.scm)\n"
21684 msgstr ""
21685
21686 #. type: item
21687 #: guix-git/doc/guix.texi:12431
21688 #, no-wrap
21689 msgid "module"
21690 msgstr ""
21691
21692 #. type: table
21693 #: guix-git/doc/guix.texi:12435
21694 msgid "This is the graph of @dfn{package modules} (@pxref{Package Modules}). For example, the following command shows the graph for the package module that defines the @code{guile} package:"
21695 msgstr ""
21696
21697 #. type: example
21698 #: guix-git/doc/guix.texi:12438
21699 #, no-wrap
21700 msgid "guix graph -t module guile | xdot -\n"
21701 msgstr ""
21702
21703 #. type: Plain text
21704 #: guix-git/doc/guix.texi:12443
21705 msgid "All the types above correspond to @emph{build-time dependencies}. The following graph type represents the @emph{run-time dependencies}:"
21706 msgstr ""
21707
21708 #. type: table
21709 #: guix-git/doc/guix.texi:12448
21710 msgid "This is the graph of @dfn{references} of a package output, as returned by @command{guix gc --references} (@pxref{Invoking guix gc})."
21711 msgstr ""
21712
21713 #. type: table
21714 #: guix-git/doc/guix.texi:12451
21715 msgid "If the given package output is not available in the store, @command{guix graph} attempts to obtain dependency information from substitutes."
21716 msgstr ""
21717
21718 #. type: table
21719 #: guix-git/doc/guix.texi:12455
21720 msgid "Here you can also pass a store file name instead of a package name. For example, the command below produces the reference graph of your profile (which can be big!):"
21721 msgstr ""
21722
21723 #. type: example
21724 #: guix-git/doc/guix.texi:12458
21725 #, no-wrap
21726 msgid "guix graph -t references $(readlink -f ~/.guix-profile)\n"
21727 msgstr ""
21728
21729 #. type: item
21730 #: guix-git/doc/guix.texi:12460
21731 #, no-wrap
21732 msgid "referrers"
21733 msgstr ""
21734
21735 #. type: table
21736 #: guix-git/doc/guix.texi:12463
21737 msgid "This is the graph of the @dfn{referrers} of a store item, as returned by @command{guix gc --referrers} (@pxref{Invoking guix gc})."
21738 msgstr ""
21739
21740 #. type: table
21741 #: guix-git/doc/guix.texi:12469
21742 msgid "This relies exclusively on local information from your store. For instance, let us suppose that the current Inkscape is available in 10 profiles on your machine; @command{guix graph -t referrers inkscape} will show a graph rooted at Inkscape and with those 10 profiles linked to it."
21743 msgstr ""
21744
21745 #. type: table
21746 #: guix-git/doc/guix.texi:12472
21747 msgid "It can help determine what is preventing a store item from being garbage collected."
21748 msgstr ""
21749
21750 #. type: cindex
21751 #: guix-git/doc/guix.texi:12475
21752 #, no-wrap
21753 msgid "shortest path, between packages"
21754 msgstr ""
21755
21756 #. type: Plain text
21757 #: guix-git/doc/guix.texi:12482
21758 msgid "Often, the graph of the package you are interested in does not fit on your screen, and anyway all you want to know is @emph{why} that package actually depends on some seemingly unrelated package. The @option{--path} option instructs @command{guix graph} to display the shortest path between two packages (or derivations, or store items, etc.):"
21759 msgstr ""
21760
21761 #. type: example
21762 #: guix-git/doc/guix.texi:12496
21763 #, no-wrap
21764 msgid ""
21765 "$ guix graph --path emacs libunistring\n"
21766 "emacs@@26.3\n"
21767 "mailutils@@3.9\n"
21768 "libunistring@@0.9.10\n"
21769 "$ guix graph --path -t derivation emacs libunistring\n"
21770 "/gnu/store/@dots{}-emacs-26.3.drv\n"
21771 "/gnu/store/@dots{}-mailutils-3.9.drv\n"
21772 "/gnu/store/@dots{}-libunistring-0.9.10.drv\n"
21773 "$ guix graph --path -t references emacs libunistring\n"
21774 "/gnu/store/@dots{}-emacs-26.3\n"
21775 "/gnu/store/@dots{}-libidn2-2.2.0\n"
21776 "/gnu/store/@dots{}-libunistring-0.9.10\n"
21777 msgstr ""
21778
21779 #. type: Plain text
21780 #: guix-git/doc/guix.texi:12499
21781 msgid "The available options are the following:"
21782 msgstr ""
21783
21784 #. type: table
21785 #: guix-git/doc/guix.texi:12505
21786 msgid "Produce a graph output of @var{type}, where @var{type} must be one of the values listed above."
21787 msgstr ""
21788
21789 #. type: item
21790 #: guix-git/doc/guix.texi:12506
21791 #, no-wrap
21792 msgid "--list-types"
21793 msgstr ""
21794
21795 #. type: table
21796 #: guix-git/doc/guix.texi:12508
21797 msgid "List the supported graph types."
21798 msgstr ""
21799
21800 #. type: item
21801 #: guix-git/doc/guix.texi:12509
21802 #, no-wrap
21803 msgid "--backend=@var{backend}"
21804 msgstr ""
21805
21806 #. type: itemx
21807 #: guix-git/doc/guix.texi:12510
21808 #, no-wrap
21809 msgid "-b @var{backend}"
21810 msgstr ""
21811
21812 #. type: table
21813 #: guix-git/doc/guix.texi:12512
21814 msgid "Produce a graph using the selected @var{backend}."
21815 msgstr ""
21816
21817 #. type: item
21818 #: guix-git/doc/guix.texi:12513
21819 #, no-wrap
21820 msgid "--list-backends"
21821 msgstr ""
21822
21823 #. type: table
21824 #: guix-git/doc/guix.texi:12515
21825 msgid "List the supported graph backends."
21826 msgstr ""
21827
21828 #. type: table
21829 #: guix-git/doc/guix.texi:12517
21830 msgid "Currently, the available backends are Graphviz and d3.js."
21831 msgstr ""
21832
21833 #. type: item
21834 #: guix-git/doc/guix.texi:12518
21835 #, no-wrap
21836 msgid "--path"
21837 msgstr ""
21838
21839 #. type: table
21840 #: guix-git/doc/guix.texi:12523
21841 msgid "Display the shortest path between two nodes of the type specified by @option{--type}. The example below shows the shortest path between @code{libreoffice} and @code{llvm} according to the references of @code{libreoffice}:"
21842 msgstr ""
21843
21844 #. type: example
21845 #: guix-git/doc/guix.texi:12530
21846 #, no-wrap
21847 msgid ""
21848 "$ guix graph --path -t references libreoffice llvm\n"
21849 "/gnu/store/@dots{}-libreoffice-6.4.2.2\n"
21850 "/gnu/store/@dots{}-libepoxy-1.5.4\n"
21851 "/gnu/store/@dots{}-mesa-19.3.4\n"
21852 "/gnu/store/@dots{}-llvm-9.0.1\n"
21853 msgstr ""
21854
21855 #. type: example
21856 #: guix-git/doc/guix.texi:12540
21857 #, no-wrap
21858 msgid "guix graph -e '(@@@@ (gnu packages commencement) gnu-make-final)'\n"
21859 msgstr ""
21860
21861 #. type: table
21862 #: guix-git/doc/guix.texi:12545
21863 msgid "Display the graph for @var{system}---e.g., @code{i686-linux}."
21864 msgstr ""
21865
21866 #. type: table
21867 #: guix-git/doc/guix.texi:12548
21868 msgid "The package dependency graph is largely architecture-independent, but there are some architecture-dependent bits that this option allows you to visualize."
21869 msgstr ""
21870
21871 #. type: Plain text
21872 #: guix-git/doc/guix.texi:12564
21873 msgid "On top of that, @command{guix graph} supports all the usual package transformation options (@pxref{Package Transformation Options}). This makes it easy to view the effect of a graph-rewriting transformation such as @option{--with-input}. For example, the command below outputs the graph of @code{git} once @code{openssl} has been replaced by @code{libressl} everywhere in the graph:"
21874 msgstr ""
21875
21876 #. type: example
21877 #: guix-git/doc/guix.texi:12567
21878 #, no-wrap
21879 msgid "guix graph git --with-input=openssl=libressl\n"
21880 msgstr ""
21881
21882 #. type: Plain text
21883 #: guix-git/doc/guix.texi:12570
21884 msgid "So many possibilities, so much fun!"
21885 msgstr ""
21886
21887 #. type: section
21888 #: guix-git/doc/guix.texi:12572
21889 #, no-wrap
21890 msgid "Invoking @command{guix publish}"
21891 msgstr ""
21892
21893 #. type: command{#1}
21894 #: guix-git/doc/guix.texi:12574
21895 #, no-wrap
21896 msgid "guix publish"
21897 msgstr ""
21898
21899 #. type: Plain text
21900 #: guix-git/doc/guix.texi:12578
21901 msgid "The purpose of @command{guix publish} is to enable users to easily share their store with others, who can then use it as a substitute server (@pxref{Substitutes})."
21902 msgstr ""
21903
21904 #. type: Plain text
21905 #: guix-git/doc/guix.texi:12584
21906 msgid "When @command{guix publish} runs, it spawns an HTTP server which allows anyone with network access to obtain substitutes from it. This means that any machine running Guix can also act as if it were a build farm, since the HTTP interface is compatible with Cuirass, the software behind the @code{@value{SUBSTITUTE-SERVER}} build farm."
21907 msgstr ""
21908
21909 #. type: Plain text
21910 #: guix-git/doc/guix.texi:12590
21911 msgid "For security, each substitute is signed, allowing recipients to check their authenticity and integrity (@pxref{Substitutes}). Because @command{guix publish} uses the signing key of the system, which is only readable by the system administrator, it must be started as root; the @option{--user} option makes it drop root privileges early on."
21912 msgstr ""
21913
21914 #. type: Plain text
21915 #: guix-git/doc/guix.texi:12594
21916 msgid "The signing key pair must be generated before @command{guix publish} is launched, using @command{guix archive --generate-key} (@pxref{Invoking guix archive})."
21917 msgstr ""
21918
21919 #. type: Plain text
21920 #: guix-git/doc/guix.texi:12599
21921 msgid "When the @option{--advertise} option is passed, the server advertises its availability on the local network using multicast DNS (mDNS) and DNS service discovery (DNS-SD), currently @i{via} Guile-Avahi (@pxref{Top,,, guile-avahi, Using Avahi in Guile Scheme Programs})."
21922 msgstr ""
21923
21924 #. type: example
21925 #: guix-git/doc/guix.texi:12604
21926 #, no-wrap
21927 msgid "guix publish @var{options}@dots{}\n"
21928 msgstr ""
21929
21930 #. type: Plain text
21931 #: guix-git/doc/guix.texi:12608
21932 msgid "Running @command{guix publish} without any additional arguments will spawn an HTTP server on port 8080:"
21933 msgstr ""
21934
21935 #. type: example
21936 #: guix-git/doc/guix.texi:12611
21937 #, no-wrap
21938 msgid "guix publish\n"
21939 msgstr ""
21940
21941 #. type: Plain text
21942 #: guix-git/doc/guix.texi:12615
21943 msgid "Once a publishing server has been authorized, the daemon may download substitutes from it. @xref{Getting Substitutes from Other Servers}."
21944 msgstr ""
21945
21946 #. type: Plain text
21947 #: guix-git/doc/guix.texi:12623
21948 msgid "By default, @command{guix publish} compresses archives on the fly as it serves them. This ``on-the-fly'' mode is convenient in that it requires no setup and is immediately available. However, when serving lots of clients, we recommend using the @option{--cache} option, which enables caching of the archives before they are sent to clients---see below for details. The @command{guix weather} command provides a handy way to check what a server provides (@pxref{Invoking guix weather})."
21949 msgstr ""
21950
21951 #. type: Plain text
21952 #: guix-git/doc/guix.texi:12630
21953 msgid "As a bonus, @command{guix publish} also serves as a content-addressed mirror for source files referenced in @code{origin} records (@pxref{origin Reference}). For instance, assuming @command{guix publish} is running on @code{example.org}, the following URL returns the raw @file{hello-2.10.tar.gz} file with the given SHA256 hash (represented in @code{nix-base32} format, @pxref{Invoking guix hash}):"
21954 msgstr ""
21955
21956 #. type: example
21957 #: guix-git/doc/guix.texi:12633
21958 #, no-wrap
21959 msgid "http://example.org/file/hello-2.10.tar.gz/sha256/0ssi1@dots{}ndq1i\n"
21960 msgstr ""
21961
21962 #. type: Plain text
21963 #: guix-git/doc/guix.texi:12637
21964 msgid "Obviously, these URLs only work for files that are in the store; in other cases, they return 404 (``Not Found'')."
21965 msgstr ""
21966
21967 #. type: cindex
21968 #: guix-git/doc/guix.texi:12638
21969 #, no-wrap
21970 msgid "build logs, publication"
21971 msgstr ""
21972
21973 #. type: Plain text
21974 #: guix-git/doc/guix.texi:12640
21975 msgid "Build logs are available from @code{/log} URLs like:"
21976 msgstr ""
21977
21978 #. type: example
21979 #: guix-git/doc/guix.texi:12643
21980 #, no-wrap
21981 msgid "http://example.org/log/gwspk@dots{}-guile-2.2.3\n"
21982 msgstr ""
21983
21984 #. type: Plain text
21985 #: guix-git/doc/guix.texi:12653
21986 msgid "When @command{guix-daemon} is configured to save compressed build logs, as is the case by default (@pxref{Invoking guix-daemon}), @code{/log} URLs return the compressed log as-is, with an appropriate @code{Content-Type} and/or @code{Content-Encoding} header. We recommend running @command{guix-daemon} with @option{--log-compression=gzip} since Web browsers can automatically decompress it, which is not the case with Bzip2 compression."
21987 msgstr ""
21988
21989 #. type: item
21990 #: guix-git/doc/guix.texi:12657
21991 #, no-wrap
21992 msgid "--port=@var{port}"
21993 msgstr ""
21994
21995 #. type: itemx
21996 #: guix-git/doc/guix.texi:12658
21997 #, no-wrap
21998 msgid "-p @var{port}"
21999 msgstr ""
22000
22001 #. type: table
22002 #: guix-git/doc/guix.texi:12660
22003 msgid "Listen for HTTP requests on @var{port}."
22004 msgstr ""
22005
22006 #. type: item
22007 #: guix-git/doc/guix.texi:12661
22008 #, no-wrap
22009 msgid "--listen=@var{host}"
22010 msgstr ""
22011
22012 #. type: table
22013 #: guix-git/doc/guix.texi:12664
22014 msgid "Listen on the network interface for @var{host}. The default is to accept connections from any interface."
22015 msgstr ""
22016
22017 #. type: table
22018 #: guix-git/doc/guix.texi:12669
22019 msgid "Change privileges to @var{user} as soon as possible---i.e., once the server socket is open and the signing key has been read."
22020 msgstr ""
22021
22022 #. type: item
22023 #: guix-git/doc/guix.texi:12670
22024 #, no-wrap
22025 msgid "--compression[=@var{method}[:@var{level}]]"
22026 msgstr ""
22027
22028 #. type: itemx
22029 #: guix-git/doc/guix.texi:12671
22030 #, no-wrap
22031 msgid "-C [@var{method}[:@var{level}]]"
22032 msgstr ""
22033
22034 #. type: table
22035 #: guix-git/doc/guix.texi:12675
22036 msgid "Compress data using the given @var{method} and @var{level}. @var{method} is one of @code{lzip}, @code{zstd}, and @code{gzip}; when @var{method} is omitted, @code{gzip} is used."
22037 msgstr ""
22038
22039 #. type: table
22040 #: guix-git/doc/guix.texi:12679
22041 msgid "When @var{level} is zero, disable compression. The range 1 to 9 corresponds to different compression levels: 1 is the fastest, and 9 is the best (CPU-intensive). The default is 3."
22042 msgstr ""
22043
22044 #. type: table
22045 #: guix-git/doc/guix.texi:12686
22046 msgid "Usually, @code{lzip} compresses noticeably better than @code{gzip} for a small increase in CPU usage; see @uref{https://nongnu.org/lzip/lzip_benchmark.html,benchmarks on the lzip Web page}. However, @code{lzip} achieves low decompression throughput (on the order of 50@tie{}MiB/s on modern hardware), which can be a bottleneck for someone who downloads over a fast network connection."
22047 msgstr ""
22048
22049 #. type: table
22050 #: guix-git/doc/guix.texi:12690
22051 msgid "The compression ratio of @code{zstd} is between that of @code{lzip} and that of @code{gzip}; its main advantage is a @uref{https://facebook.github.io/zstd/,high decompression speed}."
22052 msgstr ""
22053
22054 #. type: table
22055 #: guix-git/doc/guix.texi:12699
22056 msgid "Unless @option{--cache} is used, compression occurs on the fly and the compressed streams are not cached. Thus, to reduce load on the machine that runs @command{guix publish}, it may be a good idea to choose a low compression level, to run @command{guix publish} behind a caching proxy, or to use @option{--cache}. Using @option{--cache} has the advantage that it allows @command{guix publish} to add @code{Content-Length} HTTP header to its responses."
22057 msgstr ""
22058
22059 #. type: table
22060 #: guix-git/doc/guix.texi:12704
22061 msgid "This option can be repeated, in which case every substitute gets compressed using all the selected methods, and all of them are advertised. This is useful when users may not support all the compression methods: they can select the one they support."
22062 msgstr ""
22063
22064 #. type: item
22065 #: guix-git/doc/guix.texi:12705
22066 #, no-wrap
22067 msgid "--cache=@var{directory}"
22068 msgstr ""
22069
22070 #. type: itemx
22071 #: guix-git/doc/guix.texi:12706
22072 #, no-wrap
22073 msgid "-c @var{directory}"
22074 msgstr ""
22075
22076 #. type: table
22077 #: guix-git/doc/guix.texi:12709
22078 msgid "Cache archives and meta-data (@code{.narinfo} URLs) to @var{directory} and only serve archives that are in cache."
22079 msgstr ""
22080
22081 #. type: table
22082 #: guix-git/doc/guix.texi:12717
22083 msgid "When this option is omitted, archives and meta-data are created on-the-fly. This can reduce the available bandwidth, especially when compression is enabled, since this may become CPU-bound. Another drawback of the default mode is that the length of archives is not known in advance, so @command{guix publish} does not add a @code{Content-Length} HTTP header to its responses, which in turn prevents clients from knowing the amount of data being downloaded."
22084 msgstr ""
22085
22086 #. type: table
22087 #: guix-git/doc/guix.texi:12725
22088 msgid "Conversely, when @option{--cache} is used, the first request for a store item (@i{via} a @code{.narinfo} URL) triggers a background process to @dfn{bake} the archive---computing its @code{.narinfo} and compressing the archive, if needed. Once the archive is cached in @var{directory}, subsequent requests succeed and are served directly from the cache, which guarantees that clients get the best possible bandwidth."
22089 msgstr ""
22090
22091 #. type: table
22092 #: guix-git/doc/guix.texi:12732
22093 msgid "That first @code{.narinfo} request nonetheless returns 200, provided the requested store item is ``small enough'', below the cache bypass threshold---see @option{--cache-bypass-threshold} below. That way, clients do not have to wait until the archive is baked. For larger store items, the first @code{.narinfo} request returns 404, meaning that clients have to wait until the archive is baked."
22094 msgstr ""
22095
22096 #. type: table
22097 #: guix-git/doc/guix.texi:12736
22098 msgid "The ``baking'' process is performed by worker threads. By default, one thread per CPU core is created, but this can be customized. See @option{--workers} below."
22099 msgstr ""
22100
22101 #. type: table
22102 #: guix-git/doc/guix.texi:12739
22103 msgid "When @option{--ttl} is used, cached entries are automatically deleted when they have expired."
22104 msgstr ""
22105
22106 #. type: item
22107 #: guix-git/doc/guix.texi:12740
22108 #, no-wrap
22109 msgid "--workers=@var{N}"
22110 msgstr ""
22111
22112 #. type: table
22113 #: guix-git/doc/guix.texi:12743
22114 msgid "When @option{--cache} is used, request the allocation of @var{N} worker threads to ``bake'' archives."
22115 msgstr ""
22116
22117 #. type: item
22118 #: guix-git/doc/guix.texi:12744
22119 #, no-wrap
22120 msgid "--ttl=@var{ttl}"
22121 msgstr ""
22122
22123 #. type: table
22124 #: guix-git/doc/guix.texi:12748
22125 msgid "Produce @code{Cache-Control} HTTP headers that advertise a time-to-live (TTL) of @var{ttl}. @var{ttl} must denote a duration: @code{5d} means 5 days, @code{1m} means 1 month, and so on."
22126 msgstr ""
22127
22128 #. type: table
22129 #: guix-git/doc/guix.texi:12753
22130 msgid "This allows the user's Guix to keep substitute information in cache for @var{ttl}. However, note that @code{guix publish} does not itself guarantee that the store items it provides will indeed remain available for as long as @var{ttl}."
22131 msgstr ""
22132
22133 #. type: table
22134 #: guix-git/doc/guix.texi:12757
22135 msgid "Additionally, when @option{--cache} is used, cached entries that have not been accessed for @var{ttl} and that no longer have a corresponding item in the store, may be deleted."
22136 msgstr ""
22137
22138 #. type: item
22139 #: guix-git/doc/guix.texi:12758
22140 #, no-wrap
22141 msgid "--cache-bypass-threshold=@var{size}"
22142 msgstr ""
22143
22144 #. type: table
22145 #: guix-git/doc/guix.texi:12763
22146 msgid "When used in conjunction with @option{--cache}, store items smaller than @var{size} are immediately available, even when they are not yet in cache. @var{size} is a size in bytes, or it can be suffixed by @code{M} for megabytes and so on. The default is @code{10M}."
22147 msgstr ""
22148
22149 #. type: table
22150 #: guix-git/doc/guix.texi:12768
22151 msgid "``Cache bypass'' allows you to reduce the publication delay for clients at the expense of possibly additional I/O and CPU use on the server side: depending on the client access patterns, those store items can end up being baked several times until a copy is available in cache."
22152 msgstr ""
22153
22154 #. type: table
22155 #: guix-git/doc/guix.texi:12772
22156 msgid "Increasing the threshold may be useful for sites that have few users, or to guarantee that users get substitutes even for store items that are not popular."
22157 msgstr ""
22158
22159 #. type: item
22160 #: guix-git/doc/guix.texi:12773
22161 #, no-wrap
22162 msgid "--nar-path=@var{path}"
22163 msgstr ""
22164
22165 #. type: table
22166 #: guix-git/doc/guix.texi:12776
22167 msgid "Use @var{path} as the prefix for the URLs of ``nar'' files (@pxref{Invoking guix archive, normalized archives})."
22168 msgstr ""
22169
22170 #. type: table
22171 #: guix-git/doc/guix.texi:12780
22172 msgid "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}."
22173 msgstr ""
22174
22175 #. type: item
22176 #: guix-git/doc/guix.texi:12781
22177 #, no-wrap
22178 msgid "--public-key=@var{file}"
22179 msgstr ""
22180
22181 #. type: itemx
22182 #: guix-git/doc/guix.texi:12782
22183 #, no-wrap
22184 msgid "--private-key=@var{file}"
22185 msgstr ""
22186
22187 #. type: table
22188 #: guix-git/doc/guix.texi:12785 guix-git/doc/guix.texi:27412
22189 #: guix-git/doc/guix.texi:27446
22190 msgid "Use the specific @var{file}s as the public/private key pair used to sign the store items being published."
22191 msgstr ""
22192
22193 #. type: table
22194 #: guix-git/doc/guix.texi:12792
22195 msgid "The files must correspond to the same key pair (the private key is used for signing and the public key is merely advertised in the signature metadata). They must contain keys in the canonical s-expression format as produced by @command{guix archive --generate-key} (@pxref{Invoking guix archive}). By default, @file{/etc/guix/signing-key.pub} and @file{/etc/guix/signing-key.sec} are used."
22196 msgstr ""
22197
22198 #. type: item
22199 #: guix-git/doc/guix.texi:12793
22200 #, no-wrap
22201 msgid "--repl[=@var{port}]"
22202 msgstr ""
22203
22204 #. type: itemx
22205 #: guix-git/doc/guix.texi:12794
22206 #, no-wrap
22207 msgid "-r [@var{port}]"
22208 msgstr ""
22209
22210 #. type: table
22211 #: guix-git/doc/guix.texi:12798
22212 msgid "Spawn a Guile REPL server (@pxref{REPL Servers,,, guile, GNU Guile Reference Manual}) on @var{port} (37146 by default). This is used primarily for debugging a running @command{guix publish} server."
22213 msgstr ""
22214
22215 #. type: Plain text
22216 #: guix-git/doc/guix.texi:12804
22217 msgid "Enabling @command{guix publish} on Guix System is a one-liner: just instantiate a @code{guix-publish-service-type} service in the @code{services} field of the @code{operating-system} declaration (@pxref{guix-publish-service-type, @code{guix-publish-service-type}})."
22218 msgstr ""
22219
22220 #. type: Plain text
22221 #: guix-git/doc/guix.texi:12807
22222 msgid "If you are instead running Guix on a ``foreign distro'', follow these instructions:"
22223 msgstr ""
22224
22225 #. type: itemize
22226 #: guix-git/doc/guix.texi:12811
22227 msgid "If your host distro uses the systemd init system:"
22228 msgstr ""
22229
22230 #. type: example
22231 #: guix-git/doc/guix.texi:12816
22232 #, no-wrap
22233 msgid ""
22234 "# ln -s ~root/.guix-profile/lib/systemd/system/guix-publish.service \\\n"
22235 " /etc/systemd/system/\n"
22236 "# systemctl start guix-publish && systemctl enable guix-publish\n"
22237 msgstr ""
22238
22239 #. type: example
22240 #: guix-git/doc/guix.texi:12824
22241 #, no-wrap
22242 msgid ""
22243 "# ln -s ~root/.guix-profile/lib/upstart/system/guix-publish.conf /etc/init/\n"
22244 "# start guix-publish\n"
22245 msgstr ""
22246
22247 #. type: itemize
22248 #: guix-git/doc/guix.texi:12828
22249 msgid "Otherwise, proceed similarly with your distro's init system."
22250 msgstr ""
22251
22252 #. type: section
22253 #: guix-git/doc/guix.texi:12831
22254 #, no-wrap
22255 msgid "Invoking @command{guix challenge}"
22256 msgstr ""
22257
22258 #. type: cindex
22259 #: guix-git/doc/guix.texi:12834
22260 #, no-wrap
22261 msgid "verifiable builds"
22262 msgstr ""
22263
22264 #. type: command{#1}
22265 #: guix-git/doc/guix.texi:12835
22266 #, no-wrap
22267 msgid "guix challenge"
22268 msgstr ""
22269
22270 #. type: cindex
22271 #: guix-git/doc/guix.texi:12836
22272 #, no-wrap
22273 msgid "challenge"
22274 msgstr ""
22275
22276 #. type: Plain text
22277 #: guix-git/doc/guix.texi:12841
22278 msgid "Do the binaries provided by this server really correspond to the source code it claims to build? Is a package build process deterministic? These are the questions the @command{guix challenge} command attempts to answer."
22279 msgstr ""
22280
22281 #. type: Plain text
22282 #: guix-git/doc/guix.texi:12849
22283 msgid "The former is obviously an important question: Before using a substitute server (@pxref{Substitutes}), one had better @emph{verify} that it provides the right binaries, and thus @emph{challenge} it. The latter is what enables the former: If package builds are deterministic, then independent builds of the package should yield the exact same result, bit for bit; if a server provides a binary different from the one obtained locally, it may be either corrupt or malicious."
22284 msgstr ""
22285
22286 #. type: Plain text
22287 #: guix-git/doc/guix.texi:12858
22288 msgid "We know that the hash that shows up in @file{/gnu/store} file names is the hash of all the inputs of the process that built the file or directory---compilers, libraries, build scripts, etc. (@pxref{Introduction}). Assuming deterministic build processes, one store file name should map to exactly one build output. @command{guix challenge} checks whether there is, indeed, a single mapping by comparing the build outputs of several independent builds of any given store item."
22289 msgstr ""
22290
22291 #. type: Plain text
22292 #: guix-git/doc/guix.texi:12860
22293 msgid "The command output looks like this:"
22294 msgstr ""
22295
22296 #. type: smallexample
22297 #: guix-git/doc/guix.texi:12872
22298 #, no-wrap
22299 msgid ""
22300 "$ guix challenge --substitute-urls=\"https://@value{SUBSTITUTE-SERVER} https://guix.example.org\"\n"
22301 "updating list of substitutes from 'https://@value{SUBSTITUTE-SERVER}'... 100.0%\n"
22302 "updating list of substitutes from 'https://guix.example.org'... 100.0%\n"
22303 "/gnu/store/@dots{}-openssl-1.0.2d contents differ:\n"
22304 " local hash: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q\n"
22305 " https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-openssl-1.0.2d: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q\n"
22306 " https://guix.example.org/nar/@dots{}-openssl-1.0.2d: 1zy4fmaaqcnjrzzajkdn3f5gmjk754b43qkq47llbyak9z0qjyim\n"
22307 " differing files:\n"
22308 " /lib/libcrypto.so.1.1\n"
22309 " /lib/libssl.so.1.1\n"
22310 "\n"
22311 msgstr ""
22312
22313 #. type: smallexample
22314 #: guix-git/doc/guix.texi:12879
22315 #, no-wrap
22316 msgid ""
22317 "/gnu/store/@dots{}-git-2.5.0 contents differ:\n"
22318 " local hash: 00p3bmryhjxrhpn2gxs2fy0a15lnip05l97205pgbk5ra395hyha\n"
22319 " https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-git-2.5.0: 069nb85bv4d4a6slrwjdy8v1cn4cwspm3kdbmyb81d6zckj3nq9f\n"
22320 " https://guix.example.org/nar/@dots{}-git-2.5.0: 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73\n"
22321 " differing file:\n"
22322 " /libexec/git-core/git-fsck\n"
22323 "\n"
22324 msgstr ""
22325
22326 #. type: smallexample
22327 #: guix-git/doc/guix.texi:12886
22328 #, no-wrap
22329 msgid ""
22330 "/gnu/store/@dots{}-pius-2.1.1 contents differ:\n"
22331 " local hash: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax\n"
22332 " https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-pius-2.1.1: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax\n"
22333 " https://guix.example.org/nar/@dots{}-pius-2.1.1: 1cy25x1a4fzq5rk0pmvc8xhwyffnqz95h2bpvqsz2mpvlbccy0gs\n"
22334 " differing file:\n"
22335 " /share/man/man1/pius.1.gz\n"
22336 "\n"
22337 msgstr ""
22338
22339 #. type: smallexample
22340 #: guix-git/doc/guix.texi:12888
22341 #, no-wrap
22342 msgid ""
22343 "@dots{}\n"
22344 "\n"
22345 msgstr ""
22346
22347 #. type: smallexample
22348 #: guix-git/doc/guix.texi:12893
22349 #, no-wrap
22350 msgid ""
22351 "6,406 store items were analyzed:\n"
22352 " - 4,749 (74.1%) were identical\n"
22353 " - 525 (8.2%) differed\n"
22354 " - 1,132 (17.7%) were inconclusive\n"
22355 msgstr ""
22356
22357 #. type: Plain text
22358 #: guix-git/doc/guix.texi:12901
22359 msgid "In this example, @command{guix challenge} first scans the store to determine the set of locally-built derivations---as opposed to store items that were downloaded from a substitute server---and then queries all the substitute servers. It then reports those store items for which the servers obtained a result different from the local build."
22360 msgstr ""
22361
22362 #. type: cindex
22363 #: guix-git/doc/guix.texi:12902
22364 #, no-wrap
22365 msgid "non-determinism, in package builds"
22366 msgstr ""
22367
22368 #. type: Plain text
22369 #: guix-git/doc/guix.texi:12913
22370 msgid "As an example, @code{guix.example.org} always gets a different answer. Conversely, @code{@value{SUBSTITUTE-SERVER}} agrees with local builds, except in the case of Git. This might indicate that the build process of Git is non-deterministic, meaning that its output varies as a function of various things that Guix does not fully control, in spite of building packages in isolated environments (@pxref{Features}). Most common sources of non-determinism include the addition of timestamps in build results, the inclusion of random numbers, and directory listings sorted by inode number. See @uref{https://reproducible-builds.org/docs/}, for more information."
22371 msgstr ""
22372
22373 #. type: Plain text
22374 #: guix-git/doc/guix.texi:12916
22375 msgid "To find out what is wrong with this Git binary, the easiest approach is to run:"
22376 msgstr ""
22377
22378 #. type: example
22379 #: guix-git/doc/guix.texi:12921
22380 #, no-wrap
22381 msgid ""
22382 "guix challenge git \\\n"
22383 " --diff=diffoscope \\\n"
22384 " --substitute-urls=\"https://@value{SUBSTITUTE-SERVER} https://guix.example.org\"\n"
22385 msgstr ""
22386
22387 #. type: Plain text
22388 #: guix-git/doc/guix.texi:12925
22389 msgid "This automatically invokes @command{diffoscope}, which displays detailed information about files that differ."
22390 msgstr ""
22391
22392 #. type: Plain text
22393 #: guix-git/doc/guix.texi:12928
22394 msgid "Alternatively, we can do something along these lines (@pxref{Invoking guix archive}):"
22395 msgstr ""
22396
22397 #. type: example
22398 #: guix-git/doc/guix.texi:12933
22399 #, no-wrap
22400 msgid ""
22401 "$ wget -q -O - https://@value{SUBSTITUTE-SERVER}/nar/lzip/@dots{}-git-2.5.0 \\\n"
22402 " | lzip -d | guix archive -x /tmp/git\n"
22403 "$ diff -ur --no-dereference /gnu/store/@dots{}-git.2.5.0 /tmp/git\n"
22404 msgstr ""
22405
22406 #. type: Plain text
22407 #: guix-git/doc/guix.texi:12942
22408 msgid "This command shows the difference between the files resulting from the local build, and the files resulting from the build on @code{@value{SUBSTITUTE-SERVER}} (@pxref{Overview, Comparing and Merging Files,, diffutils, Comparing and Merging Files}). The @command{diff} command works great for text files. When binary files differ, a better option is @uref{https://diffoscope.org/, Diffoscope}, a tool that helps visualize differences for all kinds of files."
22409 msgstr ""
22410
22411 #. type: Plain text
22412 #: guix-git/doc/guix.texi:12950
22413 msgid "Once you have done that work, you can tell whether the differences are due to a non-deterministic build process or to a malicious server. We try hard to remove sources of non-determinism in packages to make it easier to verify substitutes, but of course, this is a process that involves not just Guix, but a large part of the free software community. In the meantime, @command{guix challenge} is one tool to help address the problem."
22414 msgstr ""
22415
22416 #. type: Plain text
22417 #: guix-git/doc/guix.texi:12954
22418 msgid "If you are writing packages for Guix, you are encouraged to check whether @code{@value{SUBSTITUTE-SERVER}} and other substitute servers obtain the same build result as you did with:"
22419 msgstr ""
22420
22421 #. type: example
22422 #: guix-git/doc/guix.texi:12957
22423 #, no-wrap
22424 msgid "$ guix challenge @var{package}\n"
22425 msgstr ""
22426
22427 #. type: Plain text
22428 #: guix-git/doc/guix.texi:12962
22429 msgid "where @var{package} is a package specification such as @code{guile@@2.0} or @code{glibc:debug}."
22430 msgstr ""
22431
22432 #. type: example
22433 #: guix-git/doc/guix.texi:12967
22434 #, no-wrap
22435 msgid "guix challenge @var{options} [@var{packages}@dots{}]\n"
22436 msgstr ""
22437
22438 #. type: Plain text
22439 #: guix-git/doc/guix.texi:12974
22440 msgid "When a difference is found between the hash of a locally-built item and that of a server-provided substitute, or among substitutes provided by different servers, the command displays it as in the example above and its exit code is 2 (other non-zero exit codes denote other kinds of errors)."
22441 msgstr ""
22442
22443 #. type: Plain text
22444 #: guix-git/doc/guix.texi:12976
22445 msgid "The one option that matters is:"
22446 msgstr ""
22447
22448 #. type: table
22449 #: guix-git/doc/guix.texi:12982
22450 msgid "Consider @var{urls} the whitespace-separated list of substitute source URLs to compare to."
22451 msgstr ""
22452
22453 #. type: item
22454 #: guix-git/doc/guix.texi:12983
22455 #, no-wrap
22456 msgid "--diff=@var{mode}"
22457 msgstr ""
22458
22459 #. type: table
22460 #: guix-git/doc/guix.texi:12985
22461 msgid "Upon mismatches, show differences according to @var{mode}, one of:"
22462 msgstr ""
22463
22464 #. type: item
22465 #: guix-git/doc/guix.texi:12987
22466 #, no-wrap
22467 msgid "@code{simple} (the default)"
22468 msgstr ""
22469
22470 #. type: table
22471 #: guix-git/doc/guix.texi:12989
22472 msgid "Show the list of files that differ."
22473 msgstr ""
22474
22475 #. type: code{#1}
22476 #: guix-git/doc/guix.texi:12990
22477 #, no-wrap
22478 msgid "diffoscope"
22479 msgstr ""
22480
22481 #. type: var{#1}
22482 #: guix-git/doc/guix.texi:12991
22483 #, no-wrap
22484 msgid "command"
22485 msgstr ""
22486
22487 #. type: table
22488 #: guix-git/doc/guix.texi:12994
22489 msgid "Invoke @uref{https://diffoscope.org/, Diffoscope}, passing it two directories whose contents do not match."
22490 msgstr ""
22491
22492 #. type: table
22493 #: guix-git/doc/guix.texi:12997
22494 msgid "When @var{command} is an absolute file name, run @var{command} instead of Diffoscope."
22495 msgstr ""
22496
22497 #. type: item
22498 #: guix-git/doc/guix.texi:12998 guix-git/doc/guix.texi:16310
22499 #: guix-git/doc/guix.texi:18299
22500 #, no-wrap
22501 msgid "none"
22502 msgstr ""
22503
22504 #. type: table
22505 #: guix-git/doc/guix.texi:13000
22506 msgid "Do not show further details about the differences."
22507 msgstr ""
22508
22509 #. type: table
22510 #: guix-git/doc/guix.texi:13005
22511 msgid "Thus, unless @option{--diff=none} is passed, @command{guix challenge} downloads the store items from the given substitute servers so that it can compare them."
22512 msgstr ""
22513
22514 #. type: item
22515 #: guix-git/doc/guix.texi:13006
22516 #, no-wrap
22517 msgid "--verbose"
22518 msgstr ""
22519
22520 #. type: itemx
22521 #: guix-git/doc/guix.texi:13007
22522 #, no-wrap
22523 msgid "-v"
22524 msgstr ""
22525
22526 #. type: table
22527 #: guix-git/doc/guix.texi:13010
22528 msgid "Show details about matches (identical contents) in addition to information about mismatches."
22529 msgstr ""
22530
22531 #. type: section
22532 #: guix-git/doc/guix.texi:13014
22533 #, no-wrap
22534 msgid "Invoking @command{guix copy}"
22535 msgstr ""
22536
22537 #. type: cindex
22538 #: guix-git/doc/guix.texi:13016
22539 #, no-wrap
22540 msgid "copy, of store items, over SSH"
22541 msgstr ""
22542
22543 #. type: cindex
22544 #: guix-git/doc/guix.texi:13017
22545 #, no-wrap
22546 msgid "SSH, copy of store items"
22547 msgstr ""
22548
22549 #. type: cindex
22550 #: guix-git/doc/guix.texi:13018
22551 #, no-wrap
22552 msgid "sharing store items across machines"
22553 msgstr ""
22554
22555 #. type: cindex
22556 #: guix-git/doc/guix.texi:13019
22557 #, no-wrap
22558 msgid "transferring store items across machines"
22559 msgstr ""
22560
22561 #. type: Plain text
22562 #: guix-git/doc/guix.texi:13026
22563 msgid "The @command{guix copy} command copies items from the store of one machine to that of another machine over a secure shell (SSH) connection@footnote{This command is available only when Guile-SSH was found. @xref{Requirements}, for details.}. For example, the following command copies the @code{coreutils} package, the user's profile, and all their dependencies over to @var{host}, logged in as @var{user}:"
22564 msgstr ""
22565
22566 #. type: example
22567 #: guix-git/doc/guix.texi:13030
22568 #, no-wrap
22569 msgid ""
22570 "guix copy --to=@var{user}@@@var{host} \\\n"
22571 " coreutils $(readlink -f ~/.guix-profile)\n"
22572 msgstr ""
22573
22574 #. type: Plain text
22575 #: guix-git/doc/guix.texi:13034
22576 msgid "If some of the items to be copied are already present on @var{host}, they are not actually sent."
22577 msgstr ""
22578
22579 #. type: Plain text
22580 #: guix-git/doc/guix.texi:13037
22581 msgid "The command below retrieves @code{libreoffice} and @code{gimp} from @var{host}, assuming they are available there:"
22582 msgstr ""
22583
22584 #. type: example
22585 #: guix-git/doc/guix.texi:13040
22586 #, no-wrap
22587 msgid "guix copy --from=@var{host} libreoffice gimp\n"
22588 msgstr ""
22589
22590 #. type: Plain text
22591 #: guix-git/doc/guix.texi:13045
22592 msgid "The SSH connection is established using the Guile-SSH client, which is compatible with OpenSSH: it honors @file{~/.ssh/known_hosts} and @file{~/.ssh/config}, and uses the SSH agent for authentication."
22593 msgstr ""
22594
22595 #. type: Plain text
22596 #: guix-git/doc/guix.texi:13051
22597 msgid "The key used to sign items that are sent must be accepted by the remote machine. Likewise, the key used by the remote machine to sign items you are retrieving must be in @file{/etc/guix/acl} so it is accepted by your own daemon. @xref{Invoking guix archive}, for more information about store item authentication."
22598 msgstr ""
22599
22600 #. type: example
22601 #: guix-git/doc/guix.texi:13056
22602 #, no-wrap
22603 msgid "guix copy [--to=@var{spec}|--from=@var{spec}] @var{items}@dots{}\n"
22604 msgstr ""
22605
22606 #. type: Plain text
22607 #: guix-git/doc/guix.texi:13059
22608 msgid "You must always specify one of the following options:"
22609 msgstr ""
22610
22611 #. type: item
22612 #: guix-git/doc/guix.texi:13061
22613 #, no-wrap
22614 msgid "--to=@var{spec}"
22615 msgstr ""
22616
22617 #. type: itemx
22618 #: guix-git/doc/guix.texi:13062
22619 #, no-wrap
22620 msgid "--from=@var{spec}"
22621 msgstr ""
22622
22623 #. type: table
22624 #: guix-git/doc/guix.texi:13066
22625 msgid "Specify the host to send to or receive from. @var{spec} must be an SSH spec such as @code{example.org}, @code{charlie@@example.org}, or @code{charlie@@example.org:2222}."
22626 msgstr ""
22627
22628 #. type: Plain text
22629 #: guix-git/doc/guix.texi:13070
22630 msgid "The @var{items} can be either package names, such as @code{gimp}, or store items, such as @file{/gnu/store/@dots{}-idutils-4.6}."
22631 msgstr ""
22632
22633 #. type: Plain text
22634 #: guix-git/doc/guix.texi:13074
22635 msgid "When specifying the name of a package to send, it is first built if needed, unless @option{--dry-run} was specified. Common build options are supported (@pxref{Common Build Options})."
22636 msgstr ""
22637
22638 #. type: section
22639 #: guix-git/doc/guix.texi:13077
22640 #, no-wrap
22641 msgid "Invoking @command{guix container}"
22642 msgstr ""
22643
22644 #. type: command{#1}
22645 #: guix-git/doc/guix.texi:13079
22646 #, no-wrap
22647 msgid "guix container"
22648 msgstr ""
22649
22650 #. type: quotation
22651 #: guix-git/doc/guix.texi:13083
22652 msgid "As of version @value{VERSION}, this tool is experimental. The interface is subject to radical change in the future."
22653 msgstr ""
22654
22655 #. type: Plain text
22656 #: guix-git/doc/guix.texi:13090
22657 msgid "The purpose of @command{guix container} is to manipulate processes running within an isolated environment, commonly known as a ``container'', typically created by the @command{guix environment} (@pxref{Invoking guix environment}) and @command{guix system container} (@pxref{Invoking guix system}) commands."
22658 msgstr ""
22659
22660 #. type: example
22661 #: guix-git/doc/guix.texi:13095
22662 #, no-wrap
22663 msgid "guix container @var{action} @var{options}@dots{}\n"
22664 msgstr ""
22665
22666 #. type: Plain text
22667 #: guix-git/doc/guix.texi:13099
22668 msgid "@var{action} specifies the operation to perform with a container, and @var{options} specifies the context-specific arguments for the action."
22669 msgstr ""
22670
22671 #. type: Plain text
22672 #: guix-git/doc/guix.texi:13101
22673 msgid "The following actions are available:"
22674 msgstr ""
22675
22676 #. type: item
22677 #: guix-git/doc/guix.texi:13103
22678 #, no-wrap
22679 msgid "exec"
22680 msgstr ""
22681
22682 #. type: table
22683 #: guix-git/doc/guix.texi:13105
22684 msgid "Execute a command within the context of a running container."
22685 msgstr ""
22686
22687 #. type: table
22688 #: guix-git/doc/guix.texi:13107
22689 msgid "The syntax is:"
22690 msgstr ""
22691
22692 #. type: example
22693 #: guix-git/doc/guix.texi:13110
22694 #, no-wrap
22695 msgid "guix container exec @var{pid} @var{program} @var{arguments}@dots{}\n"
22696 msgstr ""
22697
22698 #. type: table
22699 #: guix-git/doc/guix.texi:13116
22700 msgid "@var{pid} specifies the process ID of the running container. @var{program} specifies an executable file name within the root file system of the container. @var{arguments} are the additional options that will be passed to @var{program}."
22701 msgstr ""
22702
22703 #. type: table
22704 #: guix-git/doc/guix.texi:13120
22705 msgid "The following command launches an interactive login shell inside a Guix system container, started by @command{guix system container}, and whose process ID is 9001:"
22706 msgstr ""
22707
22708 #. type: example
22709 #: guix-git/doc/guix.texi:13123
22710 #, no-wrap
22711 msgid "guix container exec 9001 /run/current-system/profile/bin/bash --login\n"
22712 msgstr ""
22713
22714 #. type: table
22715 #: guix-git/doc/guix.texi:13127
22716 msgid "Note that the @var{pid} cannot be the parent process of a container. It must be PID 1 of the container or one of its child processes."
22717 msgstr ""
22718
22719 #. type: section
22720 #: guix-git/doc/guix.texi:13131
22721 #, no-wrap
22722 msgid "Invoking @command{guix weather}"
22723 msgstr ""
22724
22725 #. type: Plain text
22726 #: guix-git/doc/guix.texi:13140
22727 msgid "Occasionally you're grumpy because substitutes are lacking and you end up building packages by yourself (@pxref{Substitutes}). The @command{guix weather} command reports on substitute availability on the specified servers so you can have an idea of whether you'll be grumpy today. It can sometimes be useful info as a user, but it is primarily useful to people running @command{guix publish} (@pxref{Invoking guix publish})."
22728 msgstr ""
22729
22730 #. type: cindex
22731 #: guix-git/doc/guix.texi:13141
22732 #, no-wrap
22733 msgid "statistics, for substitutes"
22734 msgstr ""
22735
22736 #. type: cindex
22737 #: guix-git/doc/guix.texi:13142
22738 #, no-wrap
22739 msgid "availability of substitutes"
22740 msgstr ""
22741
22742 #. type: cindex
22743 #: guix-git/doc/guix.texi:13143
22744 #, no-wrap
22745 msgid "substitute availability"
22746 msgstr ""
22747
22748 #. type: cindex
22749 #: guix-git/doc/guix.texi:13144
22750 #, no-wrap
22751 msgid "weather, substitute availability"
22752 msgstr ""
22753
22754 #. type: Plain text
22755 #: guix-git/doc/guix.texi:13146
22756 msgid "Here's a sample run:"
22757 msgstr ""
22758
22759 #. type: example
22760 #: guix-git/doc/guix.texi:13158
22761 #, no-wrap
22762 msgid ""
22763 "$ guix weather --substitute-urls=https://guix.example.org\n"
22764 "computing 5,872 package derivations for x86_64-linux...\n"
22765 "looking for 6,128 store items on https://guix.example.org..\n"
22766 "updating list of substitutes from 'https://guix.example.org'... 100.0%\n"
22767 "https://guix.example.org\n"
22768 " 43.4% substitutes available (2,658 out of 6,128)\n"
22769 " 7,032.5 MiB of nars (compressed)\n"
22770 " 19,824.2 MiB on disk (uncompressed)\n"
22771 " 0.030 seconds per request (182.9 seconds in total)\n"
22772 " 33.5 requests per second\n"
22773 "\n"
22774 msgstr ""
22775
22776 #. type: example
22777 #: guix-git/doc/guix.texi:13168
22778 #, no-wrap
22779 msgid ""
22780 " 9.8% (342 out of 3,470) of the missing items are queued\n"
22781 " 867 queued builds\n"
22782 " x86_64-linux: 518 (59.7%)\n"
22783 " i686-linux: 221 (25.5%)\n"
22784 " aarch64-linux: 128 (14.8%)\n"
22785 " build rate: 23.41 builds per hour\n"
22786 " x86_64-linux: 11.16 builds per hour\n"
22787 " i686-linux: 6.03 builds per hour\n"
22788 " aarch64-linux: 6.41 builds per hour\n"
22789 msgstr ""
22790
22791 #. type: cindex
22792 #: guix-git/doc/guix.texi:13170
22793 #, no-wrap
22794 msgid "continuous integration, statistics"
22795 msgstr ""
22796
22797 #. type: Plain text
22798 #: guix-git/doc/guix.texi:13181
22799 msgid "As you can see, it reports the fraction of all the packages for which substitutes are available on the server---regardless of whether substitutes are enabled, and regardless of whether this server's signing key is authorized. It also reports the size of the compressed archives (``nars'') provided by the server, the size the corresponding store items occupy in the store (assuming deduplication is turned off), and the server's throughput. The second part gives continuous integration (CI) statistics, if the server supports it. In addition, using the @option{--coverage} option, @command{guix weather} can list ``important'' package substitutes missing on the server (see below)."
22800 msgstr ""
22801
22802 #. type: Plain text
22803 #: guix-git/doc/guix.texi:13187
22804 msgid "To achieve that, @command{guix weather} queries over HTTP(S) meta-data (@dfn{narinfos}) for all the relevant store items. Like @command{guix challenge}, it ignores signatures on those substitutes, which is innocuous since the command only gathers statistics and cannot install those substitutes."
22805 msgstr ""
22806
22807 #. type: example
22808 #: guix-git/doc/guix.texi:13192
22809 #, no-wrap
22810 msgid "guix weather @var{options}@dots{} [@var{packages}@dots{}]\n"
22811 msgstr ""
22812
22813 #. type: Plain text
22814 #: guix-git/doc/guix.texi:13200
22815 msgid "When @var{packages} is omitted, @command{guix weather} checks the availability of substitutes for @emph{all} the packages, or for those specified with @option{--manifest}; otherwise it only considers the specified packages. It is also possible to query specific system types with @option{--system}. @command{guix weather} exits with a non-zero code when the fraction of available substitutes is below 100%."
22816 msgstr ""
22817
22818 #. type: Plain text
22819 #: guix-git/doc/guix.texi:13202
22820 msgid "The available options are listed below."
22821 msgstr ""
22822
22823 #. type: table
22824 #: guix-git/doc/guix.texi:13208
22825 msgid "@var{urls} is the space-separated list of substitute server URLs to query. When this option is omitted, the default set of substitute servers is queried."
22826 msgstr ""
22827
22828 #. type: table
22829 #: guix-git/doc/guix.texi:13214
22830 msgid "Query substitutes for @var{system}---e.g., @code{aarch64-linux}. This option can be repeated, in which case @command{guix weather} will query substitutes for several system types."
22831 msgstr ""
22832
22833 #. type: table
22834 #: guix-git/doc/guix.texi:13220
22835 msgid "Instead of querying substitutes for all the packages, only ask for those specified in @var{file}. @var{file} must contain a @dfn{manifest}, as with the @code{-m} option of @command{guix package} (@pxref{Invoking guix package})."
22836 msgstr ""
22837
22838 #. type: table
22839 #: guix-git/doc/guix.texi:13223
22840 msgid "This option can be repeated several times, in which case the manifests are concatenated."
22841 msgstr ""
22842
22843 #. type: item
22844 #: guix-git/doc/guix.texi:13224
22845 #, no-wrap
22846 msgid "--coverage[=@var{count}]"
22847 msgstr ""
22848
22849 #. type: itemx
22850 #: guix-git/doc/guix.texi:13225
22851 #, no-wrap
22852 msgid "-c [@var{count}]"
22853 msgstr ""
22854
22855 #. type: table
22856 #: guix-git/doc/guix.texi:13231
22857 msgid "Report on substitute coverage for packages: list packages with at least @var{count} dependents (zero by default) for which substitutes are unavailable. Dependent packages themselves are not listed: if @var{b} depends on @var{a} and @var{a} has no substitutes, only @var{a} is listed, even though @var{b} usually lacks substitutes as well. The result looks like this:"
22858 msgstr ""
22859
22860 #. type: example
22861 #: guix-git/doc/guix.texi:13245
22862 #, no-wrap
22863 msgid ""
22864 "$ guix weather --substitute-urls=@value{SUBSTITUTE-URL} -c 10\n"
22865 "computing 8,983 package derivations for x86_64-linux...\n"
22866 "looking for 9,343 store items on @value{SUBSTITUTE-URL}...\n"
22867 "updating substitutes from '@value{SUBSTITUTE-URL}'... 100.0%\n"
22868 "@value{SUBSTITUTE-URL}\n"
22869 " 64.7% substitutes available (6,047 out of 9,343)\n"
22870 "@dots{}\n"
22871 "2502 packages are missing from '@value{SUBSTITUTE-URL}' for 'x86_64-linux', among which:\n"
22872 " 58 kcoreaddons@@5.49.0 /gnu/store/@dots{}-kcoreaddons-5.49.0\n"
22873 " 46 qgpgme@@1.11.1 /gnu/store/@dots{}-qgpgme-1.11.1\n"
22874 " 37 perl-http-cookiejar@@0.008 /gnu/store/@dots{}-perl-http-cookiejar-0.008\n"
22875 " @dots{}\n"
22876 msgstr ""
22877
22878 #. type: table
22879 #: guix-git/doc/guix.texi:13251
22880 msgid "What this example shows is that @code{kcoreaddons} and presumably the 58 packages that depend on it have no substitutes at @code{@value{SUBSTITUTE-SERVER}}; likewise for @code{qgpgme} and the 46 packages that depend on it."
22881 msgstr ""
22882
22883 #. type: table
22884 #: guix-git/doc/guix.texi:13255
22885 msgid "If you are a Guix developer, or if you are taking care of this build farm, you'll probably want to have a closer look at these packages: they may simply fail to build."
22886 msgstr ""
22887
22888 #. type: item
22889 #: guix-git/doc/guix.texi:13256
22890 #, no-wrap
22891 msgid "--display-missing"
22892 msgstr ""
22893
22894 #. type: table
22895 #: guix-git/doc/guix.texi:13258
22896 msgid "Display the list of store items for which substitutes are missing."
22897 msgstr ""
22898
22899 #. type: section
22900 #: guix-git/doc/guix.texi:13261
22901 #, no-wrap
22902 msgid "Invoking @command{guix processes}"
22903 msgstr ""
22904
22905 #. type: Plain text
22906 #: guix-git/doc/guix.texi:13269
22907 msgid "The @command{guix processes} command can be useful to developers and system administrators, especially on multi-user machines and on build farms: it lists the current sessions (connections to the daemon), as well as information about the processes involved@footnote{Remote sessions, when @command{guix-daemon} is started with @option{--listen} specifying a TCP endpoint, are @emph{not} listed.}. Here's an example of the information it returns:"
22908 msgstr ""
22909
22910 #. type: example
22911 #: guix-git/doc/guix.texi:13275
22912 #, no-wrap
22913 msgid ""
22914 "$ sudo guix processes\n"
22915 "SessionPID: 19002\n"
22916 "ClientPID: 19090\n"
22917 "ClientCommand: guix environment --ad-hoc python\n"
22918 "\n"
22919 msgstr ""
22920
22921 #. type: example
22922 #: guix-git/doc/guix.texi:13279
22923 #, no-wrap
22924 msgid ""
22925 "SessionPID: 19402\n"
22926 "ClientPID: 19367\n"
22927 "ClientCommand: guix publish -u guix-publish -p 3000 -C 9 @dots{}\n"
22928 "\n"
22929 msgstr ""
22930
22931 #. type: example
22932 #: guix-git/doc/guix.texi:13292
22933 #, no-wrap
22934 msgid ""
22935 "SessionPID: 19444\n"
22936 "ClientPID: 19419\n"
22937 "ClientCommand: cuirass --cache-directory /var/cache/cuirass @dots{}\n"
22938 "LockHeld: /gnu/store/@dots{}-perl-ipc-cmd-0.96.lock\n"
22939 "LockHeld: /gnu/store/@dots{}-python-six-bootstrap-1.11.0.lock\n"
22940 "LockHeld: /gnu/store/@dots{}-libjpeg-turbo-2.0.0.lock\n"
22941 "ChildPID: 20495\n"
22942 "ChildCommand: guix offload x86_64-linux 7200 1 28800\n"
22943 "ChildPID: 27733\n"
22944 "ChildCommand: guix offload x86_64-linux 7200 1 28800\n"
22945 "ChildPID: 27793\n"
22946 "ChildCommand: guix offload x86_64-linux 7200 1 28800\n"
22947 msgstr ""
22948
22949 #. type: Plain text
22950 #: guix-git/doc/guix.texi:13299
22951 msgid "In this example we see that @command{guix-daemon} has three clients: @command{guix environment}, @command{guix publish}, and the Cuirass continuous integration tool; their process identifier (PID) is given by the @code{ClientPID} field. The @code{SessionPID} field gives the PID of the @command{guix-daemon} sub-process of this particular session."
22952 msgstr ""
22953
22954 #. type: Plain text
22955 #: guix-git/doc/guix.texi:13306
22956 msgid "The @code{LockHeld} fields show which store items are currently locked by this session, which corresponds to store items being built or substituted (the @code{LockHeld} field is not displayed when @command{guix processes} is not running as root). Last, by looking at the @code{ChildPID} and @code{ChildCommand} fields, we understand that these three builds are being offloaded (@pxref{Daemon Offload Setup})."
22957 msgstr ""
22958
22959 #. type: Plain text
22960 #: guix-git/doc/guix.texi:13311
22961 msgid "The output is in Recutils format so we can use the handy @command{recsel} command to select sessions of interest (@pxref{Selection Expressions,,, recutils, GNU recutils manual}). As an example, the command shows the command line and PID of the client that triggered the build of a Perl package:"
22962 msgstr ""
22963
22964 #. type: example
22965 #: guix-git/doc/guix.texi:13317
22966 #, no-wrap
22967 msgid ""
22968 "$ sudo guix processes | \\\n"
22969 " recsel -p ClientPID,ClientCommand -e 'LockHeld ~ \"perl\"'\n"
22970 "ClientPID: 19419\n"
22971 "ClientCommand: cuirass --cache-directory /var/cache/cuirass @dots{}\n"
22972 msgstr ""
22973
22974 #. type: Plain text
22975 #: guix-git/doc/guix.texi:13320
22976 msgid "Additional options are listed below."
22977 msgstr ""
22978
22979 #. type: table
22980 #: guix-git/doc/guix.texi:13330
22981 msgid "The default option. It outputs a set of Session recutils records that include each @code{ChildProcess} as a field."
22982 msgstr ""
22983
22984 #. type: item
22985 #: guix-git/doc/guix.texi:13331
22986 #, no-wrap
22987 msgid "normalized"
22988 msgstr ""
22989
22990 #. type: table
22991 #: guix-git/doc/guix.texi:13338
22992 msgid "Normalize the output records into record sets (@pxref{Record Sets,,, recutils, GNU recutils manual}). Normalizing into record sets allows joins across record types. The example below lists the PID of each @code{ChildProcess} and the associated PID for @code{Session} that spawned the @code{ChildProcess} where the @code{Session} was started using @command{guix build}."
22993 msgstr ""
22994
22995 #. type: example
22996 #: guix-git/doc/guix.texi:13348
22997 #, no-wrap
22998 msgid ""
22999 "$ guix processes --format=normalized | \\\n"
23000 " recsel \\\n"
23001 " -j Session \\\n"
23002 " -t ChildProcess \\\n"
23003 " -p Session.PID,PID \\\n"
23004 " -e 'Session.ClientCommand ~ \"guix build\"'\n"
23005 "PID: 4435\n"
23006 "Session_PID: 4278\n"
23007 "\n"
23008 msgstr ""
23009
23010 #. type: example
23011 #: guix-git/doc/guix.texi:13351
23012 #, no-wrap
23013 msgid ""
23014 "PID: 4554\n"
23015 "Session_PID: 4278\n"
23016 "\n"
23017 msgstr ""
23018
23019 #. type: example
23020 #: guix-git/doc/guix.texi:13354
23021 #, no-wrap
23022 msgid ""
23023 "PID: 4646\n"
23024 "Session_PID: 4278\n"
23025 msgstr ""
23026
23027 #. type: cindex
23028 #: guix-git/doc/guix.texi:13361
23029 #, no-wrap
23030 msgid "system configuration"
23031 msgstr ""
23032
23033 #. type: Plain text
23034 #: guix-git/doc/guix.texi:13367
23035 msgid "Guix System supports a consistent whole-system configuration mechanism. By that we mean that all aspects of the global system configuration---such as the available system services, timezone and locale settings, user accounts---are declared in a single place. Such a @dfn{system configuration} can be @dfn{instantiated}---i.e., effected."
23036 msgstr ""
23037
23038 #. type: Plain text
23039 #: guix-git/doc/guix.texi:13377
23040 msgid "One of the advantages of putting all the system configuration under the control of Guix is that it supports transactional system upgrades, and makes it possible to roll back to a previous system instantiation, should something go wrong with the new one (@pxref{Features}). Another advantage is that it makes it easy to replicate the exact same configuration across different machines, or at different points in time, without having to resort to additional administration tools layered on top of the own tools of the system."
23041 msgstr ""
23042
23043 #. type: Plain text
23044 #: guix-git/doc/guix.texi:13382
23045 msgid "This section describes this mechanism. First we focus on the system administrator's viewpoint---explaining how the system is configured and instantiated. Then we show how this mechanism can be extended, for instance to support new system services."
23046 msgstr ""
23047
23048 #. type: Plain text
23049 #: guix-git/doc/guix.texi:13411
23050 msgid "The operating system is configured by providing an @code{operating-system} declaration in a file that can then be passed to the @command{guix system} command (@pxref{Invoking guix system}). A simple setup, with the default system services, the default Linux-Libre kernel, initial RAM disk, and boot loader looks like this:"
23051 msgstr ""
23052
23053 #. type: code{#1}
23054 #: guix-git/doc/guix.texi:13412 guix-git/doc/guix.texi:33463
23055 #, no-wrap
23056 msgid "operating-system"
23057 msgstr ""
23058
23059 #. type: include
23060 #: guix-git/doc/guix.texi:13414
23061 #, no-wrap
23062 msgid "os-config-bare-bones.texi"
23063 msgstr ""
23064
23065 #. type: Plain text
23066 #: guix-git/doc/guix.texi:13421
23067 msgid "This example should be self-describing. Some of the fields defined above, such as @code{host-name} and @code{bootloader}, are mandatory. Others, such as @code{packages} and @code{services}, can be omitted, in which case they get a default value."
23068 msgstr ""
23069
23070 #. type: Plain text
23071 #: guix-git/doc/guix.texi:13426
23072 msgid "Below we discuss the effect of some of the most important fields (@pxref{operating-system Reference}, for details about all the available fields), and how to @dfn{instantiate} the operating system using @command{guix system}."
23073 msgstr ""
23074
23075 #. type: unnumberedsubsec
23076 #: guix-git/doc/guix.texi:13427
23077 #, no-wrap
23078 msgid "Bootloader"
23079 msgstr ""
23080
23081 #. type: cindex
23082 #: guix-git/doc/guix.texi:13429
23083 #, no-wrap
23084 msgid "legacy boot, on Intel machines"
23085 msgstr ""
23086
23087 #. type: cindex
23088 #: guix-git/doc/guix.texi:13430
23089 #, no-wrap
23090 msgid "BIOS boot, on Intel machines"
23091 msgstr ""
23092
23093 #. type: cindex
23094 #: guix-git/doc/guix.texi:13431
23095 #, no-wrap
23096 msgid "UEFI boot"
23097 msgstr ""
23098
23099 #. type: cindex
23100 #: guix-git/doc/guix.texi:13432
23101 #, no-wrap
23102 msgid "EFI boot"
23103 msgstr ""
23104
23105 #. type: Plain text
23106 #: guix-git/doc/guix.texi:13438
23107 msgid "The @code{bootloader} field describes the method that will be used to boot your system. Machines based on Intel processors can boot in ``legacy'' BIOS mode, as in the example above. However, more recent machines rely instead on the @dfn{Unified Extensible Firmware Interface} (UEFI) to boot. In that case, the @code{bootloader} field should contain something along these lines:"
23108 msgstr ""
23109
23110 #. type: lisp
23111 #: guix-git/doc/guix.texi:13443
23112 #, no-wrap
23113 msgid ""
23114 "(bootloader-configuration\n"
23115 " (bootloader grub-efi-bootloader)\n"
23116 " (target \"/boot/efi\"))\n"
23117 msgstr ""
23118
23119 #. type: Plain text
23120 #: guix-git/doc/guix.texi:13447
23121 msgid "@xref{Bootloader Configuration}, for more information on the available configuration options."
23122 msgstr ""
23123
23124 #. type: unnumberedsubsec
23125 #: guix-git/doc/guix.texi:13448
23126 #, no-wrap
23127 msgid "Globally-Visible Packages"
23128 msgstr ""
23129
23130 #. type: vindex
23131 #: guix-git/doc/guix.texi:13450
23132 #, no-wrap
23133 msgid "%base-packages"
23134 msgstr ""
23135
23136 #. type: Plain text
23137 #: guix-git/doc/guix.texi:13463
23138 msgid "The @code{packages} field lists packages that will be globally visible on the system, for all user accounts---i.e., in every user's @env{PATH} environment variable---in addition to the per-user profiles (@pxref{Invoking guix package}). The @code{%base-packages} variable provides all the tools one would expect for basic user and administrator tasks---including the GNU Core Utilities, the GNU Networking Utilities, the GNU Zile lightweight text editor, @command{find}, @command{grep}, etc. The example above adds GNU@tie{}Screen to those, taken from the @code{(gnu packages screen)} module (@pxref{Package Modules}). The @code{(list package output)} syntax can be used to add a specific output of a package:"
23139 msgstr ""
23140
23141 #. type: lisp
23142 #: guix-git/doc/guix.texi:13467
23143 #, no-wrap
23144 msgid ""
23145 "(use-modules (gnu packages))\n"
23146 "(use-modules (gnu packages dns))\n"
23147 "\n"
23148 msgstr ""
23149
23150 #. type: lisp
23151 #: guix-git/doc/guix.texi:13472
23152 #, no-wrap
23153 msgid ""
23154 "(operating-system\n"
23155 " ;; ...\n"
23156 " (packages (cons (list bind \"utils\")\n"
23157 " %base-packages)))\n"
23158 msgstr ""
23159
23160 #. type: findex
23161 #: guix-git/doc/guix.texi:13474
23162 #, no-wrap
23163 msgid "specification->package"
23164 msgstr ""
23165
23166 #. type: Plain text
23167 #: guix-git/doc/guix.texi:13483
23168 msgid "Referring to packages by variable name, like @code{bind} above, has the advantage of being unambiguous; it also allows typos and such to be diagnosed right away as ``unbound variables''. The downside is that one needs to know which module defines which package, and to augment the @code{use-package-modules} line accordingly. To avoid that, one can use the @code{specification->package} procedure of the @code{(gnu packages)} module, which returns the best package for a given name or name and version:"
23169 msgstr ""
23170
23171 #. type: lisp
23172 #: guix-git/doc/guix.texi:13486
23173 #, no-wrap
23174 msgid ""
23175 "(use-modules (gnu packages))\n"
23176 "\n"
23177 msgstr ""
23178
23179 #. type: lisp
23180 #: guix-git/doc/guix.texi:13492
23181 #, no-wrap
23182 msgid ""
23183 "(operating-system\n"
23184 " ;; ...\n"
23185 " (packages (append (map specification->package\n"
23186 " '(\"tcpdump\" \"htop\" \"gnupg@@2.0\"))\n"
23187 " %base-packages)))\n"
23188 msgstr ""
23189
23190 #. type: unnumberedsubsec
23191 #: guix-git/doc/guix.texi:13494
23192 #, no-wrap
23193 msgid "System Services"
23194 msgstr ""
23195
23196 #. type: cindex
23197 #: guix-git/doc/guix.texi:13496 guix-git/doc/guix.texi:32246
23198 #: guix-git/doc/guix.texi:33688
23199 #, no-wrap
23200 msgid "services"
23201 msgstr ""
23202
23203 #. type: vindex
23204 #: guix-git/doc/guix.texi:13497
23205 #, no-wrap
23206 msgid "%base-services"
23207 msgstr ""
23208
23209 #. type: Plain text
23210 #: guix-git/doc/guix.texi:13507
23211 msgid "The @code{services} field lists @dfn{system services} to be made available when the system starts (@pxref{Services}). The @code{operating-system} declaration above specifies that, in addition to the basic services, we want the OpenSSH secure shell daemon listening on port 2222 (@pxref{Networking Services, @code{openssh-service-type}}). Under the hood, @code{openssh-service-type} arranges so that @command{sshd} is started with the right command-line options, possibly with supporting configuration files generated as needed (@pxref{Defining Services})."
23212 msgstr ""
23213
23214 #. type: cindex
23215 #: guix-git/doc/guix.texi:13508
23216 #, no-wrap
23217 msgid "customization, of services"
23218 msgstr ""
23219
23220 #. type: findex
23221 #: guix-git/doc/guix.texi:13509
23222 #, no-wrap
23223 msgid "modify-services"
23224 msgstr ""
23225
23226 #. type: Plain text
23227 #: guix-git/doc/guix.texi:13513
23228 msgid "Occasionally, instead of using the base services as is, you will want to customize them. To do this, use @code{modify-services} (@pxref{Service Reference, @code{modify-services}}) to modify the list."
23229 msgstr ""
23230
23231 #. type: Plain text
23232 #: guix-git/doc/guix.texi:13518
23233 msgid "For example, suppose you want to modify @code{guix-daemon} and Mingetty (the console log-in) in the @code{%base-services} list (@pxref{Base Services, @code{%base-services}}). To do that, you can write the following in your operating system declaration:"
23234 msgstr ""
23235
23236 #. type: lisp
23237 #: guix-git/doc/guix.texi:13535
23238 #, no-wrap
23239 msgid ""
23240 "(define %my-services\n"
23241 " ;; My very own list of services.\n"
23242 " (modify-services %base-services\n"
23243 " (guix-service-type config =>\n"
23244 " (guix-configuration\n"
23245 " (inherit config)\n"
23246 " ;; Fetch substitutes from example.org.\n"
23247 " (substitute-urls\n"
23248 " (list \"https://example.org/guix\"\n"
23249 " \"https://ci.guix.gnu.org\"))))\n"
23250 " (mingetty-service-type config =>\n"
23251 " (mingetty-configuration\n"
23252 " (inherit config)\n"
23253 " ;; Automatially log in as \"guest\".\n"
23254 " (auto-login \"guest\")))))\n"
23255 "\n"
23256 msgstr ""
23257
23258 #. type: lisp
23259 #: guix-git/doc/guix.texi:13539
23260 #, no-wrap
23261 msgid ""
23262 "(operating-system\n"
23263 " ;; @dots{}\n"
23264 " (services %my-services))\n"
23265 msgstr ""
23266
23267 #. type: Plain text
23268 #: guix-git/doc/guix.texi:13550
23269 msgid "This changes the configuration---i.e., the service parameters---of the @code{guix-service-type} instance, and that of all the @code{mingetty-service-type} instances in the @code{%base-services} list. Observe how this is accomplished: first, we arrange for the original configuration to be bound to the identifier @code{config} in the @var{body}, and then we write the @var{body} so that it evaluates to the desired configuration. In particular, notice how we use @code{inherit} to create a new configuration which has the same values as the old configuration, but with a few modifications."
23270 msgstr ""
23271
23272 #. type: Plain text
23273 #: guix-git/doc/guix.texi:13557
23274 msgid "The configuration for a typical ``desktop'' usage, with an encrypted root partition, the X11 display server, GNOME and Xfce (users can choose which of these desktop environments to use at the log-in screen by pressing @kbd{F1}), network management, power management, and more, would look like this:"
23275 msgstr ""
23276
23277 #. type: include
23278 #: guix-git/doc/guix.texi:13559
23279 #, no-wrap
23280 msgid "os-config-desktop.texi"
23281 msgstr ""
23282
23283 #. type: Plain text
23284 #: guix-git/doc/guix.texi:13564
23285 msgid "A graphical system with a choice of lightweight window managers instead of full-blown desktop environments would look like this:"
23286 msgstr ""
23287
23288 #. type: include
23289 #: guix-git/doc/guix.texi:13566
23290 #, no-wrap
23291 msgid "os-config-lightweight-desktop.texi"
23292 msgstr ""
23293
23294 #. type: Plain text
23295 #: guix-git/doc/guix.texi:13572
23296 msgid "This example refers to the @file{/boot/efi} file system by its UUID, @code{1234-ABCD}. Replace this UUID with the right UUID on your system, as returned by the @command{blkid} command."
23297 msgstr ""
23298
23299 #. type: Plain text
23300 #: guix-git/doc/guix.texi:13576
23301 msgid "@xref{Desktop Services}, for the exact list of services provided by @code{%desktop-services}. @xref{X.509 Certificates}, for background information about the @code{nss-certs} package that is used here."
23302 msgstr ""
23303
23304 #. type: Plain text
23305 #: guix-git/doc/guix.texi:13583
23306 msgid "Again, @code{%desktop-services} is just a list of service objects. If you want to remove services from there, you can do so using the procedures for list filtering (@pxref{SRFI-1 Filtering and Partitioning,,, guile, GNU Guile Reference Manual}). For instance, the following expression returns a list that contains all the services in @code{%desktop-services} minus the Avahi service:"
23307 msgstr ""
23308
23309 #. type: lisp
23310 #: guix-git/doc/guix.texi:13588
23311 #, no-wrap
23312 msgid ""
23313 "(remove (lambda (service)\n"
23314 " (eq? (service-kind service) avahi-service-type))\n"
23315 " %desktop-services)\n"
23316 msgstr ""
23317
23318 #. type: Plain text
23319 #: guix-git/doc/guix.texi:13591
23320 msgid "Alternatively, the @code{modify-services} macro can be used:"
23321 msgstr ""
23322
23323 #. type: lisp
23324 #: guix-git/doc/guix.texi:13595
23325 #, no-wrap
23326 msgid ""
23327 "(modify-services %desktop-services\n"
23328 " (delete avahi-service-type))\n"
23329 msgstr ""
23330
23331 #. type: unnumberedsubsec
23332 #: guix-git/doc/guix.texi:13598
23333 #, no-wrap
23334 msgid "Instantiating the System"
23335 msgstr ""
23336
23337 #. type: Plain text
23338 #: guix-git/doc/guix.texi:13605
23339 msgid "Assuming the @code{operating-system} declaration is stored in the @file{my-system-config.scm} file, the @command{guix system reconfigure my-system-config.scm} command instantiates that configuration, and makes it the default GRUB boot entry (@pxref{Invoking guix system})."
23340 msgstr ""
23341
23342 #. type: Plain text
23343 #: guix-git/doc/guix.texi:13613
23344 msgid "The normal way to change the system configuration is by updating this file and re-running @command{guix system reconfigure}. One should never have to touch files in @file{/etc} or to run commands that modify the system state such as @command{useradd} or @command{grub-install}. In fact, you must avoid that since that would not only void your warranty but also prevent you from rolling back to previous versions of your system, should you ever need to."
23345 msgstr ""
23346
23347 #. type: cindex
23348 #: guix-git/doc/guix.texi:13614
23349 #, no-wrap
23350 msgid "roll-back, of the operating system"
23351 msgstr ""
23352
23353 #. type: Plain text
23354 #: guix-git/doc/guix.texi:13624
23355 msgid "Speaking of roll-back, each time you run @command{guix system reconfigure}, a new @dfn{generation} of the system is created---without modifying or deleting previous generations. Old system generations get an entry in the bootloader boot menu, allowing you to boot them in case something went wrong with the latest generation. Reassuring, no? The @command{guix system list-generations} command lists the system generations available on disk. It is also possible to roll back the system via the commands @command{guix system roll-back} and @command{guix system switch-generation}."
23356 msgstr ""
23357
23358 #. type: Plain text
23359 #: guix-git/doc/guix.texi:13630
23360 msgid "Although the @command{guix system reconfigure} command will not modify previous generations, you must take care when the current generation is not the latest (e.g., after invoking @command{guix system roll-back}), since the operation might overwrite a later generation (@pxref{Invoking guix system})."
23361 msgstr ""
23362
23363 #. type: unnumberedsubsec
23364 #: guix-git/doc/guix.texi:13631
23365 #, no-wrap
23366 msgid "The Programming Interface"
23367 msgstr ""
23368
23369 #. type: Plain text
23370 #: guix-git/doc/guix.texi:13636
23371 msgid "At the Scheme level, the bulk of an @code{operating-system} declaration is instantiated with the following monadic procedure (@pxref{The Store Monad}):"
23372 msgstr ""
23373
23374 #. type: deffn
23375 #: guix-git/doc/guix.texi:13637
23376 #, no-wrap
23377 msgid "{Monadic Procedure} operating-system-derivation os"
23378 msgstr ""
23379
23380 #. type: deffn
23381 #: guix-git/doc/guix.texi:13640
23382 msgid "Return a derivation that builds @var{os}, an @code{operating-system} object (@pxref{Derivations})."
23383 msgstr ""
23384
23385 #. type: deffn
23386 #: guix-git/doc/guix.texi:13644
23387 msgid "The output of the derivation is a single directory that refers to all the packages, configuration files, and other supporting files needed to instantiate @var{os}."
23388 msgstr ""
23389
23390 #. type: Plain text
23391 #: guix-git/doc/guix.texi:13649
23392 msgid "This procedure is provided by the @code{(gnu system)} module. Along with @code{(gnu services)} (@pxref{Services}), this module contains the guts of Guix System. Make sure to visit it!"
23393 msgstr ""
23394
23395 #. type: section
23396 #: guix-git/doc/guix.texi:13652
23397 #, no-wrap
23398 msgid "@code{operating-system} Reference"
23399 msgstr ""
23400
23401 #. type: Plain text
23402 #: guix-git/doc/guix.texi:13657
23403 msgid "This section summarizes all the options available in @code{operating-system} declarations (@pxref{Using the Configuration System})."
23404 msgstr ""
23405
23406 #. type: deftp
23407 #: guix-git/doc/guix.texi:13658
23408 #, no-wrap
23409 msgid "{Data Type} operating-system"
23410 msgstr ""
23411
23412 #. type: deftp
23413 #: guix-git/doc/guix.texi:13662
23414 msgid "This is the data type representing an operating system configuration. By that, we mean all the global system configuration, not per-user configuration (@pxref{Using the Configuration System})."
23415 msgstr ""
23416
23417 #. type: item
23418 #: guix-git/doc/guix.texi:13664
23419 #, no-wrap
23420 msgid "@code{kernel} (default: @code{linux-libre})"
23421 msgstr ""
23422
23423 #. type: table
23424 #: guix-git/doc/guix.texi:13669
23425 msgid "The package object of the operating system kernel to use@footnote{Currently only the Linux-libre kernel is fully supported. Using GNU@tie{}mach with the GNU@tie{}Hurd is experimental and only available when building a virtual machine disk image.}."
23426 msgstr ""
23427
23428 #. type: code{#1}
23429 #: guix-git/doc/guix.texi:13670 guix-git/doc/guix.texi:28954
23430 #, no-wrap
23431 msgid "hurd"
23432 msgstr ""
23433
23434 #. type: item
23435 #: guix-git/doc/guix.texi:13671
23436 #, no-wrap
23437 msgid "@code{hurd} (default: @code{#f})"
23438 msgstr ""
23439
23440 #. type: table
23441 #: guix-git/doc/guix.texi:13676
23442 msgid "The package object of the Hurd to be started by the kernel. When this field is set, produce a GNU/Hurd operating system. In that case, @code{kernel} must also be set to the @code{gnumach} package---the microkernel the Hurd runs on."
23443 msgstr ""
23444
23445 #. type: quotation
23446 #: guix-git/doc/guix.texi:13679
23447 msgid "This feature is experimental and only supported for disk images."
23448 msgstr ""
23449
23450 #. type: item
23451 #: guix-git/doc/guix.texi:13681
23452 #, no-wrap
23453 msgid "@code{kernel-loadable-modules} (default: '())"
23454 msgstr ""
23455
23456 #. type: table
23457 #: guix-git/doc/guix.texi:13684
23458 msgid "A list of objects (usually packages) to collect loadable kernel modules from--e.g. @code{(list ddcci-driver-linux)}."
23459 msgstr ""
23460
23461 #. type: item
23462 #: guix-git/doc/guix.texi:13685
23463 #, no-wrap
23464 msgid "@code{kernel-arguments} (default: @code{%default-kernel-arguments})"
23465 msgstr ""
23466
23467 #. type: table
23468 #: guix-git/doc/guix.texi:13688
23469 msgid "List of strings or gexps representing additional arguments to pass on the command-line of the kernel---e.g., @code{(\"console=ttyS0\")}."
23470 msgstr ""
23471
23472 #. type: code{#1}
23473 #: guix-git/doc/guix.texi:13689 guix-git/doc/guix.texi:32459
23474 #: guix-git/doc/guix.texi:32478
23475 #, no-wrap
23476 msgid "bootloader"
23477 msgstr ""
23478
23479 #. type: table
23480 #: guix-git/doc/guix.texi:13691
23481 msgid "The system bootloader configuration object. @xref{Bootloader Configuration}."
23482 msgstr ""
23483
23484 #. type: code{#1}
23485 #: guix-git/doc/guix.texi:13692 guix-git/doc/guix.texi:32648
23486 #, no-wrap
23487 msgid "label"
23488 msgstr ""
23489
23490 #. type: table
23491 #: guix-git/doc/guix.texi:13695
23492 msgid "This is the label (a string) as it appears in the bootloader's menu entry. The default label includes the kernel name and version."
23493 msgstr ""
23494
23495 #. type: item
23496 #: guix-git/doc/guix.texi:13696 guix-git/doc/guix.texi:18123
23497 #: guix-git/doc/guix.texi:32578
23498 #, no-wrap
23499 msgid "@code{keyboard-layout} (default: @code{#f})"
23500 msgstr ""
23501
23502 #. type: table
23503 #: guix-git/doc/guix.texi:13701
23504 msgid "This field specifies the keyboard layout to use in the console. It can be either @code{#f}, in which case the default keyboard layout is used (usually US English), or a @code{<keyboard-layout>} record. @xref{Keyboard Layout}, for more information."
23505 msgstr ""
23506
23507 #. type: table
23508 #: guix-git/doc/guix.texi:13706
23509 msgid "This keyboard layout is in effect as soon as the kernel has booted. For instance, it is the keyboard layout in effect when you type a passphrase if your root file system is on a @code{luks-device-mapping} mapped device (@pxref{Mapped Devices})."
23510 msgstr ""
23511
23512 #. type: quotation
23513 #: guix-git/doc/guix.texi:13713
23514 msgid "This does @emph{not} specify the keyboard layout used by the bootloader, nor that used by the graphical display server. @xref{Bootloader Configuration}, for information on how to specify the bootloader's keyboard layout. @xref{X Window}, for information on how to specify the keyboard layout used by the X Window System."
23515 msgstr ""
23516
23517 #. type: item
23518 #: guix-git/doc/guix.texi:13715
23519 #, no-wrap
23520 msgid "@code{initrd-modules} (default: @code{%base-initrd-modules})"
23521 msgstr ""
23522
23523 #. type: cindex
23524 #: guix-git/doc/guix.texi:13716 guix-git/doc/guix.texi:32283
23525 #: guix-git/doc/guix.texi:32387
23526 #, no-wrap
23527 msgid "initrd"
23528 msgstr ""
23529
23530 #. type: cindex
23531 #: guix-git/doc/guix.texi:13717 guix-git/doc/guix.texi:32284
23532 #: guix-git/doc/guix.texi:32388
23533 #, no-wrap
23534 msgid "initial RAM disk"
23535 msgstr ""
23536
23537 #. type: table
23538 #: guix-git/doc/guix.texi:13720
23539 msgid "The list of Linux kernel modules that need to be available in the initial RAM disk. @xref{Initial RAM Disk}."
23540 msgstr ""
23541
23542 #. type: item
23543 #: guix-git/doc/guix.texi:13721
23544 #, no-wrap
23545 msgid "@code{initrd} (default: @code{base-initrd})"
23546 msgstr ""
23547
23548 #. type: table
23549 #: guix-git/doc/guix.texi:13725
23550 msgid "A procedure that returns an initial RAM disk for the Linux kernel. This field is provided to support low-level customization and should rarely be needed for casual use. @xref{Initial RAM Disk}."
23551 msgstr ""
23552
23553 #. type: item
23554 #: guix-git/doc/guix.texi:13726
23555 #, no-wrap
23556 msgid "@code{firmware} (default: @code{%base-firmware})"
23557 msgstr ""
23558
23559 #. type: cindex
23560 #: guix-git/doc/guix.texi:13727
23561 #, no-wrap
23562 msgid "firmware"
23563 msgstr ""
23564
23565 #. type: table
23566 #: guix-git/doc/guix.texi:13729
23567 msgid "List of firmware packages loadable by the operating system kernel."
23568 msgstr ""
23569
23570 #. type: table
23571 #: guix-git/doc/guix.texi:13734
23572 msgid "The default includes firmware needed for Atheros- and Broadcom-based WiFi devices (Linux-libre modules @code{ath9k} and @code{b43-open}, respectively). @xref{Hardware Considerations}, for more info on supported hardware."
23573 msgstr ""
23574
23575 #. type: code{#1}
23576 #: guix-git/doc/guix.texi:13735 guix-git/doc/guix.texi:33482
23577 #, no-wrap
23578 msgid "host-name"
23579 msgstr ""
23580
23581 #. type: table
23582 #: guix-git/doc/guix.texi:13737
23583 msgid "The host name."
23584 msgstr ""
23585
23586 #. type: code{#1}
23587 #: guix-git/doc/guix.texi:13738
23588 #, no-wrap
23589 msgid "hosts-file"
23590 msgstr ""
23591
23592 #. type: cindex
23593 #: guix-git/doc/guix.texi:13739
23594 #, no-wrap
23595 msgid "hosts file"
23596 msgstr ""
23597
23598 #. type: table
23599 #: guix-git/doc/guix.texi:13744
23600 msgid "A file-like object (@pxref{G-Expressions, file-like objects}) for use as @file{/etc/hosts} (@pxref{Host Names,,, libc, The GNU C Library Reference Manual}). The default is a file with entries for @code{localhost} and @var{host-name}."
23601 msgstr ""
23602
23603 #. type: item
23604 #: guix-git/doc/guix.texi:13745
23605 #, no-wrap
23606 msgid "@code{mapped-devices} (default: @code{'()})"
23607 msgstr ""
23608
23609 #. type: table
23610 #: guix-git/doc/guix.texi:13747
23611 msgid "A list of mapped devices. @xref{Mapped Devices}."
23612 msgstr ""
23613
23614 #. type: code{#1}
23615 #: guix-git/doc/guix.texi:13748
23616 #, no-wrap
23617 msgid "file-systems"
23618 msgstr ""
23619
23620 #. type: table
23621 #: guix-git/doc/guix.texi:13750
23622 msgid "A list of file systems. @xref{File Systems}."
23623 msgstr ""
23624
23625 #. type: cindex
23626 #: guix-git/doc/guix.texi:13751
23627 #, no-wrap
23628 msgid "swap devices"
23629 msgstr ""
23630
23631 #. type: cindex
23632 #: guix-git/doc/guix.texi:13752
23633 #, no-wrap
23634 msgid "swap space"
23635 msgstr ""
23636
23637 #. type: item
23638 #: guix-git/doc/guix.texi:13753
23639 #, no-wrap
23640 msgid "@code{swap-devices} (default: @code{'()})"
23641 msgstr ""
23642
23643 #. type: table
23644 #: guix-git/doc/guix.texi:13758
23645 msgid "A list of UUIDs, file system labels, or strings identifying devices or files to be used for ``swap space'' (@pxref{Memory Concepts,,, libc, The GNU C Library Reference Manual}). Here are some examples:"
23646 msgstr ""
23647
23648 #. type: item
23649 #: guix-git/doc/guix.texi:13760
23650 #, no-wrap
23651 msgid "(list (uuid \"4dab5feb-d176-45de-b287-9b0a6e4c01cb\"))"
23652 msgstr ""
23653
23654 #. type: table
23655 #: guix-git/doc/guix.texi:13764
23656 msgid "Use the swap partition with the given UUID@. You can learn the UUID of a Linux swap partition by running @command{swaplabel @var{device}}, where @var{device} is the @file{/dev} file name of that partition."
23657 msgstr ""
23658
23659 #. type: item
23660 #: guix-git/doc/guix.texi:13765
23661 #, no-wrap
23662 msgid "(list (file-system-label \"swap\"))"
23663 msgstr ""
23664
23665 #. type: table
23666 #: guix-git/doc/guix.texi:13769
23667 msgid "Use the partition with label @code{swap}. Again, the @command{swaplabel} command allows you to view and change the label of a Linux swap partition."
23668 msgstr ""
23669
23670 #. type: item
23671 #: guix-git/doc/guix.texi:13770
23672 #, no-wrap
23673 msgid "(list \"/swapfile\")"
23674 msgstr ""
23675
23676 #. type: table
23677 #: guix-git/doc/guix.texi:13772
23678 msgid "Use the file @file{/swapfile} as swap space."
23679 msgstr ""
23680
23681 #. type: item
23682 #: guix-git/doc/guix.texi:13773
23683 #, no-wrap
23684 msgid "(list \"/dev/sda3\" \"/dev/sdb2\")"
23685 msgstr ""
23686
23687 #. type: table
23688 #: guix-git/doc/guix.texi:13777
23689 msgid "Use the @file{/dev/sda3} and @file{/dev/sdb2} partitions as swap space. We recommend referring to swap devices by UUIDs or labels as shown above instead."
23690 msgstr ""
23691
23692 #. type: table
23693 #: guix-git/doc/guix.texi:13783
23694 msgid "It is possible to specify a swap file in a file system on a mapped device (under @file{/dev/mapper}), provided that the necessary device mapping and file system are also specified. @xref{Mapped Devices} and @ref{File Systems}."
23695 msgstr ""
23696
23697 #. type: item
23698 #: guix-git/doc/guix.texi:13784
23699 #, no-wrap
23700 msgid "@code{users} (default: @code{%base-user-accounts})"
23701 msgstr ""
23702
23703 #. type: itemx
23704 #: guix-git/doc/guix.texi:13785
23705 #, no-wrap
23706 msgid "@code{groups} (default: @code{%base-groups})"
23707 msgstr ""
23708
23709 #. type: table
23710 #: guix-git/doc/guix.texi:13787
23711 msgid "List of user accounts and groups. @xref{User Accounts}."
23712 msgstr ""
23713
23714 #. type: table
23715 #: guix-git/doc/guix.texi:13790
23716 msgid "If the @code{users} list lacks a user account with UID@tie{}0, a ``root'' account with UID@tie{}0 is automatically added."
23717 msgstr ""
23718
23719 #. type: item
23720 #: guix-git/doc/guix.texi:13791
23721 #, no-wrap
23722 msgid "@code{skeletons} (default: @code{(default-skeletons)})"
23723 msgstr ""
23724
23725 #. type: table
23726 #: guix-git/doc/guix.texi:13795
23727 msgid "A list of target file name/file-like object tuples (@pxref{G-Expressions, file-like objects}). These are the skeleton files that will be added to the home directory of newly-created user accounts."
23728 msgstr ""
23729
23730 #. type: table
23731 #: guix-git/doc/guix.texi:13797
23732 msgid "For instance, a valid value may look like this:"
23733 msgstr ""
23734
23735 #. type: lisp
23736 #: guix-git/doc/guix.texi:13803
23737 #, no-wrap
23738 msgid ""
23739 "`((\".bashrc\" ,(plain-file \"bashrc\" \"echo Hello\\n\"))\n"
23740 " (\".guile\" ,(plain-file \"guile\"\n"
23741 " \"(use-modules (ice-9 readline))\n"
23742 " (activate-readline)\")))\n"
23743 msgstr ""
23744
23745 #. type: item
23746 #: guix-git/doc/guix.texi:13805
23747 #, no-wrap
23748 msgid "@code{issue} (default: @code{%default-issue})"
23749 msgstr ""
23750
23751 #. type: table
23752 #: guix-git/doc/guix.texi:13808
23753 msgid "A string denoting the contents of the @file{/etc/issue} file, which is displayed when users log in on a text console."
23754 msgstr ""
23755
23756 #. type: item
23757 #: guix-git/doc/guix.texi:13809
23758 #, no-wrap
23759 msgid "@code{packages} (default: @code{%base-packages})"
23760 msgstr ""
23761
23762 #. type: table
23763 #: guix-git/doc/guix.texi:13813
23764 msgid "A list of packages to be installed in the global profile, which is accessible at @file{/run/current-system/profile}. Each element is either a package variable or a package/output tuple. Here's a simple example of both:"
23765 msgstr ""
23766
23767 #. type: lisp
23768 #: guix-git/doc/guix.texi:13818
23769 #, no-wrap
23770 msgid ""
23771 "(cons* git ; the default \"out\" output\n"
23772 " (list git \"send-email\") ; another output of git\n"
23773 " %base-packages) ; the default set\n"
23774 msgstr ""
23775
23776 #. type: table
23777 #: guix-git/doc/guix.texi:13823
23778 msgid "The default set includes core utilities and it is good practice to install non-core utilities in user profiles (@pxref{Invoking guix package})."
23779 msgstr ""
23780
23781 #. type: code{#1}
23782 #: guix-git/doc/guix.texi:13824
23783 #, no-wrap
23784 msgid "timezone"
23785 msgstr ""
23786
23787 #. type: table
23788 #: guix-git/doc/guix.texi:13826
23789 msgid "A timezone identifying string---e.g., @code{\"Europe/Paris\"}."
23790 msgstr ""
23791
23792 #. type: table
23793 #: guix-git/doc/guix.texi:13830
23794 msgid "You can run the @command{tzselect} command to find out which timezone string corresponds to your region. Choosing an invalid timezone name causes @command{guix system} to fail."
23795 msgstr ""
23796
23797 #. type: item
23798 #: guix-git/doc/guix.texi:13831 guix-git/doc/guix.texi:19734
23799 #, no-wrap
23800 msgid "@code{locale} (default: @code{\"en_US.utf8\"})"
23801 msgstr ""
23802
23803 #. type: table
23804 #: guix-git/doc/guix.texi:13834
23805 msgid "The name of the default locale (@pxref{Locale Names,,, libc, The GNU C Library Reference Manual}). @xref{Locales}, for more information."
23806 msgstr ""
23807
23808 #. type: item
23809 #: guix-git/doc/guix.texi:13835
23810 #, no-wrap
23811 msgid "@code{locale-definitions} (default: @code{%default-locale-definitions})"
23812 msgstr ""
23813
23814 #. type: table
23815 #: guix-git/doc/guix.texi:13838
23816 msgid "The list of locale definitions to be compiled and that may be used at run time. @xref{Locales}."
23817 msgstr ""
23818
23819 #. type: item
23820 #: guix-git/doc/guix.texi:13839
23821 #, no-wrap
23822 msgid "@code{locale-libcs} (default: @code{(list @var{glibc})})"
23823 msgstr ""
23824
23825 #. type: table
23826 #: guix-git/doc/guix.texi:13843
23827 msgid "The list of GNU@tie{}libc packages whose locale data and tools are used to build the locale definitions. @xref{Locales}, for compatibility considerations that justify this option."
23828 msgstr ""
23829
23830 #. type: item
23831 #: guix-git/doc/guix.texi:13844
23832 #, no-wrap
23833 msgid "@code{name-service-switch} (default: @code{%default-nss})"
23834 msgstr ""
23835
23836 #. type: table
23837 #: guix-git/doc/guix.texi:13848
23838 msgid "Configuration of the libc name service switch (NSS)---a @code{<name-service-switch>} object. @xref{Name Service Switch}, for details."
23839 msgstr ""
23840
23841 #. type: item
23842 #: guix-git/doc/guix.texi:13849
23843 #, no-wrap
23844 msgid "@code{services} (default: @code{%base-services})"
23845 msgstr ""
23846
23847 #. type: table
23848 #: guix-git/doc/guix.texi:13851
23849 msgid "A list of service objects denoting system services. @xref{Services}."
23850 msgstr ""
23851
23852 #. type: cindex
23853 #: guix-git/doc/guix.texi:13852
23854 #, no-wrap
23855 msgid "essential services"
23856 msgstr ""
23857
23858 #. type: item
23859 #: guix-git/doc/guix.texi:13853
23860 #, no-wrap
23861 msgid "@code{essential-services} (default: ...)"
23862 msgstr ""
23863
23864 #. type: table
23865 #: guix-git/doc/guix.texi:13858
23866 msgid "The list of ``essential services''---i.e., things like instances of @code{system-service-type} and @code{host-name-service-type} (@pxref{Service Reference}), which are derived from the operating system definition itself. As a user you should @emph{never} need to touch this field."
23867 msgstr ""
23868
23869 #. type: item
23870 #: guix-git/doc/guix.texi:13859
23871 #, no-wrap
23872 msgid "@code{pam-services} (default: @code{(base-pam-services)})"
23873 msgstr ""
23874
23875 #. type: cindex
23876 #: guix-git/doc/guix.texi:13860
23877 #, no-wrap
23878 msgid "PAM"
23879 msgstr ""
23880
23881 #. type: cindex
23882 #: guix-git/doc/guix.texi:13861
23883 #, no-wrap
23884 msgid "pluggable authentication modules"
23885 msgstr ""
23886
23887 #. type: table
23888 #: guix-git/doc/guix.texi:13864
23889 msgid "Linux @dfn{pluggable authentication module} (PAM) services."
23890 msgstr ""
23891
23892 #. type: item
23893 #: guix-git/doc/guix.texi:13865
23894 #, no-wrap
23895 msgid "@code{setuid-programs} (default: @code{%setuid-programs})"
23896 msgstr ""
23897
23898 #. type: table
23899 #: guix-git/doc/guix.texi:13868
23900 msgid "List of string-valued G-expressions denoting setuid programs. @xref{Setuid Programs}."
23901 msgstr ""
23902
23903 #. type: item
23904 #: guix-git/doc/guix.texi:13869
23905 #, no-wrap
23906 msgid "@code{sudoers-file} (default: @code{%sudoers-specification})"
23907 msgstr ""
23908
23909 #. type: cindex
23910 #: guix-git/doc/guix.texi:13870
23911 #, no-wrap
23912 msgid "sudoers file"
23913 msgstr ""
23914
23915 #. type: table
23916 #: guix-git/doc/guix.texi:13873
23917 msgid "The contents of the @file{/etc/sudoers} file as a file-like object (@pxref{G-Expressions, @code{local-file} and @code{plain-file}})."
23918 msgstr ""
23919
23920 #. type: table
23921 #: guix-git/doc/guix.texi:13878
23922 msgid "This file specifies which users can use the @command{sudo} command, what they are allowed to do, and what privileges they may gain. The default is that only @code{root} and members of the @code{wheel} group may use @code{sudo}."
23923 msgstr ""
23924
23925 #. type: deffn
23926 #: guix-git/doc/guix.texi:13881
23927 #, no-wrap
23928 msgid "{Scheme Syntax} this-operating-system"
23929 msgstr ""
23930
23931 #. type: deffn
23932 #: guix-git/doc/guix.texi:13884
23933 msgid "When used in the @emph{lexical scope} of an operating system field definition, this identifier resolves to the operating system being defined."
23934 msgstr ""
23935
23936 #. type: deffn
23937 #: guix-git/doc/guix.texi:13887
23938 msgid "The example below shows how to refer to the operating system being defined in the definition of the @code{label} field:"
23939 msgstr ""
23940
23941 #. type: lisp
23942 #: guix-git/doc/guix.texi:13890 guix-git/doc/guix.texi:17352
23943 #, no-wrap
23944 msgid ""
23945 "(use-modules (gnu) (guix))\n"
23946 "\n"
23947 msgstr ""
23948
23949 #. type: lisp
23950 #: guix-git/doc/guix.texi:13895
23951 #, no-wrap
23952 msgid ""
23953 "(operating-system\n"
23954 " ;; ...\n"
23955 " (label (package-full-name\n"
23956 " (operating-system-kernel this-operating-system))))\n"
23957 msgstr ""
23958
23959 #. type: deffn
23960 #: guix-git/doc/guix.texi:13899
23961 msgid "It is an error to refer to @code{this-operating-system} outside an operating system definition."
23962 msgstr ""
23963
23964 #. type: Plain text
23965 #: guix-git/doc/guix.texi:13910
23966 msgid "The list of file systems to be mounted is specified in the @code{file-systems} field of the operating system declaration (@pxref{Using the Configuration System}). Each file system is declared using the @code{file-system} form, like this:"
23967 msgstr ""
23968
23969 #. type: lisp
23970 #: guix-git/doc/guix.texi:13916
23971 #, no-wrap
23972 msgid ""
23973 "(file-system\n"
23974 " (mount-point \"/home\")\n"
23975 " (device \"/dev/sda3\")\n"
23976 " (type \"ext4\"))\n"
23977 msgstr ""
23978
23979 #. type: Plain text
23980 #: guix-git/doc/guix.texi:13920
23981 msgid "As usual, some of the fields are mandatory---those shown in the example above---while others can be omitted. These are described below."
23982 msgstr ""
23983
23984 #. type: deftp
23985 #: guix-git/doc/guix.texi:13921
23986 #, no-wrap
23987 msgid "{Data Type} file-system"
23988 msgstr ""
23989
23990 #. type: deftp
23991 #: guix-git/doc/guix.texi:13924
23992 msgid "Objects of this type represent file systems to be mounted. They contain the following members:"
23993 msgstr ""
23994
23995 #. type: item
23996 #: guix-git/doc/guix.texi:13926 guix-git/doc/guix.texi:14276
23997 #, no-wrap
23998 msgid "type"
23999 msgstr ""
24000
24001 #. type: table
24002 #: guix-git/doc/guix.texi:13929
24003 msgid "This is a string specifying the type of the file system---e.g., @code{\"ext4\"}."
24004 msgstr ""
24005
24006 #. type: code{#1}
24007 #: guix-git/doc/guix.texi:13930
24008 #, no-wrap
24009 msgid "mount-point"
24010 msgstr ""
24011
24012 #. type: table
24013 #: guix-git/doc/guix.texi:13932
24014 msgid "This designates the place where the file system is to be mounted."
24015 msgstr ""
24016
24017 #. type: code{#1}
24018 #: guix-git/doc/guix.texi:13933
24019 #, no-wrap
24020 msgid "device"
24021 msgstr ""
24022
24023 #. type: table
24024 #: guix-git/doc/guix.texi:13943
24025 msgid "This names the ``source'' of the file system. It can be one of three things: a file system label, a file system UUID, or the name of a @file{/dev} node. Labels and UUIDs offer a way to refer to file systems without having to hard-code their actual device name@footnote{Note that, while it is tempting to use @file{/dev/disk/by-uuid} and similar device names to achieve the same result, this is not recommended: These special device nodes are created by the udev daemon and may be unavailable at the time the device is mounted.}."
24026 msgstr ""
24027
24028 #. type: findex
24029 #: guix-git/doc/guix.texi:13944
24030 #, no-wrap
24031 msgid "file-system-label"
24032 msgstr ""
24033
24034 #. type: table
24035 #: guix-git/doc/guix.texi:13949
24036 msgid "File system labels are created using the @code{file-system-label} procedure, UUIDs are created using @code{uuid}, and @file{/dev} node are plain strings. Here's an example of a file system referred to by its label, as shown by the @command{e2label} command:"
24037 msgstr ""
24038
24039 #. type: lisp
24040 #: guix-git/doc/guix.texi:13955
24041 #, no-wrap
24042 msgid ""
24043 "(file-system\n"
24044 " (mount-point \"/home\")\n"
24045 " (type \"ext4\")\n"
24046 " (device (file-system-label \"my-home\")))\n"
24047 msgstr ""
24048
24049 #. type: code{#1}
24050 #: guix-git/doc/guix.texi:13957 guix-git/doc/guix.texi:31197
24051 #: guix-git/doc/guix.texi:31213
24052 #, no-wrap
24053 msgid "uuid"
24054 msgstr ""
24055
24056 #. type: table
24057 #: guix-git/doc/guix.texi:13965
24058 msgid "UUIDs are converted from their string representation (as shown by the @command{tune2fs -l} command) using the @code{uuid} form@footnote{The @code{uuid} form expects 16-byte UUIDs as defined in @uref{https://tools.ietf.org/html/rfc4122, RFC@tie{}4122}. This is the form of UUID used by the ext2 family of file systems and others, but it is different from ``UUIDs'' found in FAT file systems, for instance.}, like this:"
24059 msgstr ""
24060
24061 #. type: lisp
24062 #: guix-git/doc/guix.texi:13971
24063 #, no-wrap
24064 msgid ""
24065 "(file-system\n"
24066 " (mount-point \"/home\")\n"
24067 " (type \"ext4\")\n"
24068 " (device (uuid \"4dab5feb-d176-45de-b287-9b0a6e4c01cb\")))\n"
24069 msgstr ""
24070
24071 #. type: table
24072 #: guix-git/doc/guix.texi:13979
24073 msgid "When the source of a file system is a mapped device (@pxref{Mapped Devices}), its @code{device} field @emph{must} refer to the mapped device name---e.g., @file{\"/dev/mapper/root-partition\"}. This is required so that the system knows that mounting the file system depends on having the corresponding device mapping established."
24074 msgstr ""
24075
24076 #. type: item
24077 #: guix-git/doc/guix.texi:13980
24078 #, no-wrap
24079 msgid "@code{flags} (default: @code{'()})"
24080 msgstr ""
24081
24082 #. type: table
24083 #: guix-git/doc/guix.texi:13990
24084 msgid "This is a list of symbols denoting mount flags. Recognized flags include @code{read-only}, @code{bind-mount}, @code{no-dev} (disallow access to special files), @code{no-suid} (ignore setuid and setgid bits), @code{no-atime} (do not update file access times), @code{strict-atime} (update file access time), @code{lazy-time} (only update time on the in-memory version of the file inode), and @code{no-exec} (disallow program execution). @xref{Mount-Unmount-Remount,,, libc, The GNU C Library Reference Manual}, for more information on these flags."
24085 msgstr ""
24086
24087 #. type: item
24088 #: guix-git/doc/guix.texi:13991
24089 #, no-wrap
24090 msgid "@code{options} (default: @code{#f})"
24091 msgstr ""
24092
24093 #. type: table
24094 #: guix-git/doc/guix.texi:14000
24095 msgid "This is either @code{#f}, or a string denoting mount options passed to the file system driver. @xref{Mount-Unmount-Remount,,, libc, The GNU C Library Reference Manual}, for details and run @command{man 8 mount} for options for various file systems. Note that the @code{file-system-options->alist} and @code{alist->file-system-options} procedures from @code{(gnu system file-systems)} can be used to convert file system options given as an association list to the string representation, and vice-versa."
24096 msgstr ""
24097
24098 #. type: item
24099 #: guix-git/doc/guix.texi:14001
24100 #, no-wrap
24101 msgid "@code{mount?} (default: @code{#t})"
24102 msgstr ""
24103
24104 #. type: table
24105 #: guix-git/doc/guix.texi:14006
24106 msgid "This value indicates whether to automatically mount the file system when the system is brought up. When set to @code{#f}, the file system gets an entry in @file{/etc/fstab} (read by the @command{mount} command) but is not automatically mounted."
24107 msgstr ""
24108
24109 #. type: item
24110 #: guix-git/doc/guix.texi:14007
24111 #, no-wrap
24112 msgid "@code{needed-for-boot?} (default: @code{#f})"
24113 msgstr ""
24114
24115 #. type: table
24116 #: guix-git/doc/guix.texi:14012
24117 msgid "This Boolean value indicates whether the file system is needed when booting. If that is true, then the file system is mounted when the initial RAM disk (initrd) is loaded. This is always the case, for instance, for the root file system."
24118 msgstr ""
24119
24120 #. type: item
24121 #: guix-git/doc/guix.texi:14013
24122 #, no-wrap
24123 msgid "@code{check?} (default: @code{#t})"
24124 msgstr ""
24125
24126 #. type: table
24127 #: guix-git/doc/guix.texi:14016
24128 msgid "This Boolean indicates whether the file system needs to be checked for errors before being mounted."
24129 msgstr ""
24130
24131 #. type: item
24132 #: guix-git/doc/guix.texi:14017
24133 #, no-wrap
24134 msgid "@code{create-mount-point?} (default: @code{#f})"
24135 msgstr ""
24136
24137 #. type: table
24138 #: guix-git/doc/guix.texi:14019
24139 msgid "When true, the mount point is created if it does not exist yet."
24140 msgstr ""
24141
24142 #. type: item
24143 #: guix-git/doc/guix.texi:14020
24144 #, no-wrap
24145 msgid "@code{mount-may-fail?} (default: @code{#f})"
24146 msgstr ""
24147
24148 #. type: table
24149 #: guix-git/doc/guix.texi:14025
24150 msgid "When true, this indicates that mounting this file system can fail but that should not be considered an error. This is useful in unusual cases; an example of this is @code{efivarfs}, a file system that can only be mounted on EFI/UEFI systems."
24151 msgstr ""
24152
24153 #. type: item
24154 #: guix-git/doc/guix.texi:14026
24155 #, no-wrap
24156 msgid "@code{dependencies} (default: @code{'()})"
24157 msgstr ""
24158
24159 #. type: table
24160 #: guix-git/doc/guix.texi:14030
24161 msgid "This is a list of @code{<file-system>} or @code{<mapped-device>} objects representing file systems that must be mounted or mapped devices that must be opened before (and unmounted or closed after) this one."
24162 msgstr ""
24163
24164 #. type: table
24165 #: guix-git/doc/guix.texi:14034
24166 msgid "As an example, consider a hierarchy of mounts: @file{/sys/fs/cgroup} is a dependency of @file{/sys/fs/cgroup/cpu} and @file{/sys/fs/cgroup/memory}."
24167 msgstr ""
24168
24169 #. type: table
24170 #: guix-git/doc/guix.texi:14037
24171 msgid "Another example is a file system that depends on a mapped device, for example for an encrypted partition (@pxref{Mapped Devices})."
24172 msgstr ""
24173
24174 #. type: deffn
24175 #: guix-git/doc/guix.texi:14040
24176 #, no-wrap
24177 msgid "{Scheme Procedure} file-system-label @var{str}"
24178 msgstr ""
24179
24180 #. type: deffn
24181 #: guix-git/doc/guix.texi:14043
24182 msgid "This procedure returns an opaque file system label from @var{str}, a string:"
24183 msgstr ""
24184
24185 #. type: lisp
24186 #: guix-git/doc/guix.texi:14047
24187 #, no-wrap
24188 msgid ""
24189 "(file-system-label \"home\")\n"
24190 "@result{} #<file-system-label \"home\">\n"
24191 msgstr ""
24192
24193 #. type: deffn
24194 #: guix-git/doc/guix.texi:14051
24195 msgid "File system labels are used to refer to file systems by label rather than by device name. See above for examples."
24196 msgstr ""
24197
24198 #. type: Plain text
24199 #: guix-git/doc/guix.texi:14055
24200 msgid "The @code{(gnu system file-systems)} exports the following useful variables."
24201 msgstr ""
24202
24203 #. type: defvr
24204 #: guix-git/doc/guix.texi:14056
24205 #, no-wrap
24206 msgid "{Scheme Variable} %base-file-systems"
24207 msgstr ""
24208
24209 #. type: defvr
24210 #: guix-git/doc/guix.texi:14061
24211 msgid "These are essential file systems that are required on normal systems, such as @code{%pseudo-terminal-file-system} and @code{%immutable-store} (see below). Operating system declarations should always contain at least these."
24212 msgstr ""
24213
24214 #. type: defvr
24215 #: guix-git/doc/guix.texi:14063
24216 #, no-wrap
24217 msgid "{Scheme Variable} %pseudo-terminal-file-system"
24218 msgstr ""
24219
24220 #. type: defvr
24221 #: guix-git/doc/guix.texi:14069
24222 msgid "This is the file system to be mounted as @file{/dev/pts}. It supports @dfn{pseudo-terminals} created @i{via} @code{openpty} and similar functions (@pxref{Pseudo-Terminals,,, libc, The GNU C Library Reference Manual}). Pseudo-terminals are used by terminal emulators such as @command{xterm}."
24223 msgstr ""
24224
24225 #. type: defvr
24226 #: guix-git/doc/guix.texi:14071
24227 #, no-wrap
24228 msgid "{Scheme Variable} %shared-memory-file-system"
24229 msgstr ""
24230
24231 #. type: defvr
24232 #: guix-git/doc/guix.texi:14075
24233 msgid "This file system is mounted as @file{/dev/shm} and is used to support memory sharing across processes (@pxref{Memory-mapped I/O, @code{shm_open},, libc, The GNU C Library Reference Manual})."
24234 msgstr ""
24235
24236 #. type: defvr
24237 #: guix-git/doc/guix.texi:14077
24238 #, no-wrap
24239 msgid "{Scheme Variable} %immutable-store"
24240 msgstr ""
24241
24242 #. type: defvr
24243 #: guix-git/doc/guix.texi:14082
24244 msgid "This file system performs a read-only ``bind mount'' of @file{/gnu/store}, making it read-only for all the users including @code{root}. This prevents against accidental modification by software running as @code{root} or by system administrators."
24245 msgstr ""
24246
24247 #. type: defvr
24248 #: guix-git/doc/guix.texi:14085
24249 msgid "The daemon itself is still able to write to the store: it remounts it read-write in its own ``name space.''"
24250 msgstr ""
24251
24252 #. type: defvr
24253 #: guix-git/doc/guix.texi:14087
24254 #, no-wrap
24255 msgid "{Scheme Variable} %binary-format-file-system"
24256 msgstr ""
24257
24258 #. type: defvr
24259 #: guix-git/doc/guix.texi:14091
24260 msgid "The @code{binfmt_misc} file system, which allows handling of arbitrary executable file types to be delegated to user space. This requires the @code{binfmt.ko} kernel module to be loaded."
24261 msgstr ""
24262
24263 #. type: defvr
24264 #: guix-git/doc/guix.texi:14093
24265 #, no-wrap
24266 msgid "{Scheme Variable} %fuse-control-file-system"
24267 msgstr ""
24268
24269 #. type: defvr
24270 #: guix-git/doc/guix.texi:14097
24271 msgid "The @code{fusectl} file system, which allows unprivileged users to mount and unmount user-space FUSE file systems. This requires the @code{fuse.ko} kernel module to be loaded."
24272 msgstr ""
24273
24274 #. type: Plain text
24275 #: guix-git/doc/guix.texi:14101
24276 msgid "The @code{(gnu system uuid)} module provides tools to deal with file system ``unique identifiers'' (UUIDs)."
24277 msgstr ""
24278
24279 #. type: deffn
24280 #: guix-git/doc/guix.texi:14102
24281 #, no-wrap
24282 msgid "{Scheme Procedure} uuid @var{str} [@var{type}]"
24283 msgstr ""
24284
24285 #. type: deffn
24286 #: guix-git/doc/guix.texi:14105
24287 msgid "Return an opaque UUID (unique identifier) object of the given @var{type} (a symbol) by parsing @var{str} (a string):"
24288 msgstr ""
24289
24290 #. type: lisp
24291 #: guix-git/doc/guix.texi:14109
24292 #, no-wrap
24293 msgid ""
24294 "(uuid \"4dab5feb-d176-45de-b287-9b0a6e4c01cb\")\n"
24295 "@result{} #<<uuid> type: dce bv: @dots{}>\n"
24296 "\n"
24297 msgstr ""
24298
24299 #. type: lisp
24300 #: guix-git/doc/guix.texi:14112
24301 #, no-wrap
24302 msgid ""
24303 "(uuid \"1234-ABCD\" 'fat)\n"
24304 "@result{} #<<uuid> type: fat bv: @dots{}>\n"
24305 msgstr ""
24306
24307 #. type: deffn
24308 #: guix-git/doc/guix.texi:14116
24309 msgid "@var{type} may be one of @code{dce}, @code{iso9660}, @code{fat}, @code{ntfs}, or one of the commonly found synonyms for these."
24310 msgstr ""
24311
24312 #. type: deffn
24313 #: guix-git/doc/guix.texi:14119
24314 msgid "UUIDs are another way to unambiguously refer to file systems in operating system configuration. See the examples above."
24315 msgstr ""
24316
24317 #. type: subsection
24318 #: guix-git/doc/guix.texi:14122 guix-git/doc/guix.texi:14123
24319 #, no-wrap
24320 msgid "Btrfs file system"
24321 msgstr ""
24322
24323 #. type: Plain text
24324 #: guix-git/doc/guix.texi:14129
24325 msgid "The Btrfs has special features, such as subvolumes, that merit being explained in more details. The following section attempts to cover basic as well as complex uses of a Btrfs file system with the Guix System."
24326 msgstr ""
24327
24328 #. type: Plain text
24329 #: guix-git/doc/guix.texi:14132
24330 msgid "In its simplest usage, a Btrfs file system can be described, for example, by:"
24331 msgstr ""
24332
24333 #. type: lisp
24334 #: guix-git/doc/guix.texi:14138
24335 #, no-wrap
24336 msgid ""
24337 "(file-system\n"
24338 " (mount-point \"/home\")\n"
24339 " (type \"btrfs\")\n"
24340 " (device (file-system-label \"my-home\")))\n"
24341 msgstr ""
24342
24343 #. type: Plain text
24344 #: guix-git/doc/guix.texi:14144
24345 msgid "The example below is more complex, as it makes use of a Btrfs subvolume, named @code{rootfs}. The parent Btrfs file system is labeled @code{my-btrfs-pool}, and is located on an encrypted device (hence the dependency on @code{mapped-devices}):"
24346 msgstr ""
24347
24348 #. type: lisp
24349 #: guix-git/doc/guix.texi:14152
24350 #, no-wrap
24351 msgid ""
24352 "(file-system\n"
24353 " (device (file-system-label \"my-btrfs-pool\"))\n"
24354 " (mount-point \"/\")\n"
24355 " (type \"btrfs\")\n"
24356 " (options \"subvol=rootfs\")\n"
24357 " (dependencies mapped-devices))\n"
24358 msgstr ""
24359
24360 #. type: Plain text
24361 #: guix-git/doc/guix.texi:14163
24362 msgid "Some bootloaders, for example GRUB, only mount a Btrfs partition at its top level during the early boot, and rely on their configuration to refer to the correct subvolume path within that top level. The bootloaders operating in this way typically produce their configuration on a running system where the Btrfs partitions are already mounted and where the subvolume information is readily available. As an example, @command{grub-mkconfig}, the configuration generator command shipped with GRUB, reads @file{/proc/self/mountinfo} to determine the top-level path of a subvolume."
24363 msgstr ""
24364
24365 #. type: Plain text
24366 #: guix-git/doc/guix.texi:14171
24367 msgid "The Guix System produces a bootloader configuration using the operating system configuration as its sole input; it is therefore necessary to extract the subvolume name on which @file{/gnu/store} lives (if any) from that operating system configuration. To better illustrate, consider a subvolume named 'rootfs' which contains the root file system data. In such situation, the GRUB bootloader would only see the top level of the root Btrfs partition, e.g.:"
24368 msgstr ""
24369
24370 #. type: example
24371 #: guix-git/doc/guix.texi:14178
24372 #, no-wrap
24373 msgid ""
24374 "/ (top level)\n"
24375 "├── rootfs (subvolume directory)\n"
24376 " ├── gnu (normal directory)\n"
24377 " ├── store (normal directory)\n"
24378 "[...]\n"
24379 msgstr ""
24380
24381 #. type: Plain text
24382 #: guix-git/doc/guix.texi:14183
24383 msgid "Thus, the subvolume name must be prepended to the @file{/gnu/store} path of the kernel, initrd binaries and any other files referred to in the GRUB configuration that must be found during the early boot."
24384 msgstr ""
24385
24386 #. type: Plain text
24387 #: guix-git/doc/guix.texi:14186
24388 msgid "The next example shows a nested hierarchy of subvolumes and directories:"
24389 msgstr ""
24390
24391 #. type: example
24392 #: guix-git/doc/guix.texi:14193
24393 #, no-wrap
24394 msgid ""
24395 "/ (top level)\n"
24396 "├── rootfs (subvolume)\n"
24397 " ├── gnu (normal directory)\n"
24398 " ├── store (subvolume)\n"
24399 "[...]\n"
24400 msgstr ""
24401
24402 #. type: Plain text
24403 #: guix-git/doc/guix.texi:14200
24404 msgid "This scenario would work without mounting the 'store' subvolume. Mounting 'rootfs' is sufficient, since the subvolume name matches its intended mount point in the file system hierarchy. Alternatively, the 'store' subvolume could be referred to by setting the @code{subvol} option to either @code{/rootfs/gnu/store} or @code{rootfs/gnu/store}."
24405 msgstr ""
24406
24407 #. type: Plain text
24408 #: guix-git/doc/guix.texi:14202
24409 msgid "Finally, a more contrived example of nested subvolumes:"
24410 msgstr ""
24411
24412 #. type: example
24413 #: guix-git/doc/guix.texi:14209
24414 #, no-wrap
24415 msgid ""
24416 "/ (top level)\n"
24417 "├── root-snapshots (subvolume)\n"
24418 " ├── root-current (subvolume)\n"
24419 " ├── guix-store (subvolume)\n"
24420 "[...]\n"
24421 msgstr ""
24422
24423 #. type: Plain text
24424 #: guix-git/doc/guix.texi:14216
24425 msgid "Here, the 'guix-store' subvolume doesn't match its intended mount point, so it is necessary to mount it. The subvolume must be fully specified, by passing its file name to the @code{subvol} option. To illustrate, the 'guix-store' subvolume could be mounted on @file{/gnu/store} by using a file system declaration such as:"
24426 msgstr ""
24427
24428 #. type: lisp
24429 #: guix-git/doc/guix.texi:14224
24430 #, no-wrap
24431 msgid ""
24432 "(file-system\n"
24433 " (device (file-system-label \"btrfs-pool-1\"))\n"
24434 " (mount-point \"/gnu/store\")\n"
24435 " (type \"btrfs\")\n"
24436 " (options \"subvol=root-snapshots/root-current/guix-store,\\\n"
24437 "compress-force=zstd,space_cache=v2\"))\n"
24438 msgstr ""
24439
24440 #. type: cindex
24441 #: guix-git/doc/guix.texi:14229
24442 #, no-wrap
24443 msgid "device mapping"
24444 msgstr ""
24445
24446 #. type: cindex
24447 #: guix-git/doc/guix.texi:14230
24448 #, no-wrap
24449 msgid "mapped devices"
24450 msgstr ""
24451
24452 #. type: Plain text
24453 #: guix-git/doc/guix.texi:14247
24454 msgid "The Linux kernel has a notion of @dfn{device mapping}: a block device, such as a hard disk partition, can be @dfn{mapped} into another device, usually in @code{/dev/mapper/}, with additional processing over the data that flows through it@footnote{Note that the GNU@tie{}Hurd makes no difference between the concept of a ``mapped device'' and that of a file system: both boil down to @emph{translating} input/output operations made on a file to operations on its backing store. Thus, the Hurd implements mapped devices, like file systems, using the generic @dfn{translator} mechanism (@pxref{Translators,,, hurd, The GNU Hurd Reference Manual}).}. A typical example is encryption device mapping: all writes to the mapped device are encrypted, and all reads are deciphered, transparently. Guix extends this notion by considering any device or set of devices that are @dfn{transformed} in some way to create a new device; for instance, RAID devices are obtained by @dfn{assembling} several other devices, such as hard disks or partitions, into a new one that behaves as one partition."
24455 msgstr ""
24456
24457 #. type: Plain text
24458 #: guix-git/doc/guix.texi:14250
24459 msgid "Mapped devices are declared using the @code{mapped-device} form, defined as follows; for examples, see below."
24460 msgstr ""
24461
24462 #. type: deftp
24463 #: guix-git/doc/guix.texi:14251
24464 #, no-wrap
24465 msgid "{Data Type} mapped-device"
24466 msgstr ""
24467
24468 #. type: deftp
24469 #: guix-git/doc/guix.texi:14254
24470 msgid "Objects of this type represent device mappings that will be made when the system boots up."
24471 msgstr ""
24472
24473 #. type: table
24474 #: guix-git/doc/guix.texi:14261
24475 msgid "This is either a string specifying the name of the block device to be mapped, such as @code{\"/dev/sda3\"}, or a list of such strings when several devices need to be assembled for creating a new one. In case of LVM this is a string specifying name of the volume group to be mapped."
24476 msgstr ""
24477
24478 #. type: code{#1}
24479 #: guix-git/doc/guix.texi:14262 guix-git/doc/guix.texi:32551
24480 #, no-wrap
24481 msgid "target"
24482 msgstr ""
24483
24484 #. type: table
24485 #: guix-git/doc/guix.texi:14271
24486 msgid "This string specifies the name of the resulting mapped device. For kernel mappers such as encrypted devices of type @code{luks-device-mapping}, specifying @code{\"my-partition\"} leads to the creation of the @code{\"/dev/mapper/my-partition\"} device. For RAID devices of type @code{raid-device-mapping}, the full device name such as @code{\"/dev/md0\"} needs to be given. LVM logical volumes of type @code{lvm-device-mapping} need to be specified as @code{\"VGNAME-LVNAME\"}."
24487 msgstr ""
24488
24489 #. type: item
24490 #: guix-git/doc/guix.texi:14272
24491 #, no-wrap
24492 msgid "targets"
24493 msgstr ""
24494
24495 #. type: table
24496 #: guix-git/doc/guix.texi:14275
24497 msgid "This list of strings specifies names of the resulting mapped devices in case there are several. The format is identical to @var{target}."
24498 msgstr ""
24499
24500 #. type: table
24501 #: guix-git/doc/guix.texi:14279
24502 msgid "This must be a @code{mapped-device-kind} object, which specifies how @var{source} is mapped to @var{target}."
24503 msgstr ""
24504
24505 #. type: defvr
24506 #: guix-git/doc/guix.texi:14282
24507 #, no-wrap
24508 msgid "{Scheme Variable} luks-device-mapping"
24509 msgstr ""
24510
24511 #. type: defvr
24512 #: guix-git/doc/guix.texi:14286
24513 msgid "This defines LUKS block device encryption using the @command{cryptsetup} command from the package with the same name. It relies on the @code{dm-crypt} Linux kernel module."
24514 msgstr ""
24515
24516 #. type: defvr
24517 #: guix-git/doc/guix.texi:14288
24518 #, no-wrap
24519 msgid "{Scheme Variable} raid-device-mapping"
24520 msgstr ""
24521
24522 #. type: defvr
24523 #: guix-git/doc/guix.texi:14293
24524 msgid "This defines a RAID device, which is assembled using the @code{mdadm} command from the package with the same name. It requires a Linux kernel module for the appropriate RAID level to be loaded, such as @code{raid456} for RAID-4, RAID-5 or RAID-6, or @code{raid10} for RAID-10."
24525 msgstr ""
24526
24527 #. type: cindex
24528 #: guix-git/doc/guix.texi:14295
24529 #, no-wrap
24530 msgid "LVM, logical volume manager"
24531 msgstr ""
24532
24533 #. type: defvr
24534 #: guix-git/doc/guix.texi:14296
24535 #, no-wrap
24536 msgid "{Scheme Variable} lvm-device-mapping"
24537 msgstr ""
24538
24539 #. type: defvr
24540 #: guix-git/doc/guix.texi:14301
24541 msgid "This defines one or more logical volumes for the Linux @uref{https://www.sourceware.org/lvm2/, Logical Volume Manager (LVM)}. The volume group is activated by the @command{vgchange} command from the @code{lvm2} package."
24542 msgstr ""
24543
24544 #. type: cindex
24545 #: guix-git/doc/guix.texi:14303
24546 #, no-wrap
24547 msgid "disk encryption"
24548 msgstr ""
24549
24550 #. type: cindex
24551 #: guix-git/doc/guix.texi:14304
24552 #, no-wrap
24553 msgid "LUKS"
24554 msgstr ""
24555
24556 #. type: Plain text
24557 #: guix-git/doc/guix.texi:14312
24558 msgid "The following example specifies a mapping from @file{/dev/sda3} to @file{/dev/mapper/home} using LUKS---the @url{https://gitlab.com/cryptsetup/cryptsetup,Linux Unified Key Setup}, a standard mechanism for disk encryption. The @file{/dev/mapper/home} device can then be used as the @code{device} of a @code{file-system} declaration (@pxref{File Systems})."
24559 msgstr ""
24560
24561 #. type: lisp
24562 #: guix-git/doc/guix.texi:14318
24563 #, no-wrap
24564 msgid ""
24565 "(mapped-device\n"
24566 " (source \"/dev/sda3\")\n"
24567 " (target \"home\")\n"
24568 " (type luks-device-mapping))\n"
24569 msgstr ""
24570
24571 #. type: Plain text
24572 #: guix-git/doc/guix.texi:14323
24573 msgid "Alternatively, to become independent of device numbering, one may obtain the LUKS UUID (@dfn{unique identifier}) of the source device by a command like:"
24574 msgstr ""
24575
24576 #. type: example
24577 #: guix-git/doc/guix.texi:14326
24578 #, no-wrap
24579 msgid "cryptsetup luksUUID /dev/sda3\n"
24580 msgstr ""
24581
24582 #. type: Plain text
24583 #: guix-git/doc/guix.texi:14329
24584 msgid "and use it as follows:"
24585 msgstr ""
24586
24587 #. type: lisp
24588 #: guix-git/doc/guix.texi:14335
24589 #, no-wrap
24590 msgid ""
24591 "(mapped-device\n"
24592 " (source (uuid \"cb67fc72-0d54-4c88-9d4b-b225f30b0f44\"))\n"
24593 " (target \"home\")\n"
24594 " (type luks-device-mapping))\n"
24595 msgstr ""
24596
24597 #. type: cindex
24598 #: guix-git/doc/guix.texi:14337
24599 #, no-wrap
24600 msgid "swap encryption"
24601 msgstr ""
24602
24603 #. type: Plain text
24604 #: guix-git/doc/guix.texi:14343
24605 msgid "It is also desirable to encrypt swap space, since swap space may contain sensitive data. One way to accomplish that is to use a swap file in a file system on a device mapped via LUKS encryption. In this way, the swap file is encrypted because the entire device is encrypted. @xref{Preparing for Installation,,Disk Partitioning}, for an example."
24606 msgstr ""
24607
24608 #. type: Plain text
24609 #: guix-git/doc/guix.texi:14346
24610 msgid "A RAID device formed of the partitions @file{/dev/sda1} and @file{/dev/sdb1} may be declared as follows:"
24611 msgstr ""
24612
24613 #. type: lisp
24614 #: guix-git/doc/guix.texi:14352
24615 #, no-wrap
24616 msgid ""
24617 "(mapped-device\n"
24618 " (source (list \"/dev/sda1\" \"/dev/sdb1\"))\n"
24619 " (target \"/dev/md0\")\n"
24620 " (type raid-device-mapping))\n"
24621 msgstr ""
24622
24623 #. type: Plain text
24624 #: guix-git/doc/guix.texi:14359
24625 msgid "The @file{/dev/md0} device can then be used as the @code{device} of a @code{file-system} declaration (@pxref{File Systems}). Note that the RAID level need not be given; it is chosen during the initial creation and formatting of the RAID device and is determined automatically later."
24626 msgstr ""
24627
24628 #. type: Plain text
24629 #: guix-git/doc/guix.texi:14362
24630 msgid "LVM logical volumes ``alpha'' and ``beta'' from volume group ``vg0'' can be declared as follows:"
24631 msgstr ""
24632
24633 #. type: lisp
24634 #: guix-git/doc/guix.texi:14368
24635 #, no-wrap
24636 msgid ""
24637 "(mapped-device\n"
24638 " (source \"vg0\")\n"
24639 " (targets (list \"vg0-alpha\" \"vg0-beta\"))\n"
24640 " (type lvm-device-mapping))\n"
24641 msgstr ""
24642
24643 #. type: Plain text
24644 #: guix-git/doc/guix.texi:14373
24645 msgid "Devices @file{/dev/mapper/vg0-alpha} and @file{/dev/mapper/vg0-beta} can then be used as the @code{device} of a @code{file-system} declaration (@pxref{File Systems})."
24646 msgstr ""
24647
24648 #. type: cindex
24649 #: guix-git/doc/guix.texi:14377
24650 #, no-wrap
24651 msgid "users"
24652 msgstr ""
24653
24654 #. type: cindex
24655 #: guix-git/doc/guix.texi:14378
24656 #, no-wrap
24657 msgid "accounts"
24658 msgstr ""
24659
24660 #. type: cindex
24661 #: guix-git/doc/guix.texi:14379
24662 #, no-wrap
24663 msgid "user accounts"
24664 msgstr ""
24665
24666 #. type: Plain text
24667 #: guix-git/doc/guix.texi:14383
24668 msgid "User accounts and groups are entirely managed through the @code{operating-system} declaration. They are specified with the @code{user-account} and @code{user-group} forms:"
24669 msgstr ""
24670
24671 #. type: lisp
24672 #: guix-git/doc/guix.texi:14393
24673 #, no-wrap
24674 msgid ""
24675 "(user-account\n"
24676 " (name \"alice\")\n"
24677 " (group \"users\")\n"
24678 " (supplementary-groups '(\"wheel\" ;allow use of sudo, etc.\n"
24679 " \"audio\" ;sound card\n"
24680 " \"video\" ;video devices such as webcams\n"
24681 " \"cdrom\")) ;the good ol' CD-ROM\n"
24682 " (comment \"Bob's sister\"))\n"
24683 msgstr ""
24684
24685 #. type: Plain text
24686 #: guix-git/doc/guix.texi:14397
24687 msgid "Here's a user account that uses a different shell and a custom home directory (the default would be @file{\"/home/bob\"}):"
24688 msgstr ""
24689
24690 #. type: lisp
24691 #: guix-git/doc/guix.texi:14405
24692 #, no-wrap
24693 msgid ""
24694 "(user-account\n"
24695 " (name \"bob\")\n"
24696 " (group \"users\")\n"
24697 " (comment \"Alice's bro\")\n"
24698 " (shell (file-append zsh \"/bin/zsh\"))\n"
24699 " (home-directory \"/home/robert\"))\n"
24700 msgstr ""
24701
24702 #. type: Plain text
24703 #: guix-git/doc/guix.texi:14414
24704 msgid "When booting or upon completion of @command{guix system reconfigure}, the system ensures that only the user accounts and groups specified in the @code{operating-system} declaration exist, and with the specified properties. Thus, account or group creations or modifications made by directly invoking commands such as @command{useradd} are lost upon reconfiguration or reboot. This ensures that the system remains exactly as declared."
24705 msgstr ""
24706
24707 #. type: deftp
24708 #: guix-git/doc/guix.texi:14415
24709 #, no-wrap
24710 msgid "{Data Type} user-account"
24711 msgstr ""
24712
24713 #. type: deftp
24714 #: guix-git/doc/guix.texi:14418
24715 msgid "Objects of this type represent user accounts. The following members may be specified:"
24716 msgstr ""
24717
24718 #. type: table
24719 #: guix-git/doc/guix.texi:14422
24720 msgid "The name of the user account."
24721 msgstr ""
24722
24723 #. type: itemx
24724 #: guix-git/doc/guix.texi:14423 guix-git/doc/guix.texi:32237
24725 #, no-wrap
24726 msgid "group"
24727 msgstr ""
24728
24729 #. type: cindex
24730 #: guix-git/doc/guix.texi:14424 guix-git/doc/guix.texi:14503
24731 #, no-wrap
24732 msgid "groups"
24733 msgstr ""
24734
24735 #. type: table
24736 #: guix-git/doc/guix.texi:14427
24737 msgid "This is the name (a string) or identifier (a number) of the user group this account belongs to."
24738 msgstr ""
24739
24740 #. type: item
24741 #: guix-git/doc/guix.texi:14428
24742 #, no-wrap
24743 msgid "@code{supplementary-groups} (default: @code{'()})"
24744 msgstr ""
24745
24746 #. type: table
24747 #: guix-git/doc/guix.texi:14431
24748 msgid "Optionally, this can be defined as a list of group names that this account belongs to."
24749 msgstr ""
24750
24751 #. type: item
24752 #: guix-git/doc/guix.texi:14432
24753 #, no-wrap
24754 msgid "@code{uid} (default: @code{#f})"
24755 msgstr ""
24756
24757 #. type: table
24758 #: guix-git/doc/guix.texi:14436
24759 msgid "This is the user ID for this account (a number), or @code{#f}. In the latter case, a number is automatically chosen by the system when the account is created."
24760 msgstr ""
24761
24762 #. type: item
24763 #: guix-git/doc/guix.texi:14437
24764 #, no-wrap
24765 msgid "@code{comment} (default: @code{\"\"})"
24766 msgstr ""
24767
24768 #. type: table
24769 #: guix-git/doc/guix.texi:14439
24770 msgid "A comment about the account, such as the account owner's full name."
24771 msgstr ""
24772
24773 #. type: code{#1}
24774 #: guix-git/doc/guix.texi:14440
24775 #, no-wrap
24776 msgid "home-directory"
24777 msgstr ""
24778
24779 #. type: table
24780 #: guix-git/doc/guix.texi:14442
24781 msgid "This is the name of the home directory for the account."
24782 msgstr ""
24783
24784 #. type: item
24785 #: guix-git/doc/guix.texi:14443
24786 #, no-wrap
24787 msgid "@code{create-home-directory?} (default: @code{#t})"
24788 msgstr ""
24789
24790 #. type: table
24791 #: guix-git/doc/guix.texi:14446
24792 msgid "Indicates whether the home directory of this account should be created if it does not exist yet."
24793 msgstr ""
24794
24795 #. type: item
24796 #: guix-git/doc/guix.texi:14447
24797 #, no-wrap
24798 msgid "@code{shell} (default: Bash)"
24799 msgstr ""
24800
24801 #. type: table
24802 #: guix-git/doc/guix.texi:14451
24803 msgid "This is a G-expression denoting the file name of a program to be used as the shell (@pxref{G-Expressions}). For example, you would refer to the Bash executable like this:"
24804 msgstr ""
24805
24806 #. type: lisp
24807 #: guix-git/doc/guix.texi:14454
24808 #, no-wrap
24809 msgid "(file-append bash \"/bin/bash\")\n"
24810 msgstr ""
24811
24812 #. type: table
24813 #: guix-git/doc/guix.texi:14458
24814 msgid "... and to the Zsh executable like that:"
24815 msgstr ""
24816
24817 #. type: lisp
24818 #: guix-git/doc/guix.texi:14461
24819 #, no-wrap
24820 msgid "(file-append zsh \"/bin/zsh\")\n"
24821 msgstr ""
24822
24823 #. type: item
24824 #: guix-git/doc/guix.texi:14463 guix-git/doc/guix.texi:14521
24825 #, no-wrap
24826 msgid "@code{system?} (default: @code{#f})"
24827 msgstr ""
24828
24829 #. type: table
24830 #: guix-git/doc/guix.texi:14467
24831 msgid "This Boolean value indicates whether the account is a ``system'' account. System accounts are sometimes treated specially; for instance, graphical login managers do not list them."
24832 msgstr ""
24833
24834 #. type: anchor{#1}
24835 #: guix-git/doc/guix.texi:14469
24836 msgid "user-account-password"
24837 msgstr ""
24838
24839 #. type: cindex
24840 #: guix-git/doc/guix.texi:14469
24841 #, no-wrap
24842 msgid "password, for user accounts"
24843 msgstr ""
24844
24845 #. type: item
24846 #: guix-git/doc/guix.texi:14470 guix-git/doc/guix.texi:14525
24847 #, no-wrap
24848 msgid "@code{password} (default: @code{#f})"
24849 msgstr ""
24850
24851 #. type: table
24852 #: guix-git/doc/guix.texi:14476
24853 msgid "You would normally leave this field to @code{#f}, initialize user passwords as @code{root} with the @command{passwd} command, and then let users change it with @command{passwd}. Passwords set with @command{passwd} are of course preserved across reboot and reconfiguration."
24854 msgstr ""
24855
24856 #. type: table
24857 #: guix-git/doc/guix.texi:14480
24858 msgid "If you @emph{do} want to set an initial password for an account, then this field must contain the encrypted password, as a string. You can use the @code{crypt} procedure for this purpose:"
24859 msgstr ""
24860
24861 #. type: lisp
24862 #: guix-git/doc/guix.texi:14485
24863 #, no-wrap
24864 msgid ""
24865 "(user-account\n"
24866 " (name \"charlie\")\n"
24867 " (group \"users\")\n"
24868 "\n"
24869 msgstr ""
24870
24871 #. type: lisp
24872 #: guix-git/doc/guix.texi:14488
24873 #, no-wrap
24874 msgid ""
24875 " ;; Specify a SHA-512-hashed initial password.\n"
24876 " (password (crypt \"InitialPassword!\" \"$6$abc\")))\n"
24877 msgstr ""
24878
24879 #. type: quotation
24880 #: guix-git/doc/guix.texi:14494
24881 msgid "The hash of this initial password will be available in a file in @file{/gnu/store}, readable by all the users, so this method must be used with care."
24882 msgstr ""
24883
24884 #. type: table
24885 #: guix-git/doc/guix.texi:14499
24886 msgid "@xref{Passphrase Storage,,, libc, The GNU C Library Reference Manual}, for more information on password encryption, and @ref{Encryption,,, guile, GNU Guile Reference Manual}, for information on Guile's @code{crypt} procedure."
24887 msgstr ""
24888
24889 #. type: Plain text
24890 #: guix-git/doc/guix.texi:14505
24891 msgid "User group declarations are even simpler:"
24892 msgstr ""
24893
24894 #. type: lisp
24895 #: guix-git/doc/guix.texi:14508
24896 #, no-wrap
24897 msgid "(user-group (name \"students\"))\n"
24898 msgstr ""
24899
24900 #. type: deftp
24901 #: guix-git/doc/guix.texi:14510
24902 #, no-wrap
24903 msgid "{Data Type} user-group"
24904 msgstr ""
24905
24906 #. type: deftp
24907 #: guix-git/doc/guix.texi:14512
24908 msgid "This type is for, well, user groups. There are just a few fields:"
24909 msgstr ""
24910
24911 #. type: table
24912 #: guix-git/doc/guix.texi:14516
24913 msgid "The name of the group."
24914 msgstr ""
24915
24916 #. type: item
24917 #: guix-git/doc/guix.texi:14517 guix-git/doc/guix.texi:29041
24918 #, no-wrap
24919 msgid "@code{id} (default: @code{#f})"
24920 msgstr ""
24921
24922 #. type: table
24923 #: guix-git/doc/guix.texi:14520
24924 msgid "The group identifier (a number). If @code{#f}, a new number is automatically allocated when the group is created."
24925 msgstr ""
24926
24927 #. type: table
24928 #: guix-git/doc/guix.texi:14524
24929 msgid "This Boolean value indicates whether the group is a ``system'' group. System groups have low numerical IDs."
24930 msgstr ""
24931
24932 #. type: table
24933 #: guix-git/doc/guix.texi:14528
24934 msgid "What, user groups can have a password? Well, apparently yes. Unless @code{#f}, this field specifies the password of the group."
24935 msgstr ""
24936
24937 #. type: Plain text
24938 #: guix-git/doc/guix.texi:14534
24939 msgid "For convenience, a variable lists all the basic user groups one may expect:"
24940 msgstr ""
24941
24942 #. type: defvr
24943 #: guix-git/doc/guix.texi:14535
24944 #, no-wrap
24945 msgid "{Scheme Variable} %base-groups"
24946 msgstr ""
24947
24948 #. type: defvr
24949 #: guix-git/doc/guix.texi:14540
24950 msgid "This is the list of basic user groups that users and/or packages expect to be present on the system. This includes groups such as ``root'', ``wheel'', and ``users'', as well as groups used to control access to specific devices such as ``audio'', ``disk'', and ``cdrom''."
24951 msgstr ""
24952
24953 #. type: defvr
24954 #: guix-git/doc/guix.texi:14542
24955 #, no-wrap
24956 msgid "{Scheme Variable} %base-user-accounts"
24957 msgstr ""
24958
24959 #. type: defvr
24960 #: guix-git/doc/guix.texi:14545
24961 msgid "This is the list of basic system accounts that programs may expect to find on a GNU/Linux system, such as the ``nobody'' account."
24962 msgstr ""
24963
24964 #. type: defvr
24965 #: guix-git/doc/guix.texi:14548
24966 msgid "Note that the ``root'' account is not included here. It is a special-case and is automatically added whether or not it is specified."
24967 msgstr ""
24968
24969 #. type: cindex
24970 #: guix-git/doc/guix.texi:14554
24971 #, no-wrap
24972 msgid "keymap"
24973 msgstr ""
24974
24975 #. type: Plain text
24976 #: guix-git/doc/guix.texi:14562
24977 msgid "To specify what each key of your keyboard does, you need to tell the operating system what @dfn{keyboard layout} you want to use. The default, when nothing is specified, is the US English QWERTY layout for 105-key PC keyboards. However, German speakers will usually prefer the German QWERTZ layout, French speakers will want the AZERTY layout, and so on; hackers might prefer Dvorak or bépo, and they might even want to further customize the effect of some of the keys. This section explains how to get that done."
24978 msgstr ""
24979
24980 #. type: cindex
24981 #: guix-git/doc/guix.texi:14563
24982 #, no-wrap
24983 msgid "keyboard layout, definition"
24984 msgstr ""
24985
24986 #. type: Plain text
24987 #: guix-git/doc/guix.texi:14565
24988 msgid "There are three components that will want to know about your keyboard layout:"
24989 msgstr ""
24990
24991 #. type: itemize
24992 #: guix-git/doc/guix.texi:14572
24993 msgid "The @emph{bootloader} may want to know what keyboard layout you want to use (@pxref{Bootloader Configuration, @code{keyboard-layout}}). This is useful if you want, for instance, to make sure that you can type the passphrase of your encrypted root partition using the right layout."
24994 msgstr ""
24995
24996 #. type: itemize
24997 #: guix-git/doc/guix.texi:14577
24998 msgid "The @emph{operating system kernel}, Linux, will need that so that the console is properly configured (@pxref{operating-system Reference, @code{keyboard-layout}})."
24999 msgstr ""
25000
25001 #. type: itemize
25002 #: guix-git/doc/guix.texi:14581
25003 msgid "The @emph{graphical display server}, usually Xorg, also has its own idea of the keyboard layout (@pxref{X Window, @code{keyboard-layout}})."
25004 msgstr ""
25005
25006 #. type: Plain text
25007 #: guix-git/doc/guix.texi:14585
25008 msgid "Guix allows you to configure all three separately but, fortunately, it allows you to share the same keyboard layout for all three components."
25009 msgstr ""
25010
25011 #. type: cindex
25012 #: guix-git/doc/guix.texi:14586
25013 #, no-wrap
25014 msgid "XKB, keyboard layouts"
25015 msgstr ""
25016
25017 #. type: Plain text
25018 #: guix-git/doc/guix.texi:14594
25019 msgid "Keyboard layouts are represented by records created by the @code{keyboard-layout} procedure of @code{(gnu system keyboard)}. Following the X Keyboard extension (XKB), each layout has four attributes: a name (often a language code such as ``fi'' for Finnish or ``jp'' for Japanese), an optional variant name, an optional keyboard model name, and a possibly empty list of additional options. In most cases the layout name is all you care about."
25020 msgstr ""
25021
25022 #. type: deffn
25023 #: guix-git/doc/guix.texi:14595
25024 #, no-wrap
25025 msgid "{Scheme Procedure} keyboard-layout @var{name} [@var{variant}] @"
25026 msgstr ""
25027
25028 #. type: deffn
25029 #: guix-git/doc/guix.texi:14598
25030 msgid "[#:model] [#:options '()] Return a new keyboard layout with the given @var{name} and @var{variant}."
25031 msgstr ""
25032
25033 #. type: deffn
25034 #: guix-git/doc/guix.texi:14602
25035 msgid "@var{name} must be a string such as @code{\"fr\"}; @var{variant} must be a string such as @code{\"bepo\"} or @code{\"nodeadkeys\"}. See the @code{xkeyboard-config} package for valid options."
25036 msgstr ""
25037
25038 #. type: Plain text
25039 #: guix-git/doc/guix.texi:14605
25040 msgid "Here are a few examples:"
25041 msgstr ""
25042
25043 #. type: lisp
25044 #: guix-git/doc/guix.texi:14610
25045 #, no-wrap
25046 msgid ""
25047 ";; The German QWERTZ layout. Here we assume a standard\n"
25048 ";; \"pc105\" keyboard model.\n"
25049 "(keyboard-layout \"de\")\n"
25050 "\n"
25051 msgstr ""
25052
25053 #. type: lisp
25054 #: guix-git/doc/guix.texi:14613
25055 #, no-wrap
25056 msgid ""
25057 ";; The bépo variant of the French layout.\n"
25058 "(keyboard-layout \"fr\" \"bepo\")\n"
25059 "\n"
25060 msgstr ""
25061
25062 #. type: lisp
25063 #: guix-git/doc/guix.texi:14616
25064 #, no-wrap
25065 msgid ""
25066 ";; The Catalan layout.\n"
25067 "(keyboard-layout \"es\" \"cat\")\n"
25068 "\n"
25069 msgstr ""
25070
25071 #. type: lisp
25072 #: guix-git/doc/guix.texi:14619
25073 #, no-wrap
25074 msgid ""
25075 ";; Arabic layout with \"Alt-Shift\" to switch to US layout.\n"
25076 "(keyboard-layout \"ar,us\" #:options '(\"grp:alt_shift_toggle\"))\n"
25077 "\n"
25078 msgstr ""
25079
25080 #. type: lisp
25081 #: guix-git/doc/guix.texi:14626
25082 #, no-wrap
25083 msgid ""
25084 ";; The Latin American Spanish layout. In addition, the\n"
25085 ";; \"Caps Lock\" key is used as an additional \"Ctrl\" key,\n"
25086 ";; and the \"Menu\" key is used as a \"Compose\" key to enter\n"
25087 ";; accented letters.\n"
25088 "(keyboard-layout \"latam\"\n"
25089 " #:options '(\"ctrl:nocaps\" \"compose:menu\"))\n"
25090 "\n"
25091 msgstr ""
25092
25093 #. type: lisp
25094 #: guix-git/doc/guix.texi:14629
25095 #, no-wrap
25096 msgid ""
25097 ";; The Russian layout for a ThinkPad keyboard.\n"
25098 "(keyboard-layout \"ru\" #:model \"thinkpad\")\n"
25099 "\n"
25100 msgstr ""
25101
25102 #. type: lisp
25103 #: guix-git/doc/guix.texi:14634
25104 #, no-wrap
25105 msgid ""
25106 ";; The \"US international\" layout, which is the US layout plus\n"
25107 ";; dead keys to enter accented characters. This is for an\n"
25108 ";; Apple MacBook keyboard.\n"
25109 "(keyboard-layout \"us\" \"intl\" #:model \"macbook78\")\n"
25110 msgstr ""
25111
25112 #. type: Plain text
25113 #: guix-git/doc/guix.texi:14638
25114 msgid "See the @file{share/X11/xkb} directory of the @code{xkeyboard-config} package for a complete list of supported layouts, variants, and models."
25115 msgstr ""
25116
25117 #. type: cindex
25118 #: guix-git/doc/guix.texi:14639
25119 #, no-wrap
25120 msgid "keyboard layout, configuration"
25121 msgstr ""
25122
25123 #. type: Plain text
25124 #: guix-git/doc/guix.texi:14643
25125 msgid "Let's say you want your system to use the Turkish keyboard layout throughout your system---bootloader, console, and Xorg. Here's what your system configuration would look like:"
25126 msgstr ""
25127
25128 #. type: findex
25129 #: guix-git/doc/guix.texi:14644
25130 #, no-wrap
25131 msgid "set-xorg-configuration"
25132 msgstr ""
25133
25134 #. type: lisp
25135 #: guix-git/doc/guix.texi:14648
25136 #, no-wrap
25137 msgid ""
25138 ";; Using the Turkish layout for the bootloader, the console,\n"
25139 ";; and for Xorg.\n"
25140 "\n"
25141 msgstr ""
25142
25143 #. type: lisp
25144 #: guix-git/doc/guix.texi:14660
25145 #, no-wrap
25146 msgid ""
25147 "(operating-system\n"
25148 " ;; ...\n"
25149 " (keyboard-layout (keyboard-layout \"tr\")) ;for the console\n"
25150 " (bootloader (bootloader-configuration\n"
25151 " (bootloader grub-efi-bootloader)\n"
25152 " (target \"/boot/efi\")\n"
25153 " (keyboard-layout keyboard-layout))) ;for GRUB\n"
25154 " (services (cons (set-xorg-configuration\n"
25155 " (xorg-configuration ;for Xorg\n"
25156 " (keyboard-layout keyboard-layout)))\n"
25157 " %desktop-services)))\n"
25158 msgstr ""
25159
25160 #. type: Plain text
25161 #: guix-git/doc/guix.texi:14667
25162 msgid "In the example above, for GRUB and for Xorg, we just refer to the @code{keyboard-layout} field defined above, but we could just as well refer to a different layout. The @code{set-xorg-configuration} procedure communicates the desired Xorg configuration to the graphical log-in manager, by default GDM."
25163 msgstr ""
25164
25165 #. type: Plain text
25166 #: guix-git/doc/guix.texi:14670
25167 msgid "We've discussed how to specify the @emph{default} keyboard layout of your system when it starts, but you can also adjust it at run time:"
25168 msgstr ""
25169
25170 #. type: itemize
25171 #: guix-git/doc/guix.texi:14675
25172 msgid "If you're using GNOME, its settings panel has a ``Region & Language'' entry where you can select one or more keyboard layouts."
25173 msgstr ""
25174
25175 #. type: itemize
25176 #: guix-git/doc/guix.texi:14680
25177 msgid "Under Xorg, the @command{setxkbmap} command (from the same-named package) allows you to change the current layout. For example, this is how you would change the layout to US Dvorak:"
25178 msgstr ""
25179
25180 #. type: example
25181 #: guix-git/doc/guix.texi:14683
25182 #, no-wrap
25183 msgid "setxkbmap us dvorak\n"
25184 msgstr ""
25185
25186 #. type: itemize
25187 #: guix-git/doc/guix.texi:14690
25188 msgid "The @code{loadkeys} command changes the keyboard layout in effect in the Linux console. However, note that @code{loadkeys} does @emph{not} use the XKB keyboard layout categorization described above. The command below loads the French bépo layout:"
25189 msgstr ""
25190
25191 #. type: example
25192 #: guix-git/doc/guix.texi:14693
25193 #, no-wrap
25194 msgid "loadkeys fr-bepo\n"
25195 msgstr ""
25196
25197 #. type: cindex
25198 #: guix-git/doc/guix.texi:14699
25199 #, no-wrap
25200 msgid "locale"
25201 msgstr ""
25202
25203 #. type: Plain text
25204 #: guix-git/doc/guix.texi:14706
25205 msgid "A @dfn{locale} defines cultural conventions for a particular language and region of the world (@pxref{Locales,,, libc, The GNU C Library Reference Manual}). Each locale has a name that typically has the form @code{@var{language}_@var{territory}.@var{codeset}}---e.g., @code{fr_LU.utf8} designates the locale for the French language, with cultural conventions from Luxembourg, and using the UTF-8 encoding."
25206 msgstr ""
25207
25208 #. type: cindex
25209 #: guix-git/doc/guix.texi:14707
25210 #, no-wrap
25211 msgid "locale definition"
25212 msgstr ""
25213
25214 #. type: Plain text
25215 #: guix-git/doc/guix.texi:14711
25216 msgid "Usually, you will want to specify the default locale for the machine using the @code{locale} field of the @code{operating-system} declaration (@pxref{operating-system Reference, @code{locale}})."
25217 msgstr ""
25218
25219 #. type: Plain text
25220 #: guix-git/doc/guix.texi:14720
25221 msgid "The selected locale is automatically added to the @dfn{locale definitions} known to the system if needed, with its codeset inferred from its name---e.g., @code{bo_CN.utf8} will be assumed to use the @code{UTF-8} codeset. Additional locale definitions can be specified in the @code{locale-definitions} slot of @code{operating-system}---this is useful, for instance, if the codeset could not be inferred from the locale name. The default set of locale definitions includes some widely used locales, but not all the available locales, in order to save space."
25222 msgstr ""
25223
25224 #. type: Plain text
25225 #: guix-git/doc/guix.texi:14723
25226 msgid "For instance, to add the North Frisian locale for Germany, the value of that field may be:"
25227 msgstr ""
25228
25229 #. type: lisp
25230 #: guix-git/doc/guix.texi:14728
25231 #, no-wrap
25232 msgid ""
25233 "(cons (locale-definition\n"
25234 " (name \"fy_DE.utf8\") (source \"fy_DE\"))\n"
25235 " %default-locale-definitions)\n"
25236 msgstr ""
25237
25238 #. type: Plain text
25239 #: guix-git/doc/guix.texi:14732
25240 msgid "Likewise, to save space, one might want @code{locale-definitions} to list only the locales that are actually used, as in:"
25241 msgstr ""
25242
25243 #. type: lisp
25244 #: guix-git/doc/guix.texi:14737
25245 #, no-wrap
25246 msgid ""
25247 "(list (locale-definition\n"
25248 " (name \"ja_JP.eucjp\") (source \"ja_JP\")\n"
25249 " (charset \"EUC-JP\")))\n"
25250 msgstr ""
25251
25252 #. type: Plain text
25253 #: guix-git/doc/guix.texi:14746
25254 msgid "The compiled locale definitions are available at @file{/run/current-system/locale/X.Y}, where @code{X.Y} is the libc version, which is the default location where the GNU@tie{}libc provided by Guix looks for locale data. This can be overridden using the @env{LOCPATH} environment variable (@pxref{locales-and-locpath, @env{LOCPATH} and locale packages})."
25255 msgstr ""
25256
25257 #. type: Plain text
25258 #: guix-git/doc/guix.texi:14749
25259 msgid "The @code{locale-definition} form is provided by the @code{(gnu system locale)} module. Details are given below."
25260 msgstr ""
25261
25262 #. type: deftp
25263 #: guix-git/doc/guix.texi:14750
25264 #, no-wrap
25265 msgid "{Data Type} locale-definition"
25266 msgstr ""
25267
25268 #. type: deftp
25269 #: guix-git/doc/guix.texi:14752
25270 msgid "This is the data type of a locale definition."
25271 msgstr ""
25272
25273 #. type: table
25274 #: guix-git/doc/guix.texi:14758
25275 msgid "The name of the locale. @xref{Locale Names,,, libc, The GNU C Library Reference Manual}, for more information on locale names."
25276 msgstr ""
25277
25278 #. type: table
25279 #: guix-git/doc/guix.texi:14762
25280 msgid "The name of the source for that locale. This is typically the @code{@var{language}_@var{territory}} part of the locale name."
25281 msgstr ""
25282
25283 #. type: item
25284 #: guix-git/doc/guix.texi:14763
25285 #, no-wrap
25286 msgid "@code{charset} (default: @code{\"UTF-8\"})"
25287 msgstr ""
25288
25289 #. type: table
25290 #: guix-git/doc/guix.texi:14767
25291 msgid "The ``character set'' or ``code set'' for that locale, @uref{https://www.iana.org/assignments/character-sets, as defined by IANA}."
25292 msgstr ""
25293
25294 #. type: defvr
25295 #: guix-git/doc/guix.texi:14771
25296 #, no-wrap
25297 msgid "{Scheme Variable} %default-locale-definitions"
25298 msgstr ""
25299
25300 #. type: defvr
25301 #: guix-git/doc/guix.texi:14775
25302 msgid "A list of commonly used UTF-8 locales, used as the default value of the @code{locale-definitions} field of @code{operating-system} declarations."
25303 msgstr ""
25304
25305 #. type: cindex
25306 #: guix-git/doc/guix.texi:14776
25307 #, no-wrap
25308 msgid "locale name"
25309 msgstr ""
25310
25311 #. type: cindex
25312 #: guix-git/doc/guix.texi:14777
25313 #, no-wrap
25314 msgid "normalized codeset in locale names"
25315 msgstr ""
25316
25317 #. type: defvr
25318 #: guix-git/doc/guix.texi:14783
25319 msgid "These locale definitions use the @dfn{normalized codeset} for the part that follows the dot in the name (@pxref{Using gettextized software, normalized codeset,, libc, The GNU C Library Reference Manual}). So for instance it has @code{uk_UA.utf8} but @emph{not}, say, @code{uk_UA.UTF-8}."
25320 msgstr ""
25321
25322 #. type: subsection
25323 #: guix-git/doc/guix.texi:14785
25324 #, no-wrap
25325 msgid "Locale Data Compatibility Considerations"
25326 msgstr ""
25327
25328 #. type: cindex
25329 #: guix-git/doc/guix.texi:14787
25330 #, no-wrap
25331 msgid "incompatibility, of locale data"
25332 msgstr ""
25333
25334 #. type: Plain text
25335 #: guix-git/doc/guix.texi:14794
25336 msgid "@code{operating-system} declarations provide a @code{locale-libcs} field to specify the GNU@tie{}libc packages that are used to compile locale declarations (@pxref{operating-system Reference}). ``Why would I care?'', you may ask. Well, it turns out that the binary format of locale data is occasionally incompatible from one libc version to another."
25337 msgstr ""
25338
25339 #. type: Plain text
25340 #: guix-git/doc/guix.texi:14806
25341 msgid "For instance, a program linked against libc version 2.21 is unable to read locale data produced with libc 2.22; worse, that program @emph{aborts} instead of simply ignoring the incompatible locale data@footnote{Versions 2.23 and later of GNU@tie{}libc will simply skip the incompatible locale data, which is already an improvement.}. Similarly, a program linked against libc 2.22 can read most, but not all, of the locale data from libc 2.21 (specifically, @env{LC_COLLATE} data is incompatible); thus calls to @code{setlocale} may fail, but programs will not abort."
25342 msgstr ""
25343
25344 #. type: Plain text
25345 #: guix-git/doc/guix.texi:14811
25346 msgid "The ``problem'' with Guix is that users have a lot of freedom: They can choose whether and when to upgrade software in their profiles, and might be using a libc version different from the one the system administrator used to build the system-wide locale data."
25347 msgstr ""
25348
25349 #. type: Plain text
25350 #: guix-git/doc/guix.texi:14815
25351 msgid "Fortunately, unprivileged users can also install their own locale data and define @env{GUIX_LOCPATH} accordingly (@pxref{locales-and-locpath, @env{GUIX_LOCPATH} and locale packages})."
25352 msgstr ""
25353
25354 #. type: Plain text
25355 #: guix-git/doc/guix.texi:14822
25356 msgid "Still, it is best if the system-wide locale data at @file{/run/current-system/locale} is built for all the libc versions actually in use on the system, so that all the programs can access it---this is especially crucial on a multi-user system. To do that, the administrator can specify several libc packages in the @code{locale-libcs} field of @code{operating-system}:"
25357 msgstr ""
25358
25359 #. type: lisp
25360 #: guix-git/doc/guix.texi:14825
25361 #, no-wrap
25362 msgid ""
25363 "(use-package-modules base)\n"
25364 "\n"
25365 msgstr ""
25366
25367 #. type: lisp
25368 #: guix-git/doc/guix.texi:14829
25369 #, no-wrap
25370 msgid ""
25371 "(operating-system\n"
25372 " ;; @dots{}\n"
25373 " (locale-libcs (list glibc-2.21 (canonical-package glibc))))\n"
25374 msgstr ""
25375
25376 #. type: Plain text
25377 #: guix-git/doc/guix.texi:14834
25378 msgid "This example would lead to a system containing locale definitions for both libc 2.21 and the current version of libc in @file{/run/current-system/locale}."
25379 msgstr ""
25380
25381 #. type: cindex
25382 #: guix-git/doc/guix.texi:14839
25383 #, no-wrap
25384 msgid "system services"
25385 msgstr ""
25386
25387 #. type: Plain text
25388 #: guix-git/doc/guix.texi:14845
25389 msgid "An important part of preparing an @code{operating-system} declaration is listing @dfn{system services} and their configuration (@pxref{Using the Configuration System}). System services are typically daemons launched when the system boots, or other actions needed at that time---e.g., configuring network access."
25390 msgstr ""
25391
25392 #. type: Plain text
25393 #: guix-git/doc/guix.texi:14852
25394 msgid "Guix has a broad definition of ``service'' (@pxref{Service Composition}), but many services are managed by the GNU@tie{}Shepherd (@pxref{Shepherd Services}). On a running system, the @command{herd} command allows you to list the available services, show their status, start and stop them, or do other specific operations (@pxref{Jump Start,,, shepherd, The GNU Shepherd Manual}). For example:"
25395 msgstr ""
25396
25397 #. type: example
25398 #: guix-git/doc/guix.texi:14855
25399 #, no-wrap
25400 msgid "# herd status\n"
25401 msgstr ""
25402
25403 #. type: Plain text
25404 #: guix-git/doc/guix.texi:14860
25405 msgid "The above command, run as @code{root}, lists the currently defined services. The @command{herd doc} command shows a synopsis of the given service and its associated actions:"
25406 msgstr ""
25407
25408 #. type: example
25409 #: guix-git/doc/guix.texi:14864
25410 #, no-wrap
25411 msgid ""
25412 "# herd doc nscd\n"
25413 "Run libc's name service cache daemon (nscd).\n"
25414 "\n"
25415 msgstr ""
25416
25417 #. type: example
25418 #: guix-git/doc/guix.texi:14867
25419 #, no-wrap
25420 msgid ""
25421 "# herd doc nscd action invalidate\n"
25422 "invalidate: Invalidate the given cache--e.g., 'hosts' for host name lookups.\n"
25423 msgstr ""
25424
25425 #. type: Plain text
25426 #: guix-git/doc/guix.texi:14872
25427 msgid "The @command{start}, @command{stop}, and @command{restart} sub-commands have the effect you would expect. For instance, the commands below stop the nscd service and restart the Xorg display server:"
25428 msgstr ""
25429
25430 #. type: example
25431 #: guix-git/doc/guix.texi:14879
25432 #, no-wrap
25433 msgid ""
25434 "# herd stop nscd\n"
25435 "Service nscd has been stopped.\n"
25436 "# herd restart xorg-server\n"
25437 "Service xorg-server has been stopped.\n"
25438 "Service xorg-server has been started.\n"
25439 msgstr ""
25440
25441 #. type: Plain text
25442 #: guix-git/doc/guix.texi:14884
25443 msgid "The following sections document the available services, starting with the core services, that may be used in an @code{operating-system} declaration."
25444 msgstr ""
25445
25446 #. type: subsection
25447 #: guix-git/doc/guix.texi:14919 guix-git/doc/guix.texi:22543
25448 #: guix-git/doc/guix.texi:22544
25449 #, no-wrap
25450 msgid "File-Sharing Services"
25451 msgstr ""
25452
25453 #. type: menuentry
25454 #: guix-git/doc/guix.texi:14919
25455 msgid "File-sharing services."
25456 msgstr ""
25457
25458 #. type: Plain text
25459 #: guix-git/doc/guix.texi:14927
25460 msgid "The @code{(gnu services base)} module provides definitions for the basic services that one expects from the system. The services exported by this module are listed below."
25461 msgstr ""
25462
25463 #. type: defvr
25464 #: guix-git/doc/guix.texi:14928
25465 #, no-wrap
25466 msgid "{Scheme Variable} %base-services"
25467 msgstr ""
25468
25469 #. type: defvr
25470 #: guix-git/doc/guix.texi:14934
25471 msgid "This variable contains a list of basic services (@pxref{Service Types and Services}, for more information on service objects) one would expect from the system: a login service (mingetty) on each tty, syslogd, the libc name service cache daemon (nscd), the udev device manager, and more."
25472 msgstr ""
25473
25474 #. type: defvr
25475 #: guix-git/doc/guix.texi:14939
25476 msgid "This is the default value of the @code{services} field of @code{operating-system} declarations. Usually, when customizing a system, you will want to append services to @code{%base-services}, like this:"
25477 msgstr ""
25478
25479 #. type: lisp
25480 #: guix-git/doc/guix.texi:14944
25481 #, no-wrap
25482 msgid ""
25483 "(append (list (service avahi-service-type)\n"
25484 " (service openssh-service-type))\n"
25485 " %base-services)\n"
25486 msgstr ""
25487
25488 #. type: defvr
25489 #: guix-git/doc/guix.texi:14947
25490 #, no-wrap
25491 msgid "{Scheme Variable} special-files-service-type"
25492 msgstr ""
25493
25494 #. type: defvr
25495 #: guix-git/doc/guix.texi:14950
25496 msgid "This is the service that sets up ``special files'' such as @file{/bin/sh}; an instance of it is part of @code{%base-services}."
25497 msgstr ""
25498
25499 #. type: defvr
25500 #: guix-git/doc/guix.texi:14954
25501 msgid "The value associated with @code{special-files-service-type} services must be a list of tuples where the first element is the ``special file'' and the second element is its target. By default it is:"
25502 msgstr ""
25503
25504 #. type: file{#1}
25505 #: guix-git/doc/guix.texi:14955
25506 #, no-wrap
25507 msgid "/bin/sh"
25508 msgstr ""
25509
25510 #. type: cindex
25511 #: guix-git/doc/guix.texi:14956
25512 #, no-wrap
25513 msgid "@file{sh}, in @file{/bin}"
25514 msgstr ""
25515
25516 #. type: lisp
25517 #: guix-git/doc/guix.texi:14959
25518 #, no-wrap
25519 msgid "`((\"/bin/sh\" ,(file-append bash \"/bin/sh\")))\n"
25520 msgstr ""
25521
25522 #. type: file{#1}
25523 #: guix-git/doc/guix.texi:14961
25524 #, no-wrap
25525 msgid "/usr/bin/env"
25526 msgstr ""
25527
25528 #. type: cindex
25529 #: guix-git/doc/guix.texi:14962
25530 #, no-wrap
25531 msgid "@file{env}, in @file{/usr/bin}"
25532 msgstr ""
25533
25534 #. type: defvr
25535 #: guix-git/doc/guix.texi:14965
25536 msgid "If you want to add, say, @code{/usr/bin/env} to your system, you can change it to:"
25537 msgstr ""
25538
25539 #. type: lisp
25540 #: guix-git/doc/guix.texi:14969
25541 #, no-wrap
25542 msgid ""
25543 "`((\"/bin/sh\" ,(file-append bash \"/bin/sh\"))\n"
25544 " (\"/usr/bin/env\" ,(file-append coreutils \"/bin/env\")))\n"
25545 msgstr ""
25546
25547 #. type: defvr
25548 #: guix-git/doc/guix.texi:14976
25549 msgid "Since this is part of @code{%base-services}, you can use @code{modify-services} to customize the set of special files (@pxref{Service Reference, @code{modify-services}}). But the simple way to add a special file is @i{via} the @code{extra-special-file} procedure (see below)."
25550 msgstr ""
25551
25552 #. type: deffn
25553 #: guix-git/doc/guix.texi:14978
25554 #, no-wrap
25555 msgid "{Scheme Procedure} extra-special-file @var{file} @var{target}"
25556 msgstr ""
25557
25558 #. type: deffn
25559 #: guix-git/doc/guix.texi:14980
25560 msgid "Use @var{target} as the ``special file'' @var{file}."
25561 msgstr ""
25562
25563 #. type: deffn
25564 #: guix-git/doc/guix.texi:14984
25565 msgid "For example, adding the following lines to the @code{services} field of your operating system declaration leads to a @file{/usr/bin/env} symlink:"
25566 msgstr ""
25567
25568 #. type: lisp
25569 #: guix-git/doc/guix.texi:14988
25570 #, no-wrap
25571 msgid ""
25572 "(extra-special-file \"/usr/bin/env\"\n"
25573 " (file-append coreutils \"/bin/env\"))\n"
25574 msgstr ""
25575
25576 #. type: deffn
25577 #: guix-git/doc/guix.texi:14991
25578 #, no-wrap
25579 msgid "{Scheme Procedure} host-name-service @var{name}"
25580 msgstr ""
25581
25582 #. type: deffn
25583 #: guix-git/doc/guix.texi:14993
25584 msgid "Return a service that sets the host name to @var{name}."
25585 msgstr ""
25586
25587 #. type: defvr
25588 #: guix-git/doc/guix.texi:14995
25589 #, no-wrap
25590 msgid "{Scheme Variable} console-font-service-type"
25591 msgstr ""
25592
25593 #. type: defvr
25594 #: guix-git/doc/guix.texi:15000
25595 msgid "Install the given fonts on the specified ttys (fonts are per virtual console on the kernel Linux). The value of this service is a list of tty/font pairs. The font can be the name of a font provided by the @code{kbd} package or any valid argument to @command{setfont}, as in this example:"
25596 msgstr ""
25597
25598 #. type: lisp
25599 #: guix-git/doc/guix.texi:15009
25600 #, no-wrap
25601 msgid ""
25602 "`((\"tty1\" . \"LatGrkCyr-8x16\")\n"
25603 " (\"tty2\" . ,(file-append\n"
25604 " font-tamzen\n"
25605 " \"/share/kbd/consolefonts/TamzenForPowerline10x20.psf\"))\n"
25606 " (\"tty3\" . ,(file-append\n"
25607 " font-terminus\n"
25608 " \"/share/consolefonts/ter-132n\"))) ; for HDPI\n"
25609 msgstr ""
25610
25611 #. type: deffn
25612 #: guix-git/doc/guix.texi:15012
25613 #, no-wrap
25614 msgid "{Scheme Procedure} login-service @var{config}"
25615 msgstr ""
25616
25617 #. type: deffn
25618 #: guix-git/doc/guix.texi:15016
25619 msgid "Return a service to run login according to @var{config}, a @code{<login-configuration>} object, which specifies the message of the day, among other things."
25620 msgstr ""
25621
25622 #. type: deftp
25623 #: guix-git/doc/guix.texi:15018
25624 #, no-wrap
25625 msgid "{Data Type} login-configuration"
25626 msgstr ""
25627
25628 #. type: deftp
25629 #: guix-git/doc/guix.texi:15020
25630 msgid "This is the data type representing the configuration of login."
25631 msgstr ""
25632
25633 #. type: code{#1}
25634 #: guix-git/doc/guix.texi:15023
25635 #, no-wrap
25636 msgid "motd"
25637 msgstr ""
25638
25639 #. type: cindex
25640 #: guix-git/doc/guix.texi:15024
25641 #, no-wrap
25642 msgid "message of the day"
25643 msgstr ""
25644
25645 #. type: table
25646 #: guix-git/doc/guix.texi:15026
25647 msgid "A file-like object containing the ``message of the day''."
25648 msgstr ""
25649
25650 #. type: item
25651 #: guix-git/doc/guix.texi:15027 guix-git/doc/guix.texi:17908
25652 #, no-wrap
25653 msgid "@code{allow-empty-passwords?} (default: @code{#t})"
25654 msgstr ""
25655
25656 #. type: table
25657 #: guix-git/doc/guix.texi:15030
25658 msgid "Allow empty passwords by default so that first-time users can log in when the 'root' account has just been created."
25659 msgstr ""
25660
25661 #. type: deffn
25662 #: guix-git/doc/guix.texi:15034
25663 #, no-wrap
25664 msgid "{Scheme Procedure} mingetty-service @var{config}"
25665 msgstr ""
25666
25667 #. type: deffn
25668 #: guix-git/doc/guix.texi:15038
25669 msgid "Return a service to run mingetty according to @var{config}, a @code{<mingetty-configuration>} object, which specifies the tty to run, among other things."
25670 msgstr ""
25671
25672 #. type: deftp
25673 #: guix-git/doc/guix.texi:15040
25674 #, no-wrap
25675 msgid "{Data Type} mingetty-configuration"
25676 msgstr ""
25677
25678 #. type: deftp
25679 #: guix-git/doc/guix.texi:15043
25680 msgid "This is the data type representing the configuration of Mingetty, which provides the default implementation of virtual console log-in."
25681 msgstr ""
25682
25683 #. type: code{#1}
25684 #: guix-git/doc/guix.texi:15046 guix-git/doc/guix.texi:15085
25685 #: guix-git/doc/guix.texi:31537
25686 #, no-wrap
25687 msgid "tty"
25688 msgstr ""
25689
25690 #. type: table
25691 #: guix-git/doc/guix.texi:15048
25692 msgid "The name of the console this Mingetty runs on---e.g., @code{\"tty1\"}."
25693 msgstr ""
25694
25695 #. type: item
25696 #: guix-git/doc/guix.texi:15049 guix-git/doc/guix.texi:15114
25697 #: guix-git/doc/guix.texi:15273
25698 #, no-wrap
25699 msgid "@code{auto-login} (default: @code{#f})"
25700 msgstr ""
25701
25702 #. type: table
25703 #: guix-git/doc/guix.texi:15053
25704 msgid "When true, this field must be a string denoting the user name under which the system automatically logs in. When it is @code{#f}, a user name and password must be entered to log in."
25705 msgstr ""
25706
25707 #. type: item
25708 #: guix-git/doc/guix.texi:15054
25709 #, no-wrap
25710 msgid "@code{login-program} (default: @code{#f})"
25711 msgstr ""
25712
25713 #. type: table
25714 #: guix-git/doc/guix.texi:15058
25715 msgid "This must be either @code{#f}, in which case the default log-in program is used (@command{login} from the Shadow tool suite), or a gexp denoting the name of the log-in program."
25716 msgstr ""
25717
25718 #. type: item
25719 #: guix-git/doc/guix.texi:15059
25720 #, no-wrap
25721 msgid "@code{login-pause?} (default: @code{#f})"
25722 msgstr ""
25723
25724 #. type: table
25725 #: guix-git/doc/guix.texi:15062
25726 msgid "When set to @code{#t} in conjunction with @var{auto-login}, the user will have to press a key before the log-in shell is launched."
25727 msgstr ""
25728
25729 #. type: item
25730 #: guix-git/doc/guix.texi:15063
25731 #, no-wrap
25732 msgid "@code{clear-on-logout?} (default: @code{#t})"
25733 msgstr ""
25734
25735 #. type: table
25736 #: guix-git/doc/guix.texi:15065
25737 msgid "When set to @code{#t}, the screen will be cleared after logout."
25738 msgstr ""
25739
25740 #. type: item
25741 #: guix-git/doc/guix.texi:15066
25742 #, no-wrap
25743 msgid "@code{mingetty} (default: @var{mingetty})"
25744 msgstr ""
25745
25746 #. type: table
25747 #: guix-git/doc/guix.texi:15068
25748 msgid "The Mingetty package to use."
25749 msgstr ""
25750
25751 #. type: deffn
25752 #: guix-git/doc/guix.texi:15072
25753 #, no-wrap
25754 msgid "{Scheme Procedure} agetty-service @var{config}"
25755 msgstr ""
25756
25757 #. type: deffn
25758 #: guix-git/doc/guix.texi:15076
25759 msgid "Return a service to run agetty according to @var{config}, an @code{<agetty-configuration>} object, which specifies the tty to run, among other things."
25760 msgstr ""
25761
25762 #. type: deftp
25763 #: guix-git/doc/guix.texi:15078
25764 #, no-wrap
25765 msgid "{Data Type} agetty-configuration"
25766 msgstr ""
25767
25768 #. type: deftp
25769 #: guix-git/doc/guix.texi:15082
25770 msgid "This is the data type representing the configuration of agetty, which implements virtual and serial console log-in. See the @code{agetty(8)} man page for more information."
25771 msgstr ""
25772
25773 #. type: table
25774 #: guix-git/doc/guix.texi:15089
25775 msgid "The name of the console this agetty runs on, as a string---e.g., @code{\"ttyS0\"}. This argument is optional, it will default to a reasonable default serial port used by the kernel Linux."
25776 msgstr ""
25777
25778 #. type: table
25779 #: guix-git/doc/guix.texi:15093
25780 msgid "For this, if there is a value for an option @code{agetty.tty} in the kernel command line, agetty will extract the device name of the serial port from it and use that."
25781 msgstr ""
25782
25783 #. type: table
25784 #: guix-git/doc/guix.texi:15097
25785 msgid "If not and if there is a value for an option @code{console} with a tty in the Linux command line, agetty will extract the device name of the serial port from it and use that."
25786 msgstr ""
25787
25788 #. type: table
25789 #: guix-git/doc/guix.texi:15101
25790 msgid "In both cases, agetty will leave the other serial device settings (baud rate etc.)@: alone---in the hope that Linux pinned them to the correct values."
25791 msgstr ""
25792
25793 #. type: item
25794 #: guix-git/doc/guix.texi:15102 guix-git/doc/guix.texi:31698
25795 #, no-wrap
25796 msgid "@code{baud-rate} (default: @code{#f})"
25797 msgstr ""
25798
25799 #. type: table
25800 #: guix-git/doc/guix.texi:15105
25801 msgid "A string containing a comma-separated list of one or more baud rates, in descending order."
25802 msgstr ""
25803
25804 #. type: item
25805 #: guix-git/doc/guix.texi:15106
25806 #, no-wrap
25807 msgid "@code{term} (default: @code{#f})"
25808 msgstr ""
25809
25810 #. type: table
25811 #: guix-git/doc/guix.texi:15109
25812 msgid "A string containing the value used for the @env{TERM} environment variable."
25813 msgstr ""
25814
25815 #. type: item
25816 #: guix-git/doc/guix.texi:15110
25817 #, no-wrap
25818 msgid "@code{eight-bits?} (default: @code{#f})"
25819 msgstr ""
25820
25821 #. type: table
25822 #: guix-git/doc/guix.texi:15113
25823 msgid "When @code{#t}, the tty is assumed to be 8-bit clean, and parity detection is disabled."
25824 msgstr ""
25825
25826 #. type: table
25827 #: guix-git/doc/guix.texi:15117 guix-git/doc/guix.texi:15276
25828 msgid "When passed a login name, as a string, the specified user will be logged in automatically without prompting for their login name or password."
25829 msgstr ""
25830
25831 #. type: item
25832 #: guix-git/doc/guix.texi:15118
25833 #, no-wrap
25834 msgid "@code{no-reset?} (default: @code{#f})"
25835 msgstr ""
25836
25837 #. type: table
25838 #: guix-git/doc/guix.texi:15120
25839 msgid "When @code{#t}, don't reset terminal cflags (control modes)."
25840 msgstr ""
25841
25842 #. type: item
25843 #: guix-git/doc/guix.texi:15121
25844 #, no-wrap
25845 msgid "@code{host} (default: @code{#f})"
25846 msgstr ""
25847
25848 #. type: table
25849 #: guix-git/doc/guix.texi:15124
25850 msgid "This accepts a string containing the ``login_host'', which will be written into the @file{/var/run/utmpx} file."
25851 msgstr ""
25852
25853 #. type: item
25854 #: guix-git/doc/guix.texi:15125
25855 #, no-wrap
25856 msgid "@code{remote?} (default: @code{#f})"
25857 msgstr ""
25858
25859 #. type: table
25860 #: guix-git/doc/guix.texi:15129
25861 msgid "When set to @code{#t} in conjunction with @var{host}, this will add an @code{-r} fakehost option to the command line of the login program specified in @var{login-program}."
25862 msgstr ""
25863
25864 #. type: item
25865 #: guix-git/doc/guix.texi:15130
25866 #, no-wrap
25867 msgid "@code{flow-control?} (default: @code{#f})"
25868 msgstr ""
25869
25870 #. type: table
25871 #: guix-git/doc/guix.texi:15132
25872 msgid "When set to @code{#t}, enable hardware (RTS/CTS) flow control."
25873 msgstr ""
25874
25875 #. type: item
25876 #: guix-git/doc/guix.texi:15133
25877 #, no-wrap
25878 msgid "@code{no-issue?} (default: @code{#f})"
25879 msgstr ""
25880
25881 #. type: table
25882 #: guix-git/doc/guix.texi:15136
25883 msgid "When set to @code{#t}, the contents of the @file{/etc/issue} file will not be displayed before presenting the login prompt."
25884 msgstr ""
25885
25886 #. type: item
25887 #: guix-git/doc/guix.texi:15137
25888 #, no-wrap
25889 msgid "@code{init-string} (default: @code{#f})"
25890 msgstr ""
25891
25892 #. type: table
25893 #: guix-git/doc/guix.texi:15140
25894 msgid "This accepts a string that will be sent to the tty or modem before sending anything else. It can be used to initialize a modem."
25895 msgstr ""
25896
25897 #. type: item
25898 #: guix-git/doc/guix.texi:15141
25899 #, no-wrap
25900 msgid "@code{no-clear?} (default: @code{#f})"
25901 msgstr ""
25902
25903 #. type: table
25904 #: guix-git/doc/guix.texi:15144
25905 msgid "When set to @code{#t}, agetty will not clear the screen before showing the login prompt."
25906 msgstr ""
25907
25908 #. type: item
25909 #: guix-git/doc/guix.texi:15145
25910 #, no-wrap
25911 msgid "@code{login-program} (default: (file-append shadow \"/bin/login\"))"
25912 msgstr ""
25913
25914 #. type: table
25915 #: guix-git/doc/guix.texi:15149
25916 msgid "This must be either a gexp denoting the name of a log-in program, or unset, in which case the default value is the @command{login} from the Shadow tool suite."
25917 msgstr ""
25918
25919 #. type: item
25920 #: guix-git/doc/guix.texi:15150
25921 #, no-wrap
25922 msgid "@code{local-line} (default: @code{#f})"
25923 msgstr ""
25924
25925 #. type: table
25926 #: guix-git/doc/guix.texi:15154
25927 msgid "Control the CLOCAL line flag. This accepts one of three symbols as arguments, @code{'auto}, @code{'always}, or @code{'never}. If @code{#f}, the default value chosen by agetty is @code{'auto}."
25928 msgstr ""
25929
25930 #. type: item
25931 #: guix-git/doc/guix.texi:15155
25932 #, no-wrap
25933 msgid "@code{extract-baud?} (default: @code{#f})"
25934 msgstr ""
25935
25936 #. type: table
25937 #: guix-git/doc/guix.texi:15158
25938 msgid "When set to @code{#t}, instruct agetty to try to extract the baud rate from the status messages produced by certain types of modems."
25939 msgstr ""
25940
25941 #. type: item
25942 #: guix-git/doc/guix.texi:15159
25943 #, no-wrap
25944 msgid "@code{skip-login?} (default: @code{#f})"
25945 msgstr ""
25946
25947 #. type: table
25948 #: guix-git/doc/guix.texi:15163
25949 msgid "When set to @code{#t}, do not prompt the user for a login name. This can be used with @var{login-program} field to use non-standard login systems."
25950 msgstr ""
25951
25952 #. type: item
25953 #: guix-git/doc/guix.texi:15164
25954 #, no-wrap
25955 msgid "@code{no-newline?} (default: @code{#f})"
25956 msgstr ""
25957
25958 #. type: table
25959 #: guix-git/doc/guix.texi:15167
25960 msgid "When set to @code{#t}, do not print a newline before printing the @file{/etc/issue} file."
25961 msgstr ""
25962
25963 #. type: item
25964 #: guix-git/doc/guix.texi:15169
25965 #, no-wrap
25966 msgid "@code{login-options} (default: @code{#f})"
25967 msgstr ""
25968
25969 #. type: table
25970 #: guix-git/doc/guix.texi:15174
25971 msgid "This option accepts a string containing options that are passed to the login program. When used with the @var{login-program}, be aware that a malicious user could try to enter a login name containing embedded options that could be parsed by the login program."
25972 msgstr ""
25973
25974 #. type: item
25975 #: guix-git/doc/guix.texi:15175
25976 #, no-wrap
25977 msgid "@code{login-pause} (default: @code{#f})"
25978 msgstr ""
25979
25980 #. type: table
25981 #: guix-git/doc/guix.texi:15179
25982 msgid "When set to @code{#t}, wait for any key before showing the login prompt. This can be used in conjunction with @var{auto-login} to save memory by lazily spawning shells."
25983 msgstr ""
25984
25985 #. type: item
25986 #: guix-git/doc/guix.texi:15180
25987 #, no-wrap
25988 msgid "@code{chroot} (default: @code{#f})"
25989 msgstr ""
25990
25991 #. type: table
25992 #: guix-git/doc/guix.texi:15183
25993 msgid "Change root to the specified directory. This option accepts a directory path as a string."
25994 msgstr ""
25995
25996 #. type: item
25997 #: guix-git/doc/guix.texi:15184
25998 #, no-wrap
25999 msgid "@code{hangup?} (default: @code{#f})"
26000 msgstr ""
26001
26002 #. type: table
26003 #: guix-git/doc/guix.texi:15187
26004 msgid "Use the Linux system call @code{vhangup} to do a virtual hangup of the specified terminal."
26005 msgstr ""
26006
26007 #. type: item
26008 #: guix-git/doc/guix.texi:15188
26009 #, no-wrap
26010 msgid "@code{keep-baud?} (default: @code{#f})"
26011 msgstr ""
26012
26013 #. type: table
26014 #: guix-git/doc/guix.texi:15192
26015 msgid "When set to @code{#t}, try to keep the existing baud rate. The baud rates from @var{baud-rate} are used when agetty receives a @key{BREAK} character."
26016 msgstr ""
26017
26018 #. type: item
26019 #: guix-git/doc/guix.texi:15193
26020 #, no-wrap
26021 msgid "@code{timeout} (default: @code{#f})"
26022 msgstr ""
26023
26024 #. type: table
26025 #: guix-git/doc/guix.texi:15196
26026 msgid "When set to an integer value, terminate if no user name could be read within @var{timeout} seconds."
26027 msgstr ""
26028
26029 #. type: item
26030 #: guix-git/doc/guix.texi:15197
26031 #, no-wrap
26032 msgid "@code{detect-case?} (default: @code{#f})"
26033 msgstr ""
26034
26035 #. type: table
26036 #: guix-git/doc/guix.texi:15203
26037 msgid "When set to @code{#t}, turn on support for detecting an uppercase-only terminal. This setting will detect a login name containing only uppercase letters as indicating an uppercase-only terminal and turn on some upper-to-lower case conversions. Note that this will not support Unicode characters."
26038 msgstr ""
26039
26040 #. type: item
26041 #: guix-git/doc/guix.texi:15204
26042 #, no-wrap
26043 msgid "@code{wait-cr?} (default: @code{#f})"
26044 msgstr ""
26045
26046 #. type: table
26047 #: guix-git/doc/guix.texi:15209
26048 msgid "When set to @code{#t}, wait for the user or modem to send a carriage-return or linefeed character before displaying @file{/etc/issue} or login prompt. This is typically used with the @var{init-string} option."
26049 msgstr ""
26050
26051 #. type: item
26052 #: guix-git/doc/guix.texi:15210
26053 #, no-wrap
26054 msgid "@code{no-hints?} (default: @code{#f})"
26055 msgstr ""
26056
26057 #. type: table
26058 #: guix-git/doc/guix.texi:15213
26059 msgid "When set to @code{#t}, do not print hints about Num, Caps, and Scroll locks."
26060 msgstr ""
26061
26062 #. type: item
26063 #: guix-git/doc/guix.texi:15214
26064 #, no-wrap
26065 msgid "@code{no-hostname?} (default: @code{#f})"
26066 msgstr ""
26067
26068 #. type: table
26069 #: guix-git/doc/guix.texi:15217
26070 msgid "By default, the hostname is printed. When this option is set to @code{#t}, no hostname will be shown at all."
26071 msgstr ""
26072
26073 #. type: item
26074 #: guix-git/doc/guix.texi:15218
26075 #, no-wrap
26076 msgid "@code{long-hostname?} (default: @code{#f})"
26077 msgstr ""
26078
26079 #. type: table
26080 #: guix-git/doc/guix.texi:15222
26081 msgid "By default, the hostname is only printed until the first dot. When this option is set to @code{#t}, the fully qualified hostname by @code{gethostname} or @code{getaddrinfo} is shown."
26082 msgstr ""
26083
26084 #. type: item
26085 #: guix-git/doc/guix.texi:15223
26086 #, no-wrap
26087 msgid "@code{erase-characters} (default: @code{#f})"
26088 msgstr ""
26089
26090 #. type: table
26091 #: guix-git/doc/guix.texi:15226
26092 msgid "This option accepts a string of additional characters that should be interpreted as backspace when the user types their login name."
26093 msgstr ""
26094
26095 #. type: item
26096 #: guix-git/doc/guix.texi:15227
26097 #, no-wrap
26098 msgid "@code{kill-characters} (default: @code{#f})"
26099 msgstr ""
26100
26101 #. type: table
26102 #: guix-git/doc/guix.texi:15231
26103 msgid "This option accepts a string that should be interpreted to mean ``ignore all previous characters'' (also called a ``kill'' character) when the user types their login name."
26104 msgstr ""
26105
26106 #. type: item
26107 #: guix-git/doc/guix.texi:15232
26108 #, no-wrap
26109 msgid "@code{chdir} (default: @code{#f})"
26110 msgstr ""
26111
26112 #. type: table
26113 #: guix-git/doc/guix.texi:15235
26114 msgid "This option accepts, as a string, a directory path that will be changed to before login."
26115 msgstr ""
26116
26117 #. type: item
26118 #: guix-git/doc/guix.texi:15236
26119 #, no-wrap
26120 msgid "@code{delay} (default: @code{#f})"
26121 msgstr ""
26122
26123 #. type: table
26124 #: guix-git/doc/guix.texi:15239
26125 msgid "This options accepts, as an integer, the number of seconds to sleep before opening the tty and displaying the login prompt."
26126 msgstr ""
26127
26128 #. type: item
26129 #: guix-git/doc/guix.texi:15240
26130 #, no-wrap
26131 msgid "@code{nice} (default: @code{#f})"
26132 msgstr ""
26133
26134 #. type: table
26135 #: guix-git/doc/guix.texi:15243
26136 msgid "This option accepts, as an integer, the nice value with which to run the @command{login} program."
26137 msgstr ""
26138
26139 #. type: item
26140 #: guix-git/doc/guix.texi:15244 guix-git/doc/guix.texi:15521
26141 #: guix-git/doc/guix.texi:16383 guix-git/doc/guix.texi:23526
26142 #: guix-git/doc/guix.texi:25002 guix-git/doc/guix.texi:27350
26143 #: guix-git/doc/guix.texi:28137 guix-git/doc/guix.texi:29836
26144 #: guix-git/doc/guix.texi:32028
26145 #, no-wrap
26146 msgid "@code{extra-options} (default: @code{'()})"
26147 msgstr ""
26148
26149 #. type: table
26150 #: guix-git/doc/guix.texi:15247
26151 msgid "This option provides an ``escape hatch'' for the user to provide arbitrary command-line arguments to @command{agetty} as a list of strings."
26152 msgstr ""
26153
26154 #. type: deffn
26155 #: guix-git/doc/guix.texi:15251
26156 #, no-wrap
26157 msgid "{Scheme Procedure} kmscon-service-type @var{config}"
26158 msgstr ""
26159
26160 #. type: deffn
26161 #: guix-git/doc/guix.texi:15255
26162 msgid "Return a service to run @uref{https://www.freedesktop.org/wiki/Software/kmscon,kmscon} according to @var{config}, a @code{<kmscon-configuration>} object, which specifies the tty to run, among other things."
26163 msgstr ""
26164
26165 #. type: deftp
26166 #: guix-git/doc/guix.texi:15257
26167 #, no-wrap
26168 msgid "{Data Type} kmscon-configuration"
26169 msgstr ""
26170
26171 #. type: deftp
26172 #: guix-git/doc/guix.texi:15260
26173 msgid "This is the data type representing the configuration of Kmscon, which implements virtual console log-in."
26174 msgstr ""
26175
26176 #. type: code{#1}
26177 #: guix-git/doc/guix.texi:15263
26178 #, no-wrap
26179 msgid "virtual-terminal"
26180 msgstr ""
26181
26182 #. type: table
26183 #: guix-git/doc/guix.texi:15265
26184 msgid "The name of the console this Kmscon runs on---e.g., @code{\"tty1\"}."
26185 msgstr ""
26186
26187 #. type: item
26188 #: guix-git/doc/guix.texi:15266
26189 #, no-wrap
26190 msgid "@code{login-program} (default: @code{#~(string-append #$shadow \"/bin/login\")})"
26191 msgstr ""
26192
26193 #. type: table
26194 #: guix-git/doc/guix.texi:15269
26195 msgid "A gexp denoting the name of the log-in program. The default log-in program is @command{login} from the Shadow tool suite."
26196 msgstr ""
26197
26198 #. type: item
26199 #: guix-git/doc/guix.texi:15270
26200 #, no-wrap
26201 msgid "@code{login-arguments} (default: @code{'(\"-p\")})"
26202 msgstr ""
26203
26204 #. type: table
26205 #: guix-git/doc/guix.texi:15272
26206 msgid "A list of arguments to pass to @command{login}."
26207 msgstr ""
26208
26209 #. type: item
26210 #: guix-git/doc/guix.texi:15277
26211 #, no-wrap
26212 msgid "@code{hardware-acceleration?} (default: #f)"
26213 msgstr ""
26214
26215 #. type: table
26216 #: guix-git/doc/guix.texi:15279
26217 msgid "Whether to use hardware acceleration."
26218 msgstr ""
26219
26220 #. type: item
26221 #: guix-git/doc/guix.texi:15280
26222 #, no-wrap
26223 msgid "@code{font-engine} (default: @code{\"pango\"})"
26224 msgstr ""
26225
26226 #. type: table
26227 #: guix-git/doc/guix.texi:15282
26228 msgid "Font engine used in Kmscon."
26229 msgstr ""
26230
26231 #. type: item
26232 #: guix-git/doc/guix.texi:15283
26233 #, no-wrap
26234 msgid "@code{font-size} (default: @code{12})"
26235 msgstr ""
26236
26237 #. type: table
26238 #: guix-git/doc/guix.texi:15285
26239 msgid "Font size used in Kmscon."
26240 msgstr ""
26241
26242 #. type: item
26243 #: guix-git/doc/guix.texi:15286
26244 #, no-wrap
26245 msgid "@code{kmscon} (default: @var{kmscon})"
26246 msgstr ""
26247
26248 #. type: table
26249 #: guix-git/doc/guix.texi:15288
26250 msgid "The Kmscon package to use."
26251 msgstr ""
26252
26253 #. type: cindex
26254 #: guix-git/doc/guix.texi:15292
26255 #, no-wrap
26256 msgid "name service cache daemon"
26257 msgstr ""
26258
26259 #. type: cindex
26260 #: guix-git/doc/guix.texi:15293
26261 #, no-wrap
26262 msgid "nscd"
26263 msgstr ""
26264
26265 #. type: deffn
26266 #: guix-git/doc/guix.texi:15294
26267 #, no-wrap
26268 msgid "{Scheme Procedure} nscd-service [@var{config}] [#:glibc glibc] @"
26269 msgstr ""
26270
26271 #. type: deffn
26272 #: guix-git/doc/guix.texi:15299
26273 msgid "[#:name-services '()] Return a service that runs the libc name service cache daemon (nscd) with the given @var{config}---an @code{<nscd-configuration>} object. @xref{Name Service Switch}, for an example."
26274 msgstr ""
26275
26276 #. type: deffn
26277 #: guix-git/doc/guix.texi:15301
26278 msgid "For convenience, the Shepherd service for nscd provides the following actions:"
26279 msgstr ""
26280
26281 #. type: item
26282 #: guix-git/doc/guix.texi:15303
26283 #, no-wrap
26284 msgid "invalidate"
26285 msgstr ""
26286
26287 #. type: cindex
26288 #: guix-git/doc/guix.texi:15304
26289 #, no-wrap
26290 msgid "cache invalidation, nscd"
26291 msgstr ""
26292
26293 #. type: cindex
26294 #: guix-git/doc/guix.texi:15305
26295 #, no-wrap
26296 msgid "nscd, cache invalidation"
26297 msgstr ""
26298
26299 #. type: table
26300 #: guix-git/doc/guix.texi:15307
26301 msgid "This invalidate the given cache. For instance, running:"
26302 msgstr ""
26303
26304 #. type: example
26305 #: guix-git/doc/guix.texi:15310
26306 #, no-wrap
26307 msgid "herd invalidate nscd hosts\n"
26308 msgstr ""
26309
26310 #. type: table
26311 #: guix-git/doc/guix.texi:15314
26312 msgid "invalidates the host name lookup cache of nscd."
26313 msgstr ""
26314
26315 #. type: item
26316 #: guix-git/doc/guix.texi:15315
26317 #, no-wrap
26318 msgid "statistics"
26319 msgstr ""
26320
26321 #. type: table
26322 #: guix-git/doc/guix.texi:15318
26323 msgid "Running @command{herd statistics nscd} displays information about nscd usage and caches."
26324 msgstr ""
26325
26326 #. type: defvr
26327 #: guix-git/doc/guix.texi:15322
26328 #, no-wrap
26329 msgid "{Scheme Variable} %nscd-default-configuration"
26330 msgstr ""
26331
26332 #. type: defvr
26333 #: guix-git/doc/guix.texi:15326
26334 msgid "This is the default @code{<nscd-configuration>} value (see below) used by @code{nscd-service}. It uses the caches defined by @code{%nscd-default-caches}; see below."
26335 msgstr ""
26336
26337 #. type: deftp
26338 #: guix-git/doc/guix.texi:15328
26339 #, no-wrap
26340 msgid "{Data Type} nscd-configuration"
26341 msgstr ""
26342
26343 #. type: deftp
26344 #: guix-git/doc/guix.texi:15331
26345 msgid "This is the data type representing the name service cache daemon (nscd) configuration."
26346 msgstr ""
26347
26348 #. type: item
26349 #: guix-git/doc/guix.texi:15334
26350 #, no-wrap
26351 msgid "@code{name-services} (default: @code{'()})"
26352 msgstr ""
26353
26354 #. type: table
26355 #: guix-git/doc/guix.texi:15337
26356 msgid "List of packages denoting @dfn{name services} that must be visible to the nscd---e.g., @code{(list @var{nss-mdns})}."
26357 msgstr ""
26358
26359 #. type: item
26360 #: guix-git/doc/guix.texi:15338
26361 #, no-wrap
26362 msgid "@code{glibc} (default: @var{glibc})"
26363 msgstr ""
26364
26365 #. type: table
26366 #: guix-git/doc/guix.texi:15341
26367 msgid "Package object denoting the GNU C Library providing the @command{nscd} command."
26368 msgstr ""
26369
26370 #. type: item
26371 #: guix-git/doc/guix.texi:15342
26372 #, no-wrap
26373 msgid "@code{log-file} (default: @code{\"/var/log/nscd.log\"})"
26374 msgstr ""
26375
26376 #. type: table
26377 #: guix-git/doc/guix.texi:15345
26378 msgid "Name of the nscd log file. This is where debugging output goes when @code{debug-level} is strictly positive."
26379 msgstr ""
26380
26381 #. type: item
26382 #: guix-git/doc/guix.texi:15346
26383 #, no-wrap
26384 msgid "@code{debug-level} (default: @code{0})"
26385 msgstr ""
26386
26387 #. type: table
26388 #: guix-git/doc/guix.texi:15349
26389 msgid "Integer denoting the debugging levels. Higher numbers mean that more debugging output is logged."
26390 msgstr ""
26391
26392 #. type: item
26393 #: guix-git/doc/guix.texi:15350
26394 #, no-wrap
26395 msgid "@code{caches} (default: @code{%nscd-default-caches})"
26396 msgstr ""
26397
26398 #. type: table
26399 #: guix-git/doc/guix.texi:15353
26400 msgid "List of @code{<nscd-cache>} objects denoting things to be cached; see below."
26401 msgstr ""
26402
26403 #. type: deftp
26404 #: guix-git/doc/guix.texi:15357
26405 #, no-wrap
26406 msgid "{Data Type} nscd-cache"
26407 msgstr ""
26408
26409 #. type: deftp
26410 #: guix-git/doc/guix.texi:15359
26411 msgid "Data type representing a cache database of nscd and its parameters."
26412 msgstr ""
26413
26414 #. type: cindex
26415 #: guix-git/doc/guix.texi:15362 guix-git/doc/guix.texi:19690
26416 #, no-wrap
26417 msgid "database"
26418 msgstr ""
26419
26420 #. type: table
26421 #: guix-git/doc/guix.texi:15367
26422 msgid "This is a symbol representing the name of the database to be cached. Valid values are @code{passwd}, @code{group}, @code{hosts}, and @code{services}, which designate the corresponding NSS database (@pxref{NSS Basics,,, libc, The GNU C Library Reference Manual})."
26423 msgstr ""
26424
26425 #. type: code{#1}
26426 #: guix-git/doc/guix.texi:15368
26427 #, no-wrap
26428 msgid "positive-time-to-live"
26429 msgstr ""
26430
26431 #. type: itemx
26432 #: guix-git/doc/guix.texi:15369
26433 #, no-wrap
26434 msgid "@code{negative-time-to-live} (default: @code{20})"
26435 msgstr ""
26436
26437 #. type: table
26438 #: guix-git/doc/guix.texi:15372
26439 msgid "A number representing the number of seconds during which a positive or negative lookup result remains in cache."
26440 msgstr ""
26441
26442 #. type: item
26443 #: guix-git/doc/guix.texi:15373
26444 #, no-wrap
26445 msgid "@code{check-files?} (default: @code{#t})"
26446 msgstr ""
26447
26448 #. type: table
26449 #: guix-git/doc/guix.texi:15376
26450 msgid "Whether to check for updates of the files corresponding to @var{database}."
26451 msgstr ""
26452
26453 #. type: table
26454 #: guix-git/doc/guix.texi:15380
26455 msgid "For instance, when @var{database} is @code{hosts}, setting this flag instructs nscd to check for updates in @file{/etc/hosts} and to take them into account."
26456 msgstr ""
26457
26458 #. type: item
26459 #: guix-git/doc/guix.texi:15381
26460 #, no-wrap
26461 msgid "@code{persistent?} (default: @code{#t})"
26462 msgstr ""
26463
26464 #. type: table
26465 #: guix-git/doc/guix.texi:15383
26466 msgid "Whether the cache should be stored persistently on disk."
26467 msgstr ""
26468
26469 #. type: item
26470 #: guix-git/doc/guix.texi:15384
26471 #, no-wrap
26472 msgid "@code{shared?} (default: @code{#t})"
26473 msgstr ""
26474
26475 #. type: table
26476 #: guix-git/doc/guix.texi:15386
26477 msgid "Whether the cache should be shared among users."
26478 msgstr ""
26479
26480 #. type: item
26481 #: guix-git/doc/guix.texi:15387
26482 #, no-wrap
26483 msgid "@code{max-database-size} (default: 32@tie{}MiB)"
26484 msgstr ""
26485
26486 #. type: table
26487 #: guix-git/doc/guix.texi:15389
26488 msgid "Maximum size in bytes of the database cache."
26489 msgstr ""
26490
26491 #. type: defvr
26492 #: guix-git/doc/guix.texi:15396
26493 #, no-wrap
26494 msgid "{Scheme Variable} %nscd-default-caches"
26495 msgstr ""
26496
26497 #. type: defvr
26498 #: guix-git/doc/guix.texi:15399
26499 msgid "List of @code{<nscd-cache>} objects used by default by @code{nscd-configuration} (see above)."
26500 msgstr ""
26501
26502 #. type: defvr
26503 #: guix-git/doc/guix.texi:15405
26504 msgid "It enables persistent and aggressive caching of service and host name lookups. The latter provides better host name lookup performance, resilience in the face of unreliable name servers, and also better privacy---often the result of host name lookups is in local cache, so external name servers do not even need to be queried."
26505 msgstr ""
26506
26507 #. type: anchor{#1}
26508 #: guix-git/doc/guix.texi:15408
26509 msgid "syslog-configuration-type"
26510 msgstr ""
26511
26512 #. type: cindex
26513 #: guix-git/doc/guix.texi:15408 guix-git/doc/guix.texi:15424
26514 #, no-wrap
26515 msgid "syslog"
26516 msgstr ""
26517
26518 #. type: cindex
26519 #: guix-git/doc/guix.texi:15409 guix-git/doc/guix.texi:15983
26520 #, no-wrap
26521 msgid "logging"
26522 msgstr ""
26523
26524 #. type: deftp
26525 #: guix-git/doc/guix.texi:15410
26526 #, no-wrap
26527 msgid "{Data Type} syslog-configuration"
26528 msgstr ""
26529
26530 #. type: deftp
26531 #: guix-git/doc/guix.texi:15412
26532 msgid "This data type represents the configuration of the syslog daemon."
26533 msgstr ""
26534
26535 #. type: item
26536 #: guix-git/doc/guix.texi:15414
26537 #, no-wrap
26538 msgid "@code{syslogd} (default: @code{#~(string-append #$inetutils \"/libexec/syslogd\")})"
26539 msgstr ""
26540
26541 #. type: table
26542 #: guix-git/doc/guix.texi:15416
26543 msgid "The syslog daemon to use."
26544 msgstr ""
26545
26546 #. type: item
26547 #: guix-git/doc/guix.texi:15417
26548 #, no-wrap
26549 msgid "@code{config-file} (default: @code{%default-syslog.conf})"
26550 msgstr ""
26551
26552 #. type: table
26553 #: guix-git/doc/guix.texi:15419
26554 msgid "The syslog configuration file to use."
26555 msgstr ""
26556
26557 #. type: anchor{#1}
26558 #: guix-git/doc/guix.texi:15424
26559 msgid "syslog-service"
26560 msgstr ""
26561
26562 #. type: deffn
26563 #: guix-git/doc/guix.texi:15425
26564 #, no-wrap
26565 msgid "{Scheme Procedure} syslog-service @var{config}"
26566 msgstr ""
26567
26568 #. type: deffn
26569 #: guix-git/doc/guix.texi:15427
26570 msgid "Return a service that runs a syslog daemon according to @var{config}."
26571 msgstr ""
26572
26573 #. type: deffn
26574 #: guix-git/doc/guix.texi:15430
26575 msgid "@xref{syslogd invocation,,, inetutils, GNU Inetutils}, for more information on the configuration file syntax."
26576 msgstr ""
26577
26578 #. type: defvr
26579 #: guix-git/doc/guix.texi:15432
26580 #, no-wrap
26581 msgid "{Scheme Variable} guix-service-type"
26582 msgstr ""
26583
26584 #. type: defvr
26585 #: guix-git/doc/guix.texi:15436
26586 msgid "This is the type of the service that runs the build daemon, @command{guix-daemon} (@pxref{Invoking guix-daemon}). Its value must be a @code{guix-configuration} record as described below."
26587 msgstr ""
26588
26589 #. type: anchor{#1}
26590 #: guix-git/doc/guix.texi:15439
26591 msgid "guix-configuration-type"
26592 msgstr ""
26593
26594 #. type: deftp
26595 #: guix-git/doc/guix.texi:15439
26596 #, no-wrap
26597 msgid "{Data Type} guix-configuration"
26598 msgstr ""
26599
26600 #. type: deftp
26601 #: guix-git/doc/guix.texi:15442
26602 msgid "This data type represents the configuration of the Guix build daemon. @xref{Invoking guix-daemon}, for more information."
26603 msgstr ""
26604
26605 #. type: item
26606 #: guix-git/doc/guix.texi:15444
26607 #, no-wrap
26608 msgid "@code{guix} (default: @var{guix})"
26609 msgstr ""
26610
26611 #. type: table
26612 #: guix-git/doc/guix.texi:15446 guix-git/doc/guix.texi:15720
26613 msgid "The Guix package to use."
26614 msgstr ""
26615
26616 #. type: item
26617 #: guix-git/doc/guix.texi:15447
26618 #, no-wrap
26619 msgid "@code{build-group} (default: @code{\"guixbuild\"})"
26620 msgstr ""
26621
26622 #. type: table
26623 #: guix-git/doc/guix.texi:15449
26624 msgid "Name of the group for build user accounts."
26625 msgstr ""
26626
26627 #. type: item
26628 #: guix-git/doc/guix.texi:15450
26629 #, no-wrap
26630 msgid "@code{build-accounts} (default: @code{10})"
26631 msgstr ""
26632
26633 #. type: table
26634 #: guix-git/doc/guix.texi:15452
26635 msgid "Number of build user accounts to create."
26636 msgstr ""
26637
26638 #. type: item
26639 #: guix-git/doc/guix.texi:15453
26640 #, no-wrap
26641 msgid "@code{authorize-key?} (default: @code{#t})"
26642 msgstr ""
26643
26644 #. type: table
26645 #: guix-git/doc/guix.texi:15458
26646 msgid "Whether to authorize the substitute keys listed in @code{authorized-keys}---by default that of @code{@value{SUBSTITUTE-SERVER}} (@pxref{Substitutes})."
26647 msgstr ""
26648
26649 #. type: table
26650 #: guix-git/doc/guix.texi:15464
26651 msgid "When @code{authorize-key?} is true, @file{/etc/guix/acl} cannot be changed by invoking @command{guix archive --authorize}. You must instead adjust @code{guix-configuration} as you wish and reconfigure the system. This ensures that your operating system configuration file is self-contained."
26652 msgstr ""
26653
26654 #. type: quotation
26655 #: guix-git/doc/guix.texi:15471
26656 msgid "When booting or reconfiguring to a system where @code{authorize-key?} is true, the existing @file{/etc/guix/acl} file is backed up as @file{/etc/guix/acl.bak} if it was determined to be a manually modified file. This is to facilitate migration from earlier versions, which allowed for in-place modifications to @file{/etc/guix/acl}."
26657 msgstr ""
26658
26659 #. type: vindex
26660 #: guix-git/doc/guix.texi:15473
26661 #, no-wrap
26662 msgid "%default-authorized-guix-keys"
26663 msgstr ""
26664
26665 #. type: item
26666 #: guix-git/doc/guix.texi:15474
26667 #, no-wrap
26668 msgid "@code{authorized-keys} (default: @code{%default-authorized-guix-keys})"
26669 msgstr ""
26670
26671 #. type: table
26672 #: guix-git/doc/guix.texi:15479
26673 msgid "The list of authorized key files for archive imports, as a list of string-valued gexps (@pxref{Invoking guix archive}). By default, it contains that of @code{@value{SUBSTITUTE-SERVER}} (@pxref{Substitutes}). See @code{substitute-urls} below for an example on how to change it."
26674 msgstr ""
26675
26676 #. type: item
26677 #: guix-git/doc/guix.texi:15480
26678 #, no-wrap
26679 msgid "@code{use-substitutes?} (default: @code{#t})"
26680 msgstr ""
26681
26682 #. type: table
26683 #: guix-git/doc/guix.texi:15482
26684 msgid "Whether to use substitutes."
26685 msgstr ""
26686
26687 #. type: item
26688 #: guix-git/doc/guix.texi:15483
26689 #, no-wrap
26690 msgid "@code{substitute-urls} (default: @code{%default-substitute-urls})"
26691 msgstr ""
26692
26693 #. type: table
26694 #: guix-git/doc/guix.texi:15485
26695 msgid "The list of URLs where to look for substitutes by default."
26696 msgstr ""
26697
26698 #. type: table
26699 #: guix-git/doc/guix.texi:15492
26700 msgid "Suppose you would like to fetch substitutes from @code{guix.example.org} in addition to @code{@value{SUBSTITUTE-SERVER}}. You will need to do two things: (1) add @code{guix.example.org} to @code{substitute-urls}, and (2) authorize its signing key, having done appropriate checks (@pxref{Substitute Server Authorization}). The configuration below does exactly that:"
26701 msgstr ""
26702
26703 #. type: lisp
26704 #: guix-git/doc/guix.texi:15501
26705 #, no-wrap
26706 msgid ""
26707 "(guix-configuration\n"
26708 " (substitute-urls\n"
26709 " (append (list \"https://guix.example.org\")\n"
26710 " %default-substitute-urls))\n"
26711 " (authorized-keys\n"
26712 " (append (list (local-file \"./guix.example.org-key.pub\"))\n"
26713 " %default-authorized-guix-keys)))\n"
26714 msgstr ""
26715
26716 #. type: table
26717 #: guix-git/doc/guix.texi:15506
26718 msgid "This example assumes that the file @file{./guix.example.org-key.pub} contains the public key that @code{guix.example.org} uses to sign substitutes."
26719 msgstr ""
26720
26721 #. type: item
26722 #: guix-git/doc/guix.texi:15507
26723 #, no-wrap
26724 msgid "@code{max-silent-time} (default: @code{0})"
26725 msgstr ""
26726
26727 #. type: itemx
26728 #: guix-git/doc/guix.texi:15508
26729 #, no-wrap
26730 msgid "@code{timeout} (default: @code{0})"
26731 msgstr ""
26732
26733 #. type: table
26734 #: guix-git/doc/guix.texi:15512
26735 msgid "The number of seconds of silence and the number of seconds of activity, respectively, after which a build process times out. A value of zero disables the timeout."
26736 msgstr ""
26737
26738 #. type: item
26739 #: guix-git/doc/guix.texi:15513
26740 #, no-wrap
26741 msgid "@code{log-compression} (default: @code{'bzip2})"
26742 msgstr ""
26743
26744 #. type: table
26745 #: guix-git/doc/guix.texi:15516
26746 msgid "The type of compression used for build logs---one of @code{gzip}, @code{bzip2}, or @code{none}."
26747 msgstr ""
26748
26749 #. type: item
26750 #: guix-git/doc/guix.texi:15517
26751 #, no-wrap
26752 msgid "@code{discover?} (default: @code{#f})"
26753 msgstr ""
26754
26755 #. type: table
26756 #: guix-git/doc/guix.texi:15523
26757 msgid "List of extra command-line options for @command{guix-daemon}."
26758 msgstr ""
26759
26760 #. type: item
26761 #: guix-git/doc/guix.texi:15524
26762 #, no-wrap
26763 msgid "@code{log-file} (default: @code{\"/var/log/guix-daemon.log\"})"
26764 msgstr ""
26765
26766 #. type: table
26767 #: guix-git/doc/guix.texi:15527
26768 msgid "File where @command{guix-daemon}'s standard output and standard error are written."
26769 msgstr ""
26770
26771 #. type: cindex
26772 #: guix-git/doc/guix.texi:15528
26773 #, no-wrap
26774 msgid "HTTP proxy, for @code{guix-daemon}"
26775 msgstr ""
26776
26777 #. type: cindex
26778 #: guix-git/doc/guix.texi:15529
26779 #, no-wrap
26780 msgid "proxy, for @code{guix-daemon} HTTP access"
26781 msgstr ""
26782
26783 #. type: item
26784 #: guix-git/doc/guix.texi:15530
26785 #, no-wrap
26786 msgid "@code{http-proxy} (default: @code{#f})"
26787 msgstr ""
26788
26789 #. type: table
26790 #: guix-git/doc/guix.texi:15533
26791 msgid "The URL of the HTTP and HTTPS proxy used for downloading fixed-output derivations and substitutes."
26792 msgstr ""
26793
26794 #. type: table
26795 #: guix-git/doc/guix.texi:15536
26796 msgid "It is also possible to change the daemon's proxy at run time through the @code{set-http-proxy} action, which restarts it:"
26797 msgstr ""
26798
26799 #. type: example
26800 #: guix-git/doc/guix.texi:15539
26801 #, no-wrap
26802 msgid "herd set-http-proxy guix-daemon http://localhost:8118\n"
26803 msgstr ""
26804
26805 #. type: table
26806 #: guix-git/doc/guix.texi:15542
26807 msgid "To clear the proxy settings, run:"
26808 msgstr ""
26809
26810 #. type: example
26811 #: guix-git/doc/guix.texi:15545
26812 #, no-wrap
26813 msgid "herd set-http-proxy guix-daemon\n"
26814 msgstr ""
26815
26816 #. type: item
26817 #: guix-git/doc/guix.texi:15547
26818 #, no-wrap
26819 msgid "@code{tmpdir} (default: @code{#f})"
26820 msgstr ""
26821
26822 #. type: table
26823 #: guix-git/doc/guix.texi:15549
26824 msgid "A directory path where the @command{guix-daemon} will perform builds."
26825 msgstr ""
26826
26827 #. type: deffn
26828 #: guix-git/doc/guix.texi:15553
26829 #, no-wrap
26830 msgid "{Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}]"
26831 msgstr ""
26832
26833 #. type: deffn
26834 #: guix-git/doc/guix.texi:15559
26835 msgid "Run @var{udev}, which populates the @file{/dev} directory dynamically. udev rules can be provided as a list of files through the @var{rules} variable. The procedures @code{udev-rule}, @code{udev-rules-service} and @code{file->udev-rule} from @code{(gnu services base)} simplify the creation of such rule files."
26836 msgstr ""
26837
26838 #. type: deffn
26839 #: guix-git/doc/guix.texi:15562
26840 msgid "The @command{herd rules udev} command, as root, returns the name of the directory containing all the active udev rules."
26841 msgstr ""
26842
26843 #. type: deffn
26844 #: guix-git/doc/guix.texi:15564
26845 #, no-wrap
26846 msgid "{Scheme Procedure} udev-rule [@var{file-name} @var{contents}]"
26847 msgstr ""
26848
26849 #. type: deffn
26850 #: guix-git/doc/guix.texi:15567
26851 msgid "Return a udev-rule file named @var{file-name} containing the rules defined by the @var{contents} literal."
26852 msgstr ""
26853
26854 #. type: deffn
26855 #: guix-git/doc/guix.texi:15571
26856 msgid "In the following example, a rule for a USB device is defined to be stored in the file @file{90-usb-thing.rules}. The rule runs a script upon detecting a USB device with a given product identifier."
26857 msgstr ""
26858
26859 #. type: lisp
26860 #: guix-git/doc/guix.texi:15579
26861 #, no-wrap
26862 msgid ""
26863 "(define %example-udev-rule\n"
26864 " (udev-rule\n"
26865 " \"90-usb-thing.rules\"\n"
26866 " (string-append \"ACTION==\\\"add\\\", SUBSYSTEM==\\\"usb\\\", \"\n"
26867 " \"ATTR@{product@}==\\\"Example\\\", \"\n"
26868 " \"RUN+=\\\"/path/to/script\\\"\")))\n"
26869 msgstr ""
26870
26871 #. type: deffn
26872 #: guix-git/doc/guix.texi:15582
26873 #, no-wrap
26874 msgid "{Scheme Procedure} udev-rules-service [@var{name} @var{rules}] @"
26875 msgstr ""
26876
26877 #. type: deffn
26878 #: guix-git/doc/guix.texi:15589
26879 msgid "[#:groups @var{groups}] Return a service that extends @code{udev-service-type } with @var{rules} and @code{account-service-type} with @var{groups} as system groups. This works by creating a singleton service type @code{@var{name}-udev-rules}, of which the returned service is an instance."
26880 msgstr ""
26881
26882 #. type: deffn
26883 #: guix-git/doc/guix.texi:15592
26884 msgid "Here we show how it can be used to extend @code{udev-service-type} with the previously defined rule @code{%example-udev-rule}."
26885 msgstr ""
26886
26887 #. type: lisp
26888 #: guix-git/doc/guix.texi:15599
26889 #, no-wrap
26890 msgid ""
26891 "(operating-system\n"
26892 " ;; @dots{}\n"
26893 " (services\n"
26894 " (cons (udev-rules-service 'usb-thing %example-udev-rule)\n"
26895 " %desktop-services)))\n"
26896 msgstr ""
26897
26898 #. type: deffn
26899 #: guix-git/doc/guix.texi:15602
26900 #, no-wrap
26901 msgid "{Scheme Procedure} file->udev-rule [@var{file-name} @var{file}]"
26902 msgstr ""
26903
26904 #. type: deffn
26905 #: guix-git/doc/guix.texi:15605
26906 msgid "Return a udev file named @var{file-name} containing the rules defined within @var{file}, a file-like object."
26907 msgstr ""
26908
26909 #. type: deffn
26910 #: guix-git/doc/guix.texi:15607
26911 msgid "The following example showcases how we can use an existing rule file."
26912 msgstr ""
26913
26914 #. type: lisp
26915 #: guix-git/doc/guix.texi:15612
26916 #, no-wrap
26917 msgid ""
26918 "(use-modules (guix download) ;for url-fetch\n"
26919 " (guix packages) ;for origin\n"
26920 " @dots{})\n"
26921 "\n"
26922 msgstr ""
26923
26924 #. type: lisp
26925 #: guix-git/doc/guix.texi:15623
26926 #, no-wrap
26927 msgid ""
26928 "(define %android-udev-rules\n"
26929 " (file->udev-rule\n"
26930 " \"51-android-udev.rules\"\n"
26931 " (let ((version \"20170910\"))\n"
26932 " (origin\n"
26933 " (method url-fetch)\n"
26934 " (uri (string-append \"https://raw.githubusercontent.com/M0Rf30/\"\n"
26935 " \"android-udev-rules/\" version \"/51-android.rules\"))\n"
26936 " (sha256\n"
26937 " (base32 \"0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003\"))))))\n"
26938 msgstr ""
26939
26940 #. type: Plain text
26941 #: guix-git/doc/guix.texi:15632
26942 msgid "Additionally, Guix package definitions can be included in @var{rules} in order to extend the udev rules with the definitions found under their @file{lib/udev/rules.d} sub-directory. In lieu of the previous @var{file->udev-rule} example, we could have used the @var{android-udev-rules} package which exists in Guix in the @code{(gnu packages android)} module."
26943 msgstr ""
26944
26945 #. type: Plain text
26946 #: guix-git/doc/guix.texi:15641
26947 msgid "The following example shows how to use the @var{android-udev-rules} package so that the Android tool @command{adb} can detect devices without root privileges. It also details how to create the @code{adbusers} group, which is required for the proper functioning of the rules defined within the @code{android-udev-rules} package. To create such a group, we must define it both as part of the @code{supplementary-groups} of our @code{user-account} declaration, as well as in the @var{groups} of the @code{udev-rules-service} procedure."
26948 msgstr ""
26949
26950 #. type: lisp
26951 #: guix-git/doc/guix.texi:15646
26952 #, no-wrap
26953 msgid ""
26954 "(use-modules (gnu packages android) ;for android-udev-rules\n"
26955 " (gnu system shadow) ;for user-group\n"
26956 " @dots{})\n"
26957 "\n"
26958 msgstr ""
26959
26960 #. type: lisp
26961 #: guix-git/doc/guix.texi:15659
26962 #, no-wrap
26963 msgid ""
26964 "(operating-system\n"
26965 " ;; @dots{}\n"
26966 " (users (cons (user-account\n"
26967 " ;; @dots{}\n"
26968 " (supplementary-groups\n"
26969 " '(\"adbusers\" ;for adb\n"
26970 " \"wheel\" \"netdev\" \"audio\" \"video\")))))\n"
26971 " ;; @dots{}\n"
26972 " (services\n"
26973 " (cons (udev-rules-service 'android android-udev-rules\n"
26974 " #:groups '(\"adbusers\"))\n"
26975 " %desktop-services)))\n"
26976 msgstr ""
26977
26978 #. type: defvr
26979 #: guix-git/doc/guix.texi:15661
26980 #, no-wrap
26981 msgid "{Scheme Variable} urandom-seed-service-type"
26982 msgstr ""
26983
26984 #. type: defvr
26985 #: guix-git/doc/guix.texi:15666
26986 msgid "Save some entropy in @code{%random-seed-file} to seed @file{/dev/urandom} when rebooting. It also tries to seed @file{/dev/urandom} from @file{/dev/hwrng} while booting, if @file{/dev/hwrng} exists and is readable."
26987 msgstr ""
26988
26989 #. type: defvr
26990 #: guix-git/doc/guix.texi:15668
26991 #, no-wrap
26992 msgid "{Scheme Variable} %random-seed-file"
26993 msgstr ""
26994
26995 #. type: defvr
26996 #: guix-git/doc/guix.texi:15672
26997 msgid "This is the name of the file where some random bytes are saved by @var{urandom-seed-service} to seed @file{/dev/urandom} when rebooting. It defaults to @file{/var/lib/random-seed}."
26998 msgstr ""
26999
27000 #. type: cindex
27001 #: guix-git/doc/guix.texi:15674
27002 #, no-wrap
27003 msgid "mouse"
27004 msgstr ""
27005
27006 #. type: cindex
27007 #: guix-git/doc/guix.texi:15675
27008 #, no-wrap
27009 msgid "gpm"
27010 msgstr ""
27011
27012 #. type: defvr
27013 #: guix-git/doc/guix.texi:15676
27014 #, no-wrap
27015 msgid "{Scheme Variable} gpm-service-type"
27016 msgstr ""
27017
27018 #. type: defvr
27019 #: guix-git/doc/guix.texi:15681
27020 msgid "This is the type of the service that runs GPM, the @dfn{general-purpose mouse daemon}, which provides mouse support to the Linux console. GPM allows users to use the mouse in the console, notably to select, copy, and paste text."
27021 msgstr ""
27022
27023 #. type: defvr
27024 #: guix-git/doc/guix.texi:15684
27025 msgid "The value for services of this type must be a @code{gpm-configuration} (see below). This service is not part of @code{%base-services}."
27026 msgstr ""
27027
27028 #. type: deftp
27029 #: guix-git/doc/guix.texi:15686
27030 #, no-wrap
27031 msgid "{Data Type} gpm-configuration"
27032 msgstr ""
27033
27034 #. type: deftp
27035 #: guix-git/doc/guix.texi:15688
27036 msgid "Data type representing the configuration of GPM."
27037 msgstr ""
27038
27039 #. type: item
27040 #: guix-git/doc/guix.texi:15690
27041 #, no-wrap
27042 msgid "@code{options} (default: @code{%default-gpm-options})"
27043 msgstr ""
27044
27045 #. type: table
27046 #: guix-git/doc/guix.texi:15695
27047 msgid "Command-line options passed to @command{gpm}. The default set of options instruct @command{gpm} to listen to mouse events on @file{/dev/input/mice}. @xref{Command Line,,, gpm, gpm manual}, for more information."
27048 msgstr ""
27049
27050 #. type: item
27051 #: guix-git/doc/guix.texi:15696
27052 #, no-wrap
27053 msgid "@code{gpm} (default: @code{gpm})"
27054 msgstr ""
27055
27056 #. type: table
27057 #: guix-git/doc/guix.texi:15698
27058 msgid "The GPM package to use."
27059 msgstr ""
27060
27061 #. type: anchor{#1}
27062 #: guix-git/doc/guix.texi:15703
27063 msgid "guix-publish-service-type"
27064 msgstr ""
27065
27066 #. type: deffn
27067 #: guix-git/doc/guix.texi:15703
27068 #, no-wrap
27069 msgid "{Scheme Variable} guix-publish-service-type"
27070 msgstr ""
27071
27072 #. type: deffn
27073 #: guix-git/doc/guix.texi:15707
27074 msgid "This is the service type for @command{guix publish} (@pxref{Invoking guix publish}). Its value must be a @code{guix-publish-configuration} object, as described below."
27075 msgstr ""
27076
27077 #. type: deffn
27078 #: guix-git/doc/guix.texi:15711
27079 msgid "This assumes that @file{/etc/guix} already contains a signing key pair as created by @command{guix archive --generate-key} (@pxref{Invoking guix archive}). If that is not the case, the service will fail to start."
27080 msgstr ""
27081
27082 #. type: deftp
27083 #: guix-git/doc/guix.texi:15713
27084 #, no-wrap
27085 msgid "{Data Type} guix-publish-configuration"
27086 msgstr ""
27087
27088 #. type: deftp
27089 #: guix-git/doc/guix.texi:15716
27090 msgid "Data type representing the configuration of the @code{guix publish} service."
27091 msgstr ""
27092
27093 #. type: item
27094 #: guix-git/doc/guix.texi:15718
27095 #, no-wrap
27096 msgid "@code{guix} (default: @code{guix})"
27097 msgstr ""
27098
27099 #. type: item
27100 #: guix-git/doc/guix.texi:15721 guix-git/doc/guix.texi:29691
27101 #, no-wrap
27102 msgid "@code{port} (default: @code{80})"
27103 msgstr ""
27104
27105 #. type: table
27106 #: guix-git/doc/guix.texi:15723
27107 msgid "The TCP port to listen for connections."
27108 msgstr ""
27109
27110 #. type: item
27111 #: guix-git/doc/guix.texi:15724 guix-git/doc/guix.texi:27330
27112 #, no-wrap
27113 msgid "@code{host} (default: @code{\"localhost\"})"
27114 msgstr ""
27115
27116 #. type: table
27117 #: guix-git/doc/guix.texi:15727
27118 msgid "The host (and thus, network interface) to listen to. Use @code{\"0.0.0.0\"} to listen on all the network interfaces."
27119 msgstr ""
27120
27121 #. type: item
27122 #: guix-git/doc/guix.texi:15728
27123 #, no-wrap
27124 msgid "@code{advertise?} (default: @code{#f})"
27125 msgstr ""
27126
27127 #. type: table
27128 #: guix-git/doc/guix.texi:15731
27129 msgid "When true, advertise the service on the local network @i{via} the DNS-SD protocol, using Avahi."
27130 msgstr ""
27131
27132 #. type: table
27133 #: guix-git/doc/guix.texi:15735
27134 msgid "This allows neighboring Guix devices with discovery on (see @code{guix-configuration} above) to discover this @command{guix publish} instance and to automatically download substitutes from it."
27135 msgstr ""
27136
27137 #. type: item
27138 #: guix-git/doc/guix.texi:15736
27139 #, no-wrap
27140 msgid "@code{compression} (default: @code{'((\"gzip\" 3) (\"zstd\" 3))})"
27141 msgstr ""
27142
27143 #. type: table
27144 #: guix-git/doc/guix.texi:15740
27145 msgid "This is a list of compression method/level tuple used when compressing substitutes. For example, to compress all substitutes with @emph{both} lzip at level 7 and gzip at level 9, write:"
27146 msgstr ""
27147
27148 #. type: lisp
27149 #: guix-git/doc/guix.texi:15743
27150 #, no-wrap
27151 msgid "'((\"lzip\" 7) (\"gzip\" 9))\n"
27152 msgstr ""
27153
27154 #. type: table
27155 #: guix-git/doc/guix.texi:15749
27156 msgid "Level 9 achieves the best compression ratio at the expense of increased CPU usage, whereas level 1 achieves fast compression. @xref{Invoking guix publish}, for more information on the available compression methods and the tradeoffs involved."
27157 msgstr ""
27158
27159 #. type: table
27160 #: guix-git/doc/guix.texi:15751
27161 msgid "An empty list disables compression altogether."
27162 msgstr ""
27163
27164 #. type: item
27165 #: guix-git/doc/guix.texi:15752
27166 #, no-wrap
27167 msgid "@code{nar-path} (default: @code{\"nar\"})"
27168 msgstr ""
27169
27170 #. type: table
27171 #: guix-git/doc/guix.texi:15755
27172 msgid "The URL path at which ``nars'' can be fetched. @xref{Invoking guix publish, @option{--nar-path}}, for details."
27173 msgstr ""
27174
27175 #. type: item
27176 #: guix-git/doc/guix.texi:15756
27177 #, no-wrap
27178 msgid "@code{cache} (default: @code{#f})"
27179 msgstr ""
27180
27181 #. type: table
27182 #: guix-git/doc/guix.texi:15762
27183 msgid "When it is @code{#f}, disable caching and instead generate archives on demand. Otherwise, this should be the name of a directory---e.g., @code{\"/var/cache/guix/publish\"}---where @command{guix publish} caches archives and meta-data ready to be sent. @xref{Invoking guix publish, @option{--cache}}, for more information on the tradeoffs involved."
27184 msgstr ""
27185
27186 #. type: item
27187 #: guix-git/doc/guix.texi:15763
27188 #, no-wrap
27189 msgid "@code{workers} (default: @code{#f})"
27190 msgstr ""
27191
27192 #. type: table
27193 #: guix-git/doc/guix.texi:15767
27194 msgid "When it is an integer, this is the number of worker threads used for caching; when @code{#f}, the number of processors is used. @xref{Invoking guix publish, @option{--workers}}, for more information."
27195 msgstr ""
27196
27197 #. type: item
27198 #: guix-git/doc/guix.texi:15768
27199 #, no-wrap
27200 msgid "@code{cache-bypass-threshold} (default: 10 MiB)"
27201 msgstr ""
27202
27203 #. type: table
27204 #: guix-git/doc/guix.texi:15773
27205 msgid "When @code{cache} is true, this is the maximum size in bytes of a store item for which @command{guix publish} may bypass its cache in case of a cache miss. @xref{Invoking guix publish, @option{--cache-bypass-threshold}}, for more information."
27206 msgstr ""
27207
27208 #. type: item
27209 #: guix-git/doc/guix.texi:15774
27210 #, no-wrap
27211 msgid "@code{ttl} (default: @code{#f})"
27212 msgstr ""
27213
27214 #. type: table
27215 #: guix-git/doc/guix.texi:15778
27216 msgid "When it is an integer, this denotes the @dfn{time-to-live} in seconds of the published archives. @xref{Invoking guix publish, @option{--ttl}}, for more information."
27217 msgstr ""
27218
27219 #. type: anchor{#1}
27220 #: guix-git/doc/guix.texi:15782
27221 msgid "rngd-service"
27222 msgstr ""
27223
27224 #. type: deffn
27225 #: guix-git/doc/guix.texi:15782
27226 #, no-wrap
27227 msgid "{Scheme Procedure} rngd-service [#:rng-tools @var{rng-tools}] @"
27228 msgstr ""
27229
27230 #. type: deffn
27231 #: guix-git/doc/guix.texi:15787
27232 msgid "[#:device \"/dev/hwrng\"] Return a service that runs the @command{rngd} program from @var{rng-tools} to add @var{device} to the kernel's entropy pool. The service will fail if @var{device} does not exist."
27233 msgstr ""
27234
27235 #. type: anchor{#1}
27236 #: guix-git/doc/guix.texi:15790
27237 msgid "pam-limits-service"
27238 msgstr ""
27239
27240 #. type: cindex
27241 #: guix-git/doc/guix.texi:15790
27242 #, no-wrap
27243 msgid "session limits"
27244 msgstr ""
27245
27246 #. type: cindex
27247 #: guix-git/doc/guix.texi:15791
27248 #, no-wrap
27249 msgid "ulimit"
27250 msgstr ""
27251
27252 #. type: cindex
27253 #: guix-git/doc/guix.texi:15792
27254 #, no-wrap
27255 msgid "priority"
27256 msgstr ""
27257
27258 #. type: cindex
27259 #: guix-git/doc/guix.texi:15793
27260 #, no-wrap
27261 msgid "realtime"
27262 msgstr ""
27263
27264 #. type: cindex
27265 #: guix-git/doc/guix.texi:15794
27266 #, no-wrap
27267 msgid "jackd"
27268 msgstr ""
27269
27270 #. type: cindex
27271 #: guix-git/doc/guix.texi:15795
27272 #, no-wrap
27273 msgid "nofile"
27274 msgstr ""
27275
27276 #. type: cindex
27277 #: guix-git/doc/guix.texi:15796
27278 #, no-wrap
27279 msgid "open file descriptors"
27280 msgstr ""
27281
27282 #. type: deffn
27283 #: guix-git/doc/guix.texi:15797
27284 #, no-wrap
27285 msgid "{Scheme Procedure} pam-limits-service [#:limits @code{'()}]"
27286 msgstr ""
27287
27288 #. type: deffn
27289 #: guix-git/doc/guix.texi:15804
27290 msgid "Return a service that installs a configuration file for the @uref{http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html, @code{pam_limits} module}. The procedure optionally takes a list of @code{pam-limits-entry} values, which can be used to specify @code{ulimit} limits and @code{nice} priority limits to user sessions."
27291 msgstr ""
27292
27293 #. type: deffn
27294 #: guix-git/doc/guix.texi:15807
27295 msgid "The following limits definition sets two hard and soft limits for all login sessions of users in the @code{realtime} group:"
27296 msgstr ""
27297
27298 #. type: lisp
27299 #: guix-git/doc/guix.texi:15813
27300 #, no-wrap
27301 msgid ""
27302 "(pam-limits-service\n"
27303 " (list\n"
27304 " (pam-limits-entry \"@@realtime\" 'both 'rtprio 99)\n"
27305 " (pam-limits-entry \"@@realtime\" 'both 'memlock 'unlimited)))\n"
27306 msgstr ""
27307
27308 #. type: deffn
27309 #: guix-git/doc/guix.texi:15819
27310 msgid "The first entry increases the maximum realtime priority for non-privileged processes; the second entry lifts any restriction of the maximum address space that can be locked in memory. These settings are commonly used for real-time audio systems."
27311 msgstr ""
27312
27313 #. type: deffn
27314 #: guix-git/doc/guix.texi:15822
27315 msgid "Another useful example is raising the maximum number of open file descriptors that can be used:"
27316 msgstr ""
27317
27318 #. type: lisp
27319 #: guix-git/doc/guix.texi:15827
27320 #, no-wrap
27321 msgid ""
27322 "(pam-limits-service\n"
27323 " (list\n"
27324 " (pam-limits-entry \"*\" 'both 'nofile 100000)))\n"
27325 msgstr ""
27326
27327 #. type: deffn
27328 #: guix-git/doc/guix.texi:15835
27329 msgid "In the above example, the asterisk means the limit should apply to any user. It is important to ensure the chosen value doesn't exceed the maximum system value visible in the @file{/proc/sys/fs/file-max} file, else the users would be prevented from login in. For more information about the Pluggable Authentication Module (PAM) limits, refer to the @samp{pam_limits} man page from the @code{linux-pam} package."
27330 msgstr ""
27331
27332 #. type: cindex
27333 #: guix-git/doc/guix.texi:15840
27334 #, no-wrap
27335 msgid "cron"
27336 msgstr ""
27337
27338 #. type: cindex
27339 #: guix-git/doc/guix.texi:15841
27340 #, no-wrap
27341 msgid "mcron"
27342 msgstr ""
27343
27344 #. type: cindex
27345 #: guix-git/doc/guix.texi:15842
27346 #, no-wrap
27347 msgid "scheduling jobs"
27348 msgstr ""
27349
27350 #. type: Plain text
27351 #: guix-git/doc/guix.texi:15849
27352 msgid "The @code{(gnu services mcron)} module provides an interface to GNU@tie{}mcron, a daemon to run jobs at scheduled times (@pxref{Top,,, mcron, GNU@tie{}mcron}). GNU@tie{}mcron is similar to the traditional Unix @command{cron} daemon; the main difference is that it is implemented in Guile Scheme, which provides a lot of flexibility when specifying the scheduling of jobs and their actions."
27353 msgstr ""
27354
27355 #. type: Plain text
27356 #: guix-git/doc/guix.texi:15857
27357 msgid "The example below defines an operating system that runs the @command{updatedb} (@pxref{Invoking updatedb,,, find, Finding Files}) and the @command{guix gc} commands (@pxref{Invoking guix gc}) daily, as well as the @command{mkid} command on behalf of an unprivileged user (@pxref{mkid invocation,,, idutils, ID Database Utilities}). It uses gexps to introduce job definitions that are passed to mcron (@pxref{G-Expressions})."
27358 msgstr ""
27359
27360 #. type: lisp
27361 #: guix-git/doc/guix.texi:15861
27362 #, no-wrap
27363 msgid ""
27364 "(use-modules (guix) (gnu) (gnu services mcron))\n"
27365 "(use-package-modules base idutils)\n"
27366 "\n"
27367 msgstr ""
27368
27369 #. type: lisp
27370 #: guix-git/doc/guix.texi:15870
27371 #, no-wrap
27372 msgid ""
27373 "(define updatedb-job\n"
27374 " ;; Run 'updatedb' at 3AM every day. Here we write the\n"
27375 " ;; job's action as a Scheme procedure.\n"
27376 " #~(job '(next-hour '(3))\n"
27377 " (lambda ()\n"
27378 " (execl (string-append #$findutils \"/bin/updatedb\")\n"
27379 " \"updatedb\"\n"
27380 " \"--prunepaths=/tmp /var/tmp /gnu/store\"))))\n"
27381 "\n"
27382 msgstr ""
27383
27384 #. type: lisp
27385 #: guix-git/doc/guix.texi:15876
27386 #, no-wrap
27387 msgid ""
27388 "(define garbage-collector-job\n"
27389 " ;; Collect garbage 5 minutes after midnight every day.\n"
27390 " ;; The job's action is a shell command.\n"
27391 " #~(job \"5 0 * * *\" ;Vixie cron syntax\n"
27392 " \"guix gc -F 1G\"))\n"
27393 "\n"
27394 msgstr ""
27395
27396 #. type: lisp
27397 #: guix-git/doc/guix.texi:15883
27398 #, no-wrap
27399 msgid ""
27400 "(define idutils-job\n"
27401 " ;; Update the index database as user \"charlie\" at 12:15PM\n"
27402 " ;; and 19:15PM. This runs from the user's home directory.\n"
27403 " #~(job '(next-minute-from (next-hour '(12 19)) '(15))\n"
27404 " (string-append #$idutils \"/bin/mkid src\")\n"
27405 " #:user \"charlie\"))\n"
27406 "\n"
27407 msgstr ""
27408
27409 #. type: lisp
27410 #: guix-git/doc/guix.texi:15886
27411 #, no-wrap
27412 msgid ""
27413 "(operating-system\n"
27414 " ;; @dots{}\n"
27415 "\n"
27416 msgstr ""
27417
27418 #. type: lisp
27419 #: guix-git/doc/guix.texi:15896
27420 #, no-wrap
27421 msgid ""
27422 " ;; %BASE-SERVICES already includes an instance of\n"
27423 " ;; 'mcron-service-type', which we extend with additional\n"
27424 " ;; jobs using 'simple-service'.\n"
27425 " (services (cons (simple-service 'my-cron-jobs\n"
27426 " mcron-service-type\n"
27427 " (list garbage-collector-job\n"
27428 " updatedb-job\n"
27429 " idutils-job))\n"
27430 " %base-services)))\n"
27431 msgstr ""
27432
27433 #. type: Plain text
27434 #: guix-git/doc/guix.texi:15903
27435 msgid "For more complex jobs defined in Scheme where you need control over the top level, for instance to introduce a @code{use-modules} form, you can move your code to a separate program using the @code{program-file} procedure of the @code{(guix gexp)} module (@pxref{G-Expressions}). The example below illustrates that."
27436 msgstr ""
27437
27438 #. type: lisp
27439 #: guix-git/doc/guix.texi:15919
27440 #, no-wrap
27441 msgid ""
27442 "(define %battery-alert-job\n"
27443 " ;; Beep when the battery percentage falls below %MIN-LEVEL.\n"
27444 " #~(job\n"
27445 " '(next-minute (range 0 60 1))\n"
27446 " #$(program-file\n"
27447 " \"battery-alert.scm\"\n"
27448 " (with-imported-modules (source-module-closure\n"
27449 " '((guix build utils)))\n"
27450 " #~(begin\n"
27451 " (use-modules (guix build utils)\n"
27452 " (ice-9 popen)\n"
27453 " (ice-9 regex)\n"
27454 " (ice-9 textual-ports)\n"
27455 " (srfi srfi-2))\n"
27456 "\n"
27457 msgstr ""
27458
27459 #. type: lisp
27460 #: guix-git/doc/guix.texi:15921
27461 #, no-wrap
27462 msgid ""
27463 " (define %min-level 20)\n"
27464 "\n"
27465 msgstr ""
27466
27467 #. type: lisp
27468 #: guix-git/doc/guix.texi:15932
27469 #, no-wrap
27470 msgid ""
27471 " (setenv \"LC_ALL\" \"C\") ;ensure English output\n"
27472 " (and-let* ((input-pipe (open-pipe*\n"
27473 " OPEN_READ\n"
27474 " #$(file-append acpi \"/bin/acpi\")))\n"
27475 " (output (get-string-all input-pipe))\n"
27476 " (m (string-match \"Discharging, ([0-9]+)%\" output))\n"
27477 " (level (string->number (match:substring m 1)))\n"
27478 " ((< level %min-level)))\n"
27479 " (format #t \"warning: Battery level is low (~a%)~%\" level)\n"
27480 " (invoke #$(file-append beep \"/bin/beep\") \"-r5\")))))))\n"
27481 msgstr ""
27482
27483 #. type: Plain text
27484 #: guix-git/doc/guix.texi:15937
27485 msgid "@xref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron}, for more information on mcron job specifications. Below is the reference of the mcron service."
27486 msgstr ""
27487
27488 #. type: Plain text
27489 #: guix-git/doc/guix.texi:15940
27490 msgid "On a running system, you can use the @code{schedule} action of the service to visualize the mcron jobs that will be executed next:"
27491 msgstr ""
27492
27493 #. type: example
27494 #: guix-git/doc/guix.texi:15943
27495 #, no-wrap
27496 msgid "# herd schedule mcron\n"
27497 msgstr ""
27498
27499 #. type: Plain text
27500 #: guix-git/doc/guix.texi:15948
27501 msgid "The example above lists the next five tasks that will be executed, but you can also specify the number of tasks to display:"
27502 msgstr ""
27503
27504 #. type: example
27505 #: guix-git/doc/guix.texi:15951
27506 #, no-wrap
27507 msgid "# herd schedule mcron 10\n"
27508 msgstr ""
27509
27510 #. type: defvr
27511 #: guix-git/doc/guix.texi:15953
27512 #, no-wrap
27513 msgid "{Scheme Variable} mcron-service-type"
27514 msgstr ""
27515
27516 #. type: defvr
27517 #: guix-git/doc/guix.texi:15956
27518 msgid "This is the type of the @code{mcron} service, whose value is an @code{mcron-configuration} object."
27519 msgstr ""
27520
27521 #. type: defvr
27522 #: guix-git/doc/guix.texi:15961
27523 msgid "This service type can be the target of a service extension that provides it additional job specifications (@pxref{Service Composition}). In other words, it is possible to define services that provide additional mcron jobs to run."
27524 msgstr ""
27525
27526 #. type: deftp
27527 #: guix-git/doc/guix.texi:15963
27528 #, no-wrap
27529 msgid "{Data Type} mcron-configuration"
27530 msgstr ""
27531
27532 #. type: deftp
27533 #: guix-git/doc/guix.texi:15965
27534 msgid "Data type representing the configuration of mcron."
27535 msgstr ""
27536
27537 #. type: item
27538 #: guix-git/doc/guix.texi:15967
27539 #, no-wrap
27540 msgid "@code{mcron} (default: @var{mcron})"
27541 msgstr ""
27542
27543 #. type: table
27544 #: guix-git/doc/guix.texi:15969
27545 msgid "The mcron package to use."
27546 msgstr ""
27547
27548 #. type: code{#1}
27549 #: guix-git/doc/guix.texi:15970 guix-git/doc/guix.texi:16039
27550 #, no-wrap
27551 msgid "jobs"
27552 msgstr ""
27553
27554 #. type: table
27555 #: guix-git/doc/guix.texi:15974
27556 msgid "This is a list of gexps (@pxref{G-Expressions}), where each gexp corresponds to an mcron job specification (@pxref{Syntax, mcron job specifications,, mcron, GNU@tie{}mcron})."
27557 msgstr ""
27558
27559 #. type: cindex
27560 #: guix-git/doc/guix.texi:15981
27561 #, no-wrap
27562 msgid "rottlog"
27563 msgstr ""
27564
27565 #. type: cindex
27566 #: guix-git/doc/guix.texi:15982
27567 #, no-wrap
27568 msgid "log rotation"
27569 msgstr ""
27570
27571 #. type: Plain text
27572 #: guix-git/doc/guix.texi:15989
27573 msgid "Log files such as those found in @file{/var/log} tend to grow endlessly, so it's a good idea to @dfn{rotate} them once in a while---i.e., archive their contents in separate files, possibly compressed. The @code{(gnu services admin)} module provides an interface to GNU@tie{}Rot[t]log, a log rotation tool (@pxref{Top,,, rottlog, GNU Rot[t]log Manual})."
27574 msgstr ""
27575
27576 #. type: Plain text
27577 #: guix-git/doc/guix.texi:15995
27578 msgid "This service is part of @code{%base-services}, and thus enabled by default, with the default settings, for commonly encountered log files. The example below shows how to extend it with an additional @dfn{rotation}, should you need to do that (usually, services that produce log files already take care of that):"
27579 msgstr ""
27580
27581 #. type: lisp
27582 #: guix-git/doc/guix.texi:15999
27583 #, no-wrap
27584 msgid ""
27585 "(use-modules (guix) (gnu))\n"
27586 "(use-service-modules admin)\n"
27587 "\n"
27588 msgstr ""
27589
27590 #. type: lisp
27591 #: guix-git/doc/guix.texi:16003
27592 #, no-wrap
27593 msgid ""
27594 "(define my-log-files\n"
27595 " ;; Log files that I want to rotate.\n"
27596 " '(\"/var/log/something.log\" \"/var/log/another.log\"))\n"
27597 "\n"
27598 msgstr ""
27599
27600 #. type: lisp
27601 #: guix-git/doc/guix.texi:16012
27602 #, no-wrap
27603 msgid ""
27604 "(operating-system\n"
27605 " ;; @dots{}\n"
27606 " (services (cons (simple-service 'rotate-my-stuff\n"
27607 " rottlog-service-type\n"
27608 " (list (log-rotation\n"
27609 " (frequency 'daily)\n"
27610 " (files my-log-files))))\n"
27611 " %base-services)))\n"
27612 msgstr ""
27613
27614 #. type: defvr
27615 #: guix-git/doc/guix.texi:16014
27616 #, no-wrap
27617 msgid "{Scheme Variable} rottlog-service-type"
27618 msgstr ""
27619
27620 #. type: defvr
27621 #: guix-git/doc/guix.texi:16017
27622 msgid "This is the type of the Rottlog service, whose value is a @code{rottlog-configuration} object."
27623 msgstr ""
27624
27625 #. type: defvr
27626 #: guix-git/doc/guix.texi:16020
27627 msgid "Other services can extend this one with new @code{log-rotation} objects (see below), thereby augmenting the set of files to be rotated."
27628 msgstr ""
27629
27630 #. type: defvr
27631 #: guix-git/doc/guix.texi:16023
27632 msgid "This service type can define mcron jobs (@pxref{Scheduled Job Execution}) to run the rottlog service."
27633 msgstr ""
27634
27635 #. type: deftp
27636 #: guix-git/doc/guix.texi:16025
27637 #, no-wrap
27638 msgid "{Data Type} rottlog-configuration"
27639 msgstr ""
27640
27641 #. type: deftp
27642 #: guix-git/doc/guix.texi:16027
27643 msgid "Data type representing the configuration of rottlog."
27644 msgstr ""
27645
27646 #. type: item
27647 #: guix-git/doc/guix.texi:16029
27648 #, no-wrap
27649 msgid "@code{rottlog} (default: @code{rottlog})"
27650 msgstr ""
27651
27652 #. type: table
27653 #: guix-git/doc/guix.texi:16031
27654 msgid "The Rottlog package to use."
27655 msgstr ""
27656
27657 #. type: item
27658 #: guix-git/doc/guix.texi:16032
27659 #, no-wrap
27660 msgid "@code{rc-file} (default: @code{(file-append rottlog \"/etc/rc\")})"
27661 msgstr ""
27662
27663 #. type: table
27664 #: guix-git/doc/guix.texi:16035
27665 msgid "The Rottlog configuration file to use (@pxref{Mandatory RC Variables,,, rottlog, GNU Rot[t]log Manual})."
27666 msgstr ""
27667
27668 #. type: item
27669 #: guix-git/doc/guix.texi:16036
27670 #, no-wrap
27671 msgid "@code{rotations} (default: @code{%default-rotations})"
27672 msgstr ""
27673
27674 #. type: table
27675 #: guix-git/doc/guix.texi:16038
27676 msgid "A list of @code{log-rotation} objects as defined below."
27677 msgstr ""
27678
27679 #. type: table
27680 #: guix-git/doc/guix.texi:16042
27681 msgid "This is a list of gexps where each gexp corresponds to an mcron job specification (@pxref{Scheduled Job Execution})."
27682 msgstr ""
27683
27684 #. type: deftp
27685 #: guix-git/doc/guix.texi:16045
27686 #, no-wrap
27687 msgid "{Data Type} log-rotation"
27688 msgstr ""
27689
27690 #. type: deftp
27691 #: guix-git/doc/guix.texi:16047
27692 msgid "Data type representing the rotation of a group of log files."
27693 msgstr ""
27694
27695 #. type: deftp
27696 #: guix-git/doc/guix.texi:16051
27697 msgid "Taking an example from the Rottlog manual (@pxref{Period Related File Examples,,, rottlog, GNU Rot[t]log Manual}), a log rotation might be defined like this:"
27698 msgstr ""
27699
27700 #. type: lisp
27701 #: guix-git/doc/guix.texi:16060
27702 #, no-wrap
27703 msgid ""
27704 "(log-rotation\n"
27705 " (frequency 'daily)\n"
27706 " (files '(\"/var/log/apache/*\"))\n"
27707 " (options '(\"storedir apache-archives\"\n"
27708 " \"rotate 6\"\n"
27709 " \"notifempty\"\n"
27710 " \"nocompress\")))\n"
27711 msgstr ""
27712
27713 #. type: deftp
27714 #: guix-git/doc/guix.texi:16063
27715 msgid "The list of fields is as follows:"
27716 msgstr ""
27717
27718 #. type: item
27719 #: guix-git/doc/guix.texi:16065
27720 #, no-wrap
27721 msgid "@code{frequency} (default: @code{'weekly})"
27722 msgstr ""
27723
27724 #. type: table
27725 #: guix-git/doc/guix.texi:16067
27726 msgid "The log rotation frequency, a symbol."
27727 msgstr ""
27728
27729 #. type: code{#1}
27730 #: guix-git/doc/guix.texi:16068
27731 #, no-wrap
27732 msgid "files"
27733 msgstr ""
27734
27735 #. type: table
27736 #: guix-git/doc/guix.texi:16070
27737 msgid "The list of files or file glob patterns to rotate."
27738 msgstr ""
27739
27740 #. type: item
27741 #: guix-git/doc/guix.texi:16071
27742 #, no-wrap
27743 msgid "@code{options} (default: @code{'()})"
27744 msgstr ""
27745
27746 #. type: table
27747 #: guix-git/doc/guix.texi:16074
27748 msgid "The list of rottlog options for this rotation (@pxref{Configuration parameters,,, rottlog, GNU Rot[t]lg Manual})."
27749 msgstr ""
27750
27751 #. type: item
27752 #: guix-git/doc/guix.texi:16075
27753 #, no-wrap
27754 msgid "@code{post-rotate} (default: @code{#f})"
27755 msgstr ""
27756
27757 #. type: table
27758 #: guix-git/doc/guix.texi:16077
27759 msgid "Either @code{#f} or a gexp to execute once the rotation has completed."
27760 msgstr ""
27761
27762 #. type: defvr
27763 #: guix-git/doc/guix.texi:16080
27764 #, no-wrap
27765 msgid "{Scheme Variable} %default-rotations"
27766 msgstr ""
27767
27768 #. type: defvr
27769 #: guix-git/doc/guix.texi:16083
27770 msgid "Specifies weekly rotation of @code{%rotated-files} and of @file{/var/log/guix-daemon.log}."
27771 msgstr ""
27772
27773 #. type: defvr
27774 #: guix-git/doc/guix.texi:16085
27775 #, no-wrap
27776 msgid "{Scheme Variable} %rotated-files"
27777 msgstr ""
27778
27779 #. type: defvr
27780 #: guix-git/doc/guix.texi:16089
27781 msgid "The list of syslog-controlled files to be rotated. By default it is: @code{'(\"/var/log/messages\" \"/var/log/secure\" \"/var/log/debug\" \\ \"/var/log/maillog\")}."
27782 msgstr ""
27783
27784 #. type: Plain text
27785 #: guix-git/doc/guix.texi:16096
27786 msgid "The @code{(gnu services networking)} module provides services to configure the network interface."
27787 msgstr ""
27788
27789 #. type: cindex
27790 #: guix-git/doc/guix.texi:16097
27791 #, no-wrap
27792 msgid "DHCP, networking service"
27793 msgstr ""
27794
27795 #. type: defvr
27796 #: guix-git/doc/guix.texi:16098
27797 #, no-wrap
27798 msgid "{Scheme Variable} dhcp-client-service-type"
27799 msgstr ""
27800
27801 #. type: defvr
27802 #: guix-git/doc/guix.texi:16102
27803 msgid "This is the type of services that run @var{dhcp}, a Dynamic Host Configuration Protocol (DHCP) client, on all the non-loopback network interfaces. Its value is the DHCP client package to use, @code{isc-dhcp} by default."
27804 msgstr ""
27805
27806 #. type: deffn
27807 #: guix-git/doc/guix.texi:16104
27808 #, no-wrap
27809 msgid "{Scheme Procedure} dhcpd-service-type"
27810 msgstr ""
27811
27812 #. type: deffn
27813 #: guix-git/doc/guix.texi:16108
27814 msgid "This type defines a service that runs a DHCP daemon. To create a service of this type, you must supply a @code{<dhcpd-configuration>}. For example:"
27815 msgstr ""
27816
27817 #. type: lisp
27818 #: guix-git/doc/guix.texi:16114
27819 #, no-wrap
27820 msgid ""
27821 "(service dhcpd-service-type\n"
27822 " (dhcpd-configuration\n"
27823 " (config-file (local-file \"my-dhcpd.conf\"))\n"
27824 " (interfaces '(\"enp0s25\"))))\n"
27825 msgstr ""
27826
27827 #. type: deftp
27828 #: guix-git/doc/guix.texi:16117
27829 #, no-wrap
27830 msgid "{Data Type} dhcpd-configuration"
27831 msgstr ""
27832
27833 #. type: item
27834 #: guix-git/doc/guix.texi:16119
27835 #, no-wrap
27836 msgid "@code{package} (default: @code{isc-dhcp})"
27837 msgstr ""
27838
27839 #. type: table
27840 #: guix-git/doc/guix.texi:16124
27841 msgid "The package that provides the DHCP daemon. This package is expected to provide the daemon at @file{sbin/dhcpd} relative to its output directory. The default package is the @uref{https://www.isc.org/products/DHCP, ISC's DHCP server}."
27842 msgstr ""
27843
27844 #. type: item
27845 #: guix-git/doc/guix.texi:16124 guix-git/doc/guix.texi:16380
27846 #: guix-git/doc/guix.texi:21452
27847 #, no-wrap
27848 msgid "@code{config-file} (default: @code{#f})"
27849 msgstr ""
27850
27851 #. type: table
27852 #: guix-git/doc/guix.texi:16129
27853 msgid "The configuration file to use. This is required. It will be passed to @code{dhcpd} via its @code{-cf} option. This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}). See @code{man dhcpd.conf} for details on the configuration file syntax."
27854 msgstr ""
27855
27856 #. type: item
27857 #: guix-git/doc/guix.texi:16129
27858 #, no-wrap
27859 msgid "@code{version} (default: @code{\"4\"})"
27860 msgstr ""
27861
27862 #. type: table
27863 #: guix-git/doc/guix.texi:16134
27864 msgid "The DHCP version to use. The ISC DHCP server supports the values ``4'', ``6'', and ``4o6''. These correspond to the @code{dhcpd} program options @code{-4}, @code{-6}, and @code{-4o6}. See @code{man dhcpd} for details."
27865 msgstr ""
27866
27867 #. type: item
27868 #: guix-git/doc/guix.texi:16134
27869 #, no-wrap
27870 msgid "@code{run-directory} (default: @code{\"/run/dhcpd\"})"
27871 msgstr ""
27872
27873 #. type: table
27874 #: guix-git/doc/guix.texi:16137
27875 msgid "The run directory to use. At service activation time, this directory will be created if it does not exist."
27876 msgstr ""
27877
27878 #. type: item
27879 #: guix-git/doc/guix.texi:16137
27880 #, no-wrap
27881 msgid "@code{pid-file} (default: @code{\"/run/dhcpd/dhcpd.pid\"})"
27882 msgstr ""
27883
27884 #. type: table
27885 #: guix-git/doc/guix.texi:16140
27886 msgid "The PID file to use. This corresponds to the @code{-pf} option of @code{dhcpd}. See @code{man dhcpd} for details."
27887 msgstr ""
27888
27889 #. type: item
27890 #: guix-git/doc/guix.texi:16140
27891 #, no-wrap
27892 msgid "@code{interfaces} (default: @code{'()})"
27893 msgstr ""
27894
27895 #. type: table
27896 #: guix-git/doc/guix.texi:16146
27897 msgid "The names of the network interfaces on which dhcpd should listen for broadcasts. If this list is not empty, then its elements (which must be strings) will be appended to the @code{dhcpd} invocation when starting the daemon. It may not be necessary to explicitly specify any interfaces here; see @code{man dhcpd} for details."
27898 msgstr ""
27899
27900 #. type: defvr
27901 #: guix-git/doc/guix.texi:16149
27902 #, no-wrap
27903 msgid "{Scheme Variable} static-networking-service-type"
27904 msgstr ""
27905
27906 #. type: defvr
27907 #: guix-git/doc/guix.texi:16152
27908 msgid "This is the type for statically-configured network interfaces."
27909 msgstr ""
27910
27911 #. type: deffn
27912 #: guix-git/doc/guix.texi:16154
27913 #, no-wrap
27914 msgid "{Scheme Procedure} static-networking-service @var{interface} @var{ip} @"
27915 msgstr ""
27916
27917 #. type: deffn
27918 #: guix-git/doc/guix.texi:16162
27919 msgid "[#:netmask #f] [#:gateway #f] [#:name-servers @code{'()}] @ [#:requirement @code{'(udev)}] Return a service that starts @var{interface} with address @var{ip}. If @var{netmask} is true, use it as the network mask. If @var{gateway} is true, it must be a string specifying the default network gateway. @var{requirement} can be used to declare a dependency on another service before configuring the interface."
27920 msgstr ""
27921
27922 #. type: deffn
27923 #: guix-git/doc/guix.texi:16167
27924 msgid "This procedure can be called several times, one for each network interface of interest. Behind the scenes what it does is extend @code{static-networking-service-type} with additional network interfaces to handle."
27925 msgstr ""
27926
27927 #. type: defvr
27928 #: guix-git/doc/guix.texi:16169 guix-git/doc/guix.texi:29003
27929 msgid "For example:"
27930 msgstr ""
27931
27932 #. type: lisp
27933 #: guix-git/doc/guix.texi:16174
27934 #, no-wrap
27935 msgid ""
27936 "(static-networking-service \"eno1\" \"192.168.1.82\"\n"
27937 " #:gateway \"192.168.1.2\"\n"
27938 " #:name-servers '(\"192.168.1.2\"))\n"
27939 msgstr ""
27940
27941 #. type: cindex
27942 #: guix-git/doc/guix.texi:16177
27943 #, no-wrap
27944 msgid "wicd"
27945 msgstr ""
27946
27947 #. type: cindex
27948 #: guix-git/doc/guix.texi:16180
27949 #, no-wrap
27950 msgid "network management"
27951 msgstr ""
27952
27953 #. type: deffn
27954 #: guix-git/doc/guix.texi:16181
27955 #, no-wrap
27956 msgid "{Scheme Procedure} wicd-service [#:wicd @var{wicd}]"
27957 msgstr ""
27958
27959 #. type: deffn
27960 #: guix-git/doc/guix.texi:16184
27961 msgid "Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network management daemon that aims to simplify wired and wireless networking."
27962 msgstr ""
27963
27964 #. type: deffn
27965 #: guix-git/doc/guix.texi:16189
27966 msgid "This service adds the @var{wicd} package to the global profile, providing several commands to interact with the daemon and configure networking: @command{wicd-client}, a graphical user interface, and the @command{wicd-cli} and @command{wicd-curses} user interfaces."
27967 msgstr ""
27968
27969 #. type: cindex
27970 #: guix-git/doc/guix.texi:16191
27971 #, no-wrap
27972 msgid "ModemManager"
27973 msgstr ""
27974
27975 #. type: defvr
27976 #: guix-git/doc/guix.texi:16193
27977 #, no-wrap
27978 msgid "{Scheme Variable} modem-manager-service-type"
27979 msgstr ""
27980
27981 #. type: defvr
27982 #: guix-git/doc/guix.texi:16198
27983 msgid "This is the service type for the @uref{https://wiki.gnome.org/Projects/ModemManager, ModemManager} service. The value for this service type is a @code{modem-manager-configuration} record."
27984 msgstr ""
27985
27986 #. type: defvr
27987 #: guix-git/doc/guix.texi:16201 guix-git/doc/guix.texi:16230
27988 #: guix-git/doc/guix.texi:16262
27989 msgid "This service is part of @code{%desktop-services} (@pxref{Desktop Services})."
27990 msgstr ""
27991
27992 #. type: deftp
27993 #: guix-git/doc/guix.texi:16203
27994 #, no-wrap
27995 msgid "{Data Type} modem-manager-configuration"
27996 msgstr ""
27997
27998 #. type: deftp
27999 #: guix-git/doc/guix.texi:16205
28000 msgid "Data type representing the configuration of ModemManager."
28001 msgstr ""
28002
28003 #. type: item
28004 #: guix-git/doc/guix.texi:16207
28005 #, no-wrap
28006 msgid "@code{modem-manager} (default: @code{modem-manager})"
28007 msgstr ""
28008
28009 #. type: table
28010 #: guix-git/doc/guix.texi:16209
28011 msgid "The ModemManager package to use."
28012 msgstr ""
28013
28014 #. type: cindex
28015 #: guix-git/doc/guix.texi:16213
28016 #, no-wrap
28017 msgid "USB_ModeSwitch"
28018 msgstr ""
28019
28020 #. type: cindex
28021 #: guix-git/doc/guix.texi:16214
28022 #, no-wrap
28023 msgid "Modeswitching"
28024 msgstr ""
28025
28026 #. type: defvr
28027 #: guix-git/doc/guix.texi:16216
28028 #, no-wrap
28029 msgid "{Scheme Variable} usb-modeswitch-service-type"
28030 msgstr ""
28031
28032 #. type: defvr
28033 #: guix-git/doc/guix.texi:16221
28034 msgid "This is the service type for the @uref{https://www.draisberghof.de/usb_modeswitch/, USB_ModeSwitch} service. The value for this service type is a @code{usb-modeswitch-configuration} record."
28035 msgstr ""
28036
28037 #. type: defvr
28038 #: guix-git/doc/guix.texi:16227
28039 msgid "When plugged in, some USB modems (and other USB devices) initially present themselves as a read-only storage medium and not as a modem. They need to be @dfn{modeswitched} before they are usable. The USB_ModeSwitch service type installs udev rules to automatically modeswitch these devices when they are plugged in."
28040 msgstr ""
28041
28042 #. type: deftp
28043 #: guix-git/doc/guix.texi:16232
28044 #, no-wrap
28045 msgid "{Data Type} usb-modeswitch-configuration"
28046 msgstr ""
28047
28048 #. type: deftp
28049 #: guix-git/doc/guix.texi:16234
28050 msgid "Data type representing the configuration of USB_ModeSwitch."
28051 msgstr ""
28052
28053 #. type: item
28054 #: guix-git/doc/guix.texi:16236
28055 #, no-wrap
28056 msgid "@code{usb-modeswitch} (default: @code{usb-modeswitch})"
28057 msgstr ""
28058
28059 #. type: table
28060 #: guix-git/doc/guix.texi:16238
28061 msgid "The USB_ModeSwitch package providing the binaries for modeswitching."
28062 msgstr ""
28063
28064 #. type: item
28065 #: guix-git/doc/guix.texi:16239
28066 #, no-wrap
28067 msgid "@code{usb-modeswitch-data} (default: @code{usb-modeswitch-data})"
28068 msgstr ""
28069
28070 #. type: table
28071 #: guix-git/doc/guix.texi:16242
28072 msgid "The package providing the device data and udev rules file used by USB_ModeSwitch."
28073 msgstr ""
28074
28075 #. type: item
28076 #: guix-git/doc/guix.texi:16243
28077 #, no-wrap
28078 msgid "@code{config-file} (default: @code{#~(string-append #$usb-modeswitch:dispatcher \"/etc/usb_modeswitch.conf\")})"
28079 msgstr ""
28080
28081 #. type: table
28082 #: guix-git/doc/guix.texi:16248
28083 msgid "Which config file to use for the USB_ModeSwitch dispatcher. By default the config file shipped with USB_ModeSwitch is used which disables logging to @file{/var/log} among other default settings. If set to @code{#f}, no config file is used."
28084 msgstr ""
28085
28086 #. type: cindex
28087 #: guix-git/doc/guix.texi:16252
28088 #, no-wrap
28089 msgid "NetworkManager"
28090 msgstr ""
28091
28092 #. type: defvr
28093 #: guix-git/doc/guix.texi:16254
28094 #, no-wrap
28095 msgid "{Scheme Variable} network-manager-service-type"
28096 msgstr ""
28097
28098 #. type: defvr
28099 #: guix-git/doc/guix.texi:16259
28100 msgid "This is the service type for the @uref{https://wiki.gnome.org/Projects/NetworkManager, NetworkManager} service. The value for this service type is a @code{network-manager-configuration} record."
28101 msgstr ""
28102
28103 #. type: deftp
28104 #: guix-git/doc/guix.texi:16264
28105 #, no-wrap
28106 msgid "{Data Type} network-manager-configuration"
28107 msgstr ""
28108
28109 #. type: deftp
28110 #: guix-git/doc/guix.texi:16266
28111 msgid "Data type representing the configuration of NetworkManager."
28112 msgstr ""
28113
28114 #. type: item
28115 #: guix-git/doc/guix.texi:16268
28116 #, no-wrap
28117 msgid "@code{network-manager} (default: @code{network-manager})"
28118 msgstr ""
28119
28120 #. type: table
28121 #: guix-git/doc/guix.texi:16270
28122 msgid "The NetworkManager package to use."
28123 msgstr ""
28124
28125 #. type: item
28126 #: guix-git/doc/guix.texi:16271
28127 #, no-wrap
28128 msgid "@code{dns} (default: @code{\"default\"})"
28129 msgstr ""
28130
28131 #. type: table
28132 #: guix-git/doc/guix.texi:16274
28133 msgid "Processing mode for DNS, which affects how NetworkManager uses the @code{resolv.conf} configuration file."
28134 msgstr ""
28135
28136 #. type: table
28137 #: guix-git/doc/guix.texi:16279
28138 msgid "NetworkManager will update @code{resolv.conf} to reflect the nameservers provided by currently active connections."
28139 msgstr ""
28140
28141 #. type: item
28142 #: guix-git/doc/guix.texi:16280
28143 #, no-wrap
28144 msgid "dnsmasq"
28145 msgstr ""
28146
28147 #. type: table
28148 #: guix-git/doc/guix.texi:16284
28149 msgid "NetworkManager will run @code{dnsmasq} as a local caching nameserver, using a @dfn{conditional forwarding} configuration if you are connected to a VPN, and then update @code{resolv.conf} to point to the local nameserver."
28150 msgstr ""
28151
28152 #. type: table
28153 #: guix-git/doc/guix.texi:16290
28154 msgid "With this setting, you can share your network connection. For example when you want to share your network connection to another laptop @i{via} an Ethernet cable, you can open @command{nm-connection-editor} and configure the Wired connection's method for IPv4 and IPv6 to be ``Shared to other computers'' and reestablish the connection (or reboot)."
28155 msgstr ""
28156
28157 #. type: table
28158 #: guix-git/doc/guix.texi:16297
28159 msgid "You can also set up a @dfn{host-to-guest connection} to QEMU VMs (@pxref{Installing Guix in a VM}). With a host-to-guest connection, you can e.g.@: access a Web server running on the VM (@pxref{Web Services}) from a Web browser on your host system, or connect to the VM @i{via} SSH (@pxref{Networking Services, @code{openssh-service-type}}). To set up a host-to-guest connection, run this command once:"
28160 msgstr ""
28161
28162 #. type: example
28163 #: guix-git/doc/guix.texi:16304
28164 #, no-wrap
28165 msgid ""
28166 "nmcli connection add type tun \\\n"
28167 " connection.interface-name tap0 \\\n"
28168 " tun.mode tap tun.owner $(id -u) \\\n"
28169 " ipv4.method shared \\\n"
28170 " ipv4.addresses 172.28.112.1/24\n"
28171 msgstr ""
28172
28173 #. type: table
28174 #: guix-git/doc/guix.texi:16309
28175 msgid "Then each time you launch your QEMU VM (@pxref{Running Guix in a VM}), pass @option{-nic tap,ifname=tap0,script=no,downscript=no} to @command{qemu-system-...}."
28176 msgstr ""
28177
28178 #. type: table
28179 #: guix-git/doc/guix.texi:16312
28180 msgid "NetworkManager will not modify @code{resolv.conf}."
28181 msgstr ""
28182
28183 #. type: item
28184 #: guix-git/doc/guix.texi:16314
28185 #, no-wrap
28186 msgid "@code{vpn-plugins} (default: @code{'()})"
28187 msgstr ""
28188
28189 #. type: table
28190 #: guix-git/doc/guix.texi:16318
28191 msgid "This is the list of available plugins for virtual private networks (VPNs). An example of this is the @code{network-manager-openvpn} package, which allows NetworkManager to manage VPNs @i{via} OpenVPN."
28192 msgstr ""
28193
28194 #. type: cindex
28195 #: guix-git/doc/guix.texi:16322
28196 #, no-wrap
28197 msgid "Connman"
28198 msgstr ""
28199
28200 #. type: deffn
28201 #: guix-git/doc/guix.texi:16323
28202 #, no-wrap
28203 msgid "{Scheme Variable} connman-service-type"
28204 msgstr ""
28205
28206 #. type: deffn
28207 #: guix-git/doc/guix.texi:16326
28208 msgid "This is the service type to run @url{https://01.org/connman,Connman}, a network connection manager."
28209 msgstr ""
28210
28211 #. type: deffn
28212 #: guix-git/doc/guix.texi:16329
28213 msgid "Its value must be an @code{connman-configuration} record as in this example:"
28214 msgstr ""
28215
28216 #. type: lisp
28217 #: guix-git/doc/guix.texi:16334
28218 #, no-wrap
28219 msgid ""
28220 "(service connman-service-type\n"
28221 " (connman-configuration\n"
28222 " (disable-vpn? #t)))\n"
28223 msgstr ""
28224
28225 #. type: deffn
28226 #: guix-git/doc/guix.texi:16337
28227 msgid "See below for details about @code{connman-configuration}."
28228 msgstr ""
28229
28230 #. type: deftp
28231 #: guix-git/doc/guix.texi:16339
28232 #, no-wrap
28233 msgid "{Data Type} connman-configuration"
28234 msgstr ""
28235
28236 #. type: deftp
28237 #: guix-git/doc/guix.texi:16341
28238 msgid "Data Type representing the configuration of connman."
28239 msgstr ""
28240
28241 #. type: item
28242 #: guix-git/doc/guix.texi:16343
28243 #, no-wrap
28244 msgid "@code{connman} (default: @var{connman})"
28245 msgstr ""
28246
28247 #. type: table
28248 #: guix-git/doc/guix.texi:16345
28249 msgid "The connman package to use."
28250 msgstr ""
28251
28252 #. type: item
28253 #: guix-git/doc/guix.texi:16346
28254 #, no-wrap
28255 msgid "@code{disable-vpn?} (default: @code{#f})"
28256 msgstr ""
28257
28258 #. type: table
28259 #: guix-git/doc/guix.texi:16348
28260 msgid "When true, disable connman's vpn plugin."
28261 msgstr ""
28262
28263 #. type: cindex
28264 #: guix-git/doc/guix.texi:16351
28265 #, no-wrap
28266 msgid "WPA Supplicant"
28267 msgstr ""
28268
28269 #. type: defvr
28270 #: guix-git/doc/guix.texi:16352
28271 #, no-wrap
28272 msgid "{Scheme Variable} wpa-supplicant-service-type"
28273 msgstr ""
28274
28275 #. type: defvr
28276 #: guix-git/doc/guix.texi:16356
28277 msgid "This is the service type to run @url{https://w1.fi/wpa_supplicant/,WPA supplicant}, an authentication daemon required to authenticate against encrypted WiFi or ethernet networks."
28278 msgstr ""
28279
28280 #. type: deftp
28281 #: guix-git/doc/guix.texi:16358
28282 #, no-wrap
28283 msgid "{Data Type} wpa-supplicant-configuration"
28284 msgstr ""
28285
28286 #. type: deftp
28287 #: guix-git/doc/guix.texi:16360
28288 msgid "Data type representing the configuration of WPA Supplicant."
28289 msgstr ""
28290
28291 #. type: deftp
28292 #: guix-git/doc/guix.texi:16362 guix-git/doc/guix.texi:31015
28293 msgid "It takes the following parameters:"
28294 msgstr ""
28295
28296 #. type: item
28297 #: guix-git/doc/guix.texi:16364
28298 #, no-wrap
28299 msgid "@code{wpa-supplicant} (default: @code{wpa-supplicant})"
28300 msgstr ""
28301
28302 #. type: table
28303 #: guix-git/doc/guix.texi:16366
28304 msgid "The WPA Supplicant package to use."
28305 msgstr ""
28306
28307 #. type: item
28308 #: guix-git/doc/guix.texi:16367
28309 #, no-wrap
28310 msgid "@code{requirement} (default: @code{'(user-processes loopback syslogd)}"
28311 msgstr ""
28312
28313 #. type: table
28314 #: guix-git/doc/guix.texi:16369
28315 msgid "List of services that should be started before WPA Supplicant starts."
28316 msgstr ""
28317
28318 #. type: item
28319 #: guix-git/doc/guix.texi:16370
28320 #, no-wrap
28321 msgid "@code{dbus?} (default: @code{#t})"
28322 msgstr ""
28323
28324 #. type: table
28325 #: guix-git/doc/guix.texi:16372
28326 msgid "Whether to listen for requests on D-Bus."
28327 msgstr ""
28328
28329 #. type: item
28330 #: guix-git/doc/guix.texi:16373
28331 #, no-wrap
28332 msgid "@code{pid-file} (default: @code{\"/var/run/wpa_supplicant.pid\"})"
28333 msgstr ""
28334
28335 #. type: table
28336 #: guix-git/doc/guix.texi:16375
28337 msgid "Where to store the PID file."
28338 msgstr ""
28339
28340 #. type: item
28341 #: guix-git/doc/guix.texi:16376 guix-git/doc/guix.texi:29460
28342 #: guix-git/doc/guix.texi:29602
28343 #, no-wrap
28344 msgid "@code{interface} (default: @code{#f})"
28345 msgstr ""
28346
28347 #. type: table
28348 #: guix-git/doc/guix.texi:16379
28349 msgid "If this is set, it must specify the name of a network interface that WPA supplicant will control."
28350 msgstr ""
28351
28352 #. type: table
28353 #: guix-git/doc/guix.texi:16382
28354 msgid "Optional configuration file to use."
28355 msgstr ""
28356
28357 #. type: table
28358 #: guix-git/doc/guix.texi:16385
28359 msgid "List of additional command-line arguments to pass to the daemon."
28360 msgstr ""
28361
28362 #. type: cindex
28363 #: guix-git/doc/guix.texi:16388
28364 #, no-wrap
28365 msgid "hostapd service, for Wi-Fi access points"
28366 msgstr ""
28367
28368 #. type: cindex
28369 #: guix-git/doc/guix.texi:16389
28370 #, no-wrap
28371 msgid "Wi-Fi access points, hostapd service"
28372 msgstr ""
28373
28374 #. type: defvr
28375 #: guix-git/doc/guix.texi:16390
28376 #, no-wrap
28377 msgid "{Scheme Variable} hostapd-service-type"
28378 msgstr ""
28379
28380 #. type: defvr
28381 #: guix-git/doc/guix.texi:16395
28382 msgid "This is the service type to run the @uref{https://w1.fi/hostapd/, hostapd} daemon to set up WiFi (IEEE 802.11) access points and authentication servers. Its associated value must be a @code{hostapd-configuration} as shown below:"
28383 msgstr ""
28384
28385 #. type: lisp
28386 #: guix-git/doc/guix.texi:16403
28387 #, no-wrap
28388 msgid ""
28389 ";; Use wlan1 to run the access point for \"My Network\".\n"
28390 "(service hostapd-service-type\n"
28391 " (hostapd-configuration\n"
28392 " (interface \"wlan1\")\n"
28393 " (ssid \"My Network\")\n"
28394 " (channel 12)))\n"
28395 msgstr ""
28396
28397 #. type: deftp
28398 #: guix-git/doc/guix.texi:16406
28399 #, no-wrap
28400 msgid "{Data Type} hostapd-configuration"
28401 msgstr ""
28402
28403 #. type: deftp
28404 #: guix-git/doc/guix.texi:16409
28405 msgid "This data type represents the configuration of the hostapd service, with the following fields:"
28406 msgstr ""
28407
28408 #. type: item
28409 #: guix-git/doc/guix.texi:16411
28410 #, no-wrap
28411 msgid "@code{package} (default: @code{hostapd})"
28412 msgstr ""
28413
28414 #. type: table
28415 #: guix-git/doc/guix.texi:16413
28416 msgid "The hostapd package to use."
28417 msgstr ""
28418
28419 #. type: item
28420 #: guix-git/doc/guix.texi:16414
28421 #, no-wrap
28422 msgid "@code{interface} (default: @code{\"wlan0\"})"
28423 msgstr ""
28424
28425 #. type: table
28426 #: guix-git/doc/guix.texi:16416
28427 msgid "The network interface to run the WiFi access point."
28428 msgstr ""
28429
28430 #. type: code{#1}
28431 #: guix-git/doc/guix.texi:16417
28432 #, no-wrap
28433 msgid "ssid"
28434 msgstr ""
28435
28436 #. type: table
28437 #: guix-git/doc/guix.texi:16420
28438 msgid "The SSID (@dfn{service set identifier}), a string that identifies this network."
28439 msgstr ""
28440
28441 #. type: item
28442 #: guix-git/doc/guix.texi:16421
28443 #, no-wrap
28444 msgid "@code{broadcast-ssid?} (default: @code{#t})"
28445 msgstr ""
28446
28447 #. type: table
28448 #: guix-git/doc/guix.texi:16423
28449 msgid "Whether to broadcast this SSID."
28450 msgstr ""
28451
28452 #. type: item
28453 #: guix-git/doc/guix.texi:16424
28454 #, no-wrap
28455 msgid "@code{channel} (default: @code{1})"
28456 msgstr ""
28457
28458 #. type: table
28459 #: guix-git/doc/guix.texi:16426
28460 msgid "The WiFi channel to use."
28461 msgstr ""
28462
28463 #. type: item
28464 #: guix-git/doc/guix.texi:16427
28465 #, no-wrap
28466 msgid "@code{driver} (default: @code{\"nl80211\"})"
28467 msgstr ""
28468
28469 #. type: table
28470 #: guix-git/doc/guix.texi:16431
28471 msgid "The driver interface type. @code{\"nl80211\"} is used with all Linux mac80211 drivers. Use @code{\"none\"} if building hostapd as a standalone RADIUS server that does # not control any wireless/wired driver."
28472 msgstr ""
28473
28474 #. type: item
28475 #: guix-git/doc/guix.texi:16432 guix-git/doc/guix.texi:22301
28476 #: guix-git/doc/guix.texi:25151
28477 #, no-wrap
28478 msgid "@code{extra-settings} (default: @code{\"\"})"
28479 msgstr ""
28480
28481 #. type: table
28482 #: guix-git/doc/guix.texi:16436
28483 msgid "Extra settings to append as-is to the hostapd configuration file. See @uref{https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf} for the configuration file reference."
28484 msgstr ""
28485
28486 #. type: defvr
28487 #: guix-git/doc/guix.texi:16439
28488 #, no-wrap
28489 msgid "{Scheme Variable} simulated-wifi-service-type"
28490 msgstr ""
28491
28492 #. type: defvr
28493 #: guix-git/doc/guix.texi:16446
28494 msgid "This is the type of a service to simulate WiFi networking, which can be useful in virtual machines for testing purposes. The service loads the Linux kernel @uref{https://www.kernel.org/doc/html/latest/networking/mac80211_hwsim/mac80211_hwsim.html, @code{mac80211_hwsim} module} and starts hostapd to create a pseudo WiFi network that can be seen on @code{wlan0}, by default."
28495 msgstr ""
28496
28497 #. type: defvr
28498 #: guix-git/doc/guix.texi:16448
28499 msgid "The service's value is a @code{hostapd-configuration} record."
28500 msgstr ""
28501
28502 #. type: cindex
28503 #: guix-git/doc/guix.texi:16450
28504 #, no-wrap
28505 msgid "iptables"
28506 msgstr ""
28507
28508 #. type: defvr
28509 #: guix-git/doc/guix.texi:16451
28510 #, no-wrap
28511 msgid "{Scheme Variable} iptables-service-type"
28512 msgstr ""
28513
28514 #. type: defvr
28515 #: guix-git/doc/guix.texi:16457
28516 msgid "This is the service type to set up an iptables configuration. iptables is a packet filtering framework supported by the Linux kernel. This service supports configuring iptables for both IPv4 and IPv6. A simple example configuration rejecting all incoming connections except those to the ssh port 22 is shown below."
28517 msgstr ""
28518
28519 #. type: lisp
28520 #: guix-git/doc/guix.texi:16477
28521 #, no-wrap
28522 msgid ""
28523 "(service iptables-service-type\n"
28524 " (iptables-configuration\n"
28525 " (ipv4-rules (plain-file \"iptables.rules\" \"*filter\n"
28526 ":INPUT ACCEPT\n"
28527 ":FORWARD ACCEPT\n"
28528 ":OUTPUT ACCEPT\n"
28529 "-A INPUT -p tcp --dport 22 -j ACCEPT\n"
28530 "-A INPUT -j REJECT --reject-with icmp-port-unreachable\n"
28531 "COMMIT\n"
28532 "\"))\n"
28533 " (ipv6-rules (plain-file \"ip6tables.rules\" \"*filter\n"
28534 ":INPUT ACCEPT\n"
28535 ":FORWARD ACCEPT\n"
28536 ":OUTPUT ACCEPT\n"
28537 "-A INPUT -p tcp --dport 22 -j ACCEPT\n"
28538 "-A INPUT -j REJECT --reject-with icmp6-port-unreachable\n"
28539 "COMMIT\n"
28540 "\"))))\n"
28541 msgstr ""
28542
28543 #. type: deftp
28544 #: guix-git/doc/guix.texi:16480
28545 #, no-wrap
28546 msgid "{Data Type} iptables-configuration"
28547 msgstr ""
28548
28549 #. type: deftp
28550 #: guix-git/doc/guix.texi:16482
28551 msgid "The data type representing the configuration of iptables."
28552 msgstr ""
28553
28554 #. type: item
28555 #: guix-git/doc/guix.texi:16484
28556 #, no-wrap
28557 msgid "@code{iptables} (default: @code{iptables})"
28558 msgstr ""
28559
28560 #. type: table
28561 #: guix-git/doc/guix.texi:16487
28562 msgid "The iptables package that provides @code{iptables-restore} and @code{ip6tables-restore}."
28563 msgstr ""
28564
28565 #. type: item
28566 #: guix-git/doc/guix.texi:16487
28567 #, no-wrap
28568 msgid "@code{ipv4-rules} (default: @code{%iptables-accept-all-rules})"
28569 msgstr ""
28570
28571 #. type: table
28572 #: guix-git/doc/guix.texi:16491
28573 msgid "The iptables rules to use. It will be passed to @code{iptables-restore}. This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects})."
28574 msgstr ""
28575
28576 #. type: item
28577 #: guix-git/doc/guix.texi:16491
28578 #, no-wrap
28579 msgid "@code{ipv6-rules} (default: @code{%iptables-accept-all-rules})"
28580 msgstr ""
28581
28582 #. type: table
28583 #: guix-git/doc/guix.texi:16495
28584 msgid "The ip6tables rules to use. It will be passed to @code{ip6tables-restore}. This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects})."
28585 msgstr ""
28586
28587 #. type: cindex
28588 #: guix-git/doc/guix.texi:16498
28589 #, no-wrap
28590 msgid "nftables"
28591 msgstr ""
28592
28593 #. type: defvr
28594 #: guix-git/doc/guix.texi:16499
28595 #, no-wrap
28596 msgid "{Scheme Variable} nftables-service-type"
28597 msgstr ""
28598
28599 #. type: defvr
28600 #: guix-git/doc/guix.texi:16507
28601 msgid "This is the service type to set up a nftables configuration. nftables is a netfilter project that aims to replace the existing iptables, ip6tables, arptables and ebtables framework. It provides a new packet filtering framework, a new user-space utility @command{nft}, and a compatibility layer for iptables. This service comes with a default ruleset @code{%default-nftables-ruleset} that rejecting all incoming connections except those to the ssh port 22. To use it, simply write:"
28602 msgstr ""
28603
28604 #. type: lisp
28605 #: guix-git/doc/guix.texi:16510
28606 #, no-wrap
28607 msgid "(service nftables-service-type)\n"
28608 msgstr ""
28609
28610 #. type: deftp
28611 #: guix-git/doc/guix.texi:16513
28612 #, no-wrap
28613 msgid "{Data Type} nftables-configuration"
28614 msgstr ""
28615
28616 #. type: deftp
28617 #: guix-git/doc/guix.texi:16515
28618 msgid "The data type representing the configuration of nftables."
28619 msgstr ""
28620
28621 #. type: item
28622 #: guix-git/doc/guix.texi:16517
28623 #, no-wrap
28624 msgid "@code{package} (default: @code{nftables})"
28625 msgstr ""
28626
28627 #. type: table
28628 #: guix-git/doc/guix.texi:16519
28629 msgid "The nftables package that provides @command{nft}."
28630 msgstr ""
28631
28632 #. type: item
28633 #: guix-git/doc/guix.texi:16519
28634 #, no-wrap
28635 msgid "@code{ruleset} (default: @code{%default-nftables-ruleset})"
28636 msgstr ""
28637
28638 #. type: table
28639 #: guix-git/doc/guix.texi:16522
28640 msgid "The nftables ruleset to use. This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects})."
28641 msgstr ""
28642
28643 #. type: cindex
28644 #: guix-git/doc/guix.texi:16525
28645 #, no-wrap
28646 msgid "NTP (Network Time Protocol), service"
28647 msgstr ""
28648
28649 #. type: cindex
28650 #: guix-git/doc/guix.texi:16526
28651 #, no-wrap
28652 msgid "ntpd, service for the Network Time Protocol daemon"
28653 msgstr ""
28654
28655 #. type: cindex
28656 #: guix-git/doc/guix.texi:16527
28657 #, no-wrap
28658 msgid "real time clock"
28659 msgstr ""
28660
28661 #. type: defvr
28662 #: guix-git/doc/guix.texi:16528
28663 #, no-wrap
28664 msgid "{Scheme Variable} ntp-service-type"
28665 msgstr ""
28666
28667 #. type: defvr
28668 #: guix-git/doc/guix.texi:16532
28669 msgid "This is the type of the service running the @uref{https://www.ntp.org, Network Time Protocol (NTP)} daemon, @command{ntpd}. The daemon will keep the system clock synchronized with that of the specified NTP servers."
28670 msgstr ""
28671
28672 #. type: defvr
28673 #: guix-git/doc/guix.texi:16535
28674 msgid "The value of this service is an @code{ntpd-configuration} object, as described below."
28675 msgstr ""
28676
28677 #. type: deftp
28678 #: guix-git/doc/guix.texi:16537
28679 #, no-wrap
28680 msgid "{Data Type} ntp-configuration"
28681 msgstr ""
28682
28683 #. type: deftp
28684 #: guix-git/doc/guix.texi:16539
28685 msgid "This is the data type for the NTP service configuration."
28686 msgstr ""
28687
28688 #. type: item
28689 #: guix-git/doc/guix.texi:16541
28690 #, no-wrap
28691 msgid "@code{servers} (default: @code{%ntp-servers})"
28692 msgstr ""
28693
28694 #. type: table
28695 #: guix-git/doc/guix.texi:16545
28696 msgid "This is the list of servers (@code{<ntp-server>} records) with which @command{ntpd} will be synchronized. See the @code{ntp-server} data type definition below."
28697 msgstr ""
28698
28699 #. type: item
28700 #: guix-git/doc/guix.texi:16546
28701 #, no-wrap
28702 msgid "@code{allow-large-adjustment?} (default: @code{#t})"
28703 msgstr ""
28704
28705 #. type: table
28706 #: guix-git/doc/guix.texi:16549
28707 msgid "This determines whether @command{ntpd} is allowed to make an initial adjustment of more than 1,000 seconds."
28708 msgstr ""
28709
28710 #. type: item
28711 #: guix-git/doc/guix.texi:16550
28712 #, no-wrap
28713 msgid "@code{ntp} (default: @code{ntp})"
28714 msgstr ""
28715
28716 #. type: table
28717 #: guix-git/doc/guix.texi:16552
28718 msgid "The NTP package to use."
28719 msgstr ""
28720
28721 #. type: defvr
28722 #: guix-git/doc/guix.texi:16555
28723 #, no-wrap
28724 msgid "{Scheme Variable} %ntp-servers"
28725 msgstr ""
28726
28727 #. type: defvr
28728 #: guix-git/doc/guix.texi:16558
28729 msgid "List of host names used as the default NTP servers. These are servers of the @uref{https://www.ntppool.org/en/, NTP Pool Project}."
28730 msgstr ""
28731
28732 #. type: deftp
28733 #: guix-git/doc/guix.texi:16560
28734 #, no-wrap
28735 msgid "{Data Type} ntp-server"
28736 msgstr ""
28737
28738 #. type: deftp
28739 #: guix-git/doc/guix.texi:16562
28740 msgid "The data type representing the configuration of a NTP server."
28741 msgstr ""
28742
28743 #. type: item
28744 #: guix-git/doc/guix.texi:16564
28745 #, no-wrap
28746 msgid "@code{type} (default: @code{'server})"
28747 msgstr ""
28748
28749 #. type: table
28750 #: guix-git/doc/guix.texi:16567
28751 msgid "The type of the NTP server, given as a symbol. One of @code{'pool}, @code{'server}, @code{'peer}, @code{'broadcast} or @code{'manycastclient}."
28752 msgstr ""
28753
28754 #. type: code{#1}
28755 #: guix-git/doc/guix.texi:16568
28756 #, no-wrap
28757 msgid "address"
28758 msgstr ""
28759
28760 #. type: table
28761 #: guix-git/doc/guix.texi:16570
28762 msgid "The address of the server, as a string."
28763 msgstr ""
28764
28765 #. type: code{#1}
28766 #: guix-git/doc/guix.texi:16571 guix-git/doc/guix.texi:31761
28767 #: guix-git/doc/guix.texi:31781
28768 #, no-wrap
28769 msgid "options"
28770 msgstr ""
28771
28772 #. type: table
28773 #: guix-git/doc/guix.texi:16576
28774 msgid "NTPD options to use with that specific server, given as a list of option names and/or of option names and values tuples. The following example define a server to use with the options @option{iburst} and @option{prefer}, as well as @option{version} 3 and a @option{maxpoll} time of 16 seconds."
28775 msgstr ""
28776
28777 #. type: example
28778 #: guix-git/doc/guix.texi:16582
28779 #, no-wrap
28780 msgid ""
28781 "(ntp-server\n"
28782 " (type 'server)\n"
28783 " (address \"some.ntp.server.org\")\n"
28784 " (options `(iburst (version 3) (maxpoll 16) prefer))))\n"
28785 msgstr ""
28786
28787 #. type: cindex
28788 #: guix-git/doc/guix.texi:16586
28789 #, no-wrap
28790 msgid "OpenNTPD"
28791 msgstr ""
28792
28793 #. type: deffn
28794 #: guix-git/doc/guix.texi:16587
28795 #, no-wrap
28796 msgid "{Scheme Procedure} openntpd-service-type"
28797 msgstr ""
28798
28799 #. type: deffn
28800 #: guix-git/doc/guix.texi:16591
28801 msgid "Run the @command{ntpd}, the Network Time Protocol (NTP) daemon, as implemented by @uref{http://www.openntpd.org, OpenNTPD}. The daemon will keep the system clock synchronized with that of the given servers."
28802 msgstr ""
28803
28804 #. type: lisp
28805 #: guix-git/doc/guix.texi:16600
28806 #, no-wrap
28807 msgid ""
28808 "(service\n"
28809 " openntpd-service-type\n"
28810 " (openntpd-configuration\n"
28811 " (listen-on '(\"127.0.0.1\" \"::1\"))\n"
28812 " (sensor '(\"udcf0 correction 70000\"))\n"
28813 " (constraint-from '(\"www.gnu.org\"))\n"
28814 " (constraints-from '(\"https://www.google.com/\"))))\n"
28815 "\n"
28816 msgstr ""
28817
28818 #. type: defvr
28819 #: guix-git/doc/guix.texi:16604
28820 #, no-wrap
28821 msgid "{Scheme Variable} %openntpd-servers"
28822 msgstr ""
28823
28824 #. type: defvr
28825 #: guix-git/doc/guix.texi:16607
28826 msgid "This variable is a list of the server addresses defined in @code{%ntp-servers}."
28827 msgstr ""
28828
28829 #. type: deftp
28830 #: guix-git/doc/guix.texi:16609
28831 #, no-wrap
28832 msgid "{Data Type} openntpd-configuration"
28833 msgstr ""
28834
28835 #. type: item
28836 #: guix-git/doc/guix.texi:16611
28837 #, no-wrap
28838 msgid "@code{openntpd} (default: @code{(file-append openntpd \"/sbin/ntpd\")})"
28839 msgstr ""
28840
28841 #. type: table
28842 #: guix-git/doc/guix.texi:16613
28843 msgid "The openntpd executable to use."
28844 msgstr ""
28845
28846 #. type: item
28847 #: guix-git/doc/guix.texi:16613
28848 #, no-wrap
28849 msgid "@code{listen-on} (default: @code{'(\"127.0.0.1\" \"::1\")})"
28850 msgstr ""
28851
28852 #. type: table
28853 #: guix-git/doc/guix.texi:16615
28854 msgid "A list of local IP addresses or hostnames the ntpd daemon should listen on."
28855 msgstr ""
28856
28857 #. type: item
28858 #: guix-git/doc/guix.texi:16615
28859 #, no-wrap
28860 msgid "@code{query-from} (default: @code{'()})"
28861 msgstr ""
28862
28863 #. type: table
28864 #: guix-git/doc/guix.texi:16617
28865 msgid "A list of local IP address the ntpd daemon should use for outgoing queries."
28866 msgstr ""
28867
28868 #. type: item
28869 #: guix-git/doc/guix.texi:16617
28870 #, no-wrap
28871 msgid "@code{sensor} (default: @code{'()})"
28872 msgstr ""
28873
28874 #. type: table
28875 #: guix-git/doc/guix.texi:16622
28876 msgid "Specify a list of timedelta sensor devices ntpd should use. @code{ntpd} will listen to each sensor that actually exists and ignore non-existent ones. See @uref{https://man.openbsd.org/ntpd.conf, upstream documentation} for more information."
28877 msgstr ""
28878
28879 #. type: item
28880 #: guix-git/doc/guix.texi:16622
28881 #, no-wrap
28882 msgid "@code{server} (default: @code{'()})"
28883 msgstr ""
28884
28885 #. type: table
28886 #: guix-git/doc/guix.texi:16624
28887 msgid "Specify a list of IP addresses or hostnames of NTP servers to synchronize to."
28888 msgstr ""
28889
28890 #. type: item
28891 #: guix-git/doc/guix.texi:16624
28892 #, no-wrap
28893 msgid "@code{servers} (default: @code{%openntp-servers})"
28894 msgstr ""
28895
28896 #. type: table
28897 #: guix-git/doc/guix.texi:16626
28898 msgid "Specify a list of IP addresses or hostnames of NTP pools to synchronize to."
28899 msgstr ""
28900
28901 #. type: item
28902 #: guix-git/doc/guix.texi:16626
28903 #, no-wrap
28904 msgid "@code{constraint-from} (default: @code{'()})"
28905 msgstr ""
28906
28907 #. type: table
28908 #: guix-git/doc/guix.texi:16633
28909 msgid "@code{ntpd} can be configured to query the ‘Date’ from trusted HTTPS servers via TLS. This time information is not used for precision but acts as an authenticated constraint, thereby reducing the impact of unauthenticated NTP man-in-the-middle attacks. Specify a list of URLs, IP addresses or hostnames of HTTPS servers to provide a constraint."
28910 msgstr ""
28911
28912 #. type: item
28913 #: guix-git/doc/guix.texi:16633
28914 #, no-wrap
28915 msgid "@code{constraints-from} (default: @code{'()})"
28916 msgstr ""
28917
28918 #. type: table
28919 #: guix-git/doc/guix.texi:16637
28920 msgid "As with constraint from, specify a list of URLs, IP addresses or hostnames of HTTPS servers to provide a constraint. Should the hostname resolve to multiple IP addresses, @code{ntpd} will calculate a median constraint from all of them."
28921 msgstr ""
28922
28923 #. type: cindex
28924 #: guix-git/doc/guix.texi:16640
28925 #, no-wrap
28926 msgid "inetd"
28927 msgstr ""
28928
28929 #. type: deffn
28930 #: guix-git/doc/guix.texi:16641
28931 #, no-wrap
28932 msgid "{Scheme variable} inetd-service-type"
28933 msgstr ""
28934
28935 #. type: deffn
28936 #: guix-git/doc/guix.texi:16646
28937 msgid "This service runs the @command{inetd} (@pxref{inetd invocation,,, inetutils, GNU Inetutils}) daemon. @command{inetd} listens for connections on internet sockets, and lazily starts the specified server program when a connection is made on one of these sockets."
28938 msgstr ""
28939
28940 #. type: deffn
28941 #: guix-git/doc/guix.texi:16652
28942 msgid "The value of this service is an @code{inetd-configuration} object. The following example configures the @command{inetd} daemon to provide the built-in @command{echo} service, as well as an smtp service which forwards smtp traffic over ssh to a server @code{smtp-server} behind a gateway @code{hostname}:"
28943 msgstr ""
28944
28945 #. type: lisp
28946 #: guix-git/doc/guix.texi:16675
28947 #, no-wrap
28948 msgid ""
28949 "(service\n"
28950 " inetd-service-type\n"
28951 " (inetd-configuration\n"
28952 " (entries (list\n"
28953 " (inetd-entry\n"
28954 " (name \"echo\")\n"
28955 " (socket-type 'stream)\n"
28956 " (protocol \"tcp\")\n"
28957 " (wait? #f)\n"
28958 " (user \"root\"))\n"
28959 " (inetd-entry\n"
28960 " (node \"127.0.0.1\")\n"
28961 " (name \"smtp\")\n"
28962 " (socket-type 'stream)\n"
28963 " (protocol \"tcp\")\n"
28964 " (wait? #f)\n"
28965 " (user \"root\")\n"
28966 " (program (file-append openssh \"/bin/ssh\"))\n"
28967 " (arguments\n"
28968 " '(\"ssh\" \"-qT\" \"-i\" \"/path/to/ssh_key\"\n"
28969 " \"-W\" \"smtp-server:25\" \"user@@hostname\")))))))\n"
28970 msgstr ""
28971
28972 #. type: deffn
28973 #: guix-git/doc/guix.texi:16678
28974 msgid "See below for more details about @code{inetd-configuration}."
28975 msgstr ""
28976
28977 #. type: deftp
28978 #: guix-git/doc/guix.texi:16680
28979 #, no-wrap
28980 msgid "{Data Type} inetd-configuration"
28981 msgstr ""
28982
28983 #. type: deftp
28984 #: guix-git/doc/guix.texi:16682
28985 msgid "Data type representing the configuration of @command{inetd}."
28986 msgstr ""
28987
28988 #. type: item
28989 #: guix-git/doc/guix.texi:16684
28990 #, no-wrap
28991 msgid "@code{program} (default: @code{(file-append inetutils \"/libexec/inetd\")})"
28992 msgstr ""
28993
28994 #. type: table
28995 #: guix-git/doc/guix.texi:16686
28996 msgid "The @command{inetd} executable to use."
28997 msgstr ""
28998
28999 #. type: item
29000 #: guix-git/doc/guix.texi:16687 guix-git/doc/guix.texi:25985
29001 #, no-wrap
29002 msgid "@code{entries} (default: @code{'()})"
29003 msgstr ""
29004
29005 #. type: table
29006 #: guix-git/doc/guix.texi:16690
29007 msgid "A list of @command{inetd} service entries. Each entry should be created by the @code{inetd-entry} constructor."
29008 msgstr ""
29009
29010 #. type: deftp
29011 #: guix-git/doc/guix.texi:16693
29012 #, no-wrap
29013 msgid "{Data Type} inetd-entry"
29014 msgstr ""
29015
29016 #. type: deftp
29017 #: guix-git/doc/guix.texi:16697
29018 msgid "Data type representing an entry in the @command{inetd} configuration. Each entry corresponds to a socket where @command{inetd} will listen for requests."
29019 msgstr ""
29020
29021 #. type: item
29022 #: guix-git/doc/guix.texi:16699
29023 #, no-wrap
29024 msgid "@code{node} (default: @code{#f})"
29025 msgstr ""
29026
29027 #. type: table
29028 #: guix-git/doc/guix.texi:16704
29029 msgid "Optional string, a comma-separated list of local addresses @command{inetd} should use when listening for this service. @xref{Configuration file,,, inetutils, GNU Inetutils} for a complete description of all options."
29030 msgstr ""
29031
29032 #. type: table
29033 #: guix-git/doc/guix.texi:16706
29034 msgid "A string, the name must correspond to an entry in @code{/etc/services}."
29035 msgstr ""
29036
29037 #. type: code{#1}
29038 #: guix-git/doc/guix.texi:16706
29039 #, no-wrap
29040 msgid "socket-type"
29041 msgstr ""
29042
29043 #. type: table
29044 #: guix-git/doc/guix.texi:16709
29045 msgid "One of @code{'stream}, @code{'dgram}, @code{'raw}, @code{'rdm} or @code{'seqpacket}."
29046 msgstr ""
29047
29048 #. type: code{#1}
29049 #: guix-git/doc/guix.texi:16709
29050 #, no-wrap
29051 msgid "protocol"
29052 msgstr ""
29053
29054 #. type: table
29055 #: guix-git/doc/guix.texi:16711
29056 msgid "A string, must correspond to an entry in @code{/etc/protocols}."
29057 msgstr ""
29058
29059 #. type: item
29060 #: guix-git/doc/guix.texi:16711
29061 #, no-wrap
29062 msgid "@code{wait?} (default: @code{#t})"
29063 msgstr ""
29064
29065 #. type: table
29066 #: guix-git/doc/guix.texi:16714
29067 msgid "Whether @command{inetd} should wait for the server to exit before listening to new service requests."
29068 msgstr ""
29069
29070 #. type: table
29071 #: guix-git/doc/guix.texi:16719
29072 msgid "A string containing the user (and, optionally, group) name of the user as whom the server should run. The group name can be specified in a suffix, separated by a colon or period, i.e.@: @code{\"user\"}, @code{\"user:group\"} or @code{\"user.group\"}."
29073 msgstr ""
29074
29075 #. type: item
29076 #: guix-git/doc/guix.texi:16719
29077 #, no-wrap
29078 msgid "@code{program} (default: @code{\"internal\"})"
29079 msgstr ""
29080
29081 #. type: table
29082 #: guix-git/doc/guix.texi:16722
29083 msgid "The server program which will serve the requests, or @code{\"internal\"} if @command{inetd} should use a built-in service."
29084 msgstr ""
29085
29086 #. type: table
29087 #: guix-git/doc/guix.texi:16727
29088 msgid "A list strings or file-like objects, which are the server program's arguments, starting with the zeroth argument, i.e.@: the name of the program itself. For @command{inetd}'s internal services, this entry must be @code{'()} or @code{'(\"internal\")}."
29089 msgstr ""
29090
29091 #. type: deftp
29092 #: guix-git/doc/guix.texi:16731
29093 msgid "@xref{Configuration file,,, inetutils, GNU Inetutils} for a more detailed discussion of each configuration field."
29094 msgstr ""
29095
29096 #. type: cindex
29097 #: guix-git/doc/guix.texi:16733
29098 #, no-wrap
29099 msgid "Tor"
29100 msgstr ""
29101
29102 #. type: defvr
29103 #: guix-git/doc/guix.texi:16734
29104 #, no-wrap
29105 msgid "{Scheme Variable} tor-service-type"
29106 msgstr ""
29107
29108 #. type: defvr
29109 #: guix-git/doc/guix.texi:16739
29110 msgid "This is the type for a service that runs the @uref{https://torproject.org, Tor} anonymous networking daemon. The service is configured using a @code{<tor-configuration>} record. By default, the Tor daemon runs as the @code{tor} unprivileged user, which is a member of the @code{tor} group."
29111 msgstr ""
29112
29113 #. type: deftp
29114 #: guix-git/doc/guix.texi:16742
29115 #, no-wrap
29116 msgid "{Data Type} tor-configuration"
29117 msgstr ""
29118
29119 #. type: item
29120 #: guix-git/doc/guix.texi:16744
29121 #, no-wrap
29122 msgid "@code{tor} (default: @code{tor})"
29123 msgstr ""
29124
29125 #. type: table
29126 #: guix-git/doc/guix.texi:16749
29127 msgid "The package that provides the Tor daemon. This package is expected to provide the daemon at @file{bin/tor} relative to its output directory. The default package is the @uref{https://www.torproject.org, Tor Project's} implementation."
29128 msgstr ""
29129
29130 #. type: item
29131 #: guix-git/doc/guix.texi:16750
29132 #, no-wrap
29133 msgid "@code{config-file} (default: @code{(plain-file \"empty\" \"\")})"
29134 msgstr ""
29135
29136 #. type: table
29137 #: guix-git/doc/guix.texi:16756
29138 msgid "The configuration file to use. It will be appended to a default configuration file, and the final configuration file will be passed to @code{tor} via its @code{-f} option. This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}). See @code{man tor} for details on the configuration file syntax."
29139 msgstr ""
29140
29141 #. type: item
29142 #: guix-git/doc/guix.texi:16757
29143 #, no-wrap
29144 msgid "@code{hidden-services} (default: @code{'()})"
29145 msgstr ""
29146
29147 #. type: table
29148 #: guix-git/doc/guix.texi:16763
29149 msgid "The list of @code{<hidden-service>} records to use. For any hidden service you include in this list, appropriate configuration to enable the hidden service will be automatically added to the default configuration file. You may conveniently create @code{<hidden-service>} records using the @code{tor-hidden-service} procedure described below."
29150 msgstr ""
29151
29152 #. type: item
29153 #: guix-git/doc/guix.texi:16764
29154 #, no-wrap
29155 msgid "@code{socks-socket-type} (default: @code{'tcp})"
29156 msgstr ""
29157
29158 #. type: table
29159 #: guix-git/doc/guix.texi:16771
29160 msgid "The default socket type that Tor should use for its SOCKS socket. This must be either @code{'tcp} or @code{'unix}. If it is @code{'tcp}, then by default Tor will listen on TCP port 9050 on the loopback interface (i.e., localhost). If it is @code{'unix}, then Tor will listen on the UNIX domain socket @file{/var/run/tor/socks-sock}, which will be made writable by members of the @code{tor} group."
29161 msgstr ""
29162
29163 #. type: table
29164 #: guix-git/doc/guix.texi:16776
29165 msgid "If you want to customize the SOCKS socket in more detail, leave @code{socks-socket-type} at its default value of @code{'tcp} and use @code{config-file} to override the default by providing your own @code{SocksPort} option."
29166 msgstr ""
29167
29168 #. type: item
29169 #: guix-git/doc/guix.texi:16777
29170 #, no-wrap
29171 msgid "@code{control-socket?} (default: @code{#f})"
29172 msgstr ""
29173
29174 #. type: table
29175 #: guix-git/doc/guix.texi:16783
29176 msgid "Whether or not to provide a ``control socket'' by which Tor can be controlled to, for instance, dynamically instantiate tor onion services. If @code{#t}, Tor will listen for control commands on the UNIX domain socket @file{/var/run/tor/control-sock}, which will be made writable by members of the @code{tor} group."
29177 msgstr ""
29178
29179 #. type: cindex
29180 #: guix-git/doc/guix.texi:16787
29181 #, no-wrap
29182 msgid "hidden service"
29183 msgstr ""
29184
29185 #. type: deffn
29186 #: guix-git/doc/guix.texi:16788
29187 #, no-wrap
29188 msgid "{Scheme Procedure} tor-hidden-service @var{name} @var{mapping}"
29189 msgstr ""
29190
29191 #. type: deffn
29192 #: guix-git/doc/guix.texi:16791
29193 msgid "Define a new Tor @dfn{hidden service} called @var{name} and implementing @var{mapping}. @var{mapping} is a list of port/host tuples, such as:"
29194 msgstr ""
29195
29196 #. type: example
29197 #: guix-git/doc/guix.texi:16795
29198 #, no-wrap
29199 msgid ""
29200 " '((22 \"127.0.0.1:22\")\n"
29201 " (80 \"127.0.0.1:8080\"))\n"
29202 msgstr ""
29203
29204 #. type: deffn
29205 #: guix-git/doc/guix.texi:16799
29206 msgid "In this example, port 22 of the hidden service is mapped to local port 22, and port 80 is mapped to local port 8080."
29207 msgstr ""
29208
29209 #. type: deffn
29210 #: guix-git/doc/guix.texi:16803
29211 msgid "This creates a @file{/var/lib/tor/hidden-services/@var{name}} directory, where the @file{hostname} file contains the @code{.onion} host name for the hidden service."
29212 msgstr ""
29213
29214 #. type: deffn
29215 #: guix-git/doc/guix.texi:16806
29216 msgid "See @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the Tor project's documentation} for more information."
29217 msgstr ""
29218
29219 #. type: Plain text
29220 #: guix-git/doc/guix.texi:16809
29221 msgid "The @code{(gnu services rsync)} module provides the following services:"
29222 msgstr ""
29223
29224 #. type: Plain text
29225 #: guix-git/doc/guix.texi:16813
29226 msgid "You might want an rsync daemon if you have files that you want available so anyone (or just yourself) can download existing files or upload new files."
29227 msgstr ""
29228
29229 #. type: deffn
29230 #: guix-git/doc/guix.texi:16814
29231 #, no-wrap
29232 msgid "{Scheme Variable} rsync-service-type"
29233 msgstr ""
29234
29235 #. type: deffn
29236 #: guix-git/doc/guix.texi:16818
29237 msgid "This is the service type for the @uref{https://rsync.samba.org, rsync} daemon, The value for this service type is a @command{rsync-configuration} record as in this example:"
29238 msgstr ""
29239
29240 #. type: lisp
29241 #: guix-git/doc/guix.texi:16821
29242 #, no-wrap
29243 msgid "(service rsync-service-type)\n"
29244 msgstr ""
29245
29246 #. type: deffn
29247 #: guix-git/doc/guix.texi:16824
29248 msgid "See below for details about @code{rsync-configuration}."
29249 msgstr ""
29250
29251 #. type: deftp
29252 #: guix-git/doc/guix.texi:16826
29253 #, no-wrap
29254 msgid "{Data Type} rsync-configuration"
29255 msgstr ""
29256
29257 #. type: deftp
29258 #: guix-git/doc/guix.texi:16828
29259 msgid "Data type representing the configuration for @code{rsync-service}."
29260 msgstr ""
29261
29262 #. type: item
29263 #: guix-git/doc/guix.texi:16830
29264 #, no-wrap
29265 msgid "@code{package} (default: @var{rsync})"
29266 msgstr ""
29267
29268 #. type: table
29269 #: guix-git/doc/guix.texi:16832
29270 msgid "@code{rsync} package to use."
29271 msgstr ""
29272
29273 #. type: item
29274 #: guix-git/doc/guix.texi:16833
29275 #, no-wrap
29276 msgid "@code{port-number} (default: @code{873})"
29277 msgstr ""
29278
29279 #. type: table
29280 #: guix-git/doc/guix.texi:16837
29281 msgid "TCP port on which @command{rsync} listens for incoming connections. If port is less than @code{1024} @command{rsync} needs to be started as the @code{root} user and group."
29282 msgstr ""
29283
29284 #. type: item
29285 #: guix-git/doc/guix.texi:16838
29286 #, no-wrap
29287 msgid "@code{pid-file} (default: @code{\"/var/run/rsyncd/rsyncd.pid\"})"
29288 msgstr ""
29289
29290 #. type: table
29291 #: guix-git/doc/guix.texi:16840
29292 msgid "Name of the file where @command{rsync} writes its PID."
29293 msgstr ""
29294
29295 #. type: item
29296 #: guix-git/doc/guix.texi:16841
29297 #, no-wrap
29298 msgid "@code{lock-file} (default: @code{\"/var/run/rsyncd/rsyncd.lock\"})"
29299 msgstr ""
29300
29301 #. type: table
29302 #: guix-git/doc/guix.texi:16843
29303 msgid "Name of the file where @command{rsync} writes its lock file."
29304 msgstr ""
29305
29306 #. type: item
29307 #: guix-git/doc/guix.texi:16844
29308 #, no-wrap
29309 msgid "@code{log-file} (default: @code{\"/var/log/rsyncd.log\"})"
29310 msgstr ""
29311
29312 #. type: table
29313 #: guix-git/doc/guix.texi:16846
29314 msgid "Name of the file where @command{rsync} writes its log file."
29315 msgstr ""
29316
29317 #. type: item
29318 #: guix-git/doc/guix.texi:16847
29319 #, no-wrap
29320 msgid "@code{use-chroot?} (default: @var{#t})"
29321 msgstr ""
29322
29323 #. type: table
29324 #: guix-git/doc/guix.texi:16849
29325 msgid "Whether to use chroot for @command{rsync} shared directory."
29326 msgstr ""
29327
29328 #. type: item
29329 #: guix-git/doc/guix.texi:16850
29330 #, no-wrap
29331 msgid "@code{share-path} (default: @file{/srv/rsync})"
29332 msgstr ""
29333
29334 #. type: table
29335 #: guix-git/doc/guix.texi:16852
29336 msgid "Location of the @command{rsync} shared directory."
29337 msgstr ""
29338
29339 #. type: item
29340 #: guix-git/doc/guix.texi:16853
29341 #, no-wrap
29342 msgid "@code{share-comment} (default: @code{\"Rsync share\"})"
29343 msgstr ""
29344
29345 #. type: table
29346 #: guix-git/doc/guix.texi:16855
29347 msgid "Comment of the @command{rsync} shared directory."
29348 msgstr ""
29349
29350 #. type: item
29351 #: guix-git/doc/guix.texi:16856
29352 #, no-wrap
29353 msgid "@code{read-only?} (default: @var{#f})"
29354 msgstr ""
29355
29356 #. type: table
29357 #: guix-git/doc/guix.texi:16858
29358 msgid "Read-write permissions to shared directory."
29359 msgstr ""
29360
29361 #. type: item
29362 #: guix-git/doc/guix.texi:16859
29363 #, no-wrap
29364 msgid "@code{timeout} (default: @code{300})"
29365 msgstr ""
29366
29367 #. type: table
29368 #: guix-git/doc/guix.texi:16861
29369 msgid "I/O timeout in seconds."
29370 msgstr ""
29371
29372 #. type: item
29373 #: guix-git/doc/guix.texi:16862
29374 #, no-wrap
29375 msgid "@code{user} (default: @var{\"root\"})"
29376 msgstr ""
29377
29378 #. type: table
29379 #: guix-git/doc/guix.texi:16864
29380 msgid "Owner of the @code{rsync} process."
29381 msgstr ""
29382
29383 #. type: item
29384 #: guix-git/doc/guix.texi:16865
29385 #, no-wrap
29386 msgid "@code{group} (default: @var{\"root\"})"
29387 msgstr ""
29388
29389 #. type: table
29390 #: guix-git/doc/guix.texi:16867
29391 msgid "Group of the @code{rsync} process."
29392 msgstr ""
29393
29394 #. type: item
29395 #: guix-git/doc/guix.texi:16868
29396 #, no-wrap
29397 msgid "@code{uid} (default: @var{\"rsyncd\"})"
29398 msgstr ""
29399
29400 #. type: table
29401 #: guix-git/doc/guix.texi:16871
29402 msgid "User name or user ID that file transfers to and from that module should take place as when the daemon was run as @code{root}."
29403 msgstr ""
29404
29405 #. type: item
29406 #: guix-git/doc/guix.texi:16872
29407 #, no-wrap
29408 msgid "@code{gid} (default: @var{\"rsyncd\"})"
29409 msgstr ""
29410
29411 #. type: table
29412 #: guix-git/doc/guix.texi:16874 guix-git/doc/guix.texi:17317
29413 msgid "Group name or group ID that will be used when accessing the module."
29414 msgstr ""
29415
29416 #. type: Plain text
29417 #: guix-git/doc/guix.texi:16879
29418 msgid "The @code{(gnu services syncthing)} module provides the following services:"
29419 msgstr ""
29420
29421 #. type: cindex
29422 #: guix-git/doc/guix.texi:16879
29423 #, no-wrap
29424 msgid "syncthing"
29425 msgstr ""
29426
29427 #. type: Plain text
29428 #: guix-git/doc/guix.texi:16884
29429 msgid "You might want a syncthing daemon if you have files between two or more computers and want to sync them in real time, safely protected from prying eyes."
29430 msgstr ""
29431
29432 #. type: deffn
29433 #: guix-git/doc/guix.texi:16885
29434 #, no-wrap
29435 msgid "{Scheme Variable} syncthing-service-type"
29436 msgstr ""
29437
29438 #. type: deffn
29439 #: guix-git/doc/guix.texi:16889
29440 msgid "This is the service type for the @uref{https://syncthing.net/, syncthing} daemon, The value for this service type is a @command{syncthing-configuration} record as in this example:"
29441 msgstr ""
29442
29443 #. type: lisp
29444 #: guix-git/doc/guix.texi:16893
29445 #, no-wrap
29446 msgid ""
29447 "(service syncthing-service-type\n"
29448 " (syncthing-configuration (user \"alice\")))\n"
29449 msgstr ""
29450
29451 #. type: deffn
29452 #: guix-git/doc/guix.texi:16896
29453 msgid "See below for details about @code{syncthing-configuration}."
29454 msgstr ""
29455
29456 #. type: deftp
29457 #: guix-git/doc/guix.texi:16897
29458 #, no-wrap
29459 msgid "{Data Type} syncthing-configuration"
29460 msgstr ""
29461
29462 #. type: deftp
29463 #: guix-git/doc/guix.texi:16899
29464 msgid "Data type representing the configuration for @code{syncthing-service-type}."
29465 msgstr ""
29466
29467 #. type: item
29468 #: guix-git/doc/guix.texi:16901
29469 #, no-wrap
29470 msgid "@code{syncthing} (default: @var{syncthing})"
29471 msgstr ""
29472
29473 #. type: table
29474 #: guix-git/doc/guix.texi:16903
29475 msgid "@code{syncthing} package to use."
29476 msgstr ""
29477
29478 #. type: item
29479 #: guix-git/doc/guix.texi:16904
29480 #, no-wrap
29481 msgid "@code{arguments} (default: @var{'()})"
29482 msgstr ""
29483
29484 #. type: table
29485 #: guix-git/doc/guix.texi:16906
29486 msgid "List of command-line arguments passing to @code{syncthing} binary."
29487 msgstr ""
29488
29489 #. type: item
29490 #: guix-git/doc/guix.texi:16907
29491 #, no-wrap
29492 msgid "@code{logflags} (default: @var{0})"
29493 msgstr ""
29494
29495 #. type: table
29496 #: guix-git/doc/guix.texi:16910
29497 msgid "Sum of logging flags, see @uref{https://docs.syncthing.net/users/syncthing.html#cmdoption-logflags, Syncthing documentation logflags}."
29498 msgstr ""
29499
29500 #. type: item
29501 #: guix-git/doc/guix.texi:16911
29502 #, no-wrap
29503 msgid "@code{user} (default: @var{#f})"
29504 msgstr ""
29505
29506 #. type: table
29507 #: guix-git/doc/guix.texi:16914
29508 msgid "The user as which the Syncthing service is to be run. This assumes that the specified user exists."
29509 msgstr ""
29510
29511 #. type: item
29512 #: guix-git/doc/guix.texi:16915
29513 #, no-wrap
29514 msgid "@code{group} (default: @var{\"users\"})"
29515 msgstr ""
29516
29517 #. type: table
29518 #: guix-git/doc/guix.texi:16918
29519 msgid "The group as which the Syncthing service is to be run. This assumes that the specified group exists."
29520 msgstr ""
29521
29522 #. type: item
29523 #: guix-git/doc/guix.texi:16919
29524 #, no-wrap
29525 msgid "@code{home} (default: @var{#f})"
29526 msgstr ""
29527
29528 #. type: table
29529 #: guix-git/doc/guix.texi:16922
29530 msgid "Common configuration and data directory. The default configuration directory is @file{$HOME} of the specified Syncthing @code{user}."
29531 msgstr ""
29532
29533 #. type: Plain text
29534 #: guix-git/doc/guix.texi:16928
29535 msgid "Furthermore, @code{(gnu services ssh)} provides the following services."
29536 msgstr ""
29537
29538 #. type: cindex
29539 #: guix-git/doc/guix.texi:16928 guix-git/doc/guix.texi:16967
29540 #: guix-git/doc/guix.texi:33628
29541 #, no-wrap
29542 msgid "SSH"
29543 msgstr ""
29544
29545 #. type: cindex
29546 #: guix-git/doc/guix.texi:16929 guix-git/doc/guix.texi:16968
29547 #: guix-git/doc/guix.texi:33629
29548 #, no-wrap
29549 msgid "SSH server"
29550 msgstr ""
29551
29552 #. type: deffn
29553 #: guix-git/doc/guix.texi:16931
29554 #, no-wrap
29555 msgid "{Scheme Procedure} lsh-service [#:host-key \"/etc/lsh/host-key\"] @"
29556 msgstr ""
29557
29558 #. type: deffn
29559 #: guix-git/doc/guix.texi:16940
29560 msgid "[#:daemonic? #t] [#:interfaces '()] [#:port-number 22] @ [#:allow-empty-passwords? #f] [#:root-login? #f] @ [#:syslog-output? #t] [#:x11-forwarding? #t] @ [#:tcp/ip-forwarding? #t] [#:password-authentication? #t] @ [#:public-key-authentication? #t] [#:initialize? #t] Run the @command{lshd} program from @var{lsh} to listen on port @var{port-number}. @var{host-key} must designate a file containing the host key, and readable only by root."
29561 msgstr ""
29562
29563 #. type: deffn
29564 #: guix-git/doc/guix.texi:16946
29565 msgid "When @var{daemonic?} is true, @command{lshd} will detach from the controlling terminal and log its output to syslogd, unless one sets @var{syslog-output?} to false. Obviously, it also makes lsh-service depend on existence of syslogd service. When @var{pid-file?} is true, @command{lshd} writes its PID to the file called @var{pid-file}."
29566 msgstr ""
29567
29568 #. type: deffn
29569 #: guix-git/doc/guix.texi:16950
29570 msgid "When @var{initialize?} is true, automatically create the seed and host key upon service activation if they do not exist yet. This may take long and require interaction."
29571 msgstr ""
29572
29573 #. type: deffn
29574 #: guix-git/doc/guix.texi:16955
29575 msgid "When @var{initialize?} is false, it is up to the user to initialize the randomness generator (@pxref{lsh-make-seed,,, lsh, LSH Manual}), and to create a key pair with the private key stored in file @var{host-key} (@pxref{lshd basics,,, lsh, LSH Manual})."
29576 msgstr ""
29577
29578 #. type: deffn
29579 #: guix-git/doc/guix.texi:16959
29580 msgid "When @var{interfaces} is empty, lshd listens for connections on all the network interfaces; otherwise, @var{interfaces} must be a list of host names or addresses."
29581 msgstr ""
29582
29583 #. type: deffn
29584 #: guix-git/doc/guix.texi:16963
29585 msgid "@var{allow-empty-passwords?} specifies whether to accept log-ins with empty passwords, and @var{root-login?} specifies whether to accept log-ins as root."
29586 msgstr ""
29587
29588 #. type: deffn
29589 #: guix-git/doc/guix.texi:16965
29590 msgid "The other options should be self-descriptive."
29591 msgstr ""
29592
29593 #. type: deffn
29594 #: guix-git/doc/guix.texi:16969
29595 #, no-wrap
29596 msgid "{Scheme Variable} openssh-service-type"
29597 msgstr ""
29598
29599 #. type: deffn
29600 #: guix-git/doc/guix.texi:16973
29601 msgid "This is the type for the @uref{http://www.openssh.org, OpenSSH} secure shell daemon, @command{sshd}. Its value must be an @code{openssh-configuration} record as in this example:"
29602 msgstr ""
29603
29604 #. type: lisp
29605 #: guix-git/doc/guix.texi:16982
29606 #, no-wrap
29607 msgid ""
29608 "(service openssh-service-type\n"
29609 " (openssh-configuration\n"
29610 " (x11-forwarding? #t)\n"
29611 " (permit-root-login 'without-password)\n"
29612 " (authorized-keys\n"
29613 " `((\"alice\" ,(local-file \"alice.pub\"))\n"
29614 " (\"bob\" ,(local-file \"bob.pub\"))))))\n"
29615 msgstr ""
29616
29617 #. type: deffn
29618 #: guix-git/doc/guix.texi:16985
29619 msgid "See below for details about @code{openssh-configuration}."
29620 msgstr ""
29621
29622 #. type: deffn
29623 #: guix-git/doc/guix.texi:16988
29624 msgid "This service can be extended with extra authorized keys, as in this example:"
29625 msgstr ""
29626
29627 #. type: lisp
29628 #: guix-git/doc/guix.texi:16993
29629 #, no-wrap
29630 msgid ""
29631 "(service-extension openssh-service-type\n"
29632 " (const `((\"charlie\"\n"
29633 " ,(local-file \"charlie.pub\")))))\n"
29634 msgstr ""
29635
29636 #. type: deftp
29637 #: guix-git/doc/guix.texi:16996
29638 #, no-wrap
29639 msgid "{Data Type} openssh-configuration"
29640 msgstr ""
29641
29642 #. type: deftp
29643 #: guix-git/doc/guix.texi:16998
29644 msgid "This is the configuration record for OpenSSH's @command{sshd}."
29645 msgstr ""
29646
29647 #. type: item
29648 #: guix-git/doc/guix.texi:17000
29649 #, no-wrap
29650 msgid "@code{openssh} (default @var{openssh})"
29651 msgstr ""
29652
29653 #. type: table
29654 #: guix-git/doc/guix.texi:17002
29655 msgid "The Openssh package to use."
29656 msgstr ""
29657
29658 #. type: item
29659 #: guix-git/doc/guix.texi:17003
29660 #, no-wrap
29661 msgid "@code{pid-file} (default: @code{\"/var/run/sshd.pid\"})"
29662 msgstr ""
29663
29664 #. type: table
29665 #: guix-git/doc/guix.texi:17005
29666 msgid "Name of the file where @command{sshd} writes its PID."
29667 msgstr ""
29668
29669 #. type: item
29670 #: guix-git/doc/guix.texi:17006
29671 #, no-wrap
29672 msgid "@code{port-number} (default: @code{22})"
29673 msgstr ""
29674
29675 #. type: table
29676 #: guix-git/doc/guix.texi:17008
29677 msgid "TCP port on which @command{sshd} listens for incoming connections."
29678 msgstr ""
29679
29680 #. type: item
29681 #: guix-git/doc/guix.texi:17009
29682 #, no-wrap
29683 msgid "@code{permit-root-login} (default: @code{#f})"
29684 msgstr ""
29685
29686 #. type: table
29687 #: guix-git/doc/guix.texi:17014
29688 msgid "This field determines whether and when to allow logins as root. If @code{#f}, root logins are disallowed; if @code{#t}, they are allowed. If it's the symbol @code{'without-password}, then root logins are permitted but not with password-based authentication."
29689 msgstr ""
29690
29691 #. type: item
29692 #: guix-git/doc/guix.texi:17015 guix-git/doc/guix.texi:17176
29693 #, no-wrap
29694 msgid "@code{allow-empty-passwords?} (default: @code{#f})"
29695 msgstr ""
29696
29697 #. type: table
29698 #: guix-git/doc/guix.texi:17018
29699 msgid "When true, users with empty passwords may log in. When false, they may not."
29700 msgstr ""
29701
29702 #. type: item
29703 #: guix-git/doc/guix.texi:17019 guix-git/doc/guix.texi:17179
29704 #, no-wrap
29705 msgid "@code{password-authentication?} (default: @code{#t})"
29706 msgstr ""
29707
29708 #. type: table
29709 #: guix-git/doc/guix.texi:17022
29710 msgid "When true, users may log in with their password. When false, they have other authentication methods."
29711 msgstr ""
29712
29713 #. type: item
29714 #: guix-git/doc/guix.texi:17023
29715 #, no-wrap
29716 msgid "@code{public-key-authentication?} (default: @code{#t})"
29717 msgstr ""
29718
29719 #. type: table
29720 #: guix-git/doc/guix.texi:17026
29721 msgid "When true, users may log in using public key authentication. When false, users have to use other authentication method."
29722 msgstr ""
29723
29724 #. type: table
29725 #: guix-git/doc/guix.texi:17029
29726 msgid "Authorized public keys are stored in @file{~/.ssh/authorized_keys}. This is used only by protocol version 2."
29727 msgstr ""
29728
29729 #. type: item
29730 #: guix-git/doc/guix.texi:17030
29731 #, no-wrap
29732 msgid "@code{x11-forwarding?} (default: @code{#f})"
29733 msgstr ""
29734
29735 #. type: table
29736 #: guix-git/doc/guix.texi:17034
29737 msgid "When true, forwarding of X11 graphical client connections is enabled---in other words, @command{ssh} options @option{-X} and @option{-Y} will work."
29738 msgstr ""
29739
29740 #. type: item
29741 #: guix-git/doc/guix.texi:17035
29742 #, no-wrap
29743 msgid "@code{allow-agent-forwarding?} (default: @code{#t})"
29744 msgstr ""
29745
29746 #. type: table
29747 #: guix-git/doc/guix.texi:17037
29748 msgid "Whether to allow agent forwarding."
29749 msgstr ""
29750
29751 #. type: item
29752 #: guix-git/doc/guix.texi:17038
29753 #, no-wrap
29754 msgid "@code{allow-tcp-forwarding?} (default: @code{#t})"
29755 msgstr ""
29756
29757 #. type: table
29758 #: guix-git/doc/guix.texi:17040
29759 msgid "Whether to allow TCP forwarding."
29760 msgstr ""
29761
29762 #. type: item
29763 #: guix-git/doc/guix.texi:17041
29764 #, no-wrap
29765 msgid "@code{gateway-ports?} (default: @code{#f})"
29766 msgstr ""
29767
29768 #. type: table
29769 #: guix-git/doc/guix.texi:17043
29770 msgid "Whether to allow gateway ports."
29771 msgstr ""
29772
29773 #. type: item
29774 #: guix-git/doc/guix.texi:17044
29775 #, no-wrap
29776 msgid "@code{challenge-response-authentication?} (default: @code{#f})"
29777 msgstr ""
29778
29779 #. type: table
29780 #: guix-git/doc/guix.texi:17047
29781 msgid "Specifies whether challenge response authentication is allowed (e.g.@: via PAM)."
29782 msgstr ""
29783
29784 #. type: item
29785 #: guix-git/doc/guix.texi:17048
29786 #, no-wrap
29787 msgid "@code{use-pam?} (default: @code{#t})"
29788 msgstr ""
29789
29790 #. type: table
29791 #: guix-git/doc/guix.texi:17054
29792 msgid "Enables the Pluggable Authentication Module interface. If set to @code{#t}, this will enable PAM authentication using @code{challenge-response-authentication?} and @code{password-authentication?}, in addition to PAM account and session module processing for all authentication types."
29793 msgstr ""
29794
29795 #. type: table
29796 #: guix-git/doc/guix.texi:17059
29797 msgid "Because PAM challenge response authentication usually serves an equivalent role to password authentication, you should disable either @code{challenge-response-authentication?} or @code{password-authentication?}."
29798 msgstr ""
29799
29800 #. type: item
29801 #: guix-git/doc/guix.texi:17060
29802 #, no-wrap
29803 msgid "@code{print-last-log?} (default: @code{#t})"
29804 msgstr ""
29805
29806 #. type: table
29807 #: guix-git/doc/guix.texi:17063
29808 msgid "Specifies whether @command{sshd} should print the date and time of the last user login when a user logs in interactively."
29809 msgstr ""
29810
29811 #. type: item
29812 #: guix-git/doc/guix.texi:17064
29813 #, no-wrap
29814 msgid "@code{subsystems} (default: @code{'((\"sftp\" \"internal-sftp\"))})"
29815 msgstr ""
29816
29817 #. type: table
29818 #: guix-git/doc/guix.texi:17066
29819 msgid "Configures external subsystems (e.g.@: file transfer daemon)."
29820 msgstr ""
29821
29822 #. type: table
29823 #: guix-git/doc/guix.texi:17070
29824 msgid "This is a list of two-element lists, each of which containing the subsystem name and a command (with optional arguments) to execute upon subsystem request."
29825 msgstr ""
29826
29827 #. type: table
29828 #: guix-git/doc/guix.texi:17073
29829 msgid "The command @command{internal-sftp} implements an in-process SFTP server. Alternatively, one can specify the @command{sftp-server} command:"
29830 msgstr ""
29831
29832 #. type: lisp
29833 #: guix-git/doc/guix.texi:17078
29834 #, no-wrap
29835 msgid ""
29836 "(service openssh-service-type\n"
29837 " (openssh-configuration\n"
29838 " (subsystems\n"
29839 " `((\"sftp\" ,(file-append openssh \"/libexec/sftp-server\"))))))\n"
29840 msgstr ""
29841
29842 #. type: item
29843 #: guix-git/doc/guix.texi:17080
29844 #, no-wrap
29845 msgid "@code{accepted-environment} (default: @code{'()})"
29846 msgstr ""
29847
29848 #. type: table
29849 #: guix-git/doc/guix.texi:17082
29850 msgid "List of strings describing which environment variables may be exported."
29851 msgstr ""
29852
29853 #. type: table
29854 #: guix-git/doc/guix.texi:17085
29855 msgid "Each string gets on its own line. See the @code{AcceptEnv} option in @code{man sshd_config}."
29856 msgstr ""
29857
29858 #. type: table
29859 #: guix-git/doc/guix.texi:17090
29860 msgid "This example allows ssh-clients to export the @env{COLORTERM} variable. It is set by terminal emulators, which support colors. You can use it in your shell's resource file to enable colors for the prompt and commands if this variable is set."
29861 msgstr ""
29862
29863 #. type: lisp
29864 #: guix-git/doc/guix.texi:17095
29865 #, no-wrap
29866 msgid ""
29867 "(service openssh-service-type\n"
29868 " (openssh-configuration\n"
29869 " (accepted-environment '(\"COLORTERM\"))))\n"
29870 msgstr ""
29871
29872 #. type: item
29873 #: guix-git/doc/guix.texi:17097
29874 #, no-wrap
29875 msgid "@code{authorized-keys} (default: @code{'()})"
29876 msgstr ""
29877
29878 #. type: cindex
29879 #: guix-git/doc/guix.texi:17098
29880 #, no-wrap
29881 msgid "authorized keys, SSH"
29882 msgstr ""
29883
29884 #. type: cindex
29885 #: guix-git/doc/guix.texi:17099
29886 #, no-wrap
29887 msgid "SSH authorized keys"
29888 msgstr ""
29889
29890 #. type: table
29891 #: guix-git/doc/guix.texi:17103
29892 msgid "This is the list of authorized keys. Each element of the list is a user name followed by one or more file-like objects that represent SSH public keys. For example:"
29893 msgstr ""
29894
29895 #. type: lisp
29896 #: guix-git/doc/guix.texi:17110
29897 #, no-wrap
29898 msgid ""
29899 "(openssh-configuration\n"
29900 " (authorized-keys\n"
29901 " `((\"rekado\" ,(local-file \"rekado.pub\"))\n"
29902 " (\"chris\" ,(local-file \"chris.pub\"))\n"
29903 " (\"root\" ,(local-file \"rekado.pub\") ,(local-file \"chris.pub\")))))\n"
29904 msgstr ""
29905
29906 #. type: table
29907 #: guix-git/doc/guix.texi:17115
29908 msgid "registers the specified public keys for user accounts @code{rekado}, @code{chris}, and @code{root}."
29909 msgstr ""
29910
29911 #. type: table
29912 #: guix-git/doc/guix.texi:17118
29913 msgid "Additional authorized keys can be specified @i{via} @code{service-extension}."
29914 msgstr ""
29915
29916 #. type: table
29917 #: guix-git/doc/guix.texi:17121
29918 msgid "Note that this does @emph{not} interfere with the use of @file{~/.ssh/authorized_keys}."
29919 msgstr ""
29920
29921 #. type: item
29922 #: guix-git/doc/guix.texi:17122 guix-git/doc/guix.texi:17553
29923 #, no-wrap
29924 msgid "@code{log-level} (default: @code{'info})"
29925 msgstr ""
29926
29927 #. type: table
29928 #: guix-git/doc/guix.texi:17126
29929 msgid "This is a symbol specifying the logging level: @code{quiet}, @code{fatal}, @code{error}, @code{info}, @code{verbose}, @code{debug}, etc. See the man page for @file{sshd_config} for the full list of level names."
29930 msgstr ""
29931
29932 #. type: item
29933 #: guix-git/doc/guix.texi:17127 guix-git/doc/guix.texi:19947
29934 #: guix-git/doc/guix.texi:24813
29935 #, no-wrap
29936 msgid "@code{extra-content} (default: @code{\"\"})"
29937 msgstr ""
29938
29939 #. type: table
29940 #: guix-git/doc/guix.texi:17132
29941 msgid "This field can be used to append arbitrary text to the configuration file. It is especially useful for elaborate configurations that cannot be expressed otherwise. This configuration, for example, would generally disable root logins, but permit them from one specific IP address:"
29942 msgstr ""
29943
29944 #. type: lisp
29945 #: guix-git/doc/guix.texi:17138
29946 #, no-wrap
29947 msgid ""
29948 "(openssh-configuration\n"
29949 " (extra-content \"\\\n"
29950 "Match Address 192.168.0.1\n"
29951 " PermitRootLogin yes\"))\n"
29952 msgstr ""
29953
29954 #. type: deffn
29955 #: guix-git/doc/guix.texi:17143
29956 #, no-wrap
29957 msgid "{Scheme Procedure} dropbear-service [@var{config}]"
29958 msgstr ""
29959
29960 #. type: deffn
29961 #: guix-git/doc/guix.texi:17147
29962 msgid "Run the @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,Dropbear SSH daemon} with the given @var{config}, a @code{<dropbear-configuration>} object."
29963 msgstr ""
29964
29965 #. type: deffn
29966 #: guix-git/doc/guix.texi:17150
29967 msgid "For example, to specify a Dropbear service listening on port 1234, add this call to the operating system's @code{services} field:"
29968 msgstr ""
29969
29970 #. type: lisp
29971 #: guix-git/doc/guix.texi:17154
29972 #, no-wrap
29973 msgid ""
29974 "(dropbear-service (dropbear-configuration\n"
29975 " (port-number 1234)))\n"
29976 msgstr ""
29977
29978 #. type: deftp
29979 #: guix-git/doc/guix.texi:17157
29980 #, no-wrap
29981 msgid "{Data Type} dropbear-configuration"
29982 msgstr ""
29983
29984 #. type: deftp
29985 #: guix-git/doc/guix.texi:17159
29986 msgid "This data type represents the configuration of a Dropbear SSH daemon."
29987 msgstr ""
29988
29989 #. type: item
29990 #: guix-git/doc/guix.texi:17161
29991 #, no-wrap
29992 msgid "@code{dropbear} (default: @var{dropbear})"
29993 msgstr ""
29994
29995 #. type: table
29996 #: guix-git/doc/guix.texi:17163
29997 msgid "The Dropbear package to use."
29998 msgstr ""
29999
30000 #. type: item
30001 #: guix-git/doc/guix.texi:17164
30002 #, no-wrap
30003 msgid "@code{port-number} (default: 22)"
30004 msgstr ""
30005
30006 #. type: table
30007 #: guix-git/doc/guix.texi:17166
30008 msgid "The TCP port where the daemon waits for incoming connections."
30009 msgstr ""
30010
30011 #. type: item
30012 #: guix-git/doc/guix.texi:17167
30013 #, no-wrap
30014 msgid "@code{syslog-output?} (default: @code{#t})"
30015 msgstr ""
30016
30017 #. type: table
30018 #: guix-git/doc/guix.texi:17169
30019 msgid "Whether to enable syslog output."
30020 msgstr ""
30021
30022 #. type: item
30023 #: guix-git/doc/guix.texi:17170
30024 #, no-wrap
30025 msgid "@code{pid-file} (default: @code{\"/var/run/dropbear.pid\"})"
30026 msgstr ""
30027
30028 #. type: table
30029 #: guix-git/doc/guix.texi:17172
30030 msgid "File name of the daemon's PID file."
30031 msgstr ""
30032
30033 #. type: item
30034 #: guix-git/doc/guix.texi:17173
30035 #, no-wrap
30036 msgid "@code{root-login?} (default: @code{#f})"
30037 msgstr ""
30038
30039 #. type: table
30040 #: guix-git/doc/guix.texi:17175
30041 msgid "Whether to allow @code{root} logins."
30042 msgstr ""
30043
30044 #. type: table
30045 #: guix-git/doc/guix.texi:17178
30046 msgid "Whether to allow empty passwords."
30047 msgstr ""
30048
30049 #. type: table
30050 #: guix-git/doc/guix.texi:17181
30051 msgid "Whether to enable password-based authentication."
30052 msgstr ""
30053
30054 #. type: cindex
30055 #: guix-git/doc/guix.texi:17184
30056 #, no-wrap
30057 msgid "AutoSSH"
30058 msgstr ""
30059
30060 #. type: deffn
30061 #: guix-git/doc/guix.texi:17185
30062 #, no-wrap
30063 msgid "{Scheme Variable} autossh-service-type"
30064 msgstr ""
30065
30066 #. type: deffn
30067 #: guix-git/doc/guix.texi:17193
30068 msgid "This is the type for the @uref{https://www.harding.motd.ca/autossh, AutoSSH} program that runs a copy of @command{ssh} and monitors it, restarting it as necessary should it die or stop passing traffic. AutoSSH can be run manually from the command-line by passing arguments to the binary @command{autossh} from the package @code{autossh}, but it can also be run as a Guix service. This latter use case is documented here."
30069 msgstr ""
30070
30071 #. type: deffn
30072 #: guix-git/doc/guix.texi:17197
30073 msgid "AutoSSH can be used to forward local traffic to a remote machine using an SSH tunnel, and it respects the @file{~/.ssh/config} of the user it is run as."
30074 msgstr ""
30075
30076 #. type: deffn
30077 #: guix-git/doc/guix.texi:17202
30078 msgid "For example, to specify a service running autossh as the user @code{pino} and forwarding all local connections to port @code{8081} to @code{remote:8081} using an SSH tunnel, add this call to the operating system's @code{services} field:"
30079 msgstr ""
30080
30081 #. type: lisp
30082 #: guix-git/doc/guix.texi:17208
30083 #, no-wrap
30084 msgid ""
30085 "(service autossh-service-type\n"
30086 " (autossh-configuration\n"
30087 " (user \"pino\")\n"
30088 " (ssh-options (list \"-T\" \"-N\" \"-L\" \"8081:localhost:8081\" \"remote.net\"))))\n"
30089 msgstr ""
30090
30091 #. type: deftp
30092 #: guix-git/doc/guix.texi:17211
30093 #, no-wrap
30094 msgid "{Data Type} autossh-configuration"
30095 msgstr ""
30096
30097 #. type: deftp
30098 #: guix-git/doc/guix.texi:17213
30099 msgid "This data type represents the configuration of an AutoSSH service."
30100 msgstr ""
30101
30102 #. type: item
30103 #: guix-git/doc/guix.texi:17216
30104 #, no-wrap
30105 msgid "@code{user} (default @code{\"autossh\"})"
30106 msgstr ""
30107
30108 #. type: table
30109 #: guix-git/doc/guix.texi:17219
30110 msgid "The user as which the AutoSSH service is to be run. This assumes that the specified user exists."
30111 msgstr ""
30112
30113 #. type: item
30114 #: guix-git/doc/guix.texi:17220
30115 #, no-wrap
30116 msgid "@code{poll} (default @code{600})"
30117 msgstr ""
30118
30119 #. type: table
30120 #: guix-git/doc/guix.texi:17222
30121 msgid "Specifies the connection poll time in seconds."
30122 msgstr ""
30123
30124 #. type: item
30125 #: guix-git/doc/guix.texi:17223
30126 #, no-wrap
30127 msgid "@code{first-poll} (default @code{#f})"
30128 msgstr ""
30129
30130 #. type: table
30131 #: guix-git/doc/guix.texi:17229
30132 msgid "Specifies how many seconds AutoSSH waits before the first connection test. After this first test, polling is resumed at the pace defined in @code{poll}. When set to @code{#f}, the first poll is not treated specially and will also use the connection poll specified in @code{poll}."
30133 msgstr ""
30134
30135 #. type: item
30136 #: guix-git/doc/guix.texi:17230
30137 #, no-wrap
30138 msgid "@code{gate-time} (default @code{30})"
30139 msgstr ""
30140
30141 #. type: table
30142 #: guix-git/doc/guix.texi:17233
30143 msgid "Specifies how many seconds an SSH connection must be active before it is considered successful."
30144 msgstr ""
30145
30146 #. type: item
30147 #: guix-git/doc/guix.texi:17234
30148 #, no-wrap
30149 msgid "@code{log-level} (default @code{1})"
30150 msgstr ""
30151
30152 #. type: table
30153 #: guix-git/doc/guix.texi:17237
30154 msgid "The log level, corresponding to the levels used by syslog---so @code{0} is the most silent while @code{7} is the chattiest."
30155 msgstr ""
30156
30157 #. type: item
30158 #: guix-git/doc/guix.texi:17238
30159 #, no-wrap
30160 msgid "@code{max-start} (default @code{#f})"
30161 msgstr ""
30162
30163 #. type: table
30164 #: guix-git/doc/guix.texi:17241
30165 msgid "The maximum number of times SSH may be (re)started before AutoSSH exits. When set to @code{#f}, no maximum is configured and AutoSSH may restart indefinitely."
30166 msgstr ""
30167
30168 #. type: item
30169 #: guix-git/doc/guix.texi:17242
30170 #, no-wrap
30171 msgid "@code{message} (default @code{\"\"})"
30172 msgstr ""
30173
30174 #. type: table
30175 #: guix-git/doc/guix.texi:17244
30176 msgid "The message to append to the echo message sent when testing connections."
30177 msgstr ""
30178
30179 #. type: item
30180 #: guix-git/doc/guix.texi:17245
30181 #, no-wrap
30182 msgid "@code{port} (default @code{\"0\"})"
30183 msgstr ""
30184
30185 #. type: table
30186 #: guix-git/doc/guix.texi:17255
30187 msgid "The ports used for monitoring the connection. When set to @code{\"0\"}, monitoring is disabled. When set to @code{\"@var{n}\"} where @var{n} is a positive integer, ports @var{n} and @var{n}+1 are used for monitoring the connection, such that port @var{n} is the base monitoring port and @code{n+1} is the echo port. When set to @code{\"@var{n}:@var{m}\"} where @var{n} and @var{m} are positive integers, the ports @var{n} and @var{m} are used for monitoring the connection, such that port @var{n} is the base monitoring port and @var{m} is the echo port."
30188 msgstr ""
30189
30190 #. type: item
30191 #: guix-git/doc/guix.texi:17256
30192 #, no-wrap
30193 msgid "@code{ssh-options} (default @code{'()})"
30194 msgstr ""
30195
30196 #. type: table
30197 #: guix-git/doc/guix.texi:17260
30198 msgid "The list of command-line arguments to pass to @command{ssh} when it is run. Options @option{-f} and @option{-M} are reserved for AutoSSH and may cause undefined behaviour."
30199 msgstr ""
30200
30201 #. type: cindex
30202 #: guix-git/doc/guix.texi:17264
30203 #, no-wrap
30204 msgid "WebSSH"
30205 msgstr ""
30206
30207 #. type: deffn
30208 #: guix-git/doc/guix.texi:17265
30209 #, no-wrap
30210 msgid "{Scheme Variable} webssh-service-type"
30211 msgstr ""
30212
30213 #. type: deffn
30214 #: guix-git/doc/guix.texi:17271
30215 msgid "This is the type for the @uref{https://webssh.huashengdun.org/, WebSSH} program that runs a web SSH client. WebSSH can be run manually from the command-line by passing arguments to the binary @command{wssh} from the package @code{webssh}, but it can also be run as a Guix service. This latter use case is documented here."
30216 msgstr ""
30217
30218 #. type: deffn
30219 #: guix-git/doc/guix.texi:17277
30220 msgid "For example, to specify a service running WebSSH on loopback interface on port @code{8888} with reject policy with a list of allowed to connection hosts, and NGINX as a reverse-proxy to this service listening for HTTPS connection, add this call to the operating system's @code{services} field:"
30221 msgstr ""
30222
30223 #. type: lisp
30224 #: guix-git/doc/guix.texi:17285
30225 #, no-wrap
30226 msgid ""
30227 "(service webssh-service-type\n"
30228 " (webssh-configuration (address \"127.0.0.1\")\n"
30229 " (port 8888)\n"
30230 " (policy 'reject)\n"
30231 " (known-hosts '(\"localhost ecdsa-sha2-nistp256 AAAA…\"\n"
30232 " \"127.0.0.1 ecdsa-sha2-nistp256 AAAA…\"))))\n"
30233 "\n"
30234 msgstr ""
30235
30236 #. type: lisp
30237 #: guix-git/doc/guix.texi:17301
30238 #, no-wrap
30239 msgid ""
30240 "(service nginx-service-type\n"
30241 " (nginx-configuration\n"
30242 " (server-blocks\n"
30243 " (list\n"
30244 " (nginx-server-configuration\n"
30245 " (inherit %webssh-configuration-nginx)\n"
30246 " (server-name '(\"webssh.example.com\"))\n"
30247 " (listen '(\"443 ssl\"))\n"
30248 " (ssl-certificate (letsencrypt-certificate \"webssh.example.com\"))\n"
30249 " (ssl-certificate-key (letsencrypt-key \"webssh.example.com\"))\n"
30250 " (locations\n"
30251 " (cons (nginx-location-configuration\n"
30252 " (uri \"/.well-known\")\n"
30253 " (body '(\"root /var/www;\")))\n"
30254 " (nginx-server-configuration-locations %webssh-configuration-nginx))))))))\n"
30255 msgstr ""
30256
30257 #. type: deftp
30258 #: guix-git/doc/guix.texi:17304
30259 #, no-wrap
30260 msgid "{Data Type} webssh-configuration"
30261 msgstr ""
30262
30263 #. type: deftp
30264 #: guix-git/doc/guix.texi:17306
30265 msgid "Data type representing the configuration for @code{webssh-service}."
30266 msgstr ""
30267
30268 #. type: item
30269 #: guix-git/doc/guix.texi:17308
30270 #, no-wrap
30271 msgid "@code{package} (default: @var{webssh})"
30272 msgstr ""
30273
30274 #. type: table
30275 #: guix-git/doc/guix.texi:17310
30276 msgid "@code{webssh} package to use."
30277 msgstr ""
30278
30279 #. type: item
30280 #: guix-git/doc/guix.texi:17311
30281 #, no-wrap
30282 msgid "@code{user-name} (default: @var{\"webssh\"})"
30283 msgstr ""
30284
30285 #. type: table
30286 #: guix-git/doc/guix.texi:17314
30287 msgid "User name or user ID that file transfers to and from that module should take place."
30288 msgstr ""
30289
30290 #. type: item
30291 #: guix-git/doc/guix.texi:17315
30292 #, no-wrap
30293 msgid "@code{group-name} (default: @var{\"webssh\"})"
30294 msgstr ""
30295
30296 #. type: item
30297 #: guix-git/doc/guix.texi:17318
30298 #, no-wrap
30299 msgid "@code{address} (default: @var{#f})"
30300 msgstr ""
30301
30302 #. type: table
30303 #: guix-git/doc/guix.texi:17320
30304 msgid "IP address on which @command{webssh} listens for incoming connections."
30305 msgstr ""
30306
30307 #. type: item
30308 #: guix-git/doc/guix.texi:17321
30309 #, no-wrap
30310 msgid "@code{port} (default: @var{8888})"
30311 msgstr ""
30312
30313 #. type: table
30314 #: guix-git/doc/guix.texi:17323
30315 msgid "TCP port on which @command{webssh} listens for incoming connections."
30316 msgstr ""
30317
30318 #. type: item
30319 #: guix-git/doc/guix.texi:17324
30320 #, no-wrap
30321 msgid "@code{policy} (default: @var{#f})"
30322 msgstr ""
30323
30324 #. type: table
30325 #: guix-git/doc/guix.texi:17326
30326 msgid "Connection policy. @var{reject} policy requires to specify @var{known-hosts}."
30327 msgstr ""
30328
30329 #. type: item
30330 #: guix-git/doc/guix.texi:17327
30331 #, no-wrap
30332 msgid "@code{known-hosts} (default: @var{'()})"
30333 msgstr ""
30334
30335 #. type: table
30336 #: guix-git/doc/guix.texi:17329
30337 msgid "List of hosts which allowed for SSH connection from @command{webssh}."
30338 msgstr ""
30339
30340 #. type: item
30341 #: guix-git/doc/guix.texi:17330
30342 #, no-wrap
30343 msgid "@code{log-file} (default: @file{\"/var/log/webssh.log\"})"
30344 msgstr ""
30345
30346 #. type: table
30347 #: guix-git/doc/guix.texi:17332
30348 msgid "Name of the file where @command{webssh} writes its log file."
30349 msgstr ""
30350
30351 #. type: item
30352 #: guix-git/doc/guix.texi:17333
30353 #, no-wrap
30354 msgid "@code{log-level} (default: @var{#f})"
30355 msgstr ""
30356
30357 #. type: table
30358 #: guix-git/doc/guix.texi:17335
30359 msgid "Logging level."
30360 msgstr ""
30361
30362 #. type: defvr
30363 #: guix-git/doc/guix.texi:17339
30364 #, no-wrap
30365 msgid "{Scheme Variable} %facebook-host-aliases"
30366 msgstr ""
30367
30368 #. type: defvr
30369 #: guix-git/doc/guix.texi:17345
30370 msgid "This variable contains a string for use in @file{/etc/hosts} (@pxref{Host Names,,, libc, The GNU C Library Reference Manual}). Each line contains a entry that maps a known server name of the Facebook on-line service---e.g., @code{www.facebook.com}---to the local host---@code{127.0.0.1} or its IPv6 equivalent, @code{::1}."
30371 msgstr ""
30372
30373 #. type: defvr
30374 #: guix-git/doc/guix.texi:17349
30375 msgid "This variable is typically used in the @code{hosts-file} field of an @code{operating-system} declaration (@pxref{operating-system Reference, @file{/etc/hosts}}):"
30376 msgstr ""
30377
30378 #. type: lisp
30379 #: guix-git/doc/guix.texi:17362
30380 #, no-wrap
30381 msgid ""
30382 "(operating-system\n"
30383 " (host-name \"mymachine\")\n"
30384 " ;; ...\n"
30385 " (hosts-file\n"
30386 " ;; Create a /etc/hosts file with aliases for \"localhost\"\n"
30387 " ;; and \"mymachine\", as well as for Facebook servers.\n"
30388 " (plain-file \"hosts\"\n"
30389 " (string-append (local-host-aliases host-name)\n"
30390 " %facebook-host-aliases))))\n"
30391 msgstr ""
30392
30393 #. type: defvr
30394 #: guix-git/doc/guix.texi:17366
30395 msgid "This mechanism can prevent programs running locally, such as Web browsers, from accessing Facebook."
30396 msgstr ""
30397
30398 #. type: Plain text
30399 #: guix-git/doc/guix.texi:17369
30400 msgid "The @code{(gnu services avahi)} provides the following definition."
30401 msgstr ""
30402
30403 #. type: defvr
30404 #: guix-git/doc/guix.texi:17370
30405 #, no-wrap
30406 msgid "{Scheme Variable} avahi-service-type"
30407 msgstr ""
30408
30409 #. type: defvr
30410 #: guix-git/doc/guix.texi:17375
30411 msgid "This is the service that runs @command{avahi-daemon}, a system-wide mDNS/DNS-SD responder that allows for service discovery and ``zero-configuration'' host name lookups (see @uref{https://avahi.org/}). Its value must be an @code{avahi-configuration} record---see below."
30412 msgstr ""
30413
30414 #. type: defvr
30415 #: guix-git/doc/guix.texi:17380
30416 msgid "This service extends the name service cache daemon (nscd) so that it can resolve @code{.local} host names using @uref{https://0pointer.de/lennart/projects/nss-mdns/, nss-mdns}. @xref{Name Service Switch}, for information on host name resolution."
30417 msgstr ""
30418
30419 #. type: defvr
30420 #: guix-git/doc/guix.texi:17383
30421 msgid "Additionally, add the @var{avahi} package to the system profile so that commands such as @command{avahi-browse} are directly usable."
30422 msgstr ""
30423
30424 #. type: deftp
30425 #: guix-git/doc/guix.texi:17385
30426 #, no-wrap
30427 msgid "{Data Type} avahi-configuration"
30428 msgstr ""
30429
30430 #. type: deftp
30431 #: guix-git/doc/guix.texi:17387
30432 msgid "Data type representation the configuration for Avahi."
30433 msgstr ""
30434
30435 #. type: item
30436 #: guix-git/doc/guix.texi:17390
30437 #, no-wrap
30438 msgid "@code{host-name} (default: @code{#f})"
30439 msgstr ""
30440
30441 #. type: table
30442 #: guix-git/doc/guix.texi:17393
30443 msgid "If different from @code{#f}, use that as the host name to publish for this machine; otherwise, use the machine's actual host name."
30444 msgstr ""
30445
30446 #. type: item
30447 #: guix-git/doc/guix.texi:17394
30448 #, no-wrap
30449 msgid "@code{publish?} (default: @code{#t})"
30450 msgstr ""
30451
30452 #. type: table
30453 #: guix-git/doc/guix.texi:17397
30454 msgid "When true, allow host names and services to be published (broadcast) over the network."
30455 msgstr ""
30456
30457 #. type: item
30458 #: guix-git/doc/guix.texi:17398
30459 #, no-wrap
30460 msgid "@code{publish-workstation?} (default: @code{#t})"
30461 msgstr ""
30462
30463 #. type: table
30464 #: guix-git/doc/guix.texi:17402
30465 msgid "When true, @command{avahi-daemon} publishes the machine's host name and IP address via mDNS on the local network. To view the host names published on your local network, you can run:"
30466 msgstr ""
30467
30468 #. type: example
30469 #: guix-git/doc/guix.texi:17405
30470 #, no-wrap
30471 msgid "avahi-browse _workstation._tcp\n"
30472 msgstr ""
30473
30474 #. type: item
30475 #: guix-git/doc/guix.texi:17407
30476 #, no-wrap
30477 msgid "@code{wide-area?} (default: @code{#f})"
30478 msgstr ""
30479
30480 #. type: table
30481 #: guix-git/doc/guix.texi:17409
30482 msgid "When true, DNS-SD over unicast DNS is enabled."
30483 msgstr ""
30484
30485 #. type: item
30486 #: guix-git/doc/guix.texi:17410
30487 #, no-wrap
30488 msgid "@code{ipv4?} (default: @code{#t})"
30489 msgstr ""
30490
30491 #. type: itemx
30492 #: guix-git/doc/guix.texi:17411
30493 #, no-wrap
30494 msgid "@code{ipv6?} (default: @code{#t})"
30495 msgstr ""
30496
30497 #. type: table
30498 #: guix-git/doc/guix.texi:17413
30499 msgid "These fields determine whether to use IPv4/IPv6 sockets."
30500 msgstr ""
30501
30502 #. type: item
30503 #: guix-git/doc/guix.texi:17414
30504 #, no-wrap
30505 msgid "@code{domains-to-browse} (default: @code{'()})"
30506 msgstr ""
30507
30508 #. type: table
30509 #: guix-git/doc/guix.texi:17416
30510 msgid "This is a list of domains to browse."
30511 msgstr ""
30512
30513 #. type: deffn
30514 #: guix-git/doc/guix.texi:17419
30515 #, no-wrap
30516 msgid "{Scheme Variable} openvswitch-service-type"
30517 msgstr ""
30518
30519 #. type: deffn
30520 #: guix-git/doc/guix.texi:17423
30521 msgid "This is the type of the @uref{https://www.openvswitch.org, Open vSwitch} service, whose value should be an @code{openvswitch-configuration} object."
30522 msgstr ""
30523
30524 #. type: deftp
30525 #: guix-git/doc/guix.texi:17425
30526 #, no-wrap
30527 msgid "{Data Type} openvswitch-configuration"
30528 msgstr ""
30529
30530 #. type: deftp
30531 #: guix-git/doc/guix.texi:17429
30532 msgid "Data type representing the configuration of Open vSwitch, a multilayer virtual switch which is designed to enable massive network automation through programmatic extension."
30533 msgstr ""
30534
30535 #. type: item
30536 #: guix-git/doc/guix.texi:17431
30537 #, no-wrap
30538 msgid "@code{package} (default: @var{openvswitch})"
30539 msgstr ""
30540
30541 #. type: table
30542 #: guix-git/doc/guix.texi:17433
30543 msgid "Package object of the Open vSwitch."
30544 msgstr ""
30545
30546 #. type: defvr
30547 #: guix-git/doc/guix.texi:17437
30548 #, no-wrap
30549 msgid "{Scheme Variable} pagekite-service-type"
30550 msgstr ""
30551
30552 #. type: defvr
30553 #: guix-git/doc/guix.texi:17442
30554 msgid "This is the service type for the @uref{https://pagekite.net, PageKite} service, a tunneling solution for making localhost servers publicly visible, even from behind restrictive firewalls or NAT without forwarded ports. The value for this service type is a @code{pagekite-configuration} record."
30555 msgstr ""
30556
30557 #. type: defvr
30558 #: guix-git/doc/guix.texi:17444
30559 msgid "Here's an example exposing the local HTTP and SSH daemons:"
30560 msgstr ""
30561
30562 #. type: lisp
30563 #: guix-git/doc/guix.texi:17451
30564 #, no-wrap
30565 msgid ""
30566 "(service pagekite-service-type\n"
30567 " (pagekite-configuration\n"
30568 " (kites '(\"http:@@kitename:localhost:80:@@kitesecret\"\n"
30569 " \"raw/22:@@kitename:localhost:22:@@kitesecret\"))\n"
30570 " (extra-file \"/etc/pagekite.rc\")))\n"
30571 msgstr ""
30572
30573 #. type: deftp
30574 #: guix-git/doc/guix.texi:17454
30575 #, no-wrap
30576 msgid "{Data Type} pagekite-configuration"
30577 msgstr ""
30578
30579 #. type: deftp
30580 #: guix-git/doc/guix.texi:17456
30581 msgid "Data type representing the configuration of PageKite."
30582 msgstr ""
30583
30584 #. type: item
30585 #: guix-git/doc/guix.texi:17458
30586 #, no-wrap
30587 msgid "@code{package} (default: @var{pagekite})"
30588 msgstr ""
30589
30590 #. type: table
30591 #: guix-git/doc/guix.texi:17460
30592 msgid "Package object of PageKite."
30593 msgstr ""
30594
30595 #. type: item
30596 #: guix-git/doc/guix.texi:17461
30597 #, no-wrap
30598 msgid "@code{kitename} (default: @code{#f})"
30599 msgstr ""
30600
30601 #. type: table
30602 #: guix-git/doc/guix.texi:17463
30603 msgid "PageKite name for authenticating to the frontend server."
30604 msgstr ""
30605
30606 #. type: item
30607 #: guix-git/doc/guix.texi:17464
30608 #, no-wrap
30609 msgid "@code{kitesecret} (default: @code{#f})"
30610 msgstr ""
30611
30612 #. type: table
30613 #: guix-git/doc/guix.texi:17467
30614 msgid "Shared secret for authenticating to the frontend server. You should probably put this inside @code{extra-file} instead."
30615 msgstr ""
30616
30617 #. type: item
30618 #: guix-git/doc/guix.texi:17468
30619 #, no-wrap
30620 msgid "@code{frontend} (default: @code{#f})"
30621 msgstr ""
30622
30623 #. type: table
30624 #: guix-git/doc/guix.texi:17471
30625 msgid "Connect to the named PageKite frontend server instead of the @uref{https://pagekite.net,,pagekite.net} service."
30626 msgstr ""
30627
30628 #. type: item
30629 #: guix-git/doc/guix.texi:17472
30630 #, no-wrap
30631 msgid "@code{kites} (default: @code{'(\"http:@@kitename:localhost:80:@@kitesecret\")})"
30632 msgstr ""
30633
30634 #. type: table
30635 #: guix-git/doc/guix.texi:17475
30636 msgid "List of service kites to use. Exposes HTTP on port 80 by default. The format is @code{proto:kitename:host:port:secret}."
30637 msgstr ""
30638
30639 #. type: item
30640 #: guix-git/doc/guix.texi:17476
30641 #, no-wrap
30642 msgid "@code{extra-file} (default: @code{#f})"
30643 msgstr ""
30644
30645 #. type: table
30646 #: guix-git/doc/guix.texi:17479
30647 msgid "Extra configuration file to read, which you are expected to create manually. Use this to add additional options and manage shared secrets out-of-band."
30648 msgstr ""
30649
30650 #. type: defvr
30651 #: guix-git/doc/guix.texi:17483
30652 #, no-wrap
30653 msgid "{Scheme Variable} yggdrasil-service-type"
30654 msgstr ""
30655
30656 #. type: defvr
30657 #: guix-git/doc/guix.texi:17487
30658 msgid "The service type for connecting to the @uref{https://yggdrasil-network.github.io/, Yggdrasil network}, an early-stage implementation of a fully end-to-end encrypted IPv6 network."
30659 msgstr ""
30660
30661 #. type: quotation
30662 #: guix-git/doc/guix.texi:17494
30663 msgid "Yggdrasil provides name-independent routing with cryptographically generated addresses. Static addressing means you can keep the same address as long as you want, even if you move to a new location, or generate a new address (by generating new keys) whenever you want. @uref{https://yggdrasil-network.github.io/2018/07/28/addressing.html}"
30664 msgstr ""
30665
30666 #. type: defvr
30667 #: guix-git/doc/guix.texi:17498
30668 msgid "Pass it a value of @code{yggdrasil-configuration} to connect it to public peers and/or local peers."
30669 msgstr ""
30670
30671 #. type: defvr
30672 #: guix-git/doc/guix.texi:17502
30673 msgid "Here is an example using public peers and a static address. The static signing and encryption keys are defined in @file{/etc/yggdrasil-private.conf} (the default value for @code{config-file})."
30674 msgstr ""
30675
30676 #. type: lisp
30677 #: guix-git/doc/guix.texi:17514
30678 #, no-wrap
30679 msgid ""
30680 ";; part of the operating-system declaration\n"
30681 "(service yggdrasil-service-type\n"
30682 " (yggdrasil-configuration\n"
30683 " (autoconf? #f) ;; use only the public peers\n"
30684 " (json-config\n"
30685 " ;; choose one from\n"
30686 " ;; https://github.com/yggdrasil-network/public-peers\n"
30687 " '((peers . #(\"tcp://1.2.3.4:1337\"))))\n"
30688 " ;; /etc/yggdrasil-private.conf is the default value for config-file\n"
30689 " ))\n"
30690 msgstr ""
30691
30692 #. type: example
30693 #: guix-git/doc/guix.texi:17521
30694 #, no-wrap
30695 msgid ""
30696 "# sample content for /etc/yggdrasil-private.conf\n"
30697 "@{\n"
30698 " # Your public encryption key. Your peers may ask you for this to put\n"
30699 " # into their AllowedEncryptionPublicKeys configuration.\n"
30700 " EncryptionPublicKey: 378dc5...\n"
30701 "\n"
30702 msgstr ""
30703
30704 #. type: example
30705 #: guix-git/doc/guix.texi:17524
30706 #, no-wrap
30707 msgid ""
30708 " # Your private encryption key. DO NOT share this with anyone!\n"
30709 " EncryptionPrivateKey: 0777...\n"
30710 "\n"
30711 msgstr ""
30712
30713 #. type: example
30714 #: guix-git/doc/guix.texi:17528
30715 #, no-wrap
30716 msgid ""
30717 " # Your public signing key. You should not ordinarily need to share\n"
30718 " # this with anyone.\n"
30719 " SigningPublicKey: e1664...\n"
30720 "\n"
30721 msgstr ""
30722
30723 #. type: example
30724 #: guix-git/doc/guix.texi:17532
30725 #, no-wrap
30726 msgid ""
30727 " # Your private signing key. DO NOT share this with anyone!\n"
30728 " SigningPrivateKey: 0589d...\n"
30729 "@}\n"
30730 msgstr ""
30731
30732 #. type: deftp
30733 #: guix-git/doc/guix.texi:17535
30734 #, no-wrap
30735 msgid "{Data Type} yggdrasil-configuration"
30736 msgstr ""
30737
30738 #. type: deftp
30739 #: guix-git/doc/guix.texi:17537
30740 msgid "Data type representing the configuration of Yggdrasil."
30741 msgstr ""
30742
30743 #. type: item
30744 #: guix-git/doc/guix.texi:17539
30745 #, no-wrap
30746 msgid "@code{package} (default: @code{yggdrasil})"
30747 msgstr ""
30748
30749 #. type: table
30750 #: guix-git/doc/guix.texi:17541
30751 msgid "Package object of Yggdrasil."
30752 msgstr ""
30753
30754 #. type: item
30755 #: guix-git/doc/guix.texi:17542
30756 #, no-wrap
30757 msgid "@code{json-config} (default: @code{'()})"
30758 msgstr ""
30759
30760 #. type: table
30761 #: guix-git/doc/guix.texi:17548
30762 msgid "Contents of @file{/etc/yggdrasil.conf}. Will be merged with @file{/etc/yggdrasil-private.conf}. Note that these settings are stored in the Guix store, which is readable to all users. @strong{Do not store your private keys in it}. See the output of @code{yggdrasil -genconf} for a quick overview of valid keys and their default values."
30763 msgstr ""
30764
30765 #. type: item
30766 #: guix-git/doc/guix.texi:17549
30767 #, no-wrap
30768 msgid "@code{autoconf?} (default: @code{#f})"
30769 msgstr ""
30770
30771 #. type: table
30772 #: guix-git/doc/guix.texi:17552
30773 msgid "Whether to use automatic mode. Enabling it makes Yggdrasil use adynamic IP and peer with IPv6 neighbors."
30774 msgstr ""
30775
30776 #. type: table
30777 #: guix-git/doc/guix.texi:17555
30778 msgid "How much detail to include in logs. Use @code{'debug} for more detail."
30779 msgstr ""
30780
30781 #. type: item
30782 #: guix-git/doc/guix.texi:17556
30783 #, no-wrap
30784 msgid "@code{log-to} (default: @code{'stdout})"
30785 msgstr ""
30786
30787 #. type: table
30788 #: guix-git/doc/guix.texi:17560
30789 msgid "Where to send logs. By default, the service logs standard output to @file{/var/log/yggdrasil.log}. The alternative is @code{'syslog}, which sends output to the running syslog service."
30790 msgstr ""
30791
30792 #. type: item
30793 #: guix-git/doc/guix.texi:17561
30794 #, no-wrap
30795 msgid "@code{config-file} (default: @code{\"/etc/yggdrasil-private.conf\"})"
30796 msgstr ""
30797
30798 #. type: table
30799 #: guix-git/doc/guix.texi:17568
30800 msgid "What HJSON file to load sensitive data from. This is where private keys should be stored, which are necessary to specify if you don't want a randomized address after each restart. Use @code{#f} to disable. Options defined in this file take precedence over @code{json-config}. Use the output of @code{yggdrasil -genconf} as a starting point. To configure a static address, delete everything except these options:"
30801 msgstr ""
30802
30803 #. type: code{#1}
30804 #: guix-git/doc/guix.texi:17570
30805 #, no-wrap
30806 msgid "EncryptionPublicKey"
30807 msgstr ""
30808
30809 #. type: code{#1}
30810 #: guix-git/doc/guix.texi:17571
30811 #, no-wrap
30812 msgid "EncryptionPrivateKey"
30813 msgstr ""
30814
30815 #. type: code{#1}
30816 #: guix-git/doc/guix.texi:17572
30817 #, no-wrap
30818 msgid "SigningPublicKey"
30819 msgstr ""
30820
30821 #. type: code{#1}
30822 #: guix-git/doc/guix.texi:17573
30823 #, no-wrap
30824 msgid "SigningPrivateKey"
30825 msgstr ""
30826
30827 #. type: cindex
30828 #: guix-git/doc/guix.texi:17578
30829 #, no-wrap
30830 msgid "IPFS"
30831 msgstr ""
30832
30833 #. type: defvr
30834 #: guix-git/doc/guix.texi:17579
30835 #, no-wrap
30836 msgid "{Scheme Variable} ipfs-service-type"
30837 msgstr ""
30838
30839 #. type: defvr
30840 #: guix-git/doc/guix.texi:17583
30841 msgid "The service type for connecting to the @uref{https://ipfs.io,IPFS network}, a global, versioned, peer-to-peer file system. Pass it a @code{ipfs-configuration} to change the ports used for the gateway and API."
30842 msgstr ""
30843
30844 #. type: defvr
30845 #: guix-git/doc/guix.texi:17585
30846 msgid "Here's an example configuration, using some non-standard ports:"
30847 msgstr ""
30848
30849 #. type: lisp
30850 #: guix-git/doc/guix.texi:17591
30851 #, no-wrap
30852 msgid ""
30853 "(service ipfs-service-type\n"
30854 " (ipfs-configuration\n"
30855 " (gateway \"/ip4/127.0.0.1/tcp/8880\")\n"
30856 " (api \"/ip4/127.0.0.1/tcp/8881\")))\n"
30857 msgstr ""
30858
30859 #. type: deftp
30860 #: guix-git/doc/guix.texi:17594
30861 #, no-wrap
30862 msgid "{Data Type} ipfs-configuration"
30863 msgstr ""
30864
30865 #. type: deftp
30866 #: guix-git/doc/guix.texi:17596
30867 msgid "Data type representing the configuration of IPFS."
30868 msgstr ""
30869
30870 #. type: item
30871 #: guix-git/doc/guix.texi:17598
30872 #, no-wrap
30873 msgid "@code{package} (default: @code{go-ipfs})"
30874 msgstr ""
30875
30876 #. type: table
30877 #: guix-git/doc/guix.texi:17600
30878 msgid "Package object of IPFS."
30879 msgstr ""
30880
30881 #. type: item
30882 #: guix-git/doc/guix.texi:17601
30883 #, no-wrap
30884 msgid "@code{gateway} (default: @code{\"/ip4/127.0.0.1/tcp/8082\"})"
30885 msgstr ""
30886
30887 #. type: table
30888 #: guix-git/doc/guix.texi:17603
30889 msgid "Address of the gateway, in ‘multiaddress’ format."
30890 msgstr ""
30891
30892 #. type: item
30893 #: guix-git/doc/guix.texi:17604
30894 #, no-wrap
30895 msgid "@code{api} (default: @code{\"/ip4/127.0.0.1/tcp/5001\"})"
30896 msgstr ""
30897
30898 #. type: table
30899 #: guix-git/doc/guix.texi:17606
30900 msgid "Address of the API endpoint, in ‘multiaddress’ format."
30901 msgstr ""
30902
30903 #. type: cindex
30904 #: guix-git/doc/guix.texi:17609
30905 #, no-wrap
30906 msgid "keepalived"
30907 msgstr ""
30908
30909 #. type: deffn
30910 #: guix-git/doc/guix.texi:17610
30911 #, no-wrap
30912 msgid "{Scheme Variable} keepalived-service-type"
30913 msgstr ""
30914
30915 #. type: deffn
30916 #: guix-git/doc/guix.texi:17615
30917 msgid "This is the type for the @uref{https://www.keepalived.org/, Keepalived} routing software, @command{keepalived}. Its value must be an @code{keepalived-configuration} record as in this example for master machine:"
30918 msgstr ""
30919
30920 #. type: lisp
30921 #: guix-git/doc/guix.texi:17620
30922 #, no-wrap
30923 msgid ""
30924 "(service keepalived-service-type\n"
30925 " (keepalived-configuration\n"
30926 " (config-file (local-file \"keepalived-master.conf\"))))\n"
30927 msgstr ""
30928
30929 #. type: deffn
30930 #: guix-git/doc/guix.texi:17623
30931 msgid "where @file{keepalived-master.conf}:"
30932 msgstr ""
30933
30934 #. type: example
30935 #: guix-git/doc/guix.texi:17635
30936 #, no-wrap
30937 msgid ""
30938 "vrrp_instance my-group @{\n"
30939 " state MASTER\n"
30940 " interface enp9s0\n"
30941 " virtual_router_id 100\n"
30942 " priority 100\n"
30943 " unicast_peer @{ 10.0.0.2 @}\n"
30944 " virtual_ipaddress @{\n"
30945 " 10.0.0.4/24\n"
30946 " @}\n"
30947 "@}\n"
30948 msgstr ""
30949
30950 #. type: deffn
30951 #: guix-git/doc/guix.texi:17638
30952 msgid "and for backup machine:"
30953 msgstr ""
30954
30955 #. type: lisp
30956 #: guix-git/doc/guix.texi:17643
30957 #, no-wrap
30958 msgid ""
30959 "(service keepalived-service-type\n"
30960 " (keepalived-configuration\n"
30961 " (config-file (local-file \"keepalived-backup.conf\"))))\n"
30962 msgstr ""
30963
30964 #. type: deffn
30965 #: guix-git/doc/guix.texi:17646
30966 msgid "where @file{keepalived-backup.conf}:"
30967 msgstr ""
30968
30969 #. type: example
30970 #: guix-git/doc/guix.texi:17658
30971 #, no-wrap
30972 msgid ""
30973 "vrrp_instance my-group @{\n"
30974 " state BACKUP\n"
30975 " interface enp9s0\n"
30976 " virtual_router_id 100\n"
30977 " priority 99\n"
30978 " unicast_peer @{ 10.0.0.3 @}\n"
30979 " virtual_ipaddress @{\n"
30980 " 10.0.0.4/24\n"
30981 " @}\n"
30982 "@}\n"
30983 msgstr ""
30984
30985 #. type: cindex
30986 #: guix-git/doc/guix.texi:17664
30987 #, no-wrap
30988 msgid "unattended upgrades"
30989 msgstr ""
30990
30991 #. type: cindex
30992 #: guix-git/doc/guix.texi:17665
30993 #, no-wrap
30994 msgid "upgrades, unattended"
30995 msgstr ""
30996
30997 #. type: Plain text
30998 #: guix-git/doc/guix.texi:17670
30999 msgid "Guix provides a service to perform @emph{unattended upgrades}: periodically, the system automatically reconfigures itself from the latest Guix. Guix System has several properties that make unattended upgrades safe:"
31000 msgstr ""
31001
31002 #. type: itemize
31003 #: guix-git/doc/guix.texi:17675
31004 msgid "upgrades are transactional (either the upgrade succeeds or it fails, but you cannot end up with an ``in-between'' system state);"
31005 msgstr ""
31006
31007 #. type: itemize
31008 #: guix-git/doc/guix.texi:17679
31009 msgid "the upgrade log is kept---you can view it with @command{guix system list-generations}---and you can roll back to any previous generation, should the upgraded system fail to behave as intended;"
31010 msgstr ""
31011
31012 #. type: itemize
31013 #: guix-git/doc/guix.texi:17682
31014 msgid "channel code is authenticated so you know you can only run genuine code (@pxref{Channels});"
31015 msgstr ""
31016
31017 #. type: itemize
31018 #: guix-git/doc/guix.texi:17685
31019 msgid "@command{guix system reconfigure} prevents downgrades, which makes it immune to @dfn{downgrade attacks}."
31020 msgstr ""
31021
31022 #. type: Plain text
31023 #: guix-git/doc/guix.texi:17690
31024 msgid "To set up unattended upgrades, add an instance of @code{unattended-upgrade-service-type} like the one below to the list of your operating system services:"
31025 msgstr ""
31026
31027 #. type: lisp
31028 #: guix-git/doc/guix.texi:17693
31029 #, no-wrap
31030 msgid "(service unattended-upgrade-service-type)\n"
31031 msgstr ""
31032
31033 #. type: Plain text
31034 #: guix-git/doc/guix.texi:17700
31035 msgid "The defaults above set up weekly upgrades: every Sunday at midnight. You do not need to provide the operating system configuration file: it uses @file{/run/current-system/configuration.scm}, which ensures it always uses your latest configuration---@pxref{provenance-service-type}, for more information about this file."
31036 msgstr ""
31037
31038 #. type: Plain text
31039 #: guix-git/doc/guix.texi:17706
31040 msgid "There are several things that can be configured, in particular the periodicity and services (daemons) to be restarted upon completion. When the upgrade is successful, the service takes care of deleting system generations older that some threshold, as per @command{guix system delete-generations}. See the reference below for details."
31041 msgstr ""
31042
31043 #. type: Plain text
31044 #: guix-git/doc/guix.texi:17710
31045 msgid "To ensure that upgrades are actually happening, you can run @command{guix system describe}. To investigate upgrade failures, visit the unattended upgrade log file (see below)."
31046 msgstr ""
31047
31048 #. type: defvr
31049 #: guix-git/doc/guix.texi:17711
31050 #, no-wrap
31051 msgid "{Scheme Variable} unattended-upgrade-service-type"
31052 msgstr ""
31053
31054 #. type: defvr
31055 #: guix-git/doc/guix.texi:17715
31056 msgid "This is the service type for unattended upgrades. It sets up an mcron job (@pxref{Scheduled Job Execution}) that runs @command{guix system reconfigure} from the latest version of the specified channels."
31057 msgstr ""
31058
31059 #. type: defvr
31060 #: guix-git/doc/guix.texi:17718
31061 msgid "Its value must be a @code{unattended-upgrade-configuration} record (see below)."
31062 msgstr ""
31063
31064 #. type: deftp
31065 #: guix-git/doc/guix.texi:17720
31066 #, no-wrap
31067 msgid "{Data Type} unattended-upgrade-configuration"
31068 msgstr ""
31069
31070 #. type: deftp
31071 #: guix-git/doc/guix.texi:17723
31072 msgid "This data type represents the configuration of the unattended upgrade service. The following fields are available:"
31073 msgstr ""
31074
31075 #. type: item
31076 #: guix-git/doc/guix.texi:17725
31077 #, no-wrap
31078 msgid "@code{schedule} (default: @code{\"30 01 * * 0\"})"
31079 msgstr ""
31080
31081 #. type: table
31082 #: guix-git/doc/guix.texi:17729
31083 msgid "This is the schedule of upgrades, expressed as a gexp containing an mcron job schedule (@pxref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron})."
31084 msgstr ""
31085
31086 #. type: item
31087 #: guix-git/doc/guix.texi:17730
31088 #, no-wrap
31089 msgid "@code{channels} (default: @code{#~%default-channels})"
31090 msgstr ""
31091
31092 #. type: table
31093 #: guix-git/doc/guix.texi:17734
31094 msgid "This gexp specifies the channels to use for the upgrade (@pxref{Channels}). By default, the tip of the official @code{guix} channel is used."
31095 msgstr ""
31096
31097 #. type: item
31098 #: guix-git/doc/guix.texi:17735
31099 #, no-wrap
31100 msgid "@code{operating-system-file} (default: @code{\"/run/current-system/configuration.scm\"})"
31101 msgstr ""
31102
31103 #. type: table
31104 #: guix-git/doc/guix.texi:17738
31105 msgid "This field specifies the operating system configuration file to use. The default is to reuse the config file of the current configuration."
31106 msgstr ""
31107
31108 #. type: table
31109 #: guix-git/doc/guix.texi:17744
31110 msgid "There are cases, though, where referring to @file{/run/current-system/configuration.scm} is not enough, for instance because that file refers to extra files (SSH public keys, extra configuration files, etc.) @i{via} @code{local-file} and similar constructs. For those cases, we recommend something along these lines:"
31111 msgstr ""
31112
31113 #. type: lisp
31114 #: guix-git/doc/guix.texi:17750
31115 #, no-wrap
31116 msgid ""
31117 "(unattended-upgrade-configuration\n"
31118 " (operating-system-file\n"
31119 " (file-append (local-file \".\" \"config-dir\" #:recursive? #t)\n"
31120 " \"/config.scm\")))\n"
31121 msgstr ""
31122
31123 #. type: table
31124 #: guix-git/doc/guix.texi:17757
31125 msgid "The effect here is to import all of the current directory into the store, and to refer to @file{config.scm} within that directory. Therefore, uses of @code{local-file} within @file{config.scm} will work as expected. @xref{G-Expressions}, for information about @code{local-file} and @code{file-append}."
31126 msgstr ""
31127
31128 #. type: item
31129 #: guix-git/doc/guix.texi:17758
31130 #, no-wrap
31131 msgid "@code{services-to-restart} (default: @code{'(mcron)})"
31132 msgstr ""
31133
31134 #. type: table
31135 #: guix-git/doc/guix.texi:17761
31136 msgid "This field specifies the Shepherd services to restart when the upgrade completes."
31137 msgstr ""
31138
31139 #. type: table
31140 #: guix-git/doc/guix.texi:17768
31141 msgid "Those services are restarted right away upon completion, as with @command{herd restart}, which ensures that the latest version is running---remember that by default @command{guix system reconfigure} only restarts services that are not currently running, which is conservative: it minimizes disruption but leaves outdated services running."
31142 msgstr ""
31143
31144 #. type: table
31145 #: guix-git/doc/guix.texi:17772
31146 msgid "Use @command{herd status} to find out candidates for restarting. @xref{Services}, for general information about services. Common services to restart would include @code{ntpd} and @code{ssh-daemon}."
31147 msgstr ""
31148
31149 #. type: table
31150 #: guix-git/doc/guix.texi:17775
31151 msgid "By default, the @code{mcron} service is restarted. This ensures that the latest version of the unattended upgrade job will be used next time."
31152 msgstr ""
31153
31154 #. type: item
31155 #: guix-git/doc/guix.texi:17776
31156 #, no-wrap
31157 msgid "@code{system-expiration} (default: @code{(* 3 30 24 3600)})"
31158 msgstr ""
31159
31160 #. type: table
31161 #: guix-git/doc/guix.texi:17780
31162 msgid "This is the expiration time in seconds for system generations. System generations older that this amount of time are deleted with @command{guix system delete-generations} when an upgrade completes."
31163 msgstr ""
31164
31165 #. type: quotation
31166 #: guix-git/doc/guix.texi:17785
31167 msgid "The unattended upgrade service does not run the garbage collector. You will probably want to set up your own mcron job to run @command{guix gc} periodically."
31168 msgstr ""
31169
31170 #. type: item
31171 #: guix-git/doc/guix.texi:17787
31172 #, no-wrap
31173 msgid "@code{maximum-duration} (default: @code{3600})"
31174 msgstr ""
31175
31176 #. type: table
31177 #: guix-git/doc/guix.texi:17790
31178 msgid "Maximum duration in seconds for the upgrade; past that time, the upgrade aborts."
31179 msgstr ""
31180
31181 #. type: table
31182 #: guix-git/doc/guix.texi:17793
31183 msgid "This is primarily useful to ensure the upgrade does not end up rebuilding or re-downloading ``the world''."
31184 msgstr ""
31185
31186 #. type: item
31187 #: guix-git/doc/guix.texi:17794
31188 #, no-wrap
31189 msgid "@code{log-file} (default: @code{\"/var/log/unattended-upgrade.log\"})"
31190 msgstr ""
31191
31192 #. type: table
31193 #: guix-git/doc/guix.texi:17796
31194 msgid "File where unattended upgrades are logged."
31195 msgstr ""
31196
31197 #. type: cindex
31198 #: guix-git/doc/guix.texi:17802
31199 #, no-wrap
31200 msgid "X11"
31201 msgstr ""
31202
31203 #. type: cindex
31204 #: guix-git/doc/guix.texi:17803
31205 #, no-wrap
31206 msgid "X Window System"
31207 msgstr ""
31208
31209 #. type: cindex
31210 #: guix-git/doc/guix.texi:17804 guix-git/doc/guix.texi:18056
31211 #, no-wrap
31212 msgid "login manager"
31213 msgstr ""
31214
31215 #. type: Plain text
31216 #: guix-git/doc/guix.texi:17809
31217 msgid "Support for the X Window graphical display system---specifically Xorg---is provided by the @code{(gnu services xorg)} module. Note that there is no @code{xorg-service} procedure. Instead, the X server is started by the @dfn{login manager}, by default the GNOME Display Manager (GDM)."
31218 msgstr ""
31219
31220 #. type: cindex
31221 #: guix-git/doc/guix.texi:17810
31222 #, no-wrap
31223 msgid "GDM"
31224 msgstr ""
31225
31226 #. type: cindex
31227 #: guix-git/doc/guix.texi:17811
31228 #, no-wrap
31229 msgid "GNOME, login manager"
31230 msgstr ""
31231
31232 #. type: Plain text
31233 #: guix-git/doc/guix.texi:17815
31234 msgid "GDM of course allows users to log in into window managers and desktop environments other than GNOME; for those using GNOME, GDM is required for features such as automatic screen locking."
31235 msgstr ""
31236
31237 #. type: cindex
31238 #: guix-git/doc/guix.texi:17816
31239 #, no-wrap
31240 msgid "window manager"
31241 msgstr ""
31242
31243 #. type: Plain text
31244 #: guix-git/doc/guix.texi:17821
31245 msgid "To use X11, you must install at least one @dfn{window manager}---for example the @code{windowmaker} or @code{openbox} packages---preferably by adding it to the @code{packages} field of your operating system definition (@pxref{operating-system Reference, system-wide packages})."
31246 msgstr ""
31247
31248 #. type: defvr
31249 #: guix-git/doc/guix.texi:17822
31250 #, no-wrap
31251 msgid "{Scheme Variable} gdm-service-type"
31252 msgstr ""
31253
31254 #. type: defvr
31255 #: guix-git/doc/guix.texi:17827
31256 msgid "This is the type for the @uref{https://wiki.gnome.org/Projects/GDM/, GNOME Desktop Manager} (GDM), a program that manages graphical display servers and handles graphical user logins. Its value must be a @code{gdm-configuration} (see below)."
31257 msgstr ""
31258
31259 #. type: cindex
31260 #: guix-git/doc/guix.texi:17828
31261 #, no-wrap
31262 msgid "session types (X11)"
31263 msgstr ""
31264
31265 #. type: cindex
31266 #: guix-git/doc/guix.texi:17829
31267 #, no-wrap
31268 msgid "X11 session types"
31269 msgstr ""
31270
31271 #. type: defvr
31272 #: guix-git/doc/guix.texi:17835
31273 msgid "GDM looks for @dfn{session types} described by the @file{.desktop} files in @file{/run/current-system/profile/share/xsessions} and allows users to choose a session from the log-in screen. Packages such as @code{gnome}, @code{xfce}, and @code{i3} provide @file{.desktop} files; adding them to the system-wide set of packages automatically makes them available at the log-in screen."
31274 msgstr ""
31275
31276 #. type: defvr
31277 #: guix-git/doc/guix.texi:17839
31278 msgid "In addition, @file{~/.xsession} files are honored. When available, @file{~/.xsession} must be an executable that starts a window manager and/or other X clients."
31279 msgstr ""
31280
31281 #. type: deftp
31282 #: guix-git/doc/guix.texi:17841
31283 #, no-wrap
31284 msgid "{Data Type} gdm-configuration"
31285 msgstr ""
31286
31287 #. type: item
31288 #: guix-git/doc/guix.texi:17843 guix-git/doc/guix.texi:17911
31289 #, no-wrap
31290 msgid "@code{auto-login?} (default: @code{#f})"
31291 msgstr ""
31292
31293 #. type: itemx
31294 #: guix-git/doc/guix.texi:17844
31295 #, no-wrap
31296 msgid "@code{default-user} (default: @code{#f})"
31297 msgstr ""
31298
31299 #. type: table
31300 #: guix-git/doc/guix.texi:17846
31301 msgid "When @code{auto-login?} is false, GDM presents a log-in screen."
31302 msgstr ""
31303
31304 #. type: table
31305 #: guix-git/doc/guix.texi:17849
31306 msgid "When @code{auto-login?} is true, GDM logs in directly as @code{default-user}."
31307 msgstr ""
31308
31309 #. type: item
31310 #: guix-git/doc/guix.texi:17850 guix-git/doc/guix.texi:23422
31311 #: guix-git/doc/guix.texi:25130 guix-git/doc/guix.texi:29480
31312 #: guix-git/doc/guix.texi:29509 guix-git/doc/guix.texi:29538
31313 #: guix-git/doc/guix.texi:29565 guix-git/doc/guix.texi:29620
31314 #: guix-git/doc/guix.texi:29645 guix-git/doc/guix.texi:29672
31315 #: guix-git/doc/guix.texi:29698 guix-git/doc/guix.texi:29740
31316 #, no-wrap
31317 msgid "@code{debug?} (default: @code{#f})"
31318 msgstr ""
31319
31320 #. type: table
31321 #: guix-git/doc/guix.texi:17852
31322 msgid "When true, GDM writes debug messages to its log."
31323 msgstr ""
31324
31325 #. type: item
31326 #: guix-git/doc/guix.texi:17853
31327 #, no-wrap
31328 msgid "@code{gnome-shell-assets} (default: ...)"
31329 msgstr ""
31330
31331 #. type: table
31332 #: guix-git/doc/guix.texi:17855
31333 msgid "List of GNOME Shell assets needed by GDM: icon theme, fonts, etc."
31334 msgstr ""
31335
31336 #. type: item
31337 #: guix-git/doc/guix.texi:17856
31338 #, no-wrap
31339 msgid "@code{xorg-configuration} (default: @code{(xorg-configuration)})"
31340 msgstr ""
31341
31342 #. type: table
31343 #: guix-git/doc/guix.texi:17858 guix-git/doc/guix.texi:17938
31344 #: guix-git/doc/guix.texi:18022
31345 msgid "Configuration of the Xorg graphical server."
31346 msgstr ""
31347
31348 #. type: item
31349 #: guix-git/doc/guix.texi:17859
31350 #, no-wrap
31351 msgid "@code{xsession} (default: @code{(xinitrc)})"
31352 msgstr ""
31353
31354 #. type: table
31355 #: guix-git/doc/guix.texi:17861 guix-git/doc/guix.texi:18037
31356 msgid "Script to run before starting a X session."
31357 msgstr ""
31358
31359 #. type: item
31360 #: guix-git/doc/guix.texi:17862
31361 #, no-wrap
31362 msgid "@code{dbus-daemon} (default: @code{dbus-daemon-wrapper})"
31363 msgstr ""
31364
31365 #. type: table
31366 #: guix-git/doc/guix.texi:17864
31367 msgid "File name of the @code{dbus-daemon} executable."
31368 msgstr ""
31369
31370 #. type: item
31371 #: guix-git/doc/guix.texi:17865
31372 #, no-wrap
31373 msgid "@code{gdm} (default: @code{gdm})"
31374 msgstr ""
31375
31376 #. type: table
31377 #: guix-git/doc/guix.texi:17867
31378 msgid "The GDM package to use."
31379 msgstr ""
31380
31381 #. type: defvr
31382 #: guix-git/doc/guix.texi:17870
31383 #, no-wrap
31384 msgid "{Scheme Variable} slim-service-type"
31385 msgstr ""
31386
31387 #. type: defvr
31388 #: guix-git/doc/guix.texi:17872
31389 msgid "This is the type for the SLiM graphical login manager for X11."
31390 msgstr ""
31391
31392 #. type: defvr
31393 #: guix-git/doc/guix.texi:17876
31394 msgid "Like GDM, SLiM looks for session types described by @file{.desktop} files and allows users to choose a session from the log-in screen using @kbd{F1}. It also honors @file{~/.xsession} files."
31395 msgstr ""
31396
31397 #. type: defvr
31398 #: guix-git/doc/guix.texi:17883
31399 msgid "Unlike GDM, SLiM does not spawn the user session on a different VT after logging in, which means that you can only start one graphical session. If you want to be able to run multiple graphical sessions at the same time you have to add multiple SLiM services to your system services. The following example shows how to replace the default GDM service with two SLiM services on tty7 and tty8."
31400 msgstr ""
31401
31402 #. type: lisp
31403 #: guix-git/doc/guix.texi:17889
31404 #, no-wrap
31405 msgid ""
31406 "(use-modules (gnu services)\n"
31407 " (gnu services desktop)\n"
31408 " (gnu services xorg)\n"
31409 " (srfi srfi-1)) ;for 'remove'\n"
31410 "\n"
31411 msgstr ""
31412
31413 #. type: lisp
31414 #: guix-git/doc/guix.texi:17900
31415 #, no-wrap
31416 msgid ""
31417 "(operating-system\n"
31418 " ;; ...\n"
31419 " (services (cons* (service slim-service-type (slim-configuration\n"
31420 " (display \":0\")\n"
31421 " (vt \"vt7\")))\n"
31422 " (service slim-service-type (slim-configuration\n"
31423 " (display \":1\")\n"
31424 " (vt \"vt8\")))\n"
31425 " (modify-services %desktop-services\n"
31426 " (delete gdm-service-type)))))\n"
31427 msgstr ""
31428
31429 #. type: deftp
31430 #: guix-git/doc/guix.texi:17904
31431 #, no-wrap
31432 msgid "{Data Type} slim-configuration"
31433 msgstr ""
31434
31435 #. type: deftp
31436 #: guix-git/doc/guix.texi:17906
31437 msgid "Data type representing the configuration of @code{slim-service-type}."
31438 msgstr ""
31439
31440 #. type: table
31441 #: guix-git/doc/guix.texi:17910
31442 msgid "Whether to allow logins with empty passwords."
31443 msgstr ""
31444
31445 #. type: itemx
31446 #: guix-git/doc/guix.texi:17912
31447 #, no-wrap
31448 msgid "@code{default-user} (default: @code{\"\"})"
31449 msgstr ""
31450
31451 #. type: table
31452 #: guix-git/doc/guix.texi:17914
31453 msgid "When @code{auto-login?} is false, SLiM presents a log-in screen."
31454 msgstr ""
31455
31456 #. type: table
31457 #: guix-git/doc/guix.texi:17917
31458 msgid "When @code{auto-login?} is true, SLiM logs in directly as @code{default-user}."
31459 msgstr ""
31460
31461 #. type: item
31462 #: guix-git/doc/guix.texi:17918
31463 #, no-wrap
31464 msgid "@code{theme} (default: @code{%default-slim-theme})"
31465 msgstr ""
31466
31467 #. type: itemx
31468 #: guix-git/doc/guix.texi:17919
31469 #, no-wrap
31470 msgid "@code{theme-name} (default: @code{%default-slim-theme-name})"
31471 msgstr ""
31472
31473 #. type: table
31474 #: guix-git/doc/guix.texi:17921
31475 msgid "The graphical theme to use and its name."
31476 msgstr ""
31477
31478 #. type: item
31479 #: guix-git/doc/guix.texi:17922
31480 #, no-wrap
31481 msgid "@code{auto-login-session} (default: @code{#f})"
31482 msgstr ""
31483
31484 #. type: table
31485 #: guix-git/doc/guix.texi:17925
31486 msgid "If true, this must be the name of the executable to start as the default session---e.g., @code{(file-append windowmaker \"/bin/windowmaker\")}."
31487 msgstr ""
31488
31489 #. type: table
31490 #: guix-git/doc/guix.texi:17929
31491 msgid "If false, a session described by one of the available @file{.desktop} files in @code{/run/current-system/profile} and @code{~/.guix-profile} will be used."
31492 msgstr ""
31493
31494 #. type: quotation
31495 #: guix-git/doc/guix.texi:17934
31496 msgid "You must install at least one window manager in the system profile or in your user profile. Failing to do that, if @code{auto-login-session} is false, you will be unable to log in."
31497 msgstr ""
31498
31499 #. type: item
31500 #: guix-git/doc/guix.texi:17936 guix-git/doc/guix.texi:18020
31501 #, no-wrap
31502 msgid "@code{xorg-configuration} (default @code{(xorg-configuration)})"
31503 msgstr ""
31504
31505 #. type: item
31506 #: guix-git/doc/guix.texi:17939
31507 #, no-wrap
31508 msgid "@code{display} (default @code{\":0\"})"
31509 msgstr ""
31510
31511 #. type: table
31512 #: guix-git/doc/guix.texi:17941
31513 msgid "The display on which to start the Xorg graphical server."
31514 msgstr ""
31515
31516 #. type: item
31517 #: guix-git/doc/guix.texi:17942
31518 #, no-wrap
31519 msgid "@code{vt} (default @code{\"vt7\"})"
31520 msgstr ""
31521
31522 #. type: table
31523 #: guix-git/doc/guix.texi:17944
31524 msgid "The VT on which to start the Xorg graphical server."
31525 msgstr ""
31526
31527 #. type: item
31528 #: guix-git/doc/guix.texi:17945
31529 #, no-wrap
31530 msgid "@code{xauth} (default: @code{xauth})"
31531 msgstr ""
31532
31533 #. type: table
31534 #: guix-git/doc/guix.texi:17947
31535 msgid "The XAuth package to use."
31536 msgstr ""
31537
31538 #. type: item
31539 #: guix-git/doc/guix.texi:17948
31540 #, no-wrap
31541 msgid "@code{shepherd} (default: @code{shepherd})"
31542 msgstr ""
31543
31544 #. type: table
31545 #: guix-git/doc/guix.texi:17951
31546 msgid "The Shepherd package used when invoking @command{halt} and @command{reboot}."
31547 msgstr ""
31548
31549 #. type: item
31550 #: guix-git/doc/guix.texi:17952
31551 #, no-wrap
31552 msgid "@code{sessreg} (default: @code{sessreg})"
31553 msgstr ""
31554
31555 #. type: table
31556 #: guix-git/doc/guix.texi:17954
31557 msgid "The sessreg package used in order to register the session."
31558 msgstr ""
31559
31560 #. type: item
31561 #: guix-git/doc/guix.texi:17955
31562 #, no-wrap
31563 msgid "@code{slim} (default: @code{slim})"
31564 msgstr ""
31565
31566 #. type: table
31567 #: guix-git/doc/guix.texi:17957
31568 msgid "The SLiM package to use."
31569 msgstr ""
31570
31571 #. type: defvr
31572 #: guix-git/doc/guix.texi:17960
31573 #, no-wrap
31574 msgid "{Scheme Variable} %default-theme"
31575 msgstr ""
31576
31577 #. type: defvrx
31578 #: guix-git/doc/guix.texi:17961
31579 #, no-wrap
31580 msgid "{Scheme Variable} %default-theme-name"
31581 msgstr ""
31582
31583 #. type: defvr
31584 #: guix-git/doc/guix.texi:17963
31585 msgid "The default SLiM theme and its name."
31586 msgstr ""
31587
31588 #. type: deftp
31589 #: guix-git/doc/guix.texi:17966 guix-git/doc/guix.texi:18073
31590 #, no-wrap
31591 msgid "{Data Type} sddm-configuration"
31592 msgstr ""
31593
31594 #. type: deftp
31595 #: guix-git/doc/guix.texi:17968
31596 msgid "This is the data type representing the SDDM service configuration."
31597 msgstr ""
31598
31599 #. type: item
31600 #: guix-git/doc/guix.texi:17970
31601 #, no-wrap
31602 msgid "@code{display-server} (default: \"x11\")"
31603 msgstr ""
31604
31605 #. type: table
31606 #: guix-git/doc/guix.texi:17973
31607 msgid "Select display server to use for the greeter. Valid values are @samp{\"x11\"} or @samp{\"wayland\"}."
31608 msgstr ""
31609
31610 #. type: item
31611 #: guix-git/doc/guix.texi:17974
31612 #, no-wrap
31613 msgid "@code{numlock} (default: \"on\")"
31614 msgstr ""
31615
31616 #. type: table
31617 #: guix-git/doc/guix.texi:17976
31618 msgid "Valid values are @samp{\"on\"}, @samp{\"off\"} or @samp{\"none\"}."
31619 msgstr ""
31620
31621 #. type: item
31622 #: guix-git/doc/guix.texi:17977
31623 #, no-wrap
31624 msgid "@code{halt-command} (default @code{#~(string-apppend #$shepherd \"/sbin/halt\")})"
31625 msgstr ""
31626
31627 #. type: table
31628 #: guix-git/doc/guix.texi:17979
31629 msgid "Command to run when halting."
31630 msgstr ""
31631
31632 #. type: item
31633 #: guix-git/doc/guix.texi:17980
31634 #, no-wrap
31635 msgid "@code{reboot-command} (default @code{#~(string-append #$shepherd \"/sbin/reboot\")})"
31636 msgstr ""
31637
31638 #. type: table
31639 #: guix-git/doc/guix.texi:17982
31640 msgid "Command to run when rebooting."
31641 msgstr ""
31642
31643 #. type: item
31644 #: guix-git/doc/guix.texi:17983
31645 #, no-wrap
31646 msgid "@code{theme} (default \"maldives\")"
31647 msgstr ""
31648
31649 #. type: table
31650 #: guix-git/doc/guix.texi:17986
31651 msgid "Theme to use. Default themes provided by SDDM are @samp{\"elarun\"}, @samp{\"maldives\"} or @samp{\"maya\"}."
31652 msgstr ""
31653
31654 #. type: item
31655 #: guix-git/doc/guix.texi:17987
31656 #, no-wrap
31657 msgid "@code{themes-directory} (default \"/run/current-system/profile/share/sddm/themes\")"
31658 msgstr ""
31659
31660 #. type: table
31661 #: guix-git/doc/guix.texi:17989
31662 msgid "Directory to look for themes."
31663 msgstr ""
31664
31665 #. type: item
31666 #: guix-git/doc/guix.texi:17990
31667 #, no-wrap
31668 msgid "@code{faces-directory} (default \"/run/current-system/profile/share/sddm/faces\")"
31669 msgstr ""
31670
31671 #. type: table
31672 #: guix-git/doc/guix.texi:17992
31673 msgid "Directory to look for faces."
31674 msgstr ""
31675
31676 #. type: item
31677 #: guix-git/doc/guix.texi:17993
31678 #, no-wrap
31679 msgid "@code{default-path} (default \"/run/current-system/profile/bin\")"
31680 msgstr ""
31681
31682 #. type: table
31683 #: guix-git/doc/guix.texi:17995
31684 msgid "Default PATH to use."
31685 msgstr ""
31686
31687 #. type: item
31688 #: guix-git/doc/guix.texi:17996
31689 #, no-wrap
31690 msgid "@code{minimum-uid} (default: 1000)"
31691 msgstr ""
31692
31693 #. type: table
31694 #: guix-git/doc/guix.texi:17998
31695 msgid "Minimum UID displayed in SDDM and allowed for log-in."
31696 msgstr ""
31697
31698 #. type: item
31699 #: guix-git/doc/guix.texi:17999
31700 #, no-wrap
31701 msgid "@code{maximum-uid} (default: 2000)"
31702 msgstr ""
31703
31704 #. type: table
31705 #: guix-git/doc/guix.texi:18001
31706 msgid "Maximum UID to display in SDDM."
31707 msgstr ""
31708
31709 #. type: item
31710 #: guix-git/doc/guix.texi:18002
31711 #, no-wrap
31712 msgid "@code{remember-last-user?} (default #t)"
31713 msgstr ""
31714
31715 #. type: table
31716 #: guix-git/doc/guix.texi:18004
31717 msgid "Remember last user."
31718 msgstr ""
31719
31720 #. type: item
31721 #: guix-git/doc/guix.texi:18005
31722 #, no-wrap
31723 msgid "@code{remember-last-session?} (default #t)"
31724 msgstr ""
31725
31726 #. type: table
31727 #: guix-git/doc/guix.texi:18007
31728 msgid "Remember last session."
31729 msgstr ""
31730
31731 #. type: item
31732 #: guix-git/doc/guix.texi:18008
31733 #, no-wrap
31734 msgid "@code{hide-users} (default \"\")"
31735 msgstr ""
31736
31737 #. type: table
31738 #: guix-git/doc/guix.texi:18010
31739 msgid "Usernames to hide from SDDM greeter."
31740 msgstr ""
31741
31742 #. type: item
31743 #: guix-git/doc/guix.texi:18011
31744 #, no-wrap
31745 msgid "@code{hide-shells} (default @code{#~(string-append #$shadow \"/sbin/nologin\")})"
31746 msgstr ""
31747
31748 #. type: table
31749 #: guix-git/doc/guix.texi:18013
31750 msgid "Users with shells listed will be hidden from the SDDM greeter."
31751 msgstr ""
31752
31753 #. type: item
31754 #: guix-git/doc/guix.texi:18014
31755 #, no-wrap
31756 msgid "@code{session-command} (default @code{#~(string-append #$sddm \"/share/sddm/scripts/wayland-session\")})"
31757 msgstr ""
31758
31759 #. type: table
31760 #: guix-git/doc/guix.texi:18016
31761 msgid "Script to run before starting a wayland session."
31762 msgstr ""
31763
31764 #. type: item
31765 #: guix-git/doc/guix.texi:18017
31766 #, no-wrap
31767 msgid "@code{sessions-directory} (default \"/run/current-system/profile/share/wayland-sessions\")"
31768 msgstr ""
31769
31770 #. type: table
31771 #: guix-git/doc/guix.texi:18019
31772 msgid "Directory to look for desktop files starting wayland sessions."
31773 msgstr ""
31774
31775 #. type: item
31776 #: guix-git/doc/guix.texi:18023
31777 #, no-wrap
31778 msgid "@code{xauth-path} (default @code{#~(string-append #$xauth \"/bin/xauth\")})"
31779 msgstr ""
31780
31781 #. type: table
31782 #: guix-git/doc/guix.texi:18025
31783 msgid "Path to xauth."
31784 msgstr ""
31785
31786 #. type: item
31787 #: guix-git/doc/guix.texi:18026
31788 #, no-wrap
31789 msgid "@code{xephyr-path} (default @code{#~(string-append #$xorg-server \"/bin/Xephyr\")})"
31790 msgstr ""
31791
31792 #. type: table
31793 #: guix-git/doc/guix.texi:18028
31794 msgid "Path to Xephyr."
31795 msgstr ""
31796
31797 #. type: item
31798 #: guix-git/doc/guix.texi:18029
31799 #, no-wrap
31800 msgid "@code{xdisplay-start} (default @code{#~(string-append #$sddm \"/share/sddm/scripts/Xsetup\")})"
31801 msgstr ""
31802
31803 #. type: table
31804 #: guix-git/doc/guix.texi:18031
31805 msgid "Script to run after starting xorg-server."
31806 msgstr ""
31807
31808 #. type: item
31809 #: guix-git/doc/guix.texi:18032
31810 #, no-wrap
31811 msgid "@code{xdisplay-stop} (default @code{#~(string-append #$sddm \"/share/sddm/scripts/Xstop\")})"
31812 msgstr ""
31813
31814 #. type: table
31815 #: guix-git/doc/guix.texi:18034
31816 msgid "Script to run before stopping xorg-server."
31817 msgstr ""
31818
31819 #. type: item
31820 #: guix-git/doc/guix.texi:18035
31821 #, no-wrap
31822 msgid "@code{xsession-command} (default: @code{xinitrc})"
31823 msgstr ""
31824
31825 #. type: item
31826 #: guix-git/doc/guix.texi:18038
31827 #, no-wrap
31828 msgid "@code{xsessions-directory} (default: \"/run/current-system/profile/share/xsessions\")"
31829 msgstr ""
31830
31831 #. type: table
31832 #: guix-git/doc/guix.texi:18040
31833 msgid "Directory to look for desktop files starting X sessions."
31834 msgstr ""
31835
31836 #. type: item
31837 #: guix-git/doc/guix.texi:18041
31838 #, no-wrap
31839 msgid "@code{minimum-vt} (default: 7)"
31840 msgstr ""
31841
31842 #. type: table
31843 #: guix-git/doc/guix.texi:18043
31844 msgid "Minimum VT to use."
31845 msgstr ""
31846
31847 #. type: item
31848 #: guix-git/doc/guix.texi:18044
31849 #, no-wrap
31850 msgid "@code{auto-login-user} (default \"\")"
31851 msgstr ""
31852
31853 #. type: table
31854 #: guix-git/doc/guix.texi:18046
31855 msgid "User to use for auto-login."
31856 msgstr ""
31857
31858 #. type: item
31859 #: guix-git/doc/guix.texi:18047
31860 #, no-wrap
31861 msgid "@code{auto-login-session} (default \"\")"
31862 msgstr ""
31863
31864 #. type: table
31865 #: guix-git/doc/guix.texi:18049
31866 msgid "Desktop file to use for auto-login."
31867 msgstr ""
31868
31869 #. type: item
31870 #: guix-git/doc/guix.texi:18050
31871 #, no-wrap
31872 msgid "@code{relogin?} (default #f)"
31873 msgstr ""
31874
31875 #. type: table
31876 #: guix-git/doc/guix.texi:18052
31877 msgid "Relogin after logout."
31878 msgstr ""
31879
31880 #. type: cindex
31881 #: guix-git/doc/guix.texi:18057
31882 #, no-wrap
31883 msgid "X11 login"
31884 msgstr ""
31885
31886 #. type: defvr
31887 #: guix-git/doc/guix.texi:18058
31888 #, no-wrap
31889 msgid "{Scheme Variable} sddm-service-type"
31890 msgstr ""
31891
31892 #. type: defvr
31893 #: guix-git/doc/guix.texi:18062
31894 msgid "This is the type of the service to run the @uref{https://github.com/sddm/sddm,SDDM display manager}. Its value must be a @code{sddm-configuration} record (see below)."
31895 msgstr ""
31896
31897 #. type: defvr
31898 #: guix-git/doc/guix.texi:18064
31899 msgid "Here's an example use:"
31900 msgstr ""
31901
31902 #. type: lisp
31903 #: guix-git/doc/guix.texi:18070
31904 #, no-wrap
31905 msgid ""
31906 "(service sddm-service-type\n"
31907 " (sddm-configuration\n"
31908 " (auto-login-user \"alice\")\n"
31909 " (auto-login-session \"xfce.desktop\")))\n"
31910 msgstr ""
31911
31912 #. type: deftp
31913 #: guix-git/doc/guix.texi:18076
31914 msgid "This data type represents the configuration of the SDDM login manager. The available fields are:"
31915 msgstr ""
31916
31917 #. type: item
31918 #: guix-git/doc/guix.texi:18078
31919 #, no-wrap
31920 msgid "@code{sddm} (default: @code{sddm})"
31921 msgstr ""
31922
31923 #. type: table
31924 #: guix-git/doc/guix.texi:18080
31925 msgid "The SDDM package to use."
31926 msgstr ""
31927
31928 #. type: item
31929 #: guix-git/doc/guix.texi:18081
31930 #, no-wrap
31931 msgid "@code{display-server} (default: @code{\"x11\"})"
31932 msgstr ""
31933
31934 #. type: table
31935 #: guix-git/doc/guix.texi:18083
31936 msgid "This must be either @code{\"x11\"} or @code{\"wayland\"}."
31937 msgstr ""
31938
31939 #. type: item
31940 #: guix-git/doc/guix.texi:18086
31941 #, no-wrap
31942 msgid "@code{auto-login-user} (default: @code{\"\"})"
31943 msgstr ""
31944
31945 #. type: table
31946 #: guix-git/doc/guix.texi:18089
31947 msgid "If non-empty, this is the user account under which to log in automatically."
31948 msgstr ""
31949
31950 #. type: item
31951 #: guix-git/doc/guix.texi:18090
31952 #, no-wrap
31953 msgid "@code{auto-login-session} (default: @code{\"\"})"
31954 msgstr ""
31955
31956 #. type: table
31957 #: guix-git/doc/guix.texi:18093
31958 msgid "If non-empty, this is the @file{.desktop} file name to use as the auto-login session."
31959 msgstr ""
31960
31961 #. type: cindex
31962 #: guix-git/doc/guix.texi:18096
31963 #, no-wrap
31964 msgid "Xorg, configuration"
31965 msgstr ""
31966
31967 #. type: deftp
31968 #: guix-git/doc/guix.texi:18097
31969 #, no-wrap
31970 msgid "{Data Type} xorg-configuration"
31971 msgstr ""
31972
31973 #. type: deftp
31974 #: guix-git/doc/guix.texi:18102
31975 msgid "This data type represents the configuration of the Xorg graphical display server. Note that there is no Xorg service; instead, the X server is started by a ``display manager'' such as GDM, SDDM, and SLiM@. Thus, the configuration of these display managers aggregates an @code{xorg-configuration} record."
31976 msgstr ""
31977
31978 #. type: item
31979 #: guix-git/doc/guix.texi:18104
31980 #, no-wrap
31981 msgid "@code{modules} (default: @code{%default-xorg-modules})"
31982 msgstr ""
31983
31984 #. type: table
31985 #: guix-git/doc/guix.texi:18107
31986 msgid "This is a list of @dfn{module packages} loaded by the Xorg server---e.g., @code{xf86-video-vesa}, @code{xf86-input-keyboard}, and so on."
31987 msgstr ""
31988
31989 #. type: item
31990 #: guix-git/doc/guix.texi:18108
31991 #, no-wrap
31992 msgid "@code{fonts} (default: @code{%default-xorg-fonts})"
31993 msgstr ""
31994
31995 #. type: table
31996 #: guix-git/doc/guix.texi:18110
31997 msgid "This is a list of font directories to add to the server's @dfn{font path}."
31998 msgstr ""
31999
32000 #. type: item
32001 #: guix-git/doc/guix.texi:18111
32002 #, no-wrap
32003 msgid "@code{drivers} (default: @code{'()})"
32004 msgstr ""
32005
32006 #. type: table
32007 #: guix-git/doc/guix.texi:18115
32008 msgid "This must be either the empty list, in which case Xorg chooses a graphics driver automatically, or a list of driver names that will be tried in this order---e.g., @code{(\"modesetting\" \"vesa\")}."
32009 msgstr ""
32010
32011 #. type: item
32012 #: guix-git/doc/guix.texi:18116
32013 #, no-wrap
32014 msgid "@code{resolutions} (default: @code{'()})"
32015 msgstr ""
32016
32017 #. type: table
32018 #: guix-git/doc/guix.texi:18120
32019 msgid "When @code{resolutions} is the empty list, Xorg chooses an appropriate screen resolution. Otherwise, it must be a list of resolutions---e.g., @code{((1024 768) (640 480))}."
32020 msgstr ""
32021
32022 #. type: cindex
32023 #: guix-git/doc/guix.texi:18121
32024 #, no-wrap
32025 msgid "keyboard layout, for Xorg"
32026 msgstr ""
32027
32028 #. type: cindex
32029 #: guix-git/doc/guix.texi:18122
32030 #, no-wrap
32031 msgid "keymap, for Xorg"
32032 msgstr ""
32033
32034 #. type: table
32035 #: guix-git/doc/guix.texi:18126
32036 msgid "If this is @code{#f}, Xorg uses the default keyboard layout---usually US English (``qwerty'') for a 105-key PC keyboard."
32037 msgstr ""
32038
32039 #. type: table
32040 #: guix-git/doc/guix.texi:18130
32041 msgid "Otherwise this must be a @code{keyboard-layout} object specifying the keyboard layout in use when Xorg is running. @xref{Keyboard Layout}, for more information on how to specify the keyboard layout."
32042 msgstr ""
32043
32044 #. type: item
32045 #: guix-git/doc/guix.texi:18131 guix-git/doc/guix.texi:19842
32046 #: guix-git/doc/guix.texi:32023
32047 #, no-wrap
32048 msgid "@code{extra-config} (default: @code{'()})"
32049 msgstr ""
32050
32051 #. type: table
32052 #: guix-git/doc/guix.texi:18134 guix-git/doc/guix.texi:32027
32053 msgid "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."
32054 msgstr ""
32055
32056 #. type: item
32057 #: guix-git/doc/guix.texi:18135
32058 #, no-wrap
32059 msgid "@code{server} (default: @code{xorg-server})"
32060 msgstr ""
32061
32062 #. type: table
32063 #: guix-git/doc/guix.texi:18137
32064 msgid "This is the package providing the Xorg server."
32065 msgstr ""
32066
32067 #. type: item
32068 #: guix-git/doc/guix.texi:18138
32069 #, no-wrap
32070 msgid "@code{server-arguments} (default: @code{%default-xorg-server-arguments})"
32071 msgstr ""
32072
32073 #. type: table
32074 #: guix-git/doc/guix.texi:18141
32075 msgid "This is the list of command-line arguments to pass to the X server. The default is @code{-nolisten tcp}."
32076 msgstr ""
32077
32078 #. type: deffn
32079 #: guix-git/doc/guix.texi:18144
32080 #, no-wrap
32081 msgid "{Scheme Procedure} set-xorg-configuration @var{config} @"
32082 msgstr ""
32083
32084 #. type: deffn
32085 #: guix-git/doc/guix.texi:18148
32086 msgid "[@var{login-manager-service-type}] Tell the log-in manager (of type @var{login-manager-service-type}) to use @var{config}, an @code{<xorg-configuration>} record."
32087 msgstr ""
32088
32089 #. type: deffn
32090 #: guix-git/doc/guix.texi:18152
32091 msgid "Since the Xorg configuration is embedded in the log-in manager's configuration---e.g., @code{gdm-configuration}---this procedure provides a shorthand to set the Xorg configuration."
32092 msgstr ""
32093
32094 #. type: deffn
32095 #: guix-git/doc/guix.texi:18154
32096 #, no-wrap
32097 msgid "{Scheme Procedure} xorg-start-command [@var{config}]"
32098 msgstr ""
32099
32100 #. type: deffn
32101 #: guix-git/doc/guix.texi:18158
32102 msgid "Return a @code{startx} script in which the modules, fonts, etc. specified in @var{config}, are available. The result should be used in place of @code{startx}."
32103 msgstr ""
32104
32105 #. type: deffn
32106 #: guix-git/doc/guix.texi:18160
32107 msgid "Usually the X server is started by a login manager."
32108 msgstr ""
32109
32110 #. type: deffn
32111 #: guix-git/doc/guix.texi:18163
32112 #, no-wrap
32113 msgid "{Scheme Procedure} screen-locker-service @var{package} [@var{program}]"
32114 msgstr ""
32115
32116 #. type: deffn
32117 #: guix-git/doc/guix.texi:18167
32118 msgid "Add @var{package}, a package for a screen locker or screen saver whose command is @var{program}, to the set of setuid programs and add a PAM entry for it. For example:"
32119 msgstr ""
32120
32121 #. type: lisp
32122 #: guix-git/doc/guix.texi:18170
32123 #, no-wrap
32124 msgid "(screen-locker-service xlockmore \"xlock\")\n"
32125 msgstr ""
32126
32127 #. type: deffn
32128 #: guix-git/doc/guix.texi:18173
32129 msgid "makes the good ol' XlockMore usable."
32130 msgstr ""
32131
32132 #. type: cindex
32133 #: guix-git/doc/guix.texi:18179
32134 #, no-wrap
32135 msgid "printer support with CUPS"
32136 msgstr ""
32137
32138 #. type: Plain text
32139 #: guix-git/doc/guix.texi:18183
32140 msgid "The @code{(gnu services cups)} module provides a Guix service definition for the CUPS printing service. To add printer support to a Guix system, add a @code{cups-service} to the operating system definition:"
32141 msgstr ""
32142
32143 #. type: deffn
32144 #: guix-git/doc/guix.texi:18184
32145 #, no-wrap
32146 msgid "{Scheme Variable} cups-service-type"
32147 msgstr ""
32148
32149 #. type: deffn
32150 #: guix-git/doc/guix.texi:18188
32151 msgid "The service type for the CUPS print server. Its value should be a valid CUPS configuration (see below). To use the default settings, simply write:"
32152 msgstr ""
32153
32154 #. type: lisp
32155 #: guix-git/doc/guix.texi:18190
32156 #, no-wrap
32157 msgid "(service cups-service-type)\n"
32158 msgstr ""
32159
32160 #. type: Plain text
32161 #: guix-git/doc/guix.texi:18200
32162 msgid "The CUPS configuration controls the basic things about your CUPS installation: what interfaces it listens on, what to do if a print job fails, how much logging to do, and so on. To actually add a printer, you have to visit the @url{http://localhost:631} URL, or use a tool such as GNOME's printer configuration services. By default, configuring a CUPS service will generate a self-signed certificate if needed, for secure connections to the print server."
32163 msgstr ""
32164
32165 #. type: Plain text
32166 #: guix-git/doc/guix.texi:18206
32167 msgid "Suppose you want to enable the Web interface of CUPS and also add support for Epson printers @i{via} the @code{epson-inkjet-printer-escpr} package and for HP printers @i{via} the @code{hplip-minimal} package. You can do that directly, like this (you need to use the @code{(gnu packages cups)} module):"
32168 msgstr ""
32169
32170 #. type: lisp
32171 #: guix-git/doc/guix.texi:18213
32172 #, no-wrap
32173 msgid ""
32174 "(service cups-service-type\n"
32175 " (cups-configuration\n"
32176 " (web-interface? #t)\n"
32177 " (extensions\n"
32178 " (list cups-filters epson-inkjet-printer-escpr hplip-minimal))))\n"
32179 msgstr ""
32180
32181 #. type: Plain text
32182 #: guix-git/doc/guix.texi:18218
32183 msgid "Note: If you wish to use the Qt5 based GUI which comes with the hplip package then it is suggested that you install the @code{hplip} package, either in your OS configuration file or as your user."
32184 msgstr ""
32185
32186 #. type: Plain text
32187 #: guix-git/doc/guix.texi:18225
32188 msgid "The available configuration parameters follow. Each parameter definition is preceded by its type; for example, @samp{string-list foo} indicates that the @code{foo} parameter should be specified as a list of strings. There is also a way to specify the configuration as a string, if you have an old @code{cupsd.conf} file that you want to port over from some other system; see the end for more details."
32189 msgstr ""
32190
32191 #. type: Plain text
32192 #: guix-git/doc/guix.texi:18236
32193 msgid "Available @code{cups-configuration} fields are:"
32194 msgstr ""
32195
32196 #. type: deftypevr
32197 #: guix-git/doc/guix.texi:18237
32198 #, no-wrap
32199 msgid "{@code{cups-configuration} parameter} package cups"
32200 msgstr ""
32201
32202 #. type: deftypevr
32203 #: guix-git/doc/guix.texi:18239 guix-git/doc/guix.texi:19007
32204 msgid "The CUPS package."
32205 msgstr ""
32206
32207 #. type: deftypevr
32208 #: guix-git/doc/guix.texi:18241
32209 #, no-wrap
32210 msgid "{@code{cups-configuration} parameter} package-list extensions (default: @code{(list brlaser cups-filters epson-inkjet-printer-escpr foomatic-filters hplip-minimal splix)})"
32211 msgstr ""
32212
32213 #. type: deftypevr
32214 #: guix-git/doc/guix.texi:18243
32215 msgid "Drivers and other extensions to the CUPS package."
32216 msgstr ""
32217
32218 #. type: deftypevr
32219 #: guix-git/doc/guix.texi:18245
32220 #, no-wrap
32221 msgid "{@code{cups-configuration} parameter} files-configuration files-configuration"
32222 msgstr ""
32223
32224 #. type: deftypevr
32225 #: guix-git/doc/guix.texi:18248
32226 msgid "Configuration of where to write logs, what directories to use for print spools, and related privileged configuration parameters."
32227 msgstr ""
32228
32229 #. type: deftypevr
32230 #: guix-git/doc/guix.texi:18250
32231 msgid "Available @code{files-configuration} fields are:"
32232 msgstr ""
32233
32234 #. type: deftypevr
32235 #: guix-git/doc/guix.texi:18251
32236 #, no-wrap
32237 msgid "{@code{files-configuration} parameter} log-location access-log"
32238 msgstr ""
32239
32240 #. type: deftypevr
32241 #: guix-git/doc/guix.texi:18259
32242 msgid "Defines the access log filename. Specifying a blank filename disables access log generation. The value @code{stderr} causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background. The value @code{syslog} causes log entries to be sent to the system log daemon. The server name may be included in filenames using the string @code{%s}, as in @code{/var/log/cups/%s-access_log}."
32243 msgstr ""
32244
32245 #. type: deftypevr
32246 #: guix-git/doc/guix.texi:18261
32247 msgid "Defaults to @samp{\"/var/log/cups/access_log\"}."
32248 msgstr ""
32249
32250 #. type: deftypevr
32251 #: guix-git/doc/guix.texi:18263
32252 #, no-wrap
32253 msgid "{@code{files-configuration} parameter} file-name cache-dir"
32254 msgstr ""
32255
32256 #. type: deftypevr
32257 #: guix-git/doc/guix.texi:18265
32258 msgid "Where CUPS should cache data."
32259 msgstr ""
32260
32261 #. type: deftypevr
32262 #: guix-git/doc/guix.texi:18267
32263 msgid "Defaults to @samp{\"/var/cache/cups\"}."
32264 msgstr ""
32265
32266 #. type: deftypevr
32267 #: guix-git/doc/guix.texi:18269
32268 #, no-wrap
32269 msgid "{@code{files-configuration} parameter} string config-file-perm"
32270 msgstr ""
32271
32272 #. type: deftypevr
32273 #: guix-git/doc/guix.texi:18272
32274 msgid "Specifies the permissions for all configuration files that the scheduler writes."
32275 msgstr ""
32276
32277 #. type: deftypevr
32278 #: guix-git/doc/guix.texi:18278
32279 msgid "Note that the permissions for the printers.conf file are currently masked to only allow access from the scheduler user (typically root). This is done because printer device URIs sometimes contain sensitive authentication information that should not be generally known on the system. There is no way to disable this security feature."
32280 msgstr ""
32281
32282 #. type: deftypevr
32283 #: guix-git/doc/guix.texi:18280
32284 msgid "Defaults to @samp{\"0640\"}."
32285 msgstr ""
32286
32287 #. type: deftypevr
32288 #: guix-git/doc/guix.texi:18282
32289 #, no-wrap
32290 msgid "{@code{files-configuration} parameter} log-location error-log"
32291 msgstr ""
32292
32293 #. type: deftypevr
32294 #: guix-git/doc/guix.texi:18290
32295 msgid "Defines the error log filename. Specifying a blank filename disables error log generation. The value @code{stderr} causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background. The value @code{syslog} causes log entries to be sent to the system log daemon. The server name may be included in filenames using the string @code{%s}, as in @code{/var/log/cups/%s-error_log}."
32296 msgstr ""
32297
32298 #. type: deftypevr
32299 #: guix-git/doc/guix.texi:18292
32300 msgid "Defaults to @samp{\"/var/log/cups/error_log\"}."
32301 msgstr ""
32302
32303 #. type: deftypevr
32304 #: guix-git/doc/guix.texi:18294
32305 #, no-wrap
32306 msgid "{@code{files-configuration} parameter} string fatal-errors"
32307 msgstr ""
32308
32309 #. type: deftypevr
32310 #: guix-git/doc/guix.texi:18297
32311 msgid "Specifies which errors are fatal, causing the scheduler to exit. The kind strings are:"
32312 msgstr ""
32313
32314 #. type: table
32315 #: guix-git/doc/guix.texi:18301
32316 msgid "No errors are fatal."
32317 msgstr ""
32318
32319 #. type: table
32320 #: guix-git/doc/guix.texi:18304
32321 msgid "All of the errors below are fatal."
32322 msgstr ""
32323
32324 #. type: item
32325 #: guix-git/doc/guix.texi:18305
32326 #, no-wrap
32327 msgid "browse"
32328 msgstr ""
32329
32330 #. type: table
32331 #: guix-git/doc/guix.texi:18308
32332 msgid "Browsing initialization errors are fatal, for example failed connections to the DNS-SD daemon."
32333 msgstr ""
32334
32335 #. type: item
32336 #: guix-git/doc/guix.texi:18309
32337 #, no-wrap
32338 msgid "config"
32339 msgstr ""
32340
32341 #. type: table
32342 #: guix-git/doc/guix.texi:18311
32343 msgid "Configuration file syntax errors are fatal."
32344 msgstr ""
32345
32346 #. type: item
32347 #: guix-git/doc/guix.texi:18312
32348 #, no-wrap
32349 msgid "listen"
32350 msgstr ""
32351
32352 #. type: table
32353 #: guix-git/doc/guix.texi:18315
32354 msgid "Listen or Port errors are fatal, except for IPv6 failures on the loopback or @code{any} addresses."
32355 msgstr ""
32356
32357 #. type: item
32358 #: guix-git/doc/guix.texi:18316
32359 #, no-wrap
32360 msgid "log"
32361 msgstr ""
32362
32363 #. type: table
32364 #: guix-git/doc/guix.texi:18318
32365 msgid "Log file creation or write errors are fatal."
32366 msgstr ""
32367
32368 #. type: item
32369 #: guix-git/doc/guix.texi:18319
32370 #, no-wrap
32371 msgid "permissions"
32372 msgstr ""
32373
32374 #. type: table
32375 #: guix-git/doc/guix.texi:18322
32376 msgid "Bad startup file permissions are fatal, for example shared TLS certificate and key files with world-read permissions."
32377 msgstr ""
32378
32379 #. type: deftypevr
32380 #: guix-git/doc/guix.texi:18325
32381 msgid "Defaults to @samp{\"all -browse\"}."
32382 msgstr ""
32383
32384 #. type: deftypevr
32385 #: guix-git/doc/guix.texi:18327
32386 #, no-wrap
32387 msgid "{@code{files-configuration} parameter} boolean file-device?"
32388 msgstr ""
32389
32390 #. type: deftypevr
32391 #: guix-git/doc/guix.texi:18330
32392 msgid "Specifies whether the file pseudo-device can be used for new printer queues. The URI @uref{file:///dev/null} is always allowed."
32393 msgstr ""
32394
32395 #. type: deftypevr
32396 #: guix-git/doc/guix.texi:18332 guix-git/doc/guix.texi:18402
32397 #: guix-git/doc/guix.texi:18444 guix-git/doc/guix.texi:18464
32398 #: guix-git/doc/guix.texi:18470 guix-git/doc/guix.texi:18486
32399 #: guix-git/doc/guix.texi:18574 guix-git/doc/guix.texi:18668
32400 #: guix-git/doc/guix.texi:18981 guix-git/doc/guix.texi:18994
32401 #: guix-git/doc/guix.texi:21543 guix-git/doc/guix.texi:21649
32402 #: guix-git/doc/guix.texi:21714 guix-git/doc/guix.texi:21723
32403 #: guix-git/doc/guix.texi:22728 guix-git/doc/guix.texi:22772
32404 #: guix-git/doc/guix.texi:22789 guix-git/doc/guix.texi:22797
32405 #: guix-git/doc/guix.texi:22812 guix-git/doc/guix.texi:22830
32406 #: guix-git/doc/guix.texi:22854 guix-git/doc/guix.texi:22907
32407 #: guix-git/doc/guix.texi:23040 guix-git/doc/guix.texi:23074
32408 #: guix-git/doc/guix.texi:23110 guix-git/doc/guix.texi:23126
32409 #: guix-git/doc/guix.texi:23154 guix-git/doc/guix.texi:23215
32410 #: guix-git/doc/guix.texi:23298 guix-git/doc/guix.texi:26691
32411 #: guix-git/doc/guix.texi:26705 guix-git/doc/guix.texi:26727
32412 #: guix-git/doc/guix.texi:26846 guix-git/doc/guix.texi:26860
32413 #: guix-git/doc/guix.texi:26881 guix-git/doc/guix.texi:26902
32414 #: guix-git/doc/guix.texi:26909 guix-git/doc/guix.texi:26954
32415 #: guix-git/doc/guix.texi:26961 guix-git/doc/guix.texi:27694
32416 #: guix-git/doc/guix.texi:27708 guix-git/doc/guix.texi:27880
32417 #: guix-git/doc/guix.texi:27925 guix-git/doc/guix.texi:28012
32418 #: guix-git/doc/guix.texi:28214 guix-git/doc/guix.texi:28247
32419 #: guix-git/doc/guix.texi:28387 guix-git/doc/guix.texi:28398
32420 #: guix-git/doc/guix.texi:28649 guix-git/doc/guix.texi:30114
32421 #: guix-git/doc/guix.texi:30123 guix-git/doc/guix.texi:30131
32422 #: guix-git/doc/guix.texi:30139 guix-git/doc/guix.texi:30155
32423 #: guix-git/doc/guix.texi:30171 guix-git/doc/guix.texi:30179
32424 #: guix-git/doc/guix.texi:30187 guix-git/doc/guix.texi:30196
32425 #: guix-git/doc/guix.texi:30205 guix-git/doc/guix.texi:30221
32426 #: guix-git/doc/guix.texi:30285 guix-git/doc/guix.texi:30391
32427 #: guix-git/doc/guix.texi:30399 guix-git/doc/guix.texi:30407
32428 #: guix-git/doc/guix.texi:30432 guix-git/doc/guix.texi:30486
32429 #: guix-git/doc/guix.texi:30534 guix-git/doc/guix.texi:30735
32430 #: guix-git/doc/guix.texi:30742
32431 msgid "Defaults to @samp{#f}."
32432 msgstr ""
32433
32434 #. type: deftypevr
32435 #: guix-git/doc/guix.texi:18334
32436 #, no-wrap
32437 msgid "{@code{files-configuration} parameter} string group"
32438 msgstr ""
32439
32440 #. type: deftypevr
32441 #: guix-git/doc/guix.texi:18337
32442 msgid "Specifies the group name or ID that will be used when executing external programs."
32443 msgstr ""
32444
32445 #. type: deftypevr
32446 #: guix-git/doc/guix.texi:18339 guix-git/doc/guix.texi:18419
32447 msgid "Defaults to @samp{\"lp\"}."
32448 msgstr ""
32449
32450 #. type: deftypevr
32451 #: guix-git/doc/guix.texi:18341
32452 #, no-wrap
32453 msgid "{@code{files-configuration} parameter} string log-file-perm"
32454 msgstr ""
32455
32456 #. type: deftypevr
32457 #: guix-git/doc/guix.texi:18343
32458 msgid "Specifies the permissions for all log files that the scheduler writes."
32459 msgstr ""
32460
32461 #. type: deftypevr
32462 #: guix-git/doc/guix.texi:18345
32463 msgid "Defaults to @samp{\"0644\"}."
32464 msgstr ""
32465
32466 #. type: deftypevr
32467 #: guix-git/doc/guix.texi:18347
32468 #, no-wrap
32469 msgid "{@code{files-configuration} parameter} log-location page-log"
32470 msgstr ""
32471
32472 #. type: deftypevr
32473 #: guix-git/doc/guix.texi:18355
32474 msgid "Defines the page log filename. Specifying a blank filename disables page log generation. The value @code{stderr} causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background. The value @code{syslog} causes log entries to be sent to the system log daemon. The server name may be included in filenames using the string @code{%s}, as in @code{/var/log/cups/%s-page_log}."
32475 msgstr ""
32476
32477 #. type: deftypevr
32478 #: guix-git/doc/guix.texi:18357
32479 msgid "Defaults to @samp{\"/var/log/cups/page_log\"}."
32480 msgstr ""
32481
32482 #. type: deftypevr
32483 #: guix-git/doc/guix.texi:18359
32484 #, no-wrap
32485 msgid "{@code{files-configuration} parameter} string remote-root"
32486 msgstr ""
32487
32488 #. type: deftypevr
32489 #: guix-git/doc/guix.texi:18362
32490 msgid "Specifies the username that is associated with unauthenticated accesses by clients claiming to be the root user. The default is @code{remroot}."
32491 msgstr ""
32492
32493 #. type: deftypevr
32494 #: guix-git/doc/guix.texi:18364
32495 msgid "Defaults to @samp{\"remroot\"}."
32496 msgstr ""
32497
32498 #. type: deftypevr
32499 #: guix-git/doc/guix.texi:18366
32500 #, no-wrap
32501 msgid "{@code{files-configuration} parameter} file-name request-root"
32502 msgstr ""
32503
32504 #. type: deftypevr
32505 #: guix-git/doc/guix.texi:18369
32506 msgid "Specifies the directory that contains print jobs and other HTTP request data."
32507 msgstr ""
32508
32509 #. type: deftypevr
32510 #: guix-git/doc/guix.texi:18371
32511 msgid "Defaults to @samp{\"/var/spool/cups\"}."
32512 msgstr ""
32513
32514 #. type: deftypevr
32515 #: guix-git/doc/guix.texi:18373
32516 #, no-wrap
32517 msgid "{@code{files-configuration} parameter} sandboxing sandboxing"
32518 msgstr ""
32519
32520 #. type: deftypevr
32521 #: guix-git/doc/guix.texi:18378
32522 msgid "Specifies the level of security sandboxing that is applied to print filters, backends, and other child processes of the scheduler; either @code{relaxed} or @code{strict}. This directive is currently only used/supported on macOS."
32523 msgstr ""
32524
32525 #. type: deftypevr
32526 #: guix-git/doc/guix.texi:18380
32527 msgid "Defaults to @samp{strict}."
32528 msgstr ""
32529
32530 #. type: deftypevr
32531 #: guix-git/doc/guix.texi:18382
32532 #, no-wrap
32533 msgid "{@code{files-configuration} parameter} file-name server-keychain"
32534 msgstr ""
32535
32536 #. type: deftypevr
32537 #: guix-git/doc/guix.texi:18387
32538 msgid "Specifies the location of TLS certificates and private keys. CUPS will look for public and private keys in this directory: @file{.crt} files for PEM-encoded certificates and corresponding @file{.key} files for PEM-encoded private keys."
32539 msgstr ""
32540
32541 #. type: deftypevr
32542 #: guix-git/doc/guix.texi:18389
32543 msgid "Defaults to @samp{\"/etc/cups/ssl\"}."
32544 msgstr ""
32545
32546 #. type: deftypevr
32547 #: guix-git/doc/guix.texi:18391
32548 #, no-wrap
32549 msgid "{@code{files-configuration} parameter} file-name server-root"
32550 msgstr ""
32551
32552 #. type: deftypevr
32553 #: guix-git/doc/guix.texi:18393
32554 msgid "Specifies the directory containing the server configuration files."
32555 msgstr ""
32556
32557 #. type: deftypevr
32558 #: guix-git/doc/guix.texi:18395
32559 msgid "Defaults to @samp{\"/etc/cups\"}."
32560 msgstr ""
32561
32562 #. type: deftypevr
32563 #: guix-git/doc/guix.texi:18397
32564 #, no-wrap
32565 msgid "{@code{files-configuration} parameter} boolean sync-on-close?"
32566 msgstr ""
32567
32568 #. type: deftypevr
32569 #: guix-git/doc/guix.texi:18400
32570 msgid "Specifies whether the scheduler calls fsync(2) after writing configuration or state files."
32571 msgstr ""
32572
32573 #. type: deftypevr
32574 #: guix-git/doc/guix.texi:18404
32575 #, no-wrap
32576 msgid "{@code{files-configuration} parameter} space-separated-string-list system-group"
32577 msgstr ""
32578
32579 #. type: deftypevr
32580 #: guix-git/doc/guix.texi:18406
32581 msgid "Specifies the group(s) to use for @code{@@SYSTEM} group authentication."
32582 msgstr ""
32583
32584 #. type: deftypevr
32585 #: guix-git/doc/guix.texi:18408
32586 #, no-wrap
32587 msgid "{@code{files-configuration} parameter} file-name temp-dir"
32588 msgstr ""
32589
32590 #. type: deftypevr
32591 #: guix-git/doc/guix.texi:18410
32592 msgid "Specifies the directory where temporary files are stored."
32593 msgstr ""
32594
32595 #. type: deftypevr
32596 #: guix-git/doc/guix.texi:18412
32597 msgid "Defaults to @samp{\"/var/spool/cups/tmp\"}."
32598 msgstr ""
32599
32600 #. type: deftypevr
32601 #: guix-git/doc/guix.texi:18414
32602 #, no-wrap
32603 msgid "{@code{files-configuration} parameter} string user"
32604 msgstr ""
32605
32606 #. type: deftypevr
32607 #: guix-git/doc/guix.texi:18417
32608 msgid "Specifies the user name or ID that is used when running external programs."
32609 msgstr ""
32610
32611 #. type: deftypevr
32612 #: guix-git/doc/guix.texi:18421
32613 #, no-wrap
32614 msgid "{@code{files-configuration} parameter} string set-env"
32615 msgstr ""
32616
32617 #. type: deftypevr
32618 #: guix-git/doc/guix.texi:18423
32619 msgid "Set the specified environment variable to be passed to child processes."
32620 msgstr ""
32621
32622 #. type: deftypevr
32623 #: guix-git/doc/guix.texi:18425
32624 msgid "Defaults to @samp{\"variable value\"}."
32625 msgstr ""
32626
32627 #. type: deftypevr
32628 #: guix-git/doc/guix.texi:18428
32629 #, no-wrap
32630 msgid "{@code{cups-configuration} parameter} access-log-level access-log-level"
32631 msgstr ""
32632
32633 #. type: deftypevr
32634 #: guix-git/doc/guix.texi:18435
32635 msgid "Specifies the logging level for the AccessLog file. The @code{config} level logs when printers and classes are added, deleted, or modified and when configuration files are accessed or updated. The @code{actions} level logs when print jobs are submitted, held, released, modified, or canceled, and any of the conditions for @code{config}. The @code{all} level logs all requests."
32636 msgstr ""
32637
32638 #. type: deftypevr
32639 #: guix-git/doc/guix.texi:18437
32640 msgid "Defaults to @samp{actions}."
32641 msgstr ""
32642
32643 #. type: deftypevr
32644 #: guix-git/doc/guix.texi:18439
32645 #, no-wrap
32646 msgid "{@code{cups-configuration} parameter} boolean auto-purge-jobs?"
32647 msgstr ""
32648
32649 #. type: deftypevr
32650 #: guix-git/doc/guix.texi:18442
32651 msgid "Specifies whether to purge job history data automatically when it is no longer required for quotas."
32652 msgstr ""
32653
32654 #. type: deftypevr
32655 #: guix-git/doc/guix.texi:18446
32656 #, no-wrap
32657 msgid "{@code{cups-configuration} parameter} comma-separated-string-list browse-dns-sd-sub-types"
32658 msgstr ""
32659
32660 #. type: deftypevr
32661 #: guix-git/doc/guix.texi:18450
32662 msgid "Specifies a list of DNS-SD sub-types to advertise for each shared printer. For example, @samp{\"_cups\" \"_print\"} will tell network clients that both CUPS sharing and IPP Everywhere are supported."
32663 msgstr ""
32664
32665 #. type: deftypevr
32666 #: guix-git/doc/guix.texi:18452
32667 msgid "Defaults to @samp{\"_cups\"}."
32668 msgstr ""
32669
32670 #. type: deftypevr
32671 #: guix-git/doc/guix.texi:18454
32672 #, no-wrap
32673 msgid "{@code{cups-configuration} parameter} browse-local-protocols browse-local-protocols"
32674 msgstr ""
32675
32676 #. type: deftypevr
32677 #: guix-git/doc/guix.texi:18456
32678 msgid "Specifies which protocols to use for local printer sharing."
32679 msgstr ""
32680
32681 #. type: deftypevr
32682 #: guix-git/doc/guix.texi:18458
32683 msgid "Defaults to @samp{dnssd}."
32684 msgstr ""
32685
32686 #. type: deftypevr
32687 #: guix-git/doc/guix.texi:18460
32688 #, no-wrap
32689 msgid "{@code{cups-configuration} parameter} boolean browse-web-if?"
32690 msgstr ""
32691
32692 #. type: deftypevr
32693 #: guix-git/doc/guix.texi:18462
32694 msgid "Specifies whether the CUPS web interface is advertised."
32695 msgstr ""
32696
32697 #. type: deftypevr
32698 #: guix-git/doc/guix.texi:18466
32699 #, no-wrap
32700 msgid "{@code{cups-configuration} parameter} boolean browsing?"
32701 msgstr ""
32702
32703 #. type: deftypevr
32704 #: guix-git/doc/guix.texi:18468
32705 msgid "Specifies whether shared printers are advertised."
32706 msgstr ""
32707
32708 #. type: deftypevr
32709 #: guix-git/doc/guix.texi:18472
32710 #, no-wrap
32711 msgid "{@code{cups-configuration} parameter} string classification"
32712 msgstr ""
32713
32714 #. type: deftypevr
32715 #: guix-git/doc/guix.texi:18477
32716 msgid "Specifies the security classification of the server. Any valid banner name can be used, including @samp{\"classified\"}, @samp{\"confidential\"}, @samp{\"secret\"}, @samp{\"topsecret\"}, and @samp{\"unclassified\"}, or the banner can be omitted to disable secure printing functions."
32717 msgstr ""
32718
32719 #. type: deftypevr
32720 #: guix-git/doc/guix.texi:18479 guix-git/doc/guix.texi:18816
32721 #: guix-git/doc/guix.texi:20764 guix-git/doc/guix.texi:20776
32722 #: guix-git/doc/guix.texi:21550 guix-git/doc/guix.texi:21564
32723 #: guix-git/doc/guix.texi:21571 guix-git/doc/guix.texi:21578
32724 #: guix-git/doc/guix.texi:21608 guix-git/doc/guix.texi:21706
32725 #: guix-git/doc/guix.texi:23597 guix-git/doc/guix.texi:23623
32726 #: guix-git/doc/guix.texi:23659 guix-git/doc/guix.texi:23705
32727 #: guix-git/doc/guix.texi:23724 guix-git/doc/guix.texi:23763
32728 #: guix-git/doc/guix.texi:23822 guix-git/doc/guix.texi:23832
32729 #: guix-git/doc/guix.texi:28353 guix-git/doc/guix.texi:28361
32730 #: guix-git/doc/guix.texi:28369 guix-git/doc/guix.texi:28377
32731 #: guix-git/doc/guix.texi:28656 guix-git/doc/guix.texi:29957
32732 #: guix-git/doc/guix.texi:29965 guix-git/doc/guix.texi:29973
32733 #: guix-git/doc/guix.texi:30081 guix-git/doc/guix.texi:30106
32734 #: guix-git/doc/guix.texi:30237 guix-git/doc/guix.texi:30245
32735 #: guix-git/doc/guix.texi:30253 guix-git/doc/guix.texi:30261
32736 #: guix-git/doc/guix.texi:30269 guix-git/doc/guix.texi:30277
32737 #: guix-git/doc/guix.texi:30300 guix-git/doc/guix.texi:30308
32738 #: guix-git/doc/guix.texi:30360 guix-git/doc/guix.texi:30376
32739 #: guix-git/doc/guix.texi:30384 guix-git/doc/guix.texi:30423
32740 #: guix-git/doc/guix.texi:30446 guix-git/doc/guix.texi:30468
32741 #: guix-git/doc/guix.texi:30475 guix-git/doc/guix.texi:30510
32742 #: guix-git/doc/guix.texi:30518 guix-git/doc/guix.texi:30542
32743 #: guix-git/doc/guix.texi:30574 guix-git/doc/guix.texi:30603
32744 #: guix-git/doc/guix.texi:30610 guix-git/doc/guix.texi:30617
32745 #: guix-git/doc/guix.texi:30625 guix-git/doc/guix.texi:30639
32746 #: guix-git/doc/guix.texi:30648 guix-git/doc/guix.texi:30658
32747 #: guix-git/doc/guix.texi:30665 guix-git/doc/guix.texi:30672
32748 #: guix-git/doc/guix.texi:30679 guix-git/doc/guix.texi:30750
32749 #: guix-git/doc/guix.texi:30757 guix-git/doc/guix.texi:30764
32750 #: guix-git/doc/guix.texi:30773 guix-git/doc/guix.texi:30789
32751 #: guix-git/doc/guix.texi:30796 guix-git/doc/guix.texi:30803
32752 #: guix-git/doc/guix.texi:30810 guix-git/doc/guix.texi:30818
32753 #: guix-git/doc/guix.texi:30826
32754 msgid "Defaults to @samp{\"\"}."
32755 msgstr ""
32756
32757 #. type: deftypevr
32758 #: guix-git/doc/guix.texi:18481
32759 #, no-wrap
32760 msgid "{@code{cups-configuration} parameter} boolean classify-override?"
32761 msgstr ""
32762
32763 #. type: deftypevr
32764 #: guix-git/doc/guix.texi:18484
32765 msgid "Specifies whether users may override the classification (cover page) of individual print jobs using the @code{job-sheets} option."
32766 msgstr ""
32767
32768 #. type: deftypevr
32769 #: guix-git/doc/guix.texi:18488
32770 #, no-wrap
32771 msgid "{@code{cups-configuration} parameter} default-auth-type default-auth-type"
32772 msgstr ""
32773
32774 #. type: deftypevr
32775 #: guix-git/doc/guix.texi:18490
32776 msgid "Specifies the default type of authentication to use."
32777 msgstr ""
32778
32779 #. type: deftypevr
32780 #: guix-git/doc/guix.texi:18492
32781 msgid "Defaults to @samp{Basic}."
32782 msgstr ""
32783
32784 #. type: deftypevr
32785 #: guix-git/doc/guix.texi:18494
32786 #, no-wrap
32787 msgid "{@code{cups-configuration} parameter} default-encryption default-encryption"
32788 msgstr ""
32789
32790 #. type: deftypevr
32791 #: guix-git/doc/guix.texi:18496
32792 msgid "Specifies whether encryption will be used for authenticated requests."
32793 msgstr ""
32794
32795 #. type: deftypevr
32796 #: guix-git/doc/guix.texi:18498
32797 msgid "Defaults to @samp{Required}."
32798 msgstr ""
32799
32800 #. type: deftypevr
32801 #: guix-git/doc/guix.texi:18500
32802 #, no-wrap
32803 msgid "{@code{cups-configuration} parameter} string default-language"
32804 msgstr ""
32805
32806 #. type: deftypevr
32807 #: guix-git/doc/guix.texi:18502
32808 msgid "Specifies the default language to use for text and web content."
32809 msgstr ""
32810
32811 #. type: deftypevr
32812 #: guix-git/doc/guix.texi:18504
32813 msgid "Defaults to @samp{\"en\"}."
32814 msgstr ""
32815
32816 #. type: deftypevr
32817 #: guix-git/doc/guix.texi:18506
32818 #, no-wrap
32819 msgid "{@code{cups-configuration} parameter} string default-paper-size"
32820 msgstr ""
32821
32822 #. type: deftypevr
32823 #: guix-git/doc/guix.texi:18511
32824 msgid "Specifies the default paper size for new print queues. @samp{\"Auto\"} uses a locale-specific default, while @samp{\"None\"} specifies there is no default paper size. Specific size names are typically @samp{\"Letter\"} or @samp{\"A4\"}."
32825 msgstr ""
32826
32827 #. type: deftypevr
32828 #: guix-git/doc/guix.texi:18513
32829 msgid "Defaults to @samp{\"Auto\"}."
32830 msgstr ""
32831
32832 #. type: deftypevr
32833 #: guix-git/doc/guix.texi:18515
32834 #, no-wrap
32835 msgid "{@code{cups-configuration} parameter} string default-policy"
32836 msgstr ""
32837
32838 #. type: deftypevr
32839 #: guix-git/doc/guix.texi:18517
32840 msgid "Specifies the default access policy to use."
32841 msgstr ""
32842
32843 #. type: deftypevr
32844 #: guix-git/doc/guix.texi:18519
32845 msgid "Defaults to @samp{\"default\"}."
32846 msgstr ""
32847
32848 #. type: deftypevr
32849 #: guix-git/doc/guix.texi:18521
32850 #, no-wrap
32851 msgid "{@code{cups-configuration} parameter} boolean default-shared?"
32852 msgstr ""
32853
32854 #. type: deftypevr
32855 #: guix-git/doc/guix.texi:18523
32856 msgid "Specifies whether local printers are shared by default."
32857 msgstr ""
32858
32859 #. type: deftypevr
32860 #: guix-git/doc/guix.texi:18525 guix-git/doc/guix.texi:18605
32861 #: guix-git/doc/guix.texi:18901 guix-git/doc/guix.texi:21640
32862 #: guix-git/doc/guix.texi:21691 guix-git/doc/guix.texi:21698
32863 #: guix-git/doc/guix.texi:22752 guix-git/doc/guix.texi:22940
32864 #: guix-git/doc/guix.texi:23057 guix-git/doc/guix.texi:23093
32865 #: guix-git/doc/guix.texi:23144 guix-git/doc/guix.texi:23163
32866 #: guix-git/doc/guix.texi:23173 guix-git/doc/guix.texi:23183
32867 #: guix-git/doc/guix.texi:23242 guix-git/doc/guix.texi:23264
32868 #: guix-git/doc/guix.texi:23289 guix-git/doc/guix.texi:23315
32869 #: guix-git/doc/guix.texi:23333 guix-git/doc/guix.texi:26513
32870 #: guix-git/doc/guix.texi:26541 guix-git/doc/guix.texi:26668
32871 #: guix-git/doc/guix.texi:26675 guix-git/doc/guix.texi:26683
32872 #: guix-git/doc/guix.texi:26720 guix-git/doc/guix.texi:26734
32873 #: guix-git/doc/guix.texi:26823 guix-git/doc/guix.texi:26830
32874 #: guix-git/doc/guix.texi:26838 guix-git/doc/guix.texi:27561
32875 #: guix-git/doc/guix.texi:27701 guix-git/doc/guix.texi:27887
32876 #: guix-git/doc/guix.texi:27894 guix-git/doc/guix.texi:27916
32877 #: guix-git/doc/guix.texi:27955 guix-git/doc/guix.texi:27975
32878 #: guix-git/doc/guix.texi:27989 guix-git/doc/guix.texi:28202
32879 #: guix-git/doc/guix.texi:30059 guix-git/doc/guix.texi:30147
32880 #: guix-git/doc/guix.texi:30163 guix-git/doc/guix.texi:30213
32881 msgid "Defaults to @samp{#t}."
32882 msgstr ""
32883
32884 #. type: deftypevr
32885 #: guix-git/doc/guix.texi:18527
32886 #, no-wrap
32887 msgid "{@code{cups-configuration} parameter} non-negative-integer dirty-clean-interval"
32888 msgstr ""
32889
32890 #. type: deftypevr
32891 #: guix-git/doc/guix.texi:18531
32892 msgid "Specifies the delay for updating of configuration and state files, in seconds. A value of 0 causes the update to happen as soon as possible, typically within a few milliseconds."
32893 msgstr ""
32894
32895 #. type: deftypevr
32896 #: guix-git/doc/guix.texi:18533 guix-git/doc/guix.texi:18581
32897 #: guix-git/doc/guix.texi:18590 guix-git/doc/guix.texi:18611
32898 #: guix-git/doc/guix.texi:18908 guix-git/doc/guix.texi:23102
32899 #: guix-git/doc/guix.texi:23135
32900 msgid "Defaults to @samp{30}."
32901 msgstr ""
32902
32903 #. type: deftypevr
32904 #: guix-git/doc/guix.texi:18535
32905 #, no-wrap
32906 msgid "{@code{cups-configuration} parameter} error-policy error-policy"
32907 msgstr ""
32908
32909 #. type: deftypevr
32910 #: guix-git/doc/guix.texi:18541
32911 msgid "Specifies what to do when an error occurs. Possible values are @code{abort-job}, which will discard the failed print job; @code{retry-job}, which will retry the job at a later time; @code{retry-current-job}, which retries the failed job immediately; and @code{stop-printer}, which stops the printer."
32912 msgstr ""
32913
32914 #. type: deftypevr
32915 #: guix-git/doc/guix.texi:18543
32916 msgid "Defaults to @samp{stop-printer}."
32917 msgstr ""
32918
32919 #. type: deftypevr
32920 #: guix-git/doc/guix.texi:18545
32921 #, no-wrap
32922 msgid "{@code{cups-configuration} parameter} non-negative-integer filter-limit"
32923 msgstr ""
32924
32925 #. type: deftypevr
32926 #: guix-git/doc/guix.texi:18553
32927 msgid "Specifies the maximum cost of filters that are run concurrently, which can be used to minimize disk, memory, and CPU resource problems. A limit of 0 disables filter limiting. An average print to a non-PostScript printer needs a filter limit of about 200. A PostScript printer needs about half that (100). Setting the limit below these thresholds will effectively limit the scheduler to printing a single job at any time."
32928 msgstr ""
32929
32930 #. type: deftypevr
32931 #: guix-git/doc/guix.texi:18555 guix-git/doc/guix.texi:18563
32932 #: guix-git/doc/guix.texi:18618 guix-git/doc/guix.texi:18734
32933 #: guix-git/doc/guix.texi:18748 guix-git/doc/guix.texi:18755
32934 #: guix-git/doc/guix.texi:20206 guix-git/doc/guix.texi:20222
32935 #: guix-git/doc/guix.texi:20868 guix-git/doc/guix.texi:20880
32936 #: guix-git/doc/guix.texi:21659 guix-git/doc/guix.texi:21668
32937 #: guix-git/doc/guix.texi:21676 guix-git/doc/guix.texi:21684
32938 #: guix-git/doc/guix.texi:27577 guix-git/doc/guix.texi:27902
32939 #: guix-git/doc/guix.texi:30052 guix-git/doc/guix.texi:30352
32940 #: guix-git/doc/guix.texi:30526
32941 msgid "Defaults to @samp{0}."
32942 msgstr ""
32943
32944 #. type: deftypevr
32945 #: guix-git/doc/guix.texi:18557
32946 #, no-wrap
32947 msgid "{@code{cups-configuration} parameter} non-negative-integer filter-nice"
32948 msgstr ""
32949
32950 #. type: deftypevr
32951 #: guix-git/doc/guix.texi:18561
32952 msgid "Specifies the scheduling priority of filters that are run to print a job. The nice value ranges from 0, the highest priority, to 19, the lowest priority."
32953 msgstr ""
32954
32955 #. type: deftypevr
32956 #: guix-git/doc/guix.texi:18565
32957 #, no-wrap
32958 msgid "{@code{cups-configuration} parameter} host-name-lookups host-name-lookups"
32959 msgstr ""
32960
32961 #. type: deftypevr
32962 #: guix-git/doc/guix.texi:18572
32963 msgid "Specifies whether to do reverse lookups on connecting clients. The @code{double} setting causes @code{cupsd} to verify that the hostname resolved from the address matches one of the addresses returned for that hostname. Double lookups also prevent clients with unregistered addresses from connecting to your server. Only set this option to @code{#t} or @code{double} if absolutely required."
32964 msgstr ""
32965
32966 #. type: deftypevr
32967 #: guix-git/doc/guix.texi:18576
32968 #, no-wrap
32969 msgid "{@code{cups-configuration} parameter} non-negative-integer job-kill-delay"
32970 msgstr ""
32971
32972 #. type: deftypevr
32973 #: guix-git/doc/guix.texi:18579
32974 msgid "Specifies the number of seconds to wait before killing the filters and backend associated with a canceled or held job."
32975 msgstr ""
32976
32977 #. type: deftypevr
32978 #: guix-git/doc/guix.texi:18583
32979 #, no-wrap
32980 msgid "{@code{cups-configuration} parameter} non-negative-integer job-retry-interval"
32981 msgstr ""
32982
32983 #. type: deftypevr
32984 #: guix-git/doc/guix.texi:18588
32985 msgid "Specifies the interval between retries of jobs in seconds. This is typically used for fax queues but can also be used with normal print queues whose error policy is @code{retry-job} or @code{retry-current-job}."
32986 msgstr ""
32987
32988 #. type: deftypevr
32989 #: guix-git/doc/guix.texi:18592
32990 #, no-wrap
32991 msgid "{@code{cups-configuration} parameter} non-negative-integer job-retry-limit"
32992 msgstr ""
32993
32994 #. type: deftypevr
32995 #: guix-git/doc/guix.texi:18597
32996 msgid "Specifies the number of retries that are done for jobs. This is typically used for fax queues but can also be used with normal print queues whose error policy is @code{retry-job} or @code{retry-current-job}."
32997 msgstr ""
32998
32999 #. type: deftypevr
33000 #: guix-git/doc/guix.texi:18599 guix-git/doc/guix.texi:23066
33001 #: guix-git/doc/guix.texi:28454 guix-git/doc/guix.texi:28474
33002 #: guix-git/doc/guix.texi:28490 guix-git/doc/guix.texi:28504
33003 #: guix-git/doc/guix.texi:28511 guix-git/doc/guix.texi:28518
33004 #: guix-git/doc/guix.texi:28525 guix-git/doc/guix.texi:28685
33005 #: guix-git/doc/guix.texi:28701 guix-git/doc/guix.texi:28708
33006 #: guix-git/doc/guix.texi:28715 guix-git/doc/guix.texi:28726
33007 #: guix-git/doc/guix.texi:30004 guix-git/doc/guix.texi:30012
33008 #: guix-git/doc/guix.texi:30020 guix-git/doc/guix.texi:30044
33009 msgid "Defaults to @samp{5}."
33010 msgstr ""
33011
33012 #. type: deftypevr
33013 #: guix-git/doc/guix.texi:18601
33014 #, no-wrap
33015 msgid "{@code{cups-configuration} parameter} boolean keep-alive?"
33016 msgstr ""
33017
33018 #. type: deftypevr
33019 #: guix-git/doc/guix.texi:18603
33020 msgid "Specifies whether to support HTTP keep-alive connections."
33021 msgstr ""
33022
33023 #. type: deftypevr
33024 #: guix-git/doc/guix.texi:18607
33025 #, no-wrap
33026 msgid "{@code{cups-configuration} parameter} non-negative-integer keep-alive-timeout"
33027 msgstr ""
33028
33029 #. type: deftypevr
33030 #: guix-git/doc/guix.texi:18609
33031 msgid "Specifies how long an idle client connection remains open, in seconds."
33032 msgstr ""
33033
33034 #. type: deftypevr
33035 #: guix-git/doc/guix.texi:18613
33036 #, no-wrap
33037 msgid "{@code{cups-configuration} parameter} non-negative-integer limit-request-body"
33038 msgstr ""
33039
33040 #. type: deftypevr
33041 #: guix-git/doc/guix.texi:18616
33042 msgid "Specifies the maximum size of print files, IPP requests, and HTML form data. A limit of 0 disables the limit check."
33043 msgstr ""
33044
33045 #. type: deftypevr
33046 #: guix-git/doc/guix.texi:18620
33047 #, no-wrap
33048 msgid "{@code{cups-configuration} parameter} multiline-string-list listen"
33049 msgstr ""
33050
33051 #. type: deftypevr
33052 #: guix-git/doc/guix.texi:18627
33053 msgid "Listens on the specified interfaces for connections. Valid values are of the form @var{address}:@var{port}, where @var{address} is either an IPv6 address enclosed in brackets, an IPv4 address, or @code{*} to indicate all addresses. Values can also be file names of local UNIX domain sockets. The Listen directive is similar to the Port directive but allows you to restrict access to specific interfaces or networks."
33054 msgstr ""
33055
33056 #. type: deftypevr
33057 #: guix-git/doc/guix.texi:18629
33058 #, no-wrap
33059 msgid "{@code{cups-configuration} parameter} non-negative-integer listen-back-log"
33060 msgstr ""
33061
33062 #. type: deftypevr
33063 #: guix-git/doc/guix.texi:18636
33064 msgid "Specifies the number of pending connections that will be allowed. This normally only affects very busy servers that have reached the MaxClients limit, but can also be triggered by large numbers of simultaneous connections. When the limit is reached, the operating system will refuse additional connections until the scheduler can accept the pending ones."
33065 msgstr ""
33066
33067 #. type: deftypevr
33068 #: guix-git/doc/guix.texi:18638
33069 msgid "Defaults to @samp{128}."
33070 msgstr ""
33071
33072 #. type: deftypevr
33073 #: guix-git/doc/guix.texi:18640
33074 #, no-wrap
33075 msgid "{@code{cups-configuration} parameter} location-access-control-list location-access-controls"
33076 msgstr ""
33077
33078 #. type: deftypevr
33079 #: guix-git/doc/guix.texi:18642
33080 msgid "Specifies a set of additional access controls."
33081 msgstr ""
33082
33083 #. type: deftypevr
33084 #: guix-git/doc/guix.texi:18644
33085 msgid "Available @code{location-access-controls} fields are:"
33086 msgstr ""
33087
33088 #. type: deftypevr
33089 #: guix-git/doc/guix.texi:18645
33090 #, no-wrap
33091 msgid "{@code{location-access-controls} parameter} file-name path"
33092 msgstr ""
33093
33094 #. type: deftypevr
33095 #: guix-git/doc/guix.texi:18647
33096 msgid "Specifies the URI path to which the access control applies."
33097 msgstr ""
33098
33099 #. type: deftypevr
33100 #: guix-git/doc/guix.texi:18649
33101 #, no-wrap
33102 msgid "{@code{location-access-controls} parameter} access-control-list access-controls"
33103 msgstr ""
33104
33105 #. type: deftypevr
33106 #: guix-git/doc/guix.texi:18652
33107 msgid "Access controls for all access to this path, in the same format as the @code{access-controls} of @code{operation-access-control}."
33108 msgstr ""
33109
33110 #. type: deftypevr
33111 #: guix-git/doc/guix.texi:18654 guix-git/doc/guix.texi:18660
33112 #: guix-git/doc/guix.texi:18674 guix-git/doc/guix.texi:18681
33113 #: guix-git/doc/guix.texi:18823 guix-git/doc/guix.texi:18882
33114 #: guix-git/doc/guix.texi:18960 guix-git/doc/guix.texi:18974
33115 #: guix-git/doc/guix.texi:21354 guix-git/doc/guix.texi:21557
33116 #: guix-git/doc/guix.texi:21585 guix-git/doc/guix.texi:21615
33117 #: guix-git/doc/guix.texi:21730 guix-git/doc/guix.texi:21743
33118 #: guix-git/doc/guix.texi:21750 guix-git/doc/guix.texi:23272
33119 #: guix-git/doc/guix.texi:23667 guix-git/doc/guix.texi:23771
33120 #: guix-git/doc/guix.texi:24198 guix-git/doc/guix.texi:24206
33121 #: guix-git/doc/guix.texi:24451 guix-git/doc/guix.texi:26572
33122 #: guix-git/doc/guix.texi:26741 guix-git/doc/guix.texi:26940
33123 #: guix-git/doc/guix.texi:28345 guix-git/doc/guix.texi:28405
33124 #: guix-git/doc/guix.texi:28413 guix-git/doc/guix.texi:30067
33125 #: guix-git/doc/guix.texi:30074 guix-git/doc/guix.texi:30416
33126 #: guix-git/doc/guix.texi:30494 guix-git/doc/guix.texi:30588
33127 #: guix-git/doc/guix.texi:30596 guix-git/doc/guix.texi:30632
33128 #: guix-git/doc/guix.texi:30782 guix-git/doc/guix.texi:30833
33129 #: guix-git/doc/guix.texi:30842
33130 msgid "Defaults to @samp{()}."
33131 msgstr ""
33132
33133 #. type: deftypevr
33134 #: guix-git/doc/guix.texi:18656
33135 #, no-wrap
33136 msgid "{@code{location-access-controls} parameter} method-access-control-list method-access-controls"
33137 msgstr ""
33138
33139 #. type: deftypevr
33140 #: guix-git/doc/guix.texi:18658
33141 msgid "Access controls for method-specific access to this path."
33142 msgstr ""
33143
33144 #. type: deftypevr
33145 #: guix-git/doc/guix.texi:18662
33146 msgid "Available @code{method-access-controls} fields are:"
33147 msgstr ""
33148
33149 #. type: deftypevr
33150 #: guix-git/doc/guix.texi:18663
33151 #, no-wrap
33152 msgid "{@code{method-access-controls} parameter} boolean reverse?"
33153 msgstr ""
33154
33155 #. type: deftypevr
33156 #: guix-git/doc/guix.texi:18666
33157 msgid "If @code{#t}, apply access controls to all methods except the listed methods. Otherwise apply to only the listed methods."
33158 msgstr ""
33159
33160 #. type: deftypevr
33161 #: guix-git/doc/guix.texi:18670
33162 #, no-wrap
33163 msgid "{@code{method-access-controls} parameter} method-list methods"
33164 msgstr ""
33165
33166 #. type: deftypevr
33167 #: guix-git/doc/guix.texi:18672
33168 msgid "Methods to which this access control applies."
33169 msgstr ""
33170
33171 #. type: deftypevr
33172 #: guix-git/doc/guix.texi:18676
33173 #, no-wrap
33174 msgid "{@code{method-access-controls} parameter} access-control-list access-controls"
33175 msgstr ""
33176
33177 #. type: deftypevr
33178 #: guix-git/doc/guix.texi:18679
33179 msgid "Access control directives, as a list of strings. Each string should be one directive, such as @samp{\"Order allow,deny\"}."
33180 msgstr ""
33181
33182 #. type: deftypevr
33183 #: guix-git/doc/guix.texi:18685
33184 #, no-wrap
33185 msgid "{@code{cups-configuration} parameter} non-negative-integer log-debug-history"
33186 msgstr ""
33187
33188 #. type: deftypevr
33189 #: guix-git/doc/guix.texi:18689
33190 msgid "Specifies the number of debugging messages that are retained for logging if an error occurs in a print job. Debug messages are logged regardless of the LogLevel setting."
33191 msgstr ""
33192
33193 #. type: deftypevr
33194 #: guix-git/doc/guix.texi:18691 guix-git/doc/guix.texi:18712
33195 #: guix-git/doc/guix.texi:18719 guix-git/doc/guix.texi:21114
33196 #: guix-git/doc/guix.texi:22804 guix-git/doc/guix.texi:22819
33197 #: guix-git/doc/guix.texi:26925
33198 msgid "Defaults to @samp{100}."
33199 msgstr ""
33200
33201 #. type: deftypevr
33202 #: guix-git/doc/guix.texi:18693
33203 #, no-wrap
33204 msgid "{@code{cups-configuration} parameter} log-level log-level"
33205 msgstr ""
33206
33207 #. type: deftypevr
33208 #: guix-git/doc/guix.texi:18696
33209 msgid "Specifies the level of logging for the ErrorLog file. The value @code{none} stops all logging while @code{debug2} logs everything."
33210 msgstr ""
33211
33212 #. type: deftypevr
33213 #: guix-git/doc/guix.texi:18698 guix-git/doc/guix.texi:23281
33214 msgid "Defaults to @samp{info}."
33215 msgstr ""
33216
33217 #. type: deftypevr
33218 #: guix-git/doc/guix.texi:18700
33219 #, no-wrap
33220 msgid "{@code{cups-configuration} parameter} log-time-format log-time-format"
33221 msgstr ""
33222
33223 #. type: deftypevr
33224 #: guix-git/doc/guix.texi:18703
33225 msgid "Specifies the format of the date and time in the log files. The value @code{standard} logs whole seconds while @code{usecs} logs microseconds."
33226 msgstr ""
33227
33228 #. type: deftypevr
33229 #: guix-git/doc/guix.texi:18705
33230 msgid "Defaults to @samp{standard}."
33231 msgstr ""
33232
33233 #. type: deftypevr
33234 #: guix-git/doc/guix.texi:18707
33235 #, no-wrap
33236 msgid "{@code{cups-configuration} parameter} non-negative-integer max-clients"
33237 msgstr ""
33238
33239 #. type: deftypevr
33240 #: guix-git/doc/guix.texi:18710
33241 msgid "Specifies the maximum number of simultaneous clients that are allowed by the scheduler."
33242 msgstr ""
33243
33244 #. type: deftypevr
33245 #: guix-git/doc/guix.texi:18714
33246 #, no-wrap
33247 msgid "{@code{cups-configuration} parameter} non-negative-integer max-clients-per-host"
33248 msgstr ""
33249
33250 #. type: deftypevr
33251 #: guix-git/doc/guix.texi:18717
33252 msgid "Specifies the maximum number of simultaneous clients that are allowed from a single address."
33253 msgstr ""
33254
33255 #. type: deftypevr
33256 #: guix-git/doc/guix.texi:18721
33257 #, no-wrap
33258 msgid "{@code{cups-configuration} parameter} non-negative-integer max-copies"
33259 msgstr ""
33260
33261 #. type: deftypevr
33262 #: guix-git/doc/guix.texi:18724
33263 msgid "Specifies the maximum number of copies that a user can print of each job."
33264 msgstr ""
33265
33266 #. type: deftypevr
33267 #: guix-git/doc/guix.texi:18726
33268 msgid "Defaults to @samp{9999}."
33269 msgstr ""
33270
33271 #. type: deftypevr
33272 #: guix-git/doc/guix.texi:18728
33273 #, no-wrap
33274 msgid "{@code{cups-configuration} parameter} non-negative-integer max-hold-time"
33275 msgstr ""
33276
33277 #. type: deftypevr
33278 #: guix-git/doc/guix.texi:18732
33279 msgid "Specifies the maximum time a job may remain in the @code{indefinite} hold state before it is canceled. A value of 0 disables cancellation of held jobs."
33280 msgstr ""
33281
33282 #. type: deftypevr
33283 #: guix-git/doc/guix.texi:18736
33284 #, no-wrap
33285 msgid "{@code{cups-configuration} parameter} non-negative-integer max-jobs"
33286 msgstr ""
33287
33288 #. type: deftypevr
33289 #: guix-git/doc/guix.texi:18739
33290 msgid "Specifies the maximum number of simultaneous jobs that are allowed. Set to 0 to allow an unlimited number of jobs."
33291 msgstr ""
33292
33293 #. type: deftypevr
33294 #: guix-git/doc/guix.texi:18741
33295 msgid "Defaults to @samp{500}."
33296 msgstr ""
33297
33298 #. type: deftypevr
33299 #: guix-git/doc/guix.texi:18743
33300 #, no-wrap
33301 msgid "{@code{cups-configuration} parameter} non-negative-integer max-jobs-per-printer"
33302 msgstr ""
33303
33304 #. type: deftypevr
33305 #: guix-git/doc/guix.texi:18746
33306 msgid "Specifies the maximum number of simultaneous jobs that are allowed per printer. A value of 0 allows up to MaxJobs jobs per printer."
33307 msgstr ""
33308
33309 #. type: deftypevr
33310 #: guix-git/doc/guix.texi:18750
33311 #, no-wrap
33312 msgid "{@code{cups-configuration} parameter} non-negative-integer max-jobs-per-user"
33313 msgstr ""
33314
33315 #. type: deftypevr
33316 #: guix-git/doc/guix.texi:18753
33317 msgid "Specifies the maximum number of simultaneous jobs that are allowed per user. A value of 0 allows up to MaxJobs jobs per user."
33318 msgstr ""
33319
33320 #. type: deftypevr
33321 #: guix-git/doc/guix.texi:18757
33322 #, no-wrap
33323 msgid "{@code{cups-configuration} parameter} non-negative-integer max-job-time"
33324 msgstr ""
33325
33326 #. type: deftypevr
33327 #: guix-git/doc/guix.texi:18760
33328 msgid "Specifies the maximum time a job may take to print before it is canceled, in seconds. Set to 0 to disable cancellation of ``stuck'' jobs."
33329 msgstr ""
33330
33331 #. type: deftypevr
33332 #: guix-git/doc/guix.texi:18762
33333 msgid "Defaults to @samp{10800}."
33334 msgstr ""
33335
33336 #. type: deftypevr
33337 #: guix-git/doc/guix.texi:18764
33338 #, no-wrap
33339 msgid "{@code{cups-configuration} parameter} non-negative-integer max-log-size"
33340 msgstr ""
33341
33342 #. type: deftypevr
33343 #: guix-git/doc/guix.texi:18767
33344 msgid "Specifies the maximum size of the log files before they are rotated, in bytes. The value 0 disables log rotation."
33345 msgstr ""
33346
33347 #. type: deftypevr
33348 #: guix-git/doc/guix.texi:18769
33349 msgid "Defaults to @samp{1048576}."
33350 msgstr ""
33351
33352 #. type: deftypevr
33353 #: guix-git/doc/guix.texi:18771
33354 #, no-wrap
33355 msgid "{@code{cups-configuration} parameter} non-negative-integer multiple-operation-timeout"
33356 msgstr ""
33357
33358 #. type: deftypevr
33359 #: guix-git/doc/guix.texi:18774
33360 msgid "Specifies the maximum amount of time to allow between files in a multiple file print job, in seconds."
33361 msgstr ""
33362
33363 #. type: deftypevr
33364 #: guix-git/doc/guix.texi:18776 guix-git/doc/guix.texi:18987
33365 #: guix-git/doc/guix.texi:26506
33366 msgid "Defaults to @samp{300}."
33367 msgstr ""
33368
33369 #. type: deftypevr
33370 #: guix-git/doc/guix.texi:18778
33371 #, no-wrap
33372 msgid "{@code{cups-configuration} parameter} string page-log-format"
33373 msgstr ""
33374
33375 #. type: deftypevr
33376 #: guix-git/doc/guix.texi:18783
33377 msgid "Specifies the format of PageLog lines. Sequences beginning with percent (@samp{%}) characters are replaced with the corresponding information, while all other characters are copied literally. The following percent sequences are recognized:"
33378 msgstr ""
33379
33380 #. type: item
33381 #: guix-git/doc/guix.texi:18785
33382 #, no-wrap
33383 msgid "%%"
33384 msgstr ""
33385
33386 #. type: table
33387 #: guix-git/doc/guix.texi:18787
33388 msgid "insert a single percent character"
33389 msgstr ""
33390
33391 #. type: item
33392 #: guix-git/doc/guix.texi:18788
33393 #, no-wrap
33394 msgid "%@{name@}"
33395 msgstr ""
33396
33397 #. type: table
33398 #: guix-git/doc/guix.texi:18790
33399 msgid "insert the value of the specified IPP attribute"
33400 msgstr ""
33401
33402 #. type: item
33403 #: guix-git/doc/guix.texi:18791
33404 #, no-wrap
33405 msgid "%C"
33406 msgstr ""
33407
33408 #. type: table
33409 #: guix-git/doc/guix.texi:18793
33410 msgid "insert the number of copies for the current page"
33411 msgstr ""
33412
33413 #. type: item
33414 #: guix-git/doc/guix.texi:18794
33415 #, no-wrap
33416 msgid "%P"
33417 msgstr ""
33418
33419 #. type: table
33420 #: guix-git/doc/guix.texi:18796
33421 msgid "insert the current page number"
33422 msgstr ""
33423
33424 #. type: item
33425 #: guix-git/doc/guix.texi:18797
33426 #, no-wrap
33427 msgid "%T"
33428 msgstr ""
33429
33430 #. type: table
33431 #: guix-git/doc/guix.texi:18799
33432 msgid "insert the current date and time in common log format"
33433 msgstr ""
33434
33435 #. type: item
33436 #: guix-git/doc/guix.texi:18800
33437 #, no-wrap
33438 msgid "%j"
33439 msgstr ""
33440
33441 #. type: table
33442 #: guix-git/doc/guix.texi:18802
33443 msgid "insert the job ID"
33444 msgstr ""
33445
33446 #. type: item
33447 #: guix-git/doc/guix.texi:18803 guix-git/doc/guix.texi:20724
33448 #, no-wrap
33449 msgid "%p"
33450 msgstr ""
33451
33452 #. type: table
33453 #: guix-git/doc/guix.texi:18805
33454 msgid "insert the printer name"
33455 msgstr ""
33456
33457 #. type: item
33458 #: guix-git/doc/guix.texi:18806 guix-git/doc/guix.texi:20747
33459 #, no-wrap
33460 msgid "%u"
33461 msgstr ""
33462
33463 #. type: table
33464 #: guix-git/doc/guix.texi:18808
33465 msgid "insert the username"
33466 msgstr ""
33467
33468 #. type: deftypevr
33469 #: guix-git/doc/guix.texi:18814
33470 msgid "A value of the empty string disables page logging. The string @code{%p %u %j %T %P %C %@{job-billing@} %@{job-originating-host-name@} %@{job-name@} %@{media@} %@{sides@}} creates a page log with the standard items."
33471 msgstr ""
33472
33473 #. type: deftypevr
33474 #: guix-git/doc/guix.texi:18818
33475 #, no-wrap
33476 msgid "{@code{cups-configuration} parameter} environment-variables environment-variables"
33477 msgstr ""
33478
33479 #. type: deftypevr
33480 #: guix-git/doc/guix.texi:18821
33481 msgid "Passes the specified environment variable(s) to child processes; a list of strings."
33482 msgstr ""
33483
33484 #. type: deftypevr
33485 #: guix-git/doc/guix.texi:18825
33486 #, no-wrap
33487 msgid "{@code{cups-configuration} parameter} policy-configuration-list policies"
33488 msgstr ""
33489
33490 #. type: deftypevr
33491 #: guix-git/doc/guix.texi:18827
33492 msgid "Specifies named access control policies."
33493 msgstr ""
33494
33495 #. type: deftypevr
33496 #: guix-git/doc/guix.texi:18829
33497 msgid "Available @code{policy-configuration} fields are:"
33498 msgstr ""
33499
33500 #. type: deftypevr
33501 #: guix-git/doc/guix.texi:18830
33502 #, no-wrap
33503 msgid "{@code{policy-configuration} parameter} string name"
33504 msgstr ""
33505
33506 #. type: deftypevr
33507 #: guix-git/doc/guix.texi:18832
33508 msgid "Name of the policy."
33509 msgstr ""
33510
33511 #. type: deftypevr
33512 #: guix-git/doc/guix.texi:18834
33513 #, no-wrap
33514 msgid "{@code{policy-configuration} parameter} string job-private-access"
33515 msgstr ""
33516
33517 #. type: deftypevr
33518 #: guix-git/doc/guix.texi:18844
33519 msgid "Specifies an access list for a job's private values. @code{@@ACL} maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values. @code{@@OWNER} maps to the job's owner. @code{@@SYSTEM} maps to the groups listed for the @code{system-group} field of the @code{files-config} configuration, which is reified into the @code{cups-files.conf(5)} file. Other possible elements of the access list include specific user names, and @code{@@@var{group}} to indicate members of a specific group. The access list may also be simply @code{all} or @code{default}."
33520 msgstr ""
33521
33522 #. type: deftypevr
33523 #: guix-git/doc/guix.texi:18846 guix-git/doc/guix.texi:18868
33524 msgid "Defaults to @samp{\"@@OWNER @@SYSTEM\"}."
33525 msgstr ""
33526
33527 #. type: deftypevr
33528 #: guix-git/doc/guix.texi:18848
33529 #, no-wrap
33530 msgid "{@code{policy-configuration} parameter} string job-private-values"
33531 msgstr ""
33532
33533 #. type: deftypevr
33534 #: guix-git/doc/guix.texi:18851 guix-git/doc/guix.texi:18873
33535 msgid "Specifies the list of job values to make private, or @code{all}, @code{default}, or @code{none}."
33536 msgstr ""
33537
33538 #. type: deftypevr
33539 #: guix-git/doc/guix.texi:18854
33540 msgid "Defaults to @samp{\"job-name job-originating-host-name job-originating-user-name phone\"}."
33541 msgstr ""
33542
33543 #. type: deftypevr
33544 #: guix-git/doc/guix.texi:18856
33545 #, no-wrap
33546 msgid "{@code{policy-configuration} parameter} string subscription-private-access"
33547 msgstr ""
33548
33549 #. type: deftypevr
33550 #: guix-git/doc/guix.texi:18866
33551 msgid "Specifies an access list for a subscription's private values. @code{@@ACL} maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values. @code{@@OWNER} maps to the job's owner. @code{@@SYSTEM} maps to the groups listed for the @code{system-group} field of the @code{files-config} configuration, which is reified into the @code{cups-files.conf(5)} file. Other possible elements of the access list include specific user names, and @code{@@@var{group}} to indicate members of a specific group. The access list may also be simply @code{all} or @code{default}."
33552 msgstr ""
33553
33554 #. type: deftypevr
33555 #: guix-git/doc/guix.texi:18870
33556 #, no-wrap
33557 msgid "{@code{policy-configuration} parameter} string subscription-private-values"
33558 msgstr ""
33559
33560 #. type: deftypevr
33561 #: guix-git/doc/guix.texi:18876
33562 msgid "Defaults to @samp{\"notify-events notify-pull-method notify-recipient-uri notify-subscriber-user-name notify-user-data\"}."
33563 msgstr ""
33564
33565 #. type: deftypevr
33566 #: guix-git/doc/guix.texi:18878
33567 #, no-wrap
33568 msgid "{@code{policy-configuration} parameter} operation-access-control-list access-controls"
33569 msgstr ""
33570
33571 #. type: deftypevr
33572 #: guix-git/doc/guix.texi:18880
33573 msgid "Access control by IPP operation."
33574 msgstr ""
33575
33576 #. type: deftypevr
33577 #: guix-git/doc/guix.texi:18885
33578 #, no-wrap
33579 msgid "{@code{cups-configuration} parameter} boolean-or-non-negative-integer preserve-job-files"
33580 msgstr ""
33581
33582 #. type: deftypevr
33583 #: guix-git/doc/guix.texi:18890
33584 msgid "Specifies whether job files (documents) are preserved after a job is printed. If a numeric value is specified, job files are preserved for the indicated number of seconds after printing. Otherwise a boolean value applies indefinitely."
33585 msgstr ""
33586
33587 #. type: deftypevr
33588 #: guix-git/doc/guix.texi:18892
33589 msgid "Defaults to @samp{86400}."
33590 msgstr ""
33591
33592 #. type: deftypevr
33593 #: guix-git/doc/guix.texi:18894
33594 #, no-wrap
33595 msgid "{@code{cups-configuration} parameter} boolean-or-non-negative-integer preserve-job-history"
33596 msgstr ""
33597
33598 #. type: deftypevr
33599 #: guix-git/doc/guix.texi:18899
33600 msgid "Specifies whether the job history is preserved after a job is printed. If a numeric value is specified, the job history is preserved for the indicated number of seconds after printing. If @code{#t}, the job history is preserved until the MaxJobs limit is reached."
33601 msgstr ""
33602
33603 #. type: deftypevr
33604 #: guix-git/doc/guix.texi:18903
33605 #, no-wrap
33606 msgid "{@code{cups-configuration} parameter} non-negative-integer reload-timeout"
33607 msgstr ""
33608
33609 #. type: deftypevr
33610 #: guix-git/doc/guix.texi:18906
33611 msgid "Specifies the amount of time to wait for job completion before restarting the scheduler."
33612 msgstr ""
33613
33614 #. type: deftypevr
33615 #: guix-git/doc/guix.texi:18910
33616 #, no-wrap
33617 msgid "{@code{cups-configuration} parameter} string rip-cache"
33618 msgstr ""
33619
33620 #. type: deftypevr
33621 #: guix-git/doc/guix.texi:18913
33622 msgid "Specifies the maximum amount of memory to use when converting documents into bitmaps for a printer."
33623 msgstr ""
33624
33625 #. type: deftypevr
33626 #: guix-git/doc/guix.texi:18915
33627 msgid "Defaults to @samp{\"128m\"}."
33628 msgstr ""
33629
33630 #. type: deftypevr
33631 #: guix-git/doc/guix.texi:18917
33632 #, no-wrap
33633 msgid "{@code{cups-configuration} parameter} string server-admin"
33634 msgstr ""
33635
33636 #. type: deftypevr
33637 #: guix-git/doc/guix.texi:18919
33638 msgid "Specifies the email address of the server administrator."
33639 msgstr ""
33640
33641 #. type: deftypevr
33642 #: guix-git/doc/guix.texi:18921
33643 msgid "Defaults to @samp{\"root@@localhost.localdomain\"}."
33644 msgstr ""
33645
33646 #. type: deftypevr
33647 #: guix-git/doc/guix.texi:18923
33648 #, no-wrap
33649 msgid "{@code{cups-configuration} parameter} host-name-list-or-* server-alias"
33650 msgstr ""
33651
33652 #. type: deftypevr
33653 #: guix-git/doc/guix.texi:18931
33654 msgid "The ServerAlias directive is used for HTTP Host header validation when clients connect to the scheduler from external interfaces. Using the special name @code{*} can expose your system to known browser-based DNS rebinding attacks, even when accessing sites through a firewall. If the auto-discovery of alternate names does not work, we recommend listing each alternate name with a ServerAlias directive instead of using @code{*}."
33655 msgstr ""
33656
33657 #. type: deftypevr
33658 #: guix-git/doc/guix.texi:18933
33659 msgid "Defaults to @samp{*}."
33660 msgstr ""
33661
33662 #. type: deftypevr
33663 #: guix-git/doc/guix.texi:18935
33664 #, no-wrap
33665 msgid "{@code{cups-configuration} parameter} string server-name"
33666 msgstr ""
33667
33668 #. type: deftypevr
33669 #: guix-git/doc/guix.texi:18937
33670 msgid "Specifies the fully-qualified host name of the server."
33671 msgstr ""
33672
33673 #. type: deftypevr
33674 #: guix-git/doc/guix.texi:18939 guix-git/doc/guix.texi:23794
33675 #: guix-git/doc/guix.texi:23839
33676 msgid "Defaults to @samp{\"localhost\"}."
33677 msgstr ""
33678
33679 #. type: deftypevr
33680 #: guix-git/doc/guix.texi:18941
33681 #, no-wrap
33682 msgid "{@code{cups-configuration} parameter} server-tokens server-tokens"
33683 msgstr ""
33684
33685 #. type: deftypevr
33686 #: guix-git/doc/guix.texi:18949
33687 msgid "Specifies what information is included in the Server header of HTTP responses. @code{None} disables the Server header. @code{ProductOnly} reports @code{CUPS}. @code{Major} reports @code{CUPS 2}. @code{Minor} reports @code{CUPS 2.0}. @code{Minimal} reports @code{CUPS 2.0.0}. @code{OS} reports @code{CUPS 2.0.0 (@var{uname})} where @var{uname} is the output of the @code{uname} command. @code{Full} reports @code{CUPS 2.0.0 (@var{uname}) IPP/2.0}."
33688 msgstr ""
33689
33690 #. type: deftypevr
33691 #: guix-git/doc/guix.texi:18951
33692 msgid "Defaults to @samp{Minimal}."
33693 msgstr ""
33694
33695 #. type: deftypevr
33696 #: guix-git/doc/guix.texi:18953
33697 #, no-wrap
33698 msgid "{@code{cups-configuration} parameter} multiline-string-list ssl-listen"
33699 msgstr ""
33700
33701 #. type: deftypevr
33702 #: guix-git/doc/guix.texi:18958
33703 msgid "Listens on the specified interfaces for encrypted connections. Valid values are of the form @var{address}:@var{port}, where @var{address} is either an IPv6 address enclosed in brackets, an IPv4 address, or @code{*} to indicate all addresses."
33704 msgstr ""
33705
33706 #. type: deftypevr
33707 #: guix-git/doc/guix.texi:18962
33708 #, no-wrap
33709 msgid "{@code{cups-configuration} parameter} ssl-options ssl-options"
33710 msgstr ""
33711
33712 #. type: deftypevr
33713 #: guix-git/doc/guix.texi:18972
33714 msgid "Sets encryption options. By default, CUPS only supports encryption using TLS v1.0 or higher using known secure cipher suites. Security is reduced when @code{Allow} options are used, and enhanced when @code{Deny} options are used. The @code{AllowRC4} option enables the 128-bit RC4 cipher suites, which are required for some older clients. The @code{AllowSSL3} option enables SSL v3.0, which is required for some older clients that do not support TLS v1.0. The @code{DenyCBC} option disables all CBC cipher suites. The @code{DenyTLS1.0} option disables TLS v1.0 support - this sets the minimum protocol version to TLS v1.1."
33715 msgstr ""
33716
33717 #. type: deftypevr
33718 #: guix-git/doc/guix.texi:18976
33719 #, no-wrap
33720 msgid "{@code{cups-configuration} parameter} boolean strict-conformance?"
33721 msgstr ""
33722
33723 #. type: deftypevr
33724 #: guix-git/doc/guix.texi:18979
33725 msgid "Specifies whether the scheduler requires clients to strictly adhere to the IPP specifications."
33726 msgstr ""
33727
33728 #. type: deftypevr
33729 #: guix-git/doc/guix.texi:18983
33730 #, no-wrap
33731 msgid "{@code{cups-configuration} parameter} non-negative-integer timeout"
33732 msgstr ""
33733
33734 #. type: deftypevr
33735 #: guix-git/doc/guix.texi:18985
33736 msgid "Specifies the HTTP request timeout, in seconds."
33737 msgstr ""
33738
33739 #. type: deftypevr
33740 #: guix-git/doc/guix.texi:18990
33741 #, no-wrap
33742 msgid "{@code{cups-configuration} parameter} boolean web-interface?"
33743 msgstr ""
33744
33745 #. type: deftypevr
33746 #: guix-git/doc/guix.texi:18992
33747 msgid "Specifies whether the web interface is enabled."
33748 msgstr ""
33749
33750 #. type: Plain text
33751 #: guix-git/doc/guix.texi:19002
33752 msgid "At this point you're probably thinking ``oh dear, Guix manual, I like you but you can stop already with the configuration options''. Indeed. However, one more point: it could be that you have an existing @code{cupsd.conf} that you want to use. In that case, you can pass an @code{opaque-cups-configuration} as the configuration of a @code{cups-service-type}."
33753 msgstr ""
33754
33755 #. type: Plain text
33756 #: guix-git/doc/guix.texi:19004
33757 msgid "Available @code{opaque-cups-configuration} fields are:"
33758 msgstr ""
33759
33760 #. type: deftypevr
33761 #: guix-git/doc/guix.texi:19005
33762 #, no-wrap
33763 msgid "{@code{opaque-cups-configuration} parameter} package cups"
33764 msgstr ""
33765
33766 #. type: deftypevr
33767 #: guix-git/doc/guix.texi:19009
33768 #, no-wrap
33769 msgid "{@code{opaque-cups-configuration} parameter} string cupsd.conf"
33770 msgstr ""
33771
33772 #. type: deftypevr
33773 #: guix-git/doc/guix.texi:19011
33774 msgid "The contents of the @code{cupsd.conf}, as a string."
33775 msgstr ""
33776
33777 #. type: deftypevr
33778 #: guix-git/doc/guix.texi:19013
33779 #, no-wrap
33780 msgid "{@code{opaque-cups-configuration} parameter} string cups-files.conf"
33781 msgstr ""
33782
33783 #. type: deftypevr
33784 #: guix-git/doc/guix.texi:19015
33785 msgid "The contents of the @code{cups-files.conf} file, as a string."
33786 msgstr ""
33787
33788 #. type: Plain text
33789 #: guix-git/doc/guix.texi:19020
33790 msgid "For example, if your @code{cupsd.conf} and @code{cups-files.conf} are in strings of the same name, you could instantiate a CUPS service like this:"
33791 msgstr ""
33792
33793 #. type: lisp
33794 #: guix-git/doc/guix.texi:19026
33795 #, no-wrap
33796 msgid ""
33797 "(service cups-service-type\n"
33798 " (opaque-cups-configuration\n"
33799 " (cupsd.conf cupsd.conf)\n"
33800 " (cups-files.conf cups-files.conf)))\n"
33801 msgstr ""
33802
33803 #. type: Plain text
33804 #: guix-git/doc/guix.texi:19037
33805 msgid "The @code{(gnu services desktop)} module provides services that are usually useful in the context of a ``desktop'' setup---that is, on a machine running a graphical display server, possibly with graphical user interfaces, etc. It also defines services that provide specific desktop environments like GNOME, Xfce or MATE."
33806 msgstr ""
33807
33808 #. type: Plain text
33809 #: guix-git/doc/guix.texi:19041
33810 msgid "To simplify things, the module defines a variable containing the set of services that users typically expect on a machine with a graphical environment and networking:"
33811 msgstr ""
33812
33813 #. type: defvr
33814 #: guix-git/doc/guix.texi:19042
33815 #, no-wrap
33816 msgid "{Scheme Variable} %desktop-services"
33817 msgstr ""
33818
33819 #. type: defvr
33820 #: guix-git/doc/guix.texi:19045
33821 msgid "This is a list of services that builds upon @code{%base-services} and adds or adjusts services for a typical ``desktop'' setup."
33822 msgstr ""
33823
33824 #. type: defvr
33825 #: guix-git/doc/guix.texi:19056
33826 msgid "In particular, it adds a graphical login manager (@pxref{X Window, @code{gdm-service-type}}), screen lockers, a network management tool (@pxref{Networking Services, @code{network-manager-service-type}}) with modem support (@pxref{Networking Services, @code{modem-manager-service-type}}), energy and color management services, the @code{elogind} login and seat manager, the Polkit privilege service, the GeoClue location service, the AccountsService daemon that allows authorized users change system passwords, an NTP client (@pxref{Networking Services}), the Avahi daemon, and has the name service switch service configured to be able to use @code{nss-mdns} (@pxref{Name Service Switch, mDNS})."
33827 msgstr ""
33828
33829 #. type: Plain text
33830 #: guix-git/doc/guix.texi:19061
33831 msgid "The @code{%desktop-services} variable can be used as the @code{services} field of an @code{operating-system} declaration (@pxref{operating-system Reference, @code{services}})."
33832 msgstr ""
33833
33834 #. type: Plain text
33835 #: guix-git/doc/guix.texi:19084
33836 msgid "Additionally, the @code{gnome-desktop-service-type}, @code{xfce-desktop-service}, @code{mate-desktop-service-type}, @code{lxqt-desktop-service-type} and @code{enlightenment-desktop-service-type} procedures can add GNOME, Xfce, MATE and/or Enlightenment to a system. To ``add GNOME'' means that system-level services like the backlight adjustment helpers and the power management utilities are added to the system, extending @code{polkit} and @code{dbus} appropriately, allowing GNOME to operate with elevated privileges on a limited number of special-purpose system interfaces. Additionally, adding a service made by @code{gnome-desktop-service-type} adds the GNOME metapackage to the system profile. Likewise, adding the Xfce service not only adds the @code{xfce} metapackage to the system profile, but it also gives the Thunar file manager the ability to open a ``root-mode'' file management window, if the user authenticates using the administrator's password via the standard polkit graphical interface. To ``add MATE'' means that @code{polkit} and @code{dbus} are extended appropriately, allowing MATE to operate with elevated privileges on a limited number of special-purpose system interfaces. Additionally, adding a service of type @code{mate-desktop-service-type} adds the MATE metapackage to the system profile. ``Adding Enlightenment'' means that @code{dbus} is extended appropriately, and several of Enlightenment's binaries are set as setuid, allowing Enlightenment's screen locker and other functionality to work as expected."
33837 msgstr ""
33838
33839 #. type: Plain text
33840 #: guix-git/doc/guix.texi:19093
33841 msgid "The desktop environments in Guix use the Xorg display server by default. If you'd like to use the newer display server protocol called Wayland, you need to use the @code{sddm-service} instead of GDM as the graphical login manager. You should then select the ``GNOME (Wayland)'' session in SDDM@. Alternatively you can also try starting GNOME on Wayland manually from a TTY with the command ``XDG_SESSION_TYPE=wayland exec dbus-run-session gnome-session``. Currently only GNOME has support for Wayland."
33842 msgstr ""
33843
33844 #. type: defvr
33845 #: guix-git/doc/guix.texi:19094
33846 #, no-wrap
33847 msgid "{Scheme Variable} gnome-desktop-service-type"
33848 msgstr ""
33849
33850 #. type: defvr
33851 #: guix-git/doc/guix.texi:19098
33852 msgid "This is the type of the service that adds the @uref{https://www.gnome.org, GNOME} desktop environment. Its value is a @code{gnome-desktop-configuration} object (see below)."
33853 msgstr ""
33854
33855 #. type: defvr
33856 #: guix-git/doc/guix.texi:19101
33857 msgid "This service adds the @code{gnome} package to the system profile, and extends polkit with the actions from @code{gnome-settings-daemon}."
33858 msgstr ""
33859
33860 #. type: deftp
33861 #: guix-git/doc/guix.texi:19103
33862 #, no-wrap
33863 msgid "{Data Type} gnome-desktop-configuration"
33864 msgstr ""
33865
33866 #. type: deftp
33867 #: guix-git/doc/guix.texi:19105
33868 msgid "Configuration record for the GNOME desktop environment."
33869 msgstr ""
33870
33871 #. type: item
33872 #: guix-git/doc/guix.texi:19107
33873 #, no-wrap
33874 msgid "@code{gnome} (default: @code{gnome})"
33875 msgstr ""
33876
33877 #. type: table
33878 #: guix-git/doc/guix.texi:19109
33879 msgid "The GNOME package to use."
33880 msgstr ""
33881
33882 #. type: defvr
33883 #: guix-git/doc/guix.texi:19112
33884 #, no-wrap
33885 msgid "{Scheme Variable} xfce-desktop-service-type"
33886 msgstr ""
33887
33888 #. type: defvr
33889 #: guix-git/doc/guix.texi:19116
33890 msgid "This is the type of a service to run the @uref{Xfce, https://xfce.org/} desktop environment. Its value is an @code{xfce-desktop-configuration} object (see below)."
33891 msgstr ""
33892
33893 #. type: defvr
33894 #: guix-git/doc/guix.texi:19121
33895 msgid "This service adds the @code{xfce} package to the system profile, and extends polkit with the ability for @code{thunar} to manipulate the file system as root from within a user session, after the user has authenticated with the administrator's password."
33896 msgstr ""
33897
33898 #. type: defvr
33899 #: guix-git/doc/guix.texi:19127
33900 msgid "Note that @code{xfce4-panel} and its plugin packages should be installed in the same profile to ensure compatibility. When using this service, you should add extra plugins (@code{xfce4-whiskermenu-plugin}, @code{xfce4-weather-plugin}, etc.) to the @code{packages} field of your @code{operating-system}."
33901 msgstr ""
33902
33903 #. type: deftp
33904 #: guix-git/doc/guix.texi:19129
33905 #, no-wrap
33906 msgid "{Data Type} xfce-desktop-configuration"
33907 msgstr ""
33908
33909 #. type: deftp
33910 #: guix-git/doc/guix.texi:19131
33911 msgid "Configuration record for the Xfce desktop environment."
33912 msgstr ""
33913
33914 #. type: item
33915 #: guix-git/doc/guix.texi:19133
33916 #, no-wrap
33917 msgid "@code{xfce} (default: @code{xfce})"
33918 msgstr ""
33919
33920 #. type: table
33921 #: guix-git/doc/guix.texi:19135
33922 msgid "The Xfce package to use."
33923 msgstr ""
33924
33925 #. type: deffn
33926 #: guix-git/doc/guix.texi:19138
33927 #, no-wrap
33928 msgid "{Scheme Variable} mate-desktop-service-type"
33929 msgstr ""
33930
33931 #. type: deffn
33932 #: guix-git/doc/guix.texi:19142
33933 msgid "This is the type of the service that runs the @uref{https://mate-desktop.org/, MATE desktop environment}. Its value is a @code{mate-desktop-configuration} object (see below)."
33934 msgstr ""
33935
33936 #. type: deffn
33937 #: guix-git/doc/guix.texi:19146
33938 msgid "This service adds the @code{mate} package to the system profile, and extends polkit with the actions from @code{mate-settings-daemon}."
33939 msgstr ""
33940
33941 #. type: deftp
33942 #: guix-git/doc/guix.texi:19148
33943 #, no-wrap
33944 msgid "{Data Type} mate-desktop-configuration"
33945 msgstr ""
33946
33947 #. type: deftp
33948 #: guix-git/doc/guix.texi:19150
33949 msgid "Configuration record for the MATE desktop environment."
33950 msgstr ""
33951
33952 #. type: item
33953 #: guix-git/doc/guix.texi:19152
33954 #, no-wrap
33955 msgid "@code{mate} (default: @code{mate})"
33956 msgstr ""
33957
33958 #. type: table
33959 #: guix-git/doc/guix.texi:19154
33960 msgid "The MATE package to use."
33961 msgstr ""
33962
33963 #. type: deffn
33964 #: guix-git/doc/guix.texi:19157
33965 #, no-wrap
33966 msgid "{Scheme Variable} lxqt-desktop-service-type"
33967 msgstr ""
33968
33969 #. type: deffn
33970 #: guix-git/doc/guix.texi:19161
33971 msgid "This is the type of the service that runs the @uref{https://lxqt.github.io, LXQt desktop environment}. Its value is a @code{lxqt-desktop-configuration} object (see below)."
33972 msgstr ""
33973
33974 #. type: deffn
33975 #: guix-git/doc/guix.texi:19164
33976 msgid "This service adds the @code{lxqt} package to the system profile."
33977 msgstr ""
33978
33979 #. type: deftp
33980 #: guix-git/doc/guix.texi:19166
33981 #, no-wrap
33982 msgid "{Data Type} lxqt-desktop-configuration"
33983 msgstr ""
33984
33985 #. type: deftp
33986 #: guix-git/doc/guix.texi:19168
33987 msgid "Configuration record for the LXQt desktop environment."
33988 msgstr ""
33989
33990 #. type: item
33991 #: guix-git/doc/guix.texi:19170
33992 #, no-wrap
33993 msgid "@code{lxqt} (default: @code{lxqt})"
33994 msgstr ""
33995
33996 #. type: table
33997 #: guix-git/doc/guix.texi:19172
33998 msgid "The LXQT package to use."
33999 msgstr ""
34000
34001 #. type: deffn
34002 #: guix-git/doc/guix.texi:19175
34003 #, no-wrap
34004 msgid "{Scheme Variable} enlightenment-desktop-service-type"
34005 msgstr ""
34006
34007 #. type: deffn
34008 #: guix-git/doc/guix.texi:19178
34009 msgid "Return a service that adds the @code{enlightenment} package to the system profile, and extends dbus with actions from @code{efl}."
34010 msgstr ""
34011
34012 #. type: deftp
34013 #: guix-git/doc/guix.texi:19180
34014 #, no-wrap
34015 msgid "{Data Type} enlightenment-desktop-service-configuration"
34016 msgstr ""
34017
34018 #. type: item
34019 #: guix-git/doc/guix.texi:19182
34020 #, no-wrap
34021 msgid "@code{enlightenment} (default: @code{enlightenment})"
34022 msgstr ""
34023
34024 #. type: table
34025 #: guix-git/doc/guix.texi:19184
34026 msgid "The enlightenment package to use."
34027 msgstr ""
34028
34029 #. type: Plain text
34030 #: guix-git/doc/guix.texi:19192
34031 msgid "Because the GNOME, Xfce and MATE desktop services pull in so many packages, the default @code{%desktop-services} variable doesn't include any of them by default. To add GNOME, Xfce or MATE, just @code{cons} them onto @code{%desktop-services} in the @code{services} field of your @code{operating-system}:"
34032 msgstr ""
34033
34034 #. type: lisp
34035 #: guix-git/doc/guix.texi:19203
34036 #, no-wrap
34037 msgid ""
34038 "(use-modules (gnu))\n"
34039 "(use-service-modules desktop)\n"
34040 "(operating-system\n"
34041 " ...\n"
34042 " ;; cons* adds items to the list given as its last argument.\n"
34043 " (services (cons* (service gnome-desktop-service-type)\n"
34044 " (service xfce-desktop-service)\n"
34045 " %desktop-services))\n"
34046 " ...)\n"
34047 msgstr ""
34048
34049 #. type: Plain text
34050 #: guix-git/doc/guix.texi:19207
34051 msgid "These desktop environments will then be available as options in the graphical login window."
34052 msgstr ""
34053
34054 #. type: Plain text
34055 #: guix-git/doc/guix.texi:19211
34056 msgid "The actual service definitions included in @code{%desktop-services} and provided by @code{(gnu services dbus)} and @code{(gnu services desktop)} are described below."
34057 msgstr ""
34058
34059 #. type: deffn
34060 #: guix-git/doc/guix.texi:19212
34061 #, no-wrap
34062 msgid "{Scheme Procedure} dbus-service [#:dbus @var{dbus}] [#:services '()]"
34063 msgstr ""
34064
34065 #. type: deffn
34066 #: guix-git/doc/guix.texi:19215
34067 msgid "Return a service that runs the ``system bus'', using @var{dbus}, with support for @var{services}."
34068 msgstr ""
34069
34070 #. type: deffn
34071 #: guix-git/doc/guix.texi:19219
34072 msgid "@uref{https://dbus.freedesktop.org/, D-Bus} is an inter-process communication facility. Its system bus is used to allow system services to communicate and to be notified of system-wide events."
34073 msgstr ""
34074
34075 #. type: deffn
34076 #: guix-git/doc/guix.texi:19224
34077 msgid "@var{services} must be a list of packages that provide an @file{etc/dbus-1/system.d} directory containing additional D-Bus configuration and policy files. For example, to allow avahi-daemon to use the system bus, @var{services} must be equal to @code{(list avahi)}."
34078 msgstr ""
34079
34080 #. type: deffn
34081 #: guix-git/doc/guix.texi:19226
34082 #, no-wrap
34083 msgid "{Scheme Procedure} elogind-service [#:config @var{config}]"
34084 msgstr ""
34085
34086 #. type: deffn
34087 #: guix-git/doc/guix.texi:19232
34088 msgid "Return a service that runs the @code{elogind} login and seat management daemon. @uref{https://github.com/elogind/elogind, Elogind} exposes a D-Bus interface that can be used to know which users are logged in, know what kind of sessions they have open, suspend the system, inhibit system suspend, reboot the system, and other tasks."
34089 msgstr ""
34090
34091 #. type: deffn
34092 #: guix-git/doc/guix.texi:19236
34093 msgid "Elogind handles most system-level power events for a computer, for example suspending the system when a lid is closed, or shutting it down when the power button is pressed."
34094 msgstr ""
34095
34096 #. type: deffn
34097 #: guix-git/doc/guix.texi:19241
34098 msgid "The @var{config} keyword argument specifies the configuration for elogind, and should be the result of an @code{(elogind-configuration (@var{parameter} @var{value})...)} invocation. Available parameters and their default values are:"
34099 msgstr ""
34100
34101 #. type: item
34102 #: guix-git/doc/guix.texi:19243
34103 #, no-wrap
34104 msgid "kill-user-processes?"
34105 msgstr ""
34106
34107 #. type: code{#1}
34108 #: guix-git/doc/guix.texi:19245 guix-git/doc/guix.texi:19265
34109 #: guix-git/doc/guix.texi:19267 guix-git/doc/guix.texi:19269
34110 #: guix-git/doc/guix.texi:19281
34111 msgid "#f"
34112 msgstr ""
34113
34114 #. type: item
34115 #: guix-git/doc/guix.texi:19245
34116 #, no-wrap
34117 msgid "kill-only-users"
34118 msgstr ""
34119
34120 #. type: code{#1}
34121 #: guix-git/doc/guix.texi:19247 guix-git/doc/guix.texi:19287
34122 msgid "()"
34123 msgstr ""
34124
34125 #. type: item
34126 #: guix-git/doc/guix.texi:19247
34127 #, no-wrap
34128 msgid "kill-exclude-users"
34129 msgstr ""
34130
34131 #. type: code{#1}
34132 #: guix-git/doc/guix.texi:19249
34133 msgid "(\"root\")"
34134 msgstr ""
34135
34136 #. type: item
34137 #: guix-git/doc/guix.texi:19249
34138 #, no-wrap
34139 msgid "inhibit-delay-max-seconds"
34140 msgstr ""
34141
34142 #. type: code{#1}
34143 #: guix-git/doc/guix.texi:19251
34144 msgid "5"
34145 msgstr ""
34146
34147 #. type: item
34148 #: guix-git/doc/guix.texi:19251
34149 #, no-wrap
34150 msgid "handle-power-key"
34151 msgstr ""
34152
34153 #. type: code{#1}
34154 #: guix-git/doc/guix.texi:19253
34155 msgid "poweroff"
34156 msgstr ""
34157
34158 #. type: item
34159 #: guix-git/doc/guix.texi:19253
34160 #, no-wrap
34161 msgid "handle-suspend-key"
34162 msgstr ""
34163
34164 #. type: code{#1}
34165 #: guix-git/doc/guix.texi:19255 guix-git/doc/guix.texi:19259
34166 msgid "suspend"
34167 msgstr ""
34168
34169 #. type: item
34170 #: guix-git/doc/guix.texi:19255
34171 #, no-wrap
34172 msgid "handle-hibernate-key"
34173 msgstr ""
34174
34175 #. type: code{#1}
34176 #: guix-git/doc/guix.texi:19257
34177 msgid "hibernate"
34178 msgstr ""
34179
34180 #. type: item
34181 #: guix-git/doc/guix.texi:19257
34182 #, no-wrap
34183 msgid "handle-lid-switch"
34184 msgstr ""
34185
34186 #. type: item
34187 #: guix-git/doc/guix.texi:19259
34188 #, no-wrap
34189 msgid "handle-lid-switch-docked"
34190 msgstr ""
34191
34192 #. type: code{#1}
34193 #: guix-git/doc/guix.texi:19261 guix-git/doc/guix.texi:19263
34194 #: guix-git/doc/guix.texi:19275
34195 msgid "ignore"
34196 msgstr ""
34197
34198 #. type: item
34199 #: guix-git/doc/guix.texi:19261
34200 #, no-wrap
34201 msgid "handle-lid-switch-external-power"
34202 msgstr ""
34203
34204 #. type: item
34205 #: guix-git/doc/guix.texi:19263
34206 #, no-wrap
34207 msgid "power-key-ignore-inhibited?"
34208 msgstr ""
34209
34210 #. type: item
34211 #: guix-git/doc/guix.texi:19265
34212 #, no-wrap
34213 msgid "suspend-key-ignore-inhibited?"
34214 msgstr ""
34215
34216 #. type: item
34217 #: guix-git/doc/guix.texi:19267
34218 #, no-wrap
34219 msgid "hibernate-key-ignore-inhibited?"
34220 msgstr ""
34221
34222 #. type: item
34223 #: guix-git/doc/guix.texi:19269
34224 #, no-wrap
34225 msgid "lid-switch-ignore-inhibited?"
34226 msgstr ""
34227
34228 #. type: code{#1}
34229 #: guix-git/doc/guix.texi:19271 guix-git/doc/guix.texi:19283
34230 msgid "#t"
34231 msgstr ""
34232
34233 #. type: item
34234 #: guix-git/doc/guix.texi:19271
34235 #, no-wrap
34236 msgid "holdoff-timeout-seconds"
34237 msgstr ""
34238
34239 #. type: code{#1}
34240 #: guix-git/doc/guix.texi:19273
34241 msgid "30"
34242 msgstr ""
34243
34244 #. type: item
34245 #: guix-git/doc/guix.texi:19273
34246 #, no-wrap
34247 msgid "idle-action"
34248 msgstr ""
34249
34250 #. type: item
34251 #: guix-git/doc/guix.texi:19275
34252 #, no-wrap
34253 msgid "idle-action-seconds"
34254 msgstr ""
34255
34256 #. type: code{#1}
34257 #: guix-git/doc/guix.texi:19277
34258 msgid "(* 30 60)"
34259 msgstr ""
34260
34261 #. type: item
34262 #: guix-git/doc/guix.texi:19277
34263 #, no-wrap
34264 msgid "runtime-directory-size-percent"
34265 msgstr ""
34266
34267 #. type: code{#1}
34268 #: guix-git/doc/guix.texi:19279
34269 msgid "10"
34270 msgstr ""
34271
34272 #. type: item
34273 #: guix-git/doc/guix.texi:19279
34274 #, no-wrap
34275 msgid "runtime-directory-size"
34276 msgstr ""
34277
34278 #. type: item
34279 #: guix-git/doc/guix.texi:19281
34280 #, no-wrap
34281 msgid "remove-ipc?"
34282 msgstr ""
34283
34284 #. type: item
34285 #: guix-git/doc/guix.texi:19283
34286 #, no-wrap
34287 msgid "suspend-state"
34288 msgstr ""
34289
34290 #. type: code{#1}
34291 #: guix-git/doc/guix.texi:19285
34292 msgid "(\"mem\" \"standby\" \"freeze\")"
34293 msgstr ""
34294
34295 #. type: item
34296 #: guix-git/doc/guix.texi:19285
34297 #, no-wrap
34298 msgid "suspend-mode"
34299 msgstr ""
34300
34301 #. type: item
34302 #: guix-git/doc/guix.texi:19287
34303 #, no-wrap
34304 msgid "hibernate-state"
34305 msgstr ""
34306
34307 #. type: code{#1}
34308 #: guix-git/doc/guix.texi:19289 guix-git/doc/guix.texi:19293
34309 msgid "(\"disk\")"
34310 msgstr ""
34311
34312 #. type: item
34313 #: guix-git/doc/guix.texi:19289
34314 #, no-wrap
34315 msgid "hibernate-mode"
34316 msgstr ""
34317
34318 #. type: code{#1}
34319 #: guix-git/doc/guix.texi:19291
34320 msgid "(\"platform\" \"shutdown\")"
34321 msgstr ""
34322
34323 #. type: item
34324 #: guix-git/doc/guix.texi:19291
34325 #, no-wrap
34326 msgid "hybrid-sleep-state"
34327 msgstr ""
34328
34329 #. type: item
34330 #: guix-git/doc/guix.texi:19293
34331 #, no-wrap
34332 msgid "hybrid-sleep-mode"
34333 msgstr ""
34334
34335 #. type: code{#1}
34336 #: guix-git/doc/guix.texi:19295
34337 msgid "(\"suspend\" \"platform\" \"shutdown\")"
34338 msgstr ""
34339
34340 #. type: deffn
34341 #: guix-git/doc/guix.texi:19298
34342 #, no-wrap
34343 msgid "{Scheme Procedure} accountsservice-service @"
34344 msgstr ""
34345
34346 #. type: deffn
34347 #: guix-git/doc/guix.texi:19306
34348 msgid "[#:accountsservice @var{accountsservice}] Return a service that runs AccountsService, a system service that can list available accounts, change their passwords, and so on. AccountsService integrates with PolicyKit to enable unprivileged users to acquire the capability to modify their system configuration. @uref{https://www.freedesktop.org/wiki/Software/AccountsService/, the accountsservice web site} for more information."
34349 msgstr ""
34350
34351 #. type: deffn
34352 #: guix-git/doc/guix.texi:19309
34353 msgid "The @var{accountsservice} keyword argument is the @code{accountsservice} package to expose as a service."
34354 msgstr ""
34355
34356 #. type: deffn
34357 #: guix-git/doc/guix.texi:19311
34358 #, no-wrap
34359 msgid "{Scheme Procedure} polkit-service @"
34360 msgstr ""
34361
34362 #. type: deffn
34363 #: guix-git/doc/guix.texi:19320
34364 msgid "[#:polkit @var{polkit}] Return a service that runs the @uref{https://www.freedesktop.org/wiki/Software/polkit/, Polkit privilege management service}, which allows system administrators to grant access to privileged operations in a structured way. By querying the Polkit service, a privileged system component can know when it should grant additional capabilities to ordinary users. For example, an ordinary user can be granted the capability to suspend the system if the user is logged in locally."
34365 msgstr ""
34366
34367 #. type: defvr
34368 #: guix-git/doc/guix.texi:19322
34369 #, no-wrap
34370 msgid "{Scheme Variable} polkit-wheel-service"
34371 msgstr ""
34372
34373 #. type: defvr
34374 #: guix-git/doc/guix.texi:19327
34375 msgid "Service that adds the @code{wheel} group as admins to the Polkit service. This makes it so that users in the @code{wheel} group are queried for their own passwords when performing administrative actions instead of @code{root}'s, similar to the behaviour used by @code{sudo}."
34376 msgstr ""
34377
34378 #. type: defvr
34379 #: guix-git/doc/guix.texi:19329
34380 #, no-wrap
34381 msgid "{Scheme Variable} upower-service-type"
34382 msgstr ""
34383
34384 #. type: defvr
34385 #: guix-git/doc/guix.texi:19333
34386 msgid "Service that runs @uref{https://upower.freedesktop.org/, @command{upowerd}}, a system-wide monitor for power consumption and battery levels, with the given configuration settings."
34387 msgstr ""
34388
34389 #. type: defvr
34390 #: guix-git/doc/guix.texi:19336
34391 msgid "It implements the @code{org.freedesktop.UPower} D-Bus interface, and is notably used by GNOME."
34392 msgstr ""
34393
34394 #. type: deftp
34395 #: guix-git/doc/guix.texi:19338
34396 #, no-wrap
34397 msgid "{Data Type} upower-configuration"
34398 msgstr ""
34399
34400 #. type: deftp
34401 #: guix-git/doc/guix.texi:19340
34402 msgid "Data type representation the configuration for UPower."
34403 msgstr ""
34404
34405 #. type: item
34406 #: guix-git/doc/guix.texi:19343
34407 #, no-wrap
34408 msgid "@code{upower} (default: @var{upower})"
34409 msgstr ""
34410
34411 #. type: table
34412 #: guix-git/doc/guix.texi:19345
34413 msgid "Package to use for @code{upower}."
34414 msgstr ""
34415
34416 #. type: item
34417 #: guix-git/doc/guix.texi:19346
34418 #, no-wrap
34419 msgid "@code{watts-up-pro?} (default: @code{#f})"
34420 msgstr ""
34421
34422 #. type: table
34423 #: guix-git/doc/guix.texi:19348
34424 msgid "Enable the Watts Up Pro device."
34425 msgstr ""
34426
34427 #. type: item
34428 #: guix-git/doc/guix.texi:19349
34429 #, no-wrap
34430 msgid "@code{poll-batteries?} (default: @code{#t})"
34431 msgstr ""
34432
34433 #. type: table
34434 #: guix-git/doc/guix.texi:19351
34435 msgid "Enable polling the kernel for battery level changes."
34436 msgstr ""
34437
34438 #. type: item
34439 #: guix-git/doc/guix.texi:19352
34440 #, no-wrap
34441 msgid "@code{ignore-lid?} (default: @code{#f})"
34442 msgstr ""
34443
34444 #. type: table
34445 #: guix-git/doc/guix.texi:19354
34446 msgid "Ignore the lid state, this can be useful if it's incorrect on a device."
34447 msgstr ""
34448
34449 #. type: item
34450 #: guix-git/doc/guix.texi:19355
34451 #, no-wrap
34452 msgid "@code{use-percentage-for-policy?} (default: @code{#f})"
34453 msgstr ""
34454
34455 #. type: table
34456 #: guix-git/doc/guix.texi:19358
34457 msgid "Whether battery percentage based policy should be used. The default is to use the time left, change to @code{#t} to use the percentage."
34458 msgstr ""
34459
34460 #. type: item
34461 #: guix-git/doc/guix.texi:19359
34462 #, no-wrap
34463 msgid "@code{percentage-low} (default: @code{10})"
34464 msgstr ""
34465
34466 #. type: table
34467 #: guix-git/doc/guix.texi:19362
34468 msgid "When @code{use-percentage-for-policy?} is @code{#t}, this sets the percentage at which the battery is considered low."
34469 msgstr ""
34470
34471 #. type: item
34472 #: guix-git/doc/guix.texi:19363
34473 #, no-wrap
34474 msgid "@code{percentage-critical} (default: @code{3})"
34475 msgstr ""
34476
34477 #. type: table
34478 #: guix-git/doc/guix.texi:19366
34479 msgid "When @code{use-percentage-for-policy?} is @code{#t}, this sets the percentage at which the battery is considered critical."
34480 msgstr ""
34481
34482 #. type: item
34483 #: guix-git/doc/guix.texi:19367
34484 #, no-wrap
34485 msgid "@code{percentage-action} (default: @code{2})"
34486 msgstr ""
34487
34488 #. type: table
34489 #: guix-git/doc/guix.texi:19370
34490 msgid "When @code{use-percentage-for-policy?} is @code{#t}, this sets the percentage at which action will be taken."
34491 msgstr ""
34492
34493 #. type: item
34494 #: guix-git/doc/guix.texi:19371
34495 #, no-wrap
34496 msgid "@code{time-low} (default: @code{1200})"
34497 msgstr ""
34498
34499 #. type: table
34500 #: guix-git/doc/guix.texi:19374
34501 msgid "When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining in seconds at which the battery is considered low."
34502 msgstr ""
34503
34504 #. type: item
34505 #: guix-git/doc/guix.texi:19375
34506 #, no-wrap
34507 msgid "@code{time-critical} (default: @code{300})"
34508 msgstr ""
34509
34510 #. type: table
34511 #: guix-git/doc/guix.texi:19378
34512 msgid "When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining in seconds at which the battery is considered critical."
34513 msgstr ""
34514
34515 #. type: item
34516 #: guix-git/doc/guix.texi:19379
34517 #, no-wrap
34518 msgid "@code{time-action} (default: @code{120})"
34519 msgstr ""
34520
34521 #. type: table
34522 #: guix-git/doc/guix.texi:19382
34523 msgid "When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining in seconds at which action will be taken."
34524 msgstr ""
34525
34526 #. type: item
34527 #: guix-git/doc/guix.texi:19383
34528 #, no-wrap
34529 msgid "@code{critical-power-action} (default: @code{'hybrid-sleep})"
34530 msgstr ""
34531
34532 #. type: table
34533 #: guix-git/doc/guix.texi:19386
34534 msgid "The action taken when @code{percentage-action} or @code{time-action} is reached (depending on the configuration of @code{use-percentage-for-policy?})."
34535 msgstr ""
34536
34537 #. type: table
34538 #: guix-git/doc/guix.texi:19388
34539 msgid "Possible values are:"
34540 msgstr ""
34541
34542 #. type: code{#1}
34543 #: guix-git/doc/guix.texi:19392
34544 msgid "'power-off"
34545 msgstr ""
34546
34547 #. type: code{#1}
34548 #: guix-git/doc/guix.texi:19395
34549 msgid "'hibernate"
34550 msgstr ""
34551
34552 #. type: itemize
34553 #: guix-git/doc/guix.texi:19398
34554 msgid "@code{'hybrid-sleep}."
34555 msgstr ""
34556
34557 #. type: deffn
34558 #: guix-git/doc/guix.texi:19403
34559 #, no-wrap
34560 msgid "{Scheme Procedure} udisks-service [#:udisks @var{udisks}]"
34561 msgstr ""
34562
34563 #. type: deffn
34564 #: guix-git/doc/guix.texi:19413
34565 msgid "Return a service for @uref{https://udisks.freedesktop.org/docs/latest/, UDisks}, a @dfn{disk management} daemon that provides user interfaces with notifications and ways to mount/unmount disks. Programs that talk to UDisks include the @command{udisksctl} command, part of UDisks, and GNOME Disks. Note that Udisks relies on the @command{mount} command, so it will only be able to use the file-system utilities installed in the system profile. For example if you want to be able to mount NTFS file-systems in read and write fashion, you'll need to have @code{ntfs-3g} installed system-wide."
34566 msgstr ""
34567
34568 #. type: deffn
34569 #: guix-git/doc/guix.texi:19415
34570 #, no-wrap
34571 msgid "{Scheme Variable} colord-service-type"
34572 msgstr ""
34573
34574 #. type: deffn
34575 #: guix-git/doc/guix.texi:19422
34576 msgid "This is the type of the service that runs @command{colord}, a system service with a D-Bus interface to manage the color profiles of input and output devices such as screens and scanners. It is notably used by the GNOME Color Manager graphical tool. See @uref{https://www.freedesktop.org/software/colord/, the colord web site} for more information."
34577 msgstr ""
34578
34579 #. type: cindex
34580 #: guix-git/doc/guix.texi:19424
34581 #, no-wrap
34582 msgid "scanner access"
34583 msgstr ""
34584
34585 #. type: defvr
34586 #: guix-git/doc/guix.texi:19425
34587 #, no-wrap
34588 msgid "{Scheme Variable} sane-service-type"
34589 msgstr ""
34590
34591 #. type: defvr
34592 #: guix-git/doc/guix.texi:19431
34593 msgid "This service provides access to scanners @i{via} @uref{http://www.sane-project.org, SANE} by installing the necessary udev rules. It is included in @code{%desktop-services} (@pxref{Desktop Services}) and relies by default on @code{sane-backends-minimal} package (see below) for hardware support."
34594 msgstr ""
34595
34596 #. type: defvr
34597 #: guix-git/doc/guix.texi:19433
34598 #, no-wrap
34599 msgid "{Scheme Variable} sane-backends-minimal"
34600 msgstr ""
34601
34602 #. type: defvr
34603 #: guix-git/doc/guix.texi:19436
34604 msgid "The default package which the @code{sane-service-type} installs. It supports many recent scanners."
34605 msgstr ""
34606
34607 #. type: defvr
34608 #: guix-git/doc/guix.texi:19438
34609 #, no-wrap
34610 msgid "{Scheme Variable} sane-backends"
34611 msgstr ""
34612
34613 #. type: defvr
34614 #: guix-git/doc/guix.texi:19445
34615 msgid "This package includes support for all scanners that @code{sane-backends-minimal} supports, plus older Hewlett-Packard scanners supported by @code{hplip} package. In order to use this on a system which relies on @code{%desktop-services}, you may use @code{modify-services} (@pxref{Service Reference, @code{modify-services}}) as illustrated below:"
34616 msgstr ""
34617
34618 #. type: lisp
34619 #: guix-git/doc/guix.texi:19454
34620 #, no-wrap
34621 msgid ""
34622 "(use-modules (gnu))\n"
34623 "(use-service-modules\n"
34624 " @dots{}\n"
34625 " desktop)\n"
34626 "(use-package-modules\n"
34627 " @dots{}\n"
34628 " scanner)\n"
34629 "\n"
34630 msgstr ""
34631
34632 #. type: lisp
34633 #: guix-git/doc/guix.texi:19459
34634 #, no-wrap
34635 msgid ""
34636 "(define %my-desktop-services\n"
34637 " ;; List of desktop services that supports a broader range of scanners.\n"
34638 " (modify-services %desktop-services\n"
34639 " (sane-service-type _ => sane-backends)))\n"
34640 "\n"
34641 msgstr ""
34642
34643 #. type: lisp
34644 #: guix-git/doc/guix.texi:19463
34645 #, no-wrap
34646 msgid ""
34647 "(operating-system\n"
34648 " @dots{}\n"
34649 " (services %my-desktop-services)\n"
34650 msgstr ""
34651
34652 #. type: deffn
34653 #: guix-git/doc/guix.texi:19466
34654 #, no-wrap
34655 msgid "{Scheme Procedure} geoclue-application name [#:allowed? #t] [#:system? #f] [#:users '()]"
34656 msgstr ""
34657
34658 #. type: deffn
34659 #: guix-git/doc/guix.texi:19475
34660 msgid "Return a configuration allowing an application to access GeoClue location data. @var{name} is the Desktop ID of the application, without the @code{.desktop} part. If @var{allowed?} is true, the application will have access to location information by default. The boolean @var{system?} value indicates whether an application is a system component or not. Finally @var{users} is a list of UIDs of all users for which this application is allowed location info access. An empty users list means that all users are allowed."
34661 msgstr ""
34662
34663 #. type: defvr
34664 #: guix-git/doc/guix.texi:19477
34665 #, no-wrap
34666 msgid "{Scheme Variable} %standard-geoclue-applications"
34667 msgstr ""
34668
34669 #. type: defvr
34670 #: guix-git/doc/guix.texi:19484
34671 msgid "The standard list of well-known GeoClue application configurations, granting authority to the GNOME date-and-time utility to ask for the current location in order to set the time zone, and allowing the IceCat and Epiphany web browsers to request location information. IceCat and Epiphany both query the user before allowing a web page to know the user's location."
34672 msgstr ""
34673
34674 #. type: deffn
34675 #: guix-git/doc/guix.texi:19486
34676 #, no-wrap
34677 msgid "{Scheme Procedure} geoclue-service [#:colord @var{colord}] @"
34678 msgstr ""
34679
34680 #. type: deffn
34681 #: guix-git/doc/guix.texi:19499
34682 msgid "[#:whitelist '()] @ [#:wifi-geolocation-url \"https://location.services.mozilla.com/v1/geolocate?key=geoclue\"] @ [#:submit-data? #f] [#:wifi-submission-url \"https://location.services.mozilla.com/v1/submit?key=geoclue\"] @ [#:submission-nick \"geoclue\"] @ [#:applications %standard-geoclue-applications] Return a service that runs the GeoClue location service. This service provides a D-Bus interface to allow applications to request access to a user's physical location, and optionally to add information to online location databases. See @uref{https://wiki.freedesktop.org/www/Software/GeoClue/, the GeoClue web site} for more information."
34683 msgstr ""
34684
34685 #. type: deffn
34686 #: guix-git/doc/guix.texi:19501
34687 #, no-wrap
34688 msgid "{Scheme Procedure} bluetooth-service [#:bluez @var{bluez}] @"
34689 msgstr ""
34690
34691 #. type: deffn
34692 #: guix-git/doc/guix.texi:19508
34693 msgid "[@w{#:auto-enable? #f}] Return a service that runs the @command{bluetoothd} daemon, which manages all the Bluetooth devices and provides a number of D-Bus interfaces. When AUTO-ENABLE? is true, the bluetooth controller is powered automatically at boot, which can be useful when using a bluetooth keyboard or mouse."
34694 msgstr ""
34695
34696 #. type: deffn
34697 #: guix-git/doc/guix.texi:19510
34698 msgid "Users need to be in the @code{lp} group to access the D-Bus service."
34699 msgstr ""
34700
34701 #. type: defvr
34702 #: guix-git/doc/guix.texi:19512
34703 #, no-wrap
34704 msgid "{Scheme Variable} gnome-keyring-service-type"
34705 msgstr ""
34706
34707 #. type: defvr
34708 #: guix-git/doc/guix.texi:19516
34709 msgid "This is the type of the service that adds the @uref{https://wiki.gnome.org/Projects/GnomeKeyring, GNOME Keyring}. Its value is a @code{gnome-keyring-configuration} object (see below)."
34710 msgstr ""
34711
34712 #. type: defvr
34713 #: guix-git/doc/guix.texi:19520
34714 msgid "This service adds the @code{gnome-keyring} package to the system profile and extends PAM with entries using @code{pam_gnome_keyring.so}, unlocking a user's login keyring when they log in or setting its password with passwd."
34715 msgstr ""
34716
34717 #. type: deftp
34718 #: guix-git/doc/guix.texi:19522
34719 #, no-wrap
34720 msgid "{Data Type} gnome-keyring-configuration"
34721 msgstr ""
34722
34723 #. type: deftp
34724 #: guix-git/doc/guix.texi:19524
34725 msgid "Configuration record for the GNOME Keyring service."
34726 msgstr ""
34727
34728 #. type: item
34729 #: guix-git/doc/guix.texi:19526
34730 #, no-wrap
34731 msgid "@code{keyring} (default: @code{gnome-keyring})"
34732 msgstr ""
34733
34734 #. type: table
34735 #: guix-git/doc/guix.texi:19528
34736 msgid "The GNOME keyring package to use."
34737 msgstr ""
34738
34739 #. type: code{#1}
34740 #: guix-git/doc/guix.texi:19529
34741 #, no-wrap
34742 msgid "pam-services"
34743 msgstr ""
34744
34745 #. type: table
34746 #: guix-git/doc/guix.texi:19534
34747 msgid "A list of @code{(@var{service} . @var{kind})} pairs denoting PAM services to extend, where @var{service} is the name of an existing service to extend and @var{kind} is one of @code{login} or @code{passwd}."
34748 msgstr ""
34749
34750 #. type: table
34751 #: guix-git/doc/guix.texi:19540
34752 msgid "If @code{login} is given, it adds an optional @code{pam_gnome_keyring.so} to the auth block without arguments and to the session block with @code{auto_start}. If @code{passwd} is given, it adds an optional @code{pam_gnome_keyring.so} to the password block without arguments."
34753 msgstr ""
34754
34755 #. type: table
34756 #: guix-git/doc/guix.texi:19543
34757 msgid "By default, this field contains ``gdm-password'' with the value @code{login} and ``passwd'' is with the value @code{passwd}."
34758 msgstr ""
34759
34760 #. type: cindex
34761 #: guix-git/doc/guix.texi:19550
34762 #, no-wrap
34763 msgid "sound support"
34764 msgstr ""
34765
34766 #. type: cindex
34767 #: guix-git/doc/guix.texi:19551
34768 #, no-wrap
34769 msgid "ALSA"
34770 msgstr ""
34771
34772 #. type: cindex
34773 #: guix-git/doc/guix.texi:19552
34774 #, no-wrap
34775 msgid "PulseAudio, sound support"
34776 msgstr ""
34777
34778 #. type: Plain text
34779 #: guix-git/doc/guix.texi:19557
34780 msgid "The @code{(gnu services sound)} module provides a service to configure the Advanced Linux Sound Architecture (ALSA) system, which makes PulseAudio the preferred ALSA output driver."
34781 msgstr ""
34782
34783 #. type: deffn
34784 #: guix-git/doc/guix.texi:19558
34785 #, no-wrap
34786 msgid "{Scheme Variable} alsa-service-type"
34787 msgstr ""
34788
34789 #. type: deffn
34790 #: guix-git/doc/guix.texi:19563
34791 msgid "This is the type for the @uref{https://alsa-project.org/, Advanced Linux Sound Architecture} (ALSA) system, which generates the @file{/etc/asound.conf} configuration file. The value for this type is a @command{alsa-configuration} record as in this example:"
34792 msgstr ""
34793
34794 #. type: lisp
34795 #: guix-git/doc/guix.texi:19566
34796 #, no-wrap
34797 msgid "(service alsa-service-type)\n"
34798 msgstr ""
34799
34800 #. type: deffn
34801 #: guix-git/doc/guix.texi:19569
34802 msgid "See below for details about @code{alsa-configuration}."
34803 msgstr ""
34804
34805 #. type: deftp
34806 #: guix-git/doc/guix.texi:19571
34807 #, no-wrap
34808 msgid "{Data Type} alsa-configuration"
34809 msgstr ""
34810
34811 #. type: deftp
34812 #: guix-git/doc/guix.texi:19573
34813 msgid "Data type representing the configuration for @code{alsa-service}."
34814 msgstr ""
34815
34816 #. type: item
34817 #: guix-git/doc/guix.texi:19575
34818 #, no-wrap
34819 msgid "@code{alsa-plugins} (default: @var{alsa-plugins})"
34820 msgstr ""
34821
34822 #. type: table
34823 #: guix-git/doc/guix.texi:19577
34824 msgid "@code{alsa-plugins} package to use."
34825 msgstr ""
34826
34827 #. type: item
34828 #: guix-git/doc/guix.texi:19578
34829 #, no-wrap
34830 msgid "@code{pulseaudio?} (default: @var{#t})"
34831 msgstr ""
34832
34833 #. type: table
34834 #: guix-git/doc/guix.texi:19581
34835 msgid "Whether ALSA applications should transparently be made to use the @uref{https://www.pulseaudio.org/, PulseAudio} sound server."
34836 msgstr ""
34837
34838 #. type: table
34839 #: guix-git/doc/guix.texi:19585
34840 msgid "Using PulseAudio allows you to run several sound-producing applications at the same time and to individual control them @i{via} @command{pavucontrol}, among other things."
34841 msgstr ""
34842
34843 #. type: item
34844 #: guix-git/doc/guix.texi:19586
34845 #, no-wrap
34846 msgid "@code{extra-options} (default: @var{\"\"})"
34847 msgstr ""
34848
34849 #. type: table
34850 #: guix-git/doc/guix.texi:19588
34851 msgid "String to append to the @file{/etc/asound.conf} file."
34852 msgstr ""
34853
34854 #. type: Plain text
34855 #: guix-git/doc/guix.texi:19594
34856 msgid "Individual users who want to override the system configuration of ALSA can do it with the @file{~/.asoundrc} file:"
34857 msgstr ""
34858
34859 #. type: example
34860 #: guix-git/doc/guix.texi:19600
34861 #, no-wrap
34862 msgid ""
34863 "# In guix, we have to specify the absolute path for plugins.\n"
34864 "pcm_type.jack @{\n"
34865 " lib \"/home/alice/.guix-profile/lib/alsa-lib/libasound_module_pcm_jack.so\"\n"
34866 "@}\n"
34867 "\n"
34868 msgstr ""
34869
34870 #. type: example
34871 #: guix-git/doc/guix.texi:19609
34872 #, no-wrap
34873 msgid ""
34874 "# Routing ALSA to jack:\n"
34875 "# <http://jackaudio.org/faq/routing_alsa.html>.\n"
34876 "pcm.rawjack @{\n"
34877 " type jack\n"
34878 " playback_ports @{\n"
34879 " 0 system:playback_1\n"
34880 " 1 system:playback_2\n"
34881 " @}\n"
34882 "\n"
34883 msgstr ""
34884
34885 #. type: example
34886 #: guix-git/doc/guix.texi:19615
34887 #, no-wrap
34888 msgid ""
34889 " capture_ports @{\n"
34890 " 0 system:capture_1\n"
34891 " 1 system:capture_2\n"
34892 " @}\n"
34893 "@}\n"
34894 "\n"
34895 msgstr ""
34896
34897 #. type: example
34898 #: guix-git/doc/guix.texi:19622
34899 #, no-wrap
34900 msgid ""
34901 "pcm.!default @{\n"
34902 " type plug\n"
34903 " slave @{\n"
34904 " pcm \"rawjack\"\n"
34905 " @}\n"
34906 "@}\n"
34907 msgstr ""
34908
34909 #. type: Plain text
34910 #: guix-git/doc/guix.texi:19626
34911 msgid "See @uref{https://www.alsa-project.org/main/index.php/Asoundrc} for the details."
34912 msgstr ""
34913
34914 #. type: deffn
34915 #: guix-git/doc/guix.texi:19627
34916 #, no-wrap
34917 msgid "{Scheme Variable} pulseaudio-service-type"
34918 msgstr ""
34919
34920 #. type: deffn
34921 #: guix-git/doc/guix.texi:19631
34922 msgid "This is the type for the @uref{https://www.pulseaudio.org/, PulseAudio} sound server. It exists to allow system overrides of the default settings via @code{pulseaudio-configuration}, see below."
34923 msgstr ""
34924
34925 #. type: quotation
34926 #: guix-git/doc/guix.texi:19637
34927 msgid "This service overrides per-user configuration files. If you want PulseAudio to honor configuration files in @file{~/.config/pulse} you have to unset the environment variables @env{PULSE_CONFIG} and @env{PULSE_CLIENTCONFIG} in your @file{~/.bash_profile}."
34928 msgstr ""
34929
34930 #. type: quotation
34931 #: guix-git/doc/guix.texi:19645
34932 msgid "This service on its own does not ensure, that the @code{pulseaudio} package exists on your machine. It merely adds configuration files for it, as detailed below. In the (admittedly unlikely) case, that you find yourself without a @code{pulseaudio} package, consider enabling it through the @code{alsa-service-type} above."
34933 msgstr ""
34934
34935 #. type: deftp
34936 #: guix-git/doc/guix.texi:19648
34937 #, no-wrap
34938 msgid "{Data Type} pulseaudio-configuration"
34939 msgstr ""
34940
34941 #. type: deftp
34942 #: guix-git/doc/guix.texi:19650
34943 msgid "Data type representing the configuration for @code{pulseaudio-service}."
34944 msgstr ""
34945
34946 #. type: item
34947 #: guix-git/doc/guix.texi:19652
34948 #, no-wrap
34949 msgid "@code{client-conf} (default: @code{'()})"
34950 msgstr ""
34951
34952 #. type: table
34953 #: guix-git/doc/guix.texi:19657
34954 msgid "List of settings to set in @file{client.conf}. Accepts a list of strings or a symbol-value pairs. A string will be inserted as-is with a newline added. A pair will be formatted as ``key = value'', again with a newline added."
34955 msgstr ""
34956
34957 #. type: item
34958 #: guix-git/doc/guix.texi:19658
34959 #, no-wrap
34960 msgid "@code{daemon-conf} (default: @code{'((flat-volumes . no))})"
34961 msgstr ""
34962
34963 #. type: table
34964 #: guix-git/doc/guix.texi:19661
34965 msgid "List of settings to set in @file{daemon.conf}, formatted just like @var{client-conf}."
34966 msgstr ""
34967
34968 #. type: item
34969 #: guix-git/doc/guix.texi:19662
34970 #, no-wrap
34971 msgid "@code{script-file} (default: @code{(file-append pulseaudio \"/etc/pulse/default.pa\")})"
34972 msgstr ""
34973
34974 #. type: table
34975 #: guix-git/doc/guix.texi:19664
34976 msgid "Script file to use as @file{default.pa}."
34977 msgstr ""
34978
34979 #. type: item
34980 #: guix-git/doc/guix.texi:19665
34981 #, no-wrap
34982 msgid "@code{system-script-file} (default: @code{(file-append pulseaudio \"/etc/pulse/system.pa\")})"
34983 msgstr ""
34984
34985 #. type: table
34986 #: guix-git/doc/guix.texi:19667
34987 msgid "Script file to use as @file{system.pa}."
34988 msgstr ""
34989
34990 #. type: deffn
34991 #: guix-git/doc/guix.texi:19670
34992 #, no-wrap
34993 msgid "{Scheme Variable} ladspa-service-type"
34994 msgstr ""
34995
34996 #. type: deffn
34997 #: guix-git/doc/guix.texi:19673
34998 msgid "This service sets the @var{LADSPA_PATH} variable, so that programs, which respect it, e.g. PulseAudio, can load LADSPA plugins."
34999 msgstr ""
35000
35001 #. type: deffn
35002 #: guix-git/doc/guix.texi:19676
35003 msgid "The following example will setup the service to enable modules from the @code{swh-plugins} package:"
35004 msgstr ""
35005
35006 #. type: lisp
35007 #: guix-git/doc/guix.texi:19680
35008 #, no-wrap
35009 msgid ""
35010 "(service ladspa-service-type\n"
35011 " (ladspa-configuration (plugins (list swh-plugins))))\n"
35012 msgstr ""
35013
35014 #. type: deffn
35015 #: guix-git/doc/guix.texi:19684
35016 msgid "See @uref{http://plugin.org.uk/ladspa-swh/docs/ladspa-swh.html} for the details."
35017 msgstr ""
35018
35019 #. type: cindex
35020 #: guix-git/doc/guix.texi:19691
35021 #, no-wrap
35022 msgid "SQL"
35023 msgstr ""
35024
35025 #. type: Plain text
35026 #: guix-git/doc/guix.texi:19693
35027 msgid "The @code{(gnu services databases)} module provides the following services."
35028 msgstr ""
35029
35030 #. type: subsubheading
35031 #: guix-git/doc/guix.texi:19694
35032 #, no-wrap
35033 msgid "PostgreSQL"
35034 msgstr ""
35035
35036 #. type: Plain text
35037 #: guix-git/doc/guix.texi:19698
35038 msgid "The following example describes a PostgreSQL service with the default configuration."
35039 msgstr ""
35040
35041 #. type: lisp
35042 #: guix-git/doc/guix.texi:19703
35043 #, no-wrap
35044 msgid ""
35045 "(service postgresql-service-type\n"
35046 " (postgresql-configuration\n"
35047 " (postgresql postgresql-10)))\n"
35048 msgstr ""
35049
35050 #. type: Plain text
35051 #: guix-git/doc/guix.texi:19709
35052 msgid "If the services fails to start, it may be due to an incompatible cluster already present in @var{data-directory}. Adjust it (or, if you don't need the cluster anymore, delete @var{data-directory}), then restart the service."
35053 msgstr ""
35054
35055 #. type: Plain text
35056 #: guix-git/doc/guix.texi:19716
35057 msgid "Peer authentication is used by default and the @code{postgres} user account has no shell, which prevents the direct execution of @code{psql} commands as this user. To use @code{psql}, you can temporarily log in as @code{postgres} using a shell, create a PostgreSQL superuser with the same name as one of the system users and then create the associated database."
35058 msgstr ""
35059
35060 #. type: example
35061 #: guix-git/doc/guix.texi:19721
35062 #, no-wrap
35063 msgid ""
35064 "sudo -u postgres -s /bin/sh\n"
35065 "createuser --interactive\n"
35066 "createdb $MY_USER_LOGIN # Replace appropriately.\n"
35067 msgstr ""
35068
35069 #. type: deftp
35070 #: guix-git/doc/guix.texi:19723
35071 #, no-wrap
35072 msgid "{Data Type} postgresql-configuration"
35073 msgstr ""
35074
35075 #. type: deftp
35076 #: guix-git/doc/guix.texi:19726
35077 msgid "Data type representing the configuration for the @code{postgresql-service-type}."
35078 msgstr ""
35079
35080 #. type: code{#1}
35081 #: guix-git/doc/guix.texi:19728
35082 #, no-wrap
35083 msgid "postgresql"
35084 msgstr ""
35085
35086 #. type: table
35087 #: guix-git/doc/guix.texi:19730
35088 msgid "PostgreSQL package to use for the service."
35089 msgstr ""
35090
35091 #. type: item
35092 #: guix-git/doc/guix.texi:19731
35093 #, no-wrap
35094 msgid "@code{port} (default: @code{5432})"
35095 msgstr ""
35096
35097 #. type: table
35098 #: guix-git/doc/guix.texi:19733
35099 msgid "Port on which PostgreSQL should listen."
35100 msgstr ""
35101
35102 #. type: table
35103 #: guix-git/doc/guix.texi:19736
35104 msgid "Locale to use as the default when creating the database cluster."
35105 msgstr ""
35106
35107 #. type: item
35108 #: guix-git/doc/guix.texi:19737
35109 #, no-wrap
35110 msgid "@code{config-file} (default: @code{(postgresql-config-file)})"
35111 msgstr ""
35112
35113 #. type: table
35114 #: guix-git/doc/guix.texi:19741
35115 msgid "The configuration file to use when running PostgreSQL@. The default behaviour uses the postgresql-config-file record with the default values for the fields."
35116 msgstr ""
35117
35118 #. type: item
35119 #: guix-git/doc/guix.texi:19742
35120 #, no-wrap
35121 msgid "@code{log-directory} (default: @code{\"/var/log/postgresql\"})"
35122 msgstr ""
35123
35124 #. type: table
35125 #: guix-git/doc/guix.texi:19746
35126 msgid "The directory where @command{pg_ctl} output will be written in a file named @code{\"pg_ctl.log\"}. This file can be useful to debug PostgreSQL configuration errors for instance."
35127 msgstr ""
35128
35129 #. type: item
35130 #: guix-git/doc/guix.texi:19747
35131 #, no-wrap
35132 msgid "@code{data-directory} (default: @code{\"/var/lib/postgresql/data\"})"
35133 msgstr ""
35134
35135 #. type: table
35136 #: guix-git/doc/guix.texi:19749
35137 msgid "Directory in which to store the data."
35138 msgstr ""
35139
35140 #. type: item
35141 #: guix-git/doc/guix.texi:19750
35142 #, no-wrap
35143 msgid "@code{extension-packages} (default: @code{'()})"
35144 msgstr ""
35145
35146 #. type: cindex
35147 #: guix-git/doc/guix.texi:19751
35148 #, no-wrap
35149 msgid "postgresql extension-packages"
35150 msgstr ""
35151
35152 #. type: table
35153 #: guix-git/doc/guix.texi:19756
35154 msgid "Additional extensions are loaded from packages listed in @var{extension-packages}. Extensions are available at runtime. For instance, to create a geographic database using the @code{postgis} extension, a user can configure the postgresql-service as in this example:"
35155 msgstr ""
35156
35157 #. type: cindex
35158 #: guix-git/doc/guix.texi:19757
35159 #, no-wrap
35160 msgid "postgis"
35161 msgstr ""
35162
35163 #. type: lisp
35164 #: guix-git/doc/guix.texi:19760
35165 #, no-wrap
35166 msgid ""
35167 "(use-package-modules databases geo)\n"
35168 "\n"
35169 msgstr ""
35170
35171 #. type: lisp
35172 #: guix-git/doc/guix.texi:19773
35173 #, no-wrap
35174 msgid ""
35175 "(operating-system\n"
35176 " ...\n"
35177 " ;; postgresql is required to run `psql' but postgis is not required for\n"
35178 " ;; proper operation.\n"
35179 " (packages (cons* postgresql %base-packages))\n"
35180 " (services\n"
35181 " (cons*\n"
35182 " (service postgresql-service-type\n"
35183 " (postgresql-configuration\n"
35184 " (postgresql postgresql-10)\n"
35185 " (extension-packages (list postgis))))\n"
35186 " %base-services)))\n"
35187 msgstr ""
35188
35189 #. type: table
35190 #: guix-git/doc/guix.texi:19777
35191 msgid "Then the extension becomes visible and you can initialise an empty geographic database in this way:"
35192 msgstr ""
35193
35194 #. type: example
35195 #: guix-git/doc/guix.texi:19784
35196 #, no-wrap
35197 msgid ""
35198 "psql -U postgres\n"
35199 "> create database postgistest;\n"
35200 "> \\connect postgistest;\n"
35201 "> create extension postgis;\n"
35202 "> create extension postgis_topology;\n"
35203 msgstr ""
35204
35205 #. type: table
35206 #: guix-git/doc/guix.texi:19789
35207 msgid "There is no need to add this field for contrib extensions such as hstore or dblink as they are already loadable by postgresql. This field is only required to add extensions provided by other packages."
35208 msgstr ""
35209
35210 #. type: deftp
35211 #: guix-git/doc/guix.texi:19793
35212 #, no-wrap
35213 msgid "{Data Type} postgresql-config-file"
35214 msgstr ""
35215
35216 #. type: deftp
35217 #: guix-git/doc/guix.texi:19799
35218 msgid "Data type representing the PostgreSQL configuration file. As shown in the following example, this can be used to customize the configuration of PostgreSQL@. Note that you can use any G-expression or filename in place of this record, if you already have a configuration file you'd like to use for example."
35219 msgstr ""
35220
35221 #. type: lisp
35222 #: guix-git/doc/guix.texi:19819
35223 #, no-wrap
35224 msgid ""
35225 "(service postgresql-service-type\n"
35226 " (postgresql-configuration\n"
35227 " (config-file\n"
35228 " (postgresql-config-file\n"
35229 " (log-destination \"stderr\")\n"
35230 " (hba-file\n"
35231 " (plain-file \"pg_hba.conf\"\n"
35232 " \"\n"
35233 "local\tall\tall\t\t\ttrust\n"
35234 "host\tall\tall\t127.0.0.1/32 \tmd5\n"
35235 "host\tall\tall\t::1/128 \tmd5\"))\n"
35236 " (extra-config\n"
35237 " '((\"session_preload_libraries\" \"auto_explain\")\n"
35238 " (\"random_page_cost\" 2)\n"
35239 " (\"auto_explain.log_min_duration\" \"100 ms\")\n"
35240 " (\"work_mem\" \"500 MB\")\n"
35241 " (\"logging_collector\" #t)\n"
35242 " (\"log_directory\" \"/var/log/postgresql\")))))))\n"
35243 msgstr ""
35244
35245 #. type: item
35246 #: guix-git/doc/guix.texi:19822
35247 #, no-wrap
35248 msgid "@code{log-destination} (default: @code{\"syslog\"})"
35249 msgstr ""
35250
35251 #. type: table
35252 #: guix-git/doc/guix.texi:19825
35253 msgid "The logging method to use for PostgreSQL@. Multiple values are accepted, separated by commas."
35254 msgstr ""
35255
35256 #. type: item
35257 #: guix-git/doc/guix.texi:19826
35258 #, no-wrap
35259 msgid "@code{hba-file} (default: @code{%default-postgres-hba})"
35260 msgstr ""
35261
35262 #. type: table
35263 #: guix-git/doc/guix.texi:19829
35264 msgid "Filename or G-expression for the host-based authentication configuration."
35265 msgstr ""
35266
35267 #. type: item
35268 #: guix-git/doc/guix.texi:19830
35269 #, no-wrap
35270 msgid "@code{ident-file} (default: @code{%default-postgres-ident})"
35271 msgstr ""
35272
35273 #. type: table
35274 #: guix-git/doc/guix.texi:19832
35275 msgid "Filename or G-expression for the user name mapping configuration."
35276 msgstr ""
35277
35278 #. type: item
35279 #: guix-git/doc/guix.texi:19833
35280 #, no-wrap
35281 msgid "@code{socket-directory} (default: @code{#false})"
35282 msgstr ""
35283
35284 #. type: table
35285 #: guix-git/doc/guix.texi:19838
35286 msgid "Specifies the directory of the Unix-domain socket(s) on which PostgreSQL is to listen for connections from client applications. If set to @code{\"\"} PostgreSQL does not listen on any Unix-domain sockets, in which case only TCP/IP sockets can be used to connect to the server."
35287 msgstr ""
35288
35289 #. type: table
35290 #: guix-git/doc/guix.texi:19841
35291 msgid "By default, the @code{#false} value means the PostgreSQL default value will be used, which is currently @samp{/tmp}."
35292 msgstr ""
35293
35294 #. type: table
35295 #: guix-git/doc/guix.texi:19846
35296 msgid "List of additional keys and values to include in the PostgreSQL config file. Each entry in the list should be a list where the first element is the key, and the remaining elements are the values."
35297 msgstr ""
35298
35299 #. type: table
35300 #: guix-git/doc/guix.texi:19852
35301 msgid "The values can be numbers, booleans or strings and will be mapped to PostgreSQL parameters types @code{Boolean}, @code{String}, @code{Numeric}, @code{Numeric with Unit} and @code{Enumerated} described @uref{https://www.postgresql.org/docs/current/config-setting.html, here}."
35302 msgstr ""
35303
35304 #. type: deffn
35305 #: guix-git/doc/guix.texi:19856
35306 #, no-wrap
35307 msgid "{Scheme Variable} postgresql-role-service-type"
35308 msgstr ""
35309
35310 #. type: deffn
35311 #: guix-git/doc/guix.texi:19859
35312 msgid "This service allows to create PostgreSQL roles and databases after PostgreSQL service start. Here is an example of its use."
35313 msgstr ""
35314
35315 #. type: lisp
35316 #: guix-git/doc/guix.texi:19867
35317 #, no-wrap
35318 msgid ""
35319 "(service postgresql-role-service-type\n"
35320 " (postgresql-role-configuration\n"
35321 " (roles\n"
35322 " (list (postgresql-role\n"
35323 " (name \"test\")\n"
35324 " (create-database? #t))))))\n"
35325 msgstr ""
35326
35327 #. type: deffn
35328 #: guix-git/doc/guix.texi:19871
35329 msgid "This service can be extended with extra roles, as in this example:"
35330 msgstr ""
35331
35332 #. type: lisp
35333 #: guix-git/doc/guix.texi:19877
35334 #, no-wrap
35335 msgid ""
35336 "(service-extension postgresql-role-service-type\n"
35337 " (const (postgresql-role\n"
35338 " (name \"alice\")\n"
35339 " (create-database? #t))))\n"
35340 msgstr ""
35341
35342 #. type: deftp
35343 #: guix-git/doc/guix.texi:19880
35344 #, no-wrap
35345 msgid "{Data Type} postgresql-role"
35346 msgstr ""
35347
35348 #. type: deftp
35349 #: guix-git/doc/guix.texi:19886
35350 msgid "PostgreSQL manages database access permissions using the concept of roles. A role can be thought of as either a database user, or a group of database users, depending on how the role is set up. Roles can own database objects (for example, tables) and can assign privileges on those objects to other roles to control who has access to which objects."
35351 msgstr ""
35352
35353 #. type: table
35354 #: guix-git/doc/guix.texi:19890
35355 msgid "The role name."
35356 msgstr ""
35357
35358 #. type: item
35359 #: guix-git/doc/guix.texi:19891
35360 #, no-wrap
35361 msgid "@code{permissions} (default: @code{'(createdb login)})"
35362 msgstr ""
35363
35364 #. type: table
35365 #: guix-git/doc/guix.texi:19895
35366 msgid "The role permissions list. Supported permissions are @code{bypassrls}, @code{createdb}, @code{createrole}, @code{login}, @code{replication} and @code{superuser}."
35367 msgstr ""
35368
35369 #. type: item
35370 #: guix-git/doc/guix.texi:19896
35371 #, no-wrap
35372 msgid "@code{create-database?} (default: @code{#f})"
35373 msgstr ""
35374
35375 #. type: table
35376 #: guix-git/doc/guix.texi:19898
35377 msgid "Whether to create a database with the same name as the role."
35378 msgstr ""
35379
35380 #. type: deftp
35381 #: guix-git/doc/guix.texi:19902
35382 #, no-wrap
35383 msgid "{Data Type} postgresql-role-configuration"
35384 msgstr ""
35385
35386 #. type: deftp
35387 #: guix-git/doc/guix.texi:19905
35388 msgid "Data type representing the configuration of @var{postgresql-role-service-type}."
35389 msgstr ""
35390
35391 #. type: item
35392 #: guix-git/doc/guix.texi:19907
35393 #, no-wrap
35394 msgid "@code{host} (default: @code{\"/var/run/postgresql\"})"
35395 msgstr ""
35396
35397 #. type: table
35398 #: guix-git/doc/guix.texi:19909
35399 msgid "The PostgreSQL host to connect to."
35400 msgstr ""
35401
35402 #. type: item
35403 #: guix-git/doc/guix.texi:19910
35404 #, no-wrap
35405 msgid "@code{log} (default: @code{\"/var/log/postgresql_roles.log\"})"
35406 msgstr ""
35407
35408 #. type: table
35409 #: guix-git/doc/guix.texi:19912
35410 msgid "File name of the log file."
35411 msgstr ""
35412
35413 #. type: item
35414 #: guix-git/doc/guix.texi:19913
35415 #, no-wrap
35416 msgid "@code{roles} (default: @code{'()})"
35417 msgstr ""
35418
35419 #. type: table
35420 #: guix-git/doc/guix.texi:19915
35421 msgid "The initial PostgreSQL roles to create."
35422 msgstr ""
35423
35424 #. type: subsubheading
35425 #: guix-git/doc/guix.texi:19918
35426 #, no-wrap
35427 msgid "MariaDB/MySQL"
35428 msgstr ""
35429
35430 #. type: defvr
35431 #: guix-git/doc/guix.texi:19920
35432 #, no-wrap
35433 msgid "{Scheme Variable} mysql-service-type"
35434 msgstr ""
35435
35436 #. type: defvr
35437 #: guix-git/doc/guix.texi:19924
35438 msgid "This is the service type for a MySQL or MariaDB database server. Its value is a @code{mysql-configuration} object that specifies which package to use, as well as various settings for the @command{mysqld} daemon."
35439 msgstr ""
35440
35441 #. type: deftp
35442 #: guix-git/doc/guix.texi:19926
35443 #, no-wrap
35444 msgid "{Data Type} mysql-configuration"
35445 msgstr ""
35446
35447 #. type: deftp
35448 #: guix-git/doc/guix.texi:19928
35449 msgid "Data type representing the configuration of @var{mysql-service-type}."
35450 msgstr ""
35451
35452 #. type: item
35453 #: guix-git/doc/guix.texi:19930
35454 #, no-wrap
35455 msgid "@code{mysql} (default: @var{mariadb})"
35456 msgstr ""
35457
35458 #. type: table
35459 #: guix-git/doc/guix.texi:19933
35460 msgid "Package object of the MySQL database server, can be either @var{mariadb} or @var{mysql}."
35461 msgstr ""
35462
35463 #. type: table
35464 #: guix-git/doc/guix.texi:19936
35465 msgid "For MySQL, a temporary root password will be displayed at activation time. For MariaDB, the root password is empty."
35466 msgstr ""
35467
35468 #. type: item
35469 #: guix-git/doc/guix.texi:19937 guix-git/doc/guix.texi:23483
35470 #, no-wrap
35471 msgid "@code{bind-address} (default: @code{\"127.0.0.1\"})"
35472 msgstr ""
35473
35474 #. type: table
35475 #: guix-git/doc/guix.texi:19940
35476 msgid "The IP on which to listen for network connections. Use @code{\"0.0.0.0\"} to bind to all available network interfaces."
35477 msgstr ""
35478
35479 #. type: item
35480 #: guix-git/doc/guix.texi:19941
35481 #, no-wrap
35482 msgid "@code{port} (default: @code{3306})"
35483 msgstr ""
35484
35485 #. type: table
35486 #: guix-git/doc/guix.texi:19943
35487 msgid "TCP port on which the database server listens for incoming connections."
35488 msgstr ""
35489
35490 #. type: item
35491 #: guix-git/doc/guix.texi:19944
35492 #, no-wrap
35493 msgid "@code{socket} (default: @code{\"/run/mysqld/mysqld.sock\"})"
35494 msgstr ""
35495
35496 #. type: table
35497 #: guix-git/doc/guix.texi:19946
35498 msgid "Socket file to use for local (non-network) connections."
35499 msgstr ""
35500
35501 #. type: table
35502 #: guix-git/doc/guix.texi:19949
35503 msgid "Additional settings for the @file{my.cnf} configuration file."
35504 msgstr ""
35505
35506 #. type: item
35507 #: guix-git/doc/guix.texi:19950
35508 #, no-wrap
35509 msgid "@code{auto-upgrade?} (default: @code{#t})"
35510 msgstr ""
35511
35512 #. type: table
35513 #: guix-git/doc/guix.texi:19955
35514 msgid "Whether to automatically run @command{mysql_upgrade} after starting the service. This is necessary to upgrade the @dfn{system schema} after ``major'' updates (such as switching from MariaDB 10.4 to 10.5), but can be disabled if you would rather do that manually."
35515 msgstr ""
35516
35517 #. type: subsubheading
35518 #: guix-git/doc/guix.texi:19959
35519 #, no-wrap
35520 msgid "Memcached"
35521 msgstr ""
35522
35523 #. type: defvr
35524 #: guix-git/doc/guix.texi:19961
35525 #, no-wrap
35526 msgid "{Scheme Variable} memcached-service-type"
35527 msgstr ""
35528
35529 #. type: defvr
35530 #: guix-git/doc/guix.texi:19965
35531 msgid "This is the service type for the @uref{https://memcached.org/, Memcached} service, which provides a distributed in memory cache. The value for the service type is a @code{memcached-configuration} object."
35532 msgstr ""
35533
35534 #. type: lisp
35535 #: guix-git/doc/guix.texi:19969
35536 #, no-wrap
35537 msgid "(service memcached-service-type)\n"
35538 msgstr ""
35539
35540 #. type: deftp
35541 #: guix-git/doc/guix.texi:19971
35542 #, no-wrap
35543 msgid "{Data Type} memcached-configuration"
35544 msgstr ""
35545
35546 #. type: deftp
35547 #: guix-git/doc/guix.texi:19973
35548 msgid "Data type representing the configuration of memcached."
35549 msgstr ""
35550
35551 #. type: item
35552 #: guix-git/doc/guix.texi:19975
35553 #, no-wrap
35554 msgid "@code{memcached} (default: @code{memcached})"
35555 msgstr ""
35556
35557 #. type: table
35558 #: guix-git/doc/guix.texi:19977
35559 msgid "The Memcached package to use."
35560 msgstr ""
35561
35562 #. type: item
35563 #: guix-git/doc/guix.texi:19978
35564 #, no-wrap
35565 msgid "@code{interfaces} (default: @code{'(\"0.0.0.0\")})"
35566 msgstr ""
35567
35568 #. type: table
35569 #: guix-git/doc/guix.texi:19980
35570 msgid "Network interfaces on which to listen."
35571 msgstr ""
35572
35573 #. type: item
35574 #: guix-git/doc/guix.texi:19981
35575 #, no-wrap
35576 msgid "@code{tcp-port} (default: @code{11211})"
35577 msgstr ""
35578
35579 #. type: table
35580 #: guix-git/doc/guix.texi:19983
35581 msgid "Port on which to accept connections."
35582 msgstr ""
35583
35584 #. type: item
35585 #: guix-git/doc/guix.texi:19984
35586 #, no-wrap
35587 msgid "@code{udp-port} (default: @code{11211})"
35588 msgstr ""
35589
35590 #. type: table
35591 #: guix-git/doc/guix.texi:19987
35592 msgid "Port on which to accept UDP connections on, a value of 0 will disable listening on a UDP socket."
35593 msgstr ""
35594
35595 #. type: item
35596 #: guix-git/doc/guix.texi:19988
35597 #, no-wrap
35598 msgid "@code{additional-options} (default: @code{'()})"
35599 msgstr ""
35600
35601 #. type: table
35602 #: guix-git/doc/guix.texi:19990
35603 msgid "Additional command line options to pass to @code{memcached}."
35604 msgstr ""
35605
35606 #. type: subsubheading
35607 #: guix-git/doc/guix.texi:19993
35608 #, no-wrap
35609 msgid "Redis"
35610 msgstr ""
35611
35612 #. type: defvr
35613 #: guix-git/doc/guix.texi:19995
35614 #, no-wrap
35615 msgid "{Scheme Variable} redis-service-type"
35616 msgstr ""
35617
35618 #. type: defvr
35619 #: guix-git/doc/guix.texi:19998
35620 msgid "This is the service type for the @uref{https://redis.io/, Redis} key/value store, whose value is a @code{redis-configuration} object."
35621 msgstr ""
35622
35623 #. type: deftp
35624 #: guix-git/doc/guix.texi:20000
35625 #, no-wrap
35626 msgid "{Data Type} redis-configuration"
35627 msgstr ""
35628
35629 #. type: deftp
35630 #: guix-git/doc/guix.texi:20002
35631 msgid "Data type representing the configuration of redis."
35632 msgstr ""
35633
35634 #. type: item
35635 #: guix-git/doc/guix.texi:20004
35636 #, no-wrap
35637 msgid "@code{redis} (default: @code{redis})"
35638 msgstr ""
35639
35640 #. type: table
35641 #: guix-git/doc/guix.texi:20006
35642 msgid "The Redis package to use."
35643 msgstr ""
35644
35645 #. type: item
35646 #: guix-git/doc/guix.texi:20007
35647 #, no-wrap
35648 msgid "@code{bind} (default: @code{\"127.0.0.1\"})"
35649 msgstr ""
35650
35651 #. type: table
35652 #: guix-git/doc/guix.texi:20009
35653 msgid "Network interface on which to listen."
35654 msgstr ""
35655
35656 #. type: item
35657 #: guix-git/doc/guix.texi:20010
35658 #, no-wrap
35659 msgid "@code{port} (default: @code{6379})"
35660 msgstr ""
35661
35662 #. type: table
35663 #: guix-git/doc/guix.texi:20013
35664 msgid "Port on which to accept connections on, a value of 0 will disable listening on a TCP socket."
35665 msgstr ""
35666
35667 #. type: item
35668 #: guix-git/doc/guix.texi:20014
35669 #, no-wrap
35670 msgid "@code{working-directory} (default: @code{\"/var/lib/redis\"})"
35671 msgstr ""
35672
35673 #. type: table
35674 #: guix-git/doc/guix.texi:20016
35675 msgid "Directory in which to store the database and related files."
35676 msgstr ""
35677
35678 #. type: cindex
35679 #: guix-git/doc/guix.texi:20022
35680 #, no-wrap
35681 msgid "mail"
35682 msgstr ""
35683
35684 #. type: cindex
35685 #: guix-git/doc/guix.texi:20023
35686 #, no-wrap
35687 msgid "email"
35688 msgstr ""
35689
35690 #. type: Plain text
35691 #: guix-git/doc/guix.texi:20028
35692 msgid "The @code{(gnu services mail)} module provides Guix service definitions for email services: IMAP, POP3, and LMTP servers, as well as mail transport agents (MTAs). Lots of acronyms! These services are detailed in the subsections below."
35693 msgstr ""
35694
35695 #. type: subsubheading
35696 #: guix-git/doc/guix.texi:20029
35697 #, no-wrap
35698 msgid "Dovecot Service"
35699 msgstr ""
35700
35701 #. type: deffn
35702 #: guix-git/doc/guix.texi:20031
35703 #, no-wrap
35704 msgid "{Scheme Procedure} dovecot-service [#:config (dovecot-configuration)]"
35705 msgstr ""
35706
35707 #. type: deffn
35708 #: guix-git/doc/guix.texi:20033
35709 msgid "Return a service that runs the Dovecot IMAP/POP3/LMTP mail server."
35710 msgstr ""
35711
35712 #. type: Plain text
35713 #: guix-git/doc/guix.texi:20043
35714 msgid "By default, Dovecot does not need much configuration; the default configuration object created by @code{(dovecot-configuration)} will suffice if your mail is delivered to @code{~/Maildir}. A self-signed certificate will be generated for TLS-protected connections, though Dovecot will also listen on cleartext ports by default. There are a number of options, though, which mail administrators might need to change, and as is the case with other services, Guix allows the system administrator to specify these parameters via a uniform Scheme interface."
35715 msgstr ""
35716
35717 #. type: Plain text
35718 #: guix-git/doc/guix.texi:20046
35719 msgid "For example, to specify that mail is located at @code{maildir~/.mail}, one would instantiate the Dovecot service like this:"
35720 msgstr ""
35721
35722 #. type: lisp
35723 #: guix-git/doc/guix.texi:20051
35724 #, no-wrap
35725 msgid ""
35726 "(dovecot-service #:config\n"
35727 " (dovecot-configuration\n"
35728 " (mail-location \"maildir:~/.mail\")))\n"
35729 msgstr ""
35730
35731 #. type: Plain text
35732 #: guix-git/doc/guix.texi:20059
35733 msgid "The available configuration parameters follow. Each parameter definition is preceded by its type; for example, @samp{string-list foo} indicates that the @code{foo} parameter should be specified as a list of strings. There is also a way to specify the configuration as a string, if you have an old @code{dovecot.conf} file that you want to port over from some other system; see the end for more details."
35734 msgstr ""
35735
35736 #. type: Plain text
35737 #: guix-git/doc/guix.texi:20069
35738 msgid "Available @code{dovecot-configuration} fields are:"
35739 msgstr ""
35740
35741 #. type: deftypevr
35742 #: guix-git/doc/guix.texi:20070
35743 #, no-wrap
35744 msgid "{@code{dovecot-configuration} parameter} package dovecot"
35745 msgstr ""
35746
35747 #. type: deftypevr
35748 #: guix-git/doc/guix.texi:20072 guix-git/doc/guix.texi:21378
35749 msgid "The dovecot package."
35750 msgstr ""
35751
35752 #. type: deftypevr
35753 #: guix-git/doc/guix.texi:20074
35754 #, no-wrap
35755 msgid "{@code{dovecot-configuration} parameter} comma-separated-string-list listen"
35756 msgstr ""
35757
35758 #. type: deftypevr
35759 #: guix-git/doc/guix.texi:20080
35760 msgid "A list of IPs or hosts where to listen for connections. @samp{*} listens on all IPv4 interfaces, @samp{::} listens on all IPv6 interfaces. If you want to specify non-default ports or anything more complex, customize the address and port fields of the @samp{inet-listener} of the specific services you are interested in."
35761 msgstr ""
35762
35763 #. type: deftypevr
35764 #: guix-git/doc/guix.texi:20082
35765 #, no-wrap
35766 msgid "{@code{dovecot-configuration} parameter} protocol-configuration-list protocols"
35767 msgstr ""
35768
35769 #. type: deftypevr
35770 #: guix-git/doc/guix.texi:20085
35771 msgid "List of protocols we want to serve. Available protocols include @samp{imap}, @samp{pop3}, and @samp{lmtp}."
35772 msgstr ""
35773
35774 #. type: deftypevr
35775 #: guix-git/doc/guix.texi:20087
35776 msgid "Available @code{protocol-configuration} fields are:"
35777 msgstr ""
35778
35779 #. type: deftypevr
35780 #: guix-git/doc/guix.texi:20088
35781 #, no-wrap
35782 msgid "{@code{protocol-configuration} parameter} string name"
35783 msgstr ""
35784
35785 #. type: deftypevr
35786 #: guix-git/doc/guix.texi:20090
35787 msgid "The name of the protocol."
35788 msgstr ""
35789
35790 #. type: deftypevr
35791 #: guix-git/doc/guix.texi:20092
35792 #, no-wrap
35793 msgid "{@code{protocol-configuration} parameter} string auth-socket-path"
35794 msgstr ""
35795
35796 #. type: deftypevr
35797 #: guix-git/doc/guix.texi:20096
35798 msgid "UNIX socket path to the master authentication server to find users. This is used by imap (for shared users) and lda. It defaults to @samp{\"/var/run/dovecot/auth-userdb\"}."
35799 msgstr ""
35800
35801 #. type: deftypevr
35802 #: guix-git/doc/guix.texi:20098
35803 #, no-wrap
35804 msgid "{@code{protocol-configuration} parameter} space-separated-string-list mail-plugins"
35805 msgstr ""
35806
35807 #. type: deftypevr
35808 #: guix-git/doc/guix.texi:20100
35809 msgid "Space separated list of plugins to load."
35810 msgstr ""
35811
35812 #. type: deftypevr
35813 #: guix-git/doc/guix.texi:20102
35814 #, no-wrap
35815 msgid "{@code{protocol-configuration} parameter} non-negative-integer mail-max-userip-connections"
35816 msgstr ""
35817
35818 #. type: deftypevr
35819 #: guix-git/doc/guix.texi:20106
35820 msgid "Maximum number of IMAP connections allowed for a user from each IP address. NOTE: The username is compared case-sensitively. Defaults to @samp{10}."
35821 msgstr ""
35822
35823 #. type: deftypevr
35824 #: guix-git/doc/guix.texi:20110
35825 #, no-wrap
35826 msgid "{@code{dovecot-configuration} parameter} service-configuration-list services"
35827 msgstr ""
35828
35829 #. type: deftypevr
35830 #: guix-git/doc/guix.texi:20114
35831 msgid "List of services to enable. Available services include @samp{imap}, @samp{imap-login}, @samp{pop3}, @samp{pop3-login}, @samp{auth}, and @samp{lmtp}."
35832 msgstr ""
35833
35834 #. type: deftypevr
35835 #: guix-git/doc/guix.texi:20116
35836 msgid "Available @code{service-configuration} fields are:"
35837 msgstr ""
35838
35839 #. type: deftypevr
35840 #: guix-git/doc/guix.texi:20117
35841 #, no-wrap
35842 msgid "{@code{service-configuration} parameter} string kind"
35843 msgstr ""
35844
35845 #. type: deftypevr
35846 #: guix-git/doc/guix.texi:20122
35847 msgid "The service kind. Valid values include @code{director}, @code{imap-login}, @code{pop3-login}, @code{lmtp}, @code{imap}, @code{pop3}, @code{auth}, @code{auth-worker}, @code{dict}, @code{tcpwrap}, @code{quota-warning}, or anything else."
35848 msgstr ""
35849
35850 #. type: deftypevr
35851 #: guix-git/doc/guix.texi:20124
35852 #, no-wrap
35853 msgid "{@code{service-configuration} parameter} listener-configuration-list listeners"
35854 msgstr ""
35855
35856 #. type: deftypevr
35857 #: guix-git/doc/guix.texi:20129
35858 msgid "Listeners for the service. A listener is either a @code{unix-listener-configuration}, a @code{fifo-listener-configuration}, or an @code{inet-listener-configuration}. Defaults to @samp{()}."
35859 msgstr ""
35860
35861 #. type: deftypevr
35862 #: guix-git/doc/guix.texi:20131
35863 msgid "Available @code{unix-listener-configuration} fields are:"
35864 msgstr ""
35865
35866 #. type: deftypevr
35867 #: guix-git/doc/guix.texi:20132
35868 #, no-wrap
35869 msgid "{@code{unix-listener-configuration} parameter} string path"
35870 msgstr ""
35871
35872 #. type: deftypevr
35873 #: guix-git/doc/guix.texi:20135 guix-git/doc/guix.texi:20158
35874 msgid "Path to the file, relative to @code{base-dir} field. This is also used as the section name."
35875 msgstr ""
35876
35877 #. type: deftypevr
35878 #: guix-git/doc/guix.texi:20137
35879 #, no-wrap
35880 msgid "{@code{unix-listener-configuration} parameter} string mode"
35881 msgstr ""
35882
35883 #. type: deftypevr
35884 #: guix-git/doc/guix.texi:20140 guix-git/doc/guix.texi:20163
35885 msgid "The access mode for the socket. Defaults to @samp{\"0600\"}."
35886 msgstr ""
35887
35888 #. type: deftypevr
35889 #: guix-git/doc/guix.texi:20142
35890 #, no-wrap
35891 msgid "{@code{unix-listener-configuration} parameter} string user"
35892 msgstr ""
35893
35894 #. type: deftypevr
35895 #: guix-git/doc/guix.texi:20145 guix-git/doc/guix.texi:20168
35896 msgid "The user to own the socket. Defaults to @samp{\"\"}."
35897 msgstr ""
35898
35899 #. type: deftypevr
35900 #: guix-git/doc/guix.texi:20147
35901 #, no-wrap
35902 msgid "{@code{unix-listener-configuration} parameter} string group"
35903 msgstr ""
35904
35905 #. type: deftypevr
35906 #: guix-git/doc/guix.texi:20150 guix-git/doc/guix.texi:20173
35907 msgid "The group to own the socket. Defaults to @samp{\"\"}."
35908 msgstr ""
35909
35910 #. type: deftypevr
35911 #: guix-git/doc/guix.texi:20154
35912 msgid "Available @code{fifo-listener-configuration} fields are:"
35913 msgstr ""
35914
35915 #. type: deftypevr
35916 #: guix-git/doc/guix.texi:20155
35917 #, no-wrap
35918 msgid "{@code{fifo-listener-configuration} parameter} string path"
35919 msgstr ""
35920
35921 #. type: deftypevr
35922 #: guix-git/doc/guix.texi:20160
35923 #, no-wrap
35924 msgid "{@code{fifo-listener-configuration} parameter} string mode"
35925 msgstr ""
35926
35927 #. type: deftypevr
35928 #: guix-git/doc/guix.texi:20165
35929 #, no-wrap
35930 msgid "{@code{fifo-listener-configuration} parameter} string user"
35931 msgstr ""
35932
35933 #. type: deftypevr
35934 #: guix-git/doc/guix.texi:20170
35935 #, no-wrap
35936 msgid "{@code{fifo-listener-configuration} parameter} string group"
35937 msgstr ""
35938
35939 #. type: deftypevr
35940 #: guix-git/doc/guix.texi:20177
35941 msgid "Available @code{inet-listener-configuration} fields are:"
35942 msgstr ""
35943
35944 #. type: deftypevr
35945 #: guix-git/doc/guix.texi:20178
35946 #, no-wrap
35947 msgid "{@code{inet-listener-configuration} parameter} string protocol"
35948 msgstr ""
35949
35950 #. type: deftypevr
35951 #: guix-git/doc/guix.texi:20180
35952 msgid "The protocol to listen for."
35953 msgstr ""
35954
35955 #. type: deftypevr
35956 #: guix-git/doc/guix.texi:20182
35957 #, no-wrap
35958 msgid "{@code{inet-listener-configuration} parameter} string address"
35959 msgstr ""
35960
35961 #. type: deftypevr
35962 #: guix-git/doc/guix.texi:20185
35963 msgid "The address on which to listen, or empty for all addresses. Defaults to @samp{\"\"}."
35964 msgstr ""
35965
35966 #. type: deftypevr
35967 #: guix-git/doc/guix.texi:20187
35968 #, no-wrap
35969 msgid "{@code{inet-listener-configuration} parameter} non-negative-integer port"
35970 msgstr ""
35971
35972 #. type: deftypevr
35973 #: guix-git/doc/guix.texi:20189
35974 msgid "The port on which to listen."
35975 msgstr ""
35976
35977 #. type: deftypevr
35978 #: guix-git/doc/guix.texi:20191
35979 #, no-wrap
35980 msgid "{@code{inet-listener-configuration} parameter} boolean ssl?"
35981 msgstr ""
35982
35983 #. type: deftypevr
35984 #: guix-git/doc/guix.texi:20195
35985 msgid "Whether to use SSL for this service; @samp{yes}, @samp{no}, or @samp{required}. Defaults to @samp{#t}."
35986 msgstr ""
35987
35988 #. type: deftypevr
35989 #: guix-git/doc/guix.texi:20199
35990 #, no-wrap
35991 msgid "{@code{service-configuration} parameter} non-negative-integer client-limit"
35992 msgstr ""
35993
35994 #. type: deftypevr
35995 #: guix-git/doc/guix.texi:20204
35996 msgid "Maximum number of simultaneous client connections per process. Once this number of connections is received, the next incoming connection will prompt Dovecot to spawn another process. If set to 0, @code{default-client-limit} is used instead."
35997 msgstr ""
35998
35999 #. type: deftypevr
36000 #: guix-git/doc/guix.texi:20209
36001 #, no-wrap
36002 msgid "{@code{service-configuration} parameter} non-negative-integer service-count"
36003 msgstr ""
36004
36005 #. type: deftypevr
36006 #: guix-git/doc/guix.texi:20214
36007 msgid "Number of connections to handle before starting a new process. Typically the only useful values are 0 (unlimited) or 1. 1 is more secure, but 0 is faster. <doc/wiki/LoginProcess.txt>. Defaults to @samp{1}."
36008 msgstr ""
36009
36010 #. type: deftypevr
36011 #: guix-git/doc/guix.texi:20217
36012 #, no-wrap
36013 msgid "{@code{service-configuration} parameter} non-negative-integer process-limit"
36014 msgstr ""
36015
36016 #. type: deftypevr
36017 #: guix-git/doc/guix.texi:20220
36018 msgid "Maximum number of processes that can exist for this service. If set to 0, @code{default-process-limit} is used instead."
36019 msgstr ""
36020
36021 #. type: deftypevr
36022 #: guix-git/doc/guix.texi:20225
36023 #, no-wrap
36024 msgid "{@code{service-configuration} parameter} non-negative-integer process-min-avail"
36025 msgstr ""
36026
36027 #. type: deftypevr
36028 #: guix-git/doc/guix.texi:20228
36029 msgid "Number of processes to always keep waiting for more connections. Defaults to @samp{0}."
36030 msgstr ""
36031
36032 #. type: deftypevr
36033 #: guix-git/doc/guix.texi:20230
36034 #, no-wrap
36035 msgid "{@code{service-configuration} parameter} non-negative-integer vsz-limit"
36036 msgstr ""
36037
36038 #. type: deftypevr
36039 #: guix-git/doc/guix.texi:20234
36040 msgid "If you set @samp{service-count 0}, you probably need to grow this. Defaults to @samp{256000000}."
36041 msgstr ""
36042
36043 #. type: deftypevr
36044 #: guix-git/doc/guix.texi:20238
36045 #, no-wrap
36046 msgid "{@code{dovecot-configuration} parameter} dict-configuration dict"
36047 msgstr ""
36048
36049 #. type: deftypevr
36050 #: guix-git/doc/guix.texi:20241
36051 msgid "Dict configuration, as created by the @code{dict-configuration} constructor."
36052 msgstr ""
36053
36054 #. type: deftypevr
36055 #: guix-git/doc/guix.texi:20243
36056 msgid "Available @code{dict-configuration} fields are:"
36057 msgstr ""
36058
36059 #. type: deftypevr
36060 #: guix-git/doc/guix.texi:20244
36061 #, no-wrap
36062 msgid "{@code{dict-configuration} parameter} free-form-fields entries"
36063 msgstr ""
36064
36065 #. type: deftypevr
36066 #: guix-git/doc/guix.texi:20247
36067 msgid "A list of key-value pairs that this dict should hold. Defaults to @samp{()}."
36068 msgstr ""
36069
36070 #. type: deftypevr
36071 #: guix-git/doc/guix.texi:20251
36072 #, no-wrap
36073 msgid "{@code{dovecot-configuration} parameter} passdb-configuration-list passdbs"
36074 msgstr ""
36075
36076 #. type: deftypevr
36077 #: guix-git/doc/guix.texi:20254
36078 msgid "A list of passdb configurations, each one created by the @code{passdb-configuration} constructor."
36079 msgstr ""
36080
36081 #. type: deftypevr
36082 #: guix-git/doc/guix.texi:20256
36083 msgid "Available @code{passdb-configuration} fields are:"
36084 msgstr ""
36085
36086 #. type: deftypevr
36087 #: guix-git/doc/guix.texi:20257
36088 #, no-wrap
36089 msgid "{@code{passdb-configuration} parameter} string driver"
36090 msgstr ""
36091
36092 #. type: deftypevr
36093 #: guix-git/doc/guix.texi:20262
36094 msgid "The driver that the passdb should use. Valid values include @samp{pam}, @samp{passwd}, @samp{shadow}, @samp{bsdauth}, and @samp{static}. Defaults to @samp{\"pam\"}."
36095 msgstr ""
36096
36097 #. type: deftypevr
36098 #: guix-git/doc/guix.texi:20264
36099 #, no-wrap
36100 msgid "{@code{passdb-configuration} parameter} space-separated-string-list args"
36101 msgstr ""
36102
36103 #. type: deftypevr
36104 #: guix-git/doc/guix.texi:20267
36105 msgid "Space separated list of arguments to the passdb driver. Defaults to @samp{\"\"}."
36106 msgstr ""
36107
36108 #. type: deftypevr
36109 #: guix-git/doc/guix.texi:20271
36110 #, no-wrap
36111 msgid "{@code{dovecot-configuration} parameter} userdb-configuration-list userdbs"
36112 msgstr ""
36113
36114 #. type: deftypevr
36115 #: guix-git/doc/guix.texi:20274
36116 msgid "List of userdb configurations, each one created by the @code{userdb-configuration} constructor."
36117 msgstr ""
36118
36119 #. type: deftypevr
36120 #: guix-git/doc/guix.texi:20276
36121 msgid "Available @code{userdb-configuration} fields are:"
36122 msgstr ""
36123
36124 #. type: deftypevr
36125 #: guix-git/doc/guix.texi:20277
36126 #, no-wrap
36127 msgid "{@code{userdb-configuration} parameter} string driver"
36128 msgstr ""
36129
36130 #. type: deftypevr
36131 #: guix-git/doc/guix.texi:20281
36132 msgid "The driver that the userdb should use. Valid values include @samp{passwd} and @samp{static}. Defaults to @samp{\"passwd\"}."
36133 msgstr ""
36134
36135 #. type: deftypevr
36136 #: guix-git/doc/guix.texi:20283
36137 #, no-wrap
36138 msgid "{@code{userdb-configuration} parameter} space-separated-string-list args"
36139 msgstr ""
36140
36141 #. type: deftypevr
36142 #: guix-git/doc/guix.texi:20286
36143 msgid "Space separated list of arguments to the userdb driver. Defaults to @samp{\"\"}."
36144 msgstr ""
36145
36146 #. type: deftypevr
36147 #: guix-git/doc/guix.texi:20288
36148 #, no-wrap
36149 msgid "{@code{userdb-configuration} parameter} free-form-args override-fields"
36150 msgstr ""
36151
36152 #. type: deftypevr
36153 #: guix-git/doc/guix.texi:20291
36154 msgid "Override fields from passwd. Defaults to @samp{()}."
36155 msgstr ""
36156
36157 #. type: deftypevr
36158 #: guix-git/doc/guix.texi:20295
36159 #, no-wrap
36160 msgid "{@code{dovecot-configuration} parameter} plugin-configuration plugin-configuration"
36161 msgstr ""
36162
36163 #. type: deftypevr
36164 #: guix-git/doc/guix.texi:20298
36165 msgid "Plug-in configuration, created by the @code{plugin-configuration} constructor."
36166 msgstr ""
36167
36168 #. type: deftypevr
36169 #: guix-git/doc/guix.texi:20300
36170 #, no-wrap
36171 msgid "{@code{dovecot-configuration} parameter} list-of-namespace-configuration namespaces"
36172 msgstr ""
36173
36174 #. type: deftypevr
36175 #: guix-git/doc/guix.texi:20303
36176 msgid "List of namespaces. Each item in the list is created by the @code{namespace-configuration} constructor."
36177 msgstr ""
36178
36179 #. type: deftypevr
36180 #: guix-git/doc/guix.texi:20305
36181 msgid "Available @code{namespace-configuration} fields are:"
36182 msgstr ""
36183
36184 #. type: deftypevr
36185 #: guix-git/doc/guix.texi:20306
36186 #, no-wrap
36187 msgid "{@code{namespace-configuration} parameter} string name"
36188 msgstr ""
36189
36190 #. type: deftypevr
36191 #: guix-git/doc/guix.texi:20308
36192 msgid "Name for this namespace."
36193 msgstr ""
36194
36195 #. type: deftypevr
36196 #: guix-git/doc/guix.texi:20310
36197 #, no-wrap
36198 msgid "{@code{namespace-configuration} parameter} string type"
36199 msgstr ""
36200
36201 #. type: deftypevr
36202 #: guix-git/doc/guix.texi:20313
36203 msgid "Namespace type: @samp{private}, @samp{shared} or @samp{public}. Defaults to @samp{\"private\"}."
36204 msgstr ""
36205
36206 #. type: deftypevr
36207 #: guix-git/doc/guix.texi:20315
36208 #, no-wrap
36209 msgid "{@code{namespace-configuration} parameter} string separator"
36210 msgstr ""
36211
36212 #. type: deftypevr
36213 #: guix-git/doc/guix.texi:20321
36214 msgid "Hierarchy separator to use. You should use the same separator for all namespaces or some clients get confused. @samp{/} is usually a good one. The default however depends on the underlying mail storage format. Defaults to @samp{\"\"}."
36215 msgstr ""
36216
36217 #. type: deftypevr
36218 #: guix-git/doc/guix.texi:20323
36219 #, no-wrap
36220 msgid "{@code{namespace-configuration} parameter} string prefix"
36221 msgstr ""
36222
36223 #. type: deftypevr
36224 #: guix-git/doc/guix.texi:20327
36225 msgid "Prefix required to access this namespace. This needs to be different for all namespaces. For example @samp{Public/}. Defaults to @samp{\"\"}."
36226 msgstr ""
36227
36228 #. type: deftypevr
36229 #: guix-git/doc/guix.texi:20329
36230 #, no-wrap
36231 msgid "{@code{namespace-configuration} parameter} string location"
36232 msgstr ""
36233
36234 #. type: deftypevr
36235 #: guix-git/doc/guix.texi:20333
36236 msgid "Physical location of the mailbox. This is in the same format as mail_location, which is also the default for it. Defaults to @samp{\"\"}."
36237 msgstr ""
36238
36239 #. type: deftypevr
36240 #: guix-git/doc/guix.texi:20335
36241 #, no-wrap
36242 msgid "{@code{namespace-configuration} parameter} boolean inbox?"
36243 msgstr ""
36244
36245 #. type: deftypevr
36246 #: guix-git/doc/guix.texi:20339
36247 msgid "There can be only one INBOX, and this setting defines which namespace has it. Defaults to @samp{#f}."
36248 msgstr ""
36249
36250 #. type: deftypevr
36251 #: guix-git/doc/guix.texi:20341
36252 #, no-wrap
36253 msgid "{@code{namespace-configuration} parameter} boolean hidden?"
36254 msgstr ""
36255
36256 #. type: deftypevr
36257 #: guix-git/doc/guix.texi:20349
36258 msgid "If namespace is hidden, it's not advertised to clients via NAMESPACE extension. You'll most likely also want to set @samp{list? #f}. This is mostly useful when converting from another server with different namespaces which you want to deprecate but still keep working. For example you can create hidden namespaces with prefixes @samp{~/mail/}, @samp{~%u/mail/} and @samp{mail/}. Defaults to @samp{#f}."
36259 msgstr ""
36260
36261 #. type: deftypevr
36262 #: guix-git/doc/guix.texi:20351
36263 #, no-wrap
36264 msgid "{@code{namespace-configuration} parameter} boolean list?"
36265 msgstr ""
36266
36267 #. type: deftypevr
36268 #: guix-git/doc/guix.texi:20357
36269 msgid "Show the mailboxes under this namespace with the LIST command. This makes the namespace visible for clients that do not support the NAMESPACE extension. The special @code{children} value lists child mailboxes, but hides the namespace prefix. Defaults to @samp{#t}."
36270 msgstr ""
36271
36272 #. type: deftypevr
36273 #: guix-git/doc/guix.texi:20359
36274 #, no-wrap
36275 msgid "{@code{namespace-configuration} parameter} boolean subscriptions?"
36276 msgstr ""
36277
36278 #. type: deftypevr
36279 #: guix-git/doc/guix.texi:20364
36280 msgid "Namespace handles its own subscriptions. If set to @code{#f}, the parent namespace handles them. The empty prefix should always have this as @code{#t}). Defaults to @samp{#t}."
36281 msgstr ""
36282
36283 #. type: deftypevr
36284 #: guix-git/doc/guix.texi:20366
36285 #, no-wrap
36286 msgid "{@code{namespace-configuration} parameter} mailbox-configuration-list mailboxes"
36287 msgstr ""
36288
36289 #. type: deftypevr
36290 #: guix-git/doc/guix.texi:20369
36291 msgid "List of predefined mailboxes in this namespace. Defaults to @samp{()}."
36292 msgstr ""
36293
36294 #. type: deftypevr
36295 #: guix-git/doc/guix.texi:20371
36296 msgid "Available @code{mailbox-configuration} fields are:"
36297 msgstr ""
36298
36299 #. type: deftypevr
36300 #: guix-git/doc/guix.texi:20372
36301 #, no-wrap
36302 msgid "{@code{mailbox-configuration} parameter} string name"
36303 msgstr ""
36304
36305 #. type: deftypevr
36306 #: guix-git/doc/guix.texi:20374
36307 msgid "Name for this mailbox."
36308 msgstr ""
36309
36310 #. type: deftypevr
36311 #: guix-git/doc/guix.texi:20376
36312 #, no-wrap
36313 msgid "{@code{mailbox-configuration} parameter} string auto"
36314 msgstr ""
36315
36316 #. type: deftypevr
36317 #: guix-git/doc/guix.texi:20380
36318 msgid "@samp{create} will automatically create this mailbox. @samp{subscribe} will both create and subscribe to the mailbox. Defaults to @samp{\"no\"}."
36319 msgstr ""
36320
36321 #. type: deftypevr
36322 #: guix-git/doc/guix.texi:20382
36323 #, no-wrap
36324 msgid "{@code{mailbox-configuration} parameter} space-separated-string-list special-use"
36325 msgstr ""
36326
36327 #. type: deftypevr
36328 #: guix-git/doc/guix.texi:20387
36329 msgid "List of IMAP @code{SPECIAL-USE} attributes as specified by RFC 6154. Valid values are @code{\\All}, @code{\\Archive}, @code{\\Drafts}, @code{\\Flagged}, @code{\\Junk}, @code{\\Sent}, and @code{\\Trash}. Defaults to @samp{()}."
36330 msgstr ""
36331
36332 #. type: deftypevr
36333 #: guix-git/doc/guix.texi:20393
36334 #, no-wrap
36335 msgid "{@code{dovecot-configuration} parameter} file-name base-dir"
36336 msgstr ""
36337
36338 #. type: deftypevr
36339 #: guix-git/doc/guix.texi:20396
36340 msgid "Base directory where to store runtime data. Defaults to @samp{\"/var/run/dovecot/\"}."
36341 msgstr ""
36342
36343 #. type: deftypevr
36344 #: guix-git/doc/guix.texi:20398
36345 #, no-wrap
36346 msgid "{@code{dovecot-configuration} parameter} string login-greeting"
36347 msgstr ""
36348
36349 #. type: deftypevr
36350 #: guix-git/doc/guix.texi:20401
36351 msgid "Greeting message for clients. Defaults to @samp{\"Dovecot ready.\"}."
36352 msgstr ""
36353
36354 #. type: deftypevr
36355 #: guix-git/doc/guix.texi:20403
36356 #, no-wrap
36357 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list login-trusted-networks"
36358 msgstr ""
36359
36360 #. type: deftypevr
36361 #: guix-git/doc/guix.texi:20410
36362 msgid "List of trusted network ranges. Connections from these IPs are allowed to override their IP addresses and ports (for logging and for authentication checks). @samp{disable-plaintext-auth} is also ignored for these networks. Typically you would specify your IMAP proxy servers here. Defaults to @samp{()}."
36363 msgstr ""
36364
36365 #. type: deftypevr
36366 #: guix-git/doc/guix.texi:20412
36367 #, no-wrap
36368 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list login-access-sockets"
36369 msgstr ""
36370
36371 #. type: deftypevr
36372 #: guix-git/doc/guix.texi:20415
36373 msgid "List of login access check sockets (e.g.@: tcpwrap). Defaults to @samp{()}."
36374 msgstr ""
36375
36376 #. type: deftypevr
36377 #: guix-git/doc/guix.texi:20417
36378 #, no-wrap
36379 msgid "{@code{dovecot-configuration} parameter} boolean verbose-proctitle?"
36380 msgstr ""
36381
36382 #. type: deftypevr
36383 #: guix-git/doc/guix.texi:20423
36384 msgid "Show more verbose process titles (in ps). Currently shows user name and IP address. Useful for seeing who is actually using the IMAP processes (e.g.@: shared mailboxes or if the same uid is used for multiple accounts). Defaults to @samp{#f}."
36385 msgstr ""
36386
36387 #. type: deftypevr
36388 #: guix-git/doc/guix.texi:20425
36389 #, no-wrap
36390 msgid "{@code{dovecot-configuration} parameter} boolean shutdown-clients?"
36391 msgstr ""
36392
36393 #. type: deftypevr
36394 #: guix-git/doc/guix.texi:20431
36395 msgid "Should all processes be killed when Dovecot master process shuts down. Setting this to @code{#f} means that Dovecot can be upgraded without forcing existing client connections to close (although that could also be a problem if the upgrade is e.g.@: due to a security fix). Defaults to @samp{#t}."
36396 msgstr ""
36397
36398 #. type: deftypevr
36399 #: guix-git/doc/guix.texi:20433
36400 #, no-wrap
36401 msgid "{@code{dovecot-configuration} parameter} non-negative-integer doveadm-worker-count"
36402 msgstr ""
36403
36404 #. type: deftypevr
36405 #: guix-git/doc/guix.texi:20437
36406 msgid "If non-zero, run mail commands via this many connections to doveadm server, instead of running them directly in the same process. Defaults to @samp{0}."
36407 msgstr ""
36408
36409 #. type: deftypevr
36410 #: guix-git/doc/guix.texi:20439
36411 #, no-wrap
36412 msgid "{@code{dovecot-configuration} parameter} string doveadm-socket-path"
36413 msgstr ""
36414
36415 #. type: deftypevr
36416 #: guix-git/doc/guix.texi:20442
36417 msgid "UNIX socket or host:port used for connecting to doveadm server. Defaults to @samp{\"doveadm-server\"}."
36418 msgstr ""
36419
36420 #. type: deftypevr
36421 #: guix-git/doc/guix.texi:20444
36422 #, no-wrap
36423 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list import-environment"
36424 msgstr ""
36425
36426 #. type: deftypevr
36427 #: guix-git/doc/guix.texi:20448
36428 msgid "List of environment variables that are preserved on Dovecot startup and passed down to all of its child processes. You can also give key=value pairs to always set specific settings."
36429 msgstr ""
36430
36431 #. type: deftypevr
36432 #: guix-git/doc/guix.texi:20450
36433 #, no-wrap
36434 msgid "{@code{dovecot-configuration} parameter} boolean disable-plaintext-auth?"
36435 msgstr ""
36436
36437 #. type: deftypevr
36438 #: guix-git/doc/guix.texi:20457
36439 msgid "Disable LOGIN command and all other plaintext authentications unless SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP matches the local IP (i.e.@: you're connecting from the same computer), the connection is considered secure and plaintext authentication is allowed. See also ssl=required setting. Defaults to @samp{#t}."
36440 msgstr ""
36441
36442 #. type: deftypevr
36443 #: guix-git/doc/guix.texi:20459
36444 #, no-wrap
36445 msgid "{@code{dovecot-configuration} parameter} non-negative-integer auth-cache-size"
36446 msgstr ""
36447
36448 #. type: deftypevr
36449 #: guix-git/doc/guix.texi:20464
36450 msgid "Authentication cache size (e.g.@: @samp{#e10e6}). 0 means it's disabled. Note that bsdauth, PAM and vpopmail require @samp{cache-key} to be set for caching to be used. Defaults to @samp{0}."
36451 msgstr ""
36452
36453 #. type: deftypevr
36454 #: guix-git/doc/guix.texi:20466
36455 #, no-wrap
36456 msgid "{@code{dovecot-configuration} parameter} string auth-cache-ttl"
36457 msgstr ""
36458
36459 #. type: deftypevr
36460 #: guix-git/doc/guix.texi:20474
36461 msgid "Time to live for cached data. After TTL expires the cached record is no longer used, *except* if the main database lookup returns internal failure. We also try to handle password changes automatically: If user's previous authentication was successful, but this one wasn't, the cache isn't used. For now this works only with plaintext authentication. Defaults to @samp{\"1 hour\"}."
36462 msgstr ""
36463
36464 #. type: deftypevr
36465 #: guix-git/doc/guix.texi:20476
36466 #, no-wrap
36467 msgid "{@code{dovecot-configuration} parameter} string auth-cache-negative-ttl"
36468 msgstr ""
36469
36470 #. type: deftypevr
36471 #: guix-git/doc/guix.texi:20480
36472 msgid "TTL for negative hits (user not found, password mismatch). 0 disables caching them completely. Defaults to @samp{\"1 hour\"}."
36473 msgstr ""
36474
36475 #. type: deftypevr
36476 #: guix-git/doc/guix.texi:20482
36477 #, no-wrap
36478 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list auth-realms"
36479 msgstr ""
36480
36481 #. type: deftypevr
36482 #: guix-git/doc/guix.texi:20488
36483 msgid "List of realms for SASL authentication mechanisms that need them. You can leave it empty if you don't want to support multiple realms. Many clients simply use the first one listed here, so keep the default realm first. Defaults to @samp{()}."
36484 msgstr ""
36485
36486 #. type: deftypevr
36487 #: guix-git/doc/guix.texi:20490
36488 #, no-wrap
36489 msgid "{@code{dovecot-configuration} parameter} string auth-default-realm"
36490 msgstr ""
36491
36492 #. type: deftypevr
36493 #: guix-git/doc/guix.texi:20495
36494 msgid "Default realm/domain to use if none was specified. This is used for both SASL realms and appending @@domain to username in plaintext logins. Defaults to @samp{\"\"}."
36495 msgstr ""
36496
36497 #. type: deftypevr
36498 #: guix-git/doc/guix.texi:20497
36499 #, no-wrap
36500 msgid "{@code{dovecot-configuration} parameter} string auth-username-chars"
36501 msgstr ""
36502
36503 #. type: deftypevr
36504 #: guix-git/doc/guix.texi:20504
36505 msgid "List of allowed characters in username. If the user-given username contains a character not listed in here, the login automatically fails. This is just an extra check to make sure user can't exploit any potential quote escaping vulnerabilities with SQL/LDAP databases. If you want to allow all characters, set this value to empty. Defaults to @samp{\"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@@\"}."
36506 msgstr ""
36507
36508 #. type: deftypevr
36509 #: guix-git/doc/guix.texi:20506
36510 #, no-wrap
36511 msgid "{@code{dovecot-configuration} parameter} string auth-username-translation"
36512 msgstr ""
36513
36514 #. type: deftypevr
36515 #: guix-git/doc/guix.texi:20512
36516 msgid "Username character translations before it's looked up from databases. The value contains series of from -> to characters. For example @samp{#@@/@@} means that @samp{#} and @samp{/} characters are translated to @samp{@@}. Defaults to @samp{\"\"}."
36517 msgstr ""
36518
36519 #. type: deftypevr
36520 #: guix-git/doc/guix.texi:20514
36521 #, no-wrap
36522 msgid "{@code{dovecot-configuration} parameter} string auth-username-format"
36523 msgstr ""
36524
36525 #. type: deftypevr
36526 #: guix-git/doc/guix.texi:20521
36527 msgid "Username formatting before it's looked up from databases. You can use the standard variables here, e.g.@: %Lu would lowercase the username, %n would drop away the domain if it was given, or @samp{%n-AT-%d} would change the @samp{@@} into @samp{-AT-}. This translation is done after @samp{auth-username-translation} changes. Defaults to @samp{\"%Lu\"}."
36528 msgstr ""
36529
36530 #. type: deftypevr
36531 #: guix-git/doc/guix.texi:20523
36532 #, no-wrap
36533 msgid "{@code{dovecot-configuration} parameter} string auth-master-user-separator"
36534 msgstr ""
36535
36536 #. type: deftypevr
36537 #: guix-git/doc/guix.texi:20531
36538 msgid "If you want to allow master users to log in by specifying the master username within the normal username string (i.e.@: not using SASL mechanism's support for it), you can specify the separator character here. The format is then <username><separator><master username>. UW-IMAP uses @samp{*} as the separator, so that could be a good choice. Defaults to @samp{\"\"}."
36539 msgstr ""
36540
36541 #. type: deftypevr
36542 #: guix-git/doc/guix.texi:20533
36543 #, no-wrap
36544 msgid "{@code{dovecot-configuration} parameter} string auth-anonymous-username"
36545 msgstr ""
36546
36547 #. type: deftypevr
36548 #: guix-git/doc/guix.texi:20537
36549 msgid "Username to use for users logging in with ANONYMOUS SASL mechanism. Defaults to @samp{\"anonymous\"}."
36550 msgstr ""
36551
36552 #. type: deftypevr
36553 #: guix-git/doc/guix.texi:20539
36554 #, no-wrap
36555 msgid "{@code{dovecot-configuration} parameter} non-negative-integer auth-worker-max-count"
36556 msgstr ""
36557
36558 #. type: deftypevr
36559 #: guix-git/doc/guix.texi:20544
36560 msgid "Maximum number of dovecot-auth worker processes. They're used to execute blocking passdb and userdb queries (e.g.@: MySQL and PAM). They're automatically created and destroyed as needed. Defaults to @samp{30}."
36561 msgstr ""
36562
36563 #. type: deftypevr
36564 #: guix-git/doc/guix.texi:20546
36565 #, no-wrap
36566 msgid "{@code{dovecot-configuration} parameter} string auth-gssapi-hostname"
36567 msgstr ""
36568
36569 #. type: deftypevr
36570 #: guix-git/doc/guix.texi:20551
36571 msgid "Host name to use in GSSAPI principal names. The default is to use the name returned by gethostname(). Use @samp{$ALL} (with quotes) to allow all keytab entries. Defaults to @samp{\"\"}."
36572 msgstr ""
36573
36574 #. type: deftypevr
36575 #: guix-git/doc/guix.texi:20553
36576 #, no-wrap
36577 msgid "{@code{dovecot-configuration} parameter} string auth-krb5-keytab"
36578 msgstr ""
36579
36580 #. type: deftypevr
36581 #: guix-git/doc/guix.texi:20559
36582 msgid "Kerberos keytab to use for the GSSAPI mechanism. Will use the system default (usually @file{/etc/krb5.keytab}) if not specified. You may need to change the auth service to run as root to be able to read this file. Defaults to @samp{\"\"}."
36583 msgstr ""
36584
36585 #. type: deftypevr
36586 #: guix-git/doc/guix.texi:20561
36587 #, no-wrap
36588 msgid "{@code{dovecot-configuration} parameter} boolean auth-use-winbind?"
36589 msgstr ""
36590
36591 #. type: deftypevr
36592 #: guix-git/doc/guix.texi:20566
36593 msgid "Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and @samp{ntlm-auth} helper. <doc/wiki/Authentication/Mechanisms/Winbind.txt>. Defaults to @samp{#f}."
36594 msgstr ""
36595
36596 #. type: deftypevr
36597 #: guix-git/doc/guix.texi:20568
36598 #, no-wrap
36599 msgid "{@code{dovecot-configuration} parameter} file-name auth-winbind-helper-path"
36600 msgstr ""
36601
36602 #. type: deftypevr
36603 #: guix-git/doc/guix.texi:20571
36604 msgid "Path for Samba's @samp{ntlm-auth} helper binary. Defaults to @samp{\"/usr/bin/ntlm_auth\"}."
36605 msgstr ""
36606
36607 #. type: deftypevr
36608 #: guix-git/doc/guix.texi:20573
36609 #, no-wrap
36610 msgid "{@code{dovecot-configuration} parameter} string auth-failure-delay"
36611 msgstr ""
36612
36613 #. type: deftypevr
36614 #: guix-git/doc/guix.texi:20576
36615 msgid "Time to delay before replying to failed authentications. Defaults to @samp{\"2 secs\"}."
36616 msgstr ""
36617
36618 #. type: deftypevr
36619 #: guix-git/doc/guix.texi:20578
36620 #, no-wrap
36621 msgid "{@code{dovecot-configuration} parameter} boolean auth-ssl-require-client-cert?"
36622 msgstr ""
36623
36624 #. type: deftypevr
36625 #: guix-git/doc/guix.texi:20582
36626 msgid "Require a valid SSL client certificate or the authentication fails. Defaults to @samp{#f}."
36627 msgstr ""
36628
36629 #. type: deftypevr
36630 #: guix-git/doc/guix.texi:20584
36631 #, no-wrap
36632 msgid "{@code{dovecot-configuration} parameter} boolean auth-ssl-username-from-cert?"
36633 msgstr ""
36634
36635 #. type: deftypevr
36636 #: guix-git/doc/guix.texi:20589
36637 msgid "Take the username from client's SSL certificate, using @code{X509_NAME_get_text_by_NID()} which returns the subject's DN's CommonName. Defaults to @samp{#f}."
36638 msgstr ""
36639
36640 #. type: deftypevr
36641 #: guix-git/doc/guix.texi:20591
36642 #, no-wrap
36643 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list auth-mechanisms"
36644 msgstr ""
36645
36646 #. type: deftypevr
36647 #: guix-git/doc/guix.texi:20597
36648 msgid "List of wanted authentication mechanisms. Supported mechanisms are: @samp{plain}, @samp{login}, @samp{digest-md5}, @samp{cram-md5}, @samp{ntlm}, @samp{rpa}, @samp{apop}, @samp{anonymous}, @samp{gssapi}, @samp{otp}, @samp{skey}, and @samp{gss-spnego}. NOTE: See also @samp{disable-plaintext-auth} setting."
36649 msgstr ""
36650
36651 #. type: deftypevr
36652 #: guix-git/doc/guix.texi:20599
36653 #, no-wrap
36654 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list director-servers"
36655 msgstr ""
36656
36657 #. type: deftypevr
36658 #: guix-git/doc/guix.texi:20604
36659 msgid "List of IPs or hostnames to all director servers, including ourself. Ports can be specified as ip:port. The default port is the same as what director service's @samp{inet-listener} is using. Defaults to @samp{()}."
36660 msgstr ""
36661
36662 #. type: deftypevr
36663 #: guix-git/doc/guix.texi:20606
36664 #, no-wrap
36665 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list director-mail-servers"
36666 msgstr ""
36667
36668 #. type: deftypevr
36669 #: guix-git/doc/guix.texi:20610
36670 msgid "List of IPs or hostnames to all backend mail servers. Ranges are allowed too, like 10.0.0.10-10.0.0.30. Defaults to @samp{()}."
36671 msgstr ""
36672
36673 #. type: deftypevr
36674 #: guix-git/doc/guix.texi:20612
36675 #, no-wrap
36676 msgid "{@code{dovecot-configuration} parameter} string director-user-expire"
36677 msgstr ""
36678
36679 #. type: deftypevr
36680 #: guix-git/doc/guix.texi:20616
36681 msgid "How long to redirect users to a specific server after it no longer has any connections. Defaults to @samp{\"15 min\"}."
36682 msgstr ""
36683
36684 #. type: deftypevr
36685 #: guix-git/doc/guix.texi:20618
36686 #, no-wrap
36687 msgid "{@code{dovecot-configuration} parameter} string director-username-hash"
36688 msgstr ""
36689
36690 #. type: deftypevr
36691 #: guix-git/doc/guix.texi:20623
36692 msgid "How the username is translated before being hashed. Useful values include %Ln if user can log in with or without @@domain, %Ld if mailboxes are shared within domain. Defaults to @samp{\"%Lu\"}."
36693 msgstr ""
36694
36695 #. type: deftypevr
36696 #: guix-git/doc/guix.texi:20625
36697 #, no-wrap
36698 msgid "{@code{dovecot-configuration} parameter} string log-path"
36699 msgstr ""
36700
36701 #. type: deftypevr
36702 #: guix-git/doc/guix.texi:20629
36703 msgid "Log file to use for error messages. @samp{syslog} logs to syslog, @samp{/dev/stderr} logs to stderr. Defaults to @samp{\"syslog\"}."
36704 msgstr ""
36705
36706 #. type: deftypevr
36707 #: guix-git/doc/guix.texi:20631
36708 #, no-wrap
36709 msgid "{@code{dovecot-configuration} parameter} string info-log-path"
36710 msgstr ""
36711
36712 #. type: deftypevr
36713 #: guix-git/doc/guix.texi:20635
36714 msgid "Log file to use for informational messages. Defaults to @samp{log-path}. Defaults to @samp{\"\"}."
36715 msgstr ""
36716
36717 #. type: deftypevr
36718 #: guix-git/doc/guix.texi:20637
36719 #, no-wrap
36720 msgid "{@code{dovecot-configuration} parameter} string debug-log-path"
36721 msgstr ""
36722
36723 #. type: deftypevr
36724 #: guix-git/doc/guix.texi:20641
36725 msgid "Log file to use for debug messages. Defaults to @samp{info-log-path}. Defaults to @samp{\"\"}."
36726 msgstr ""
36727
36728 #. type: deftypevr
36729 #: guix-git/doc/guix.texi:20643
36730 #, no-wrap
36731 msgid "{@code{dovecot-configuration} parameter} string syslog-facility"
36732 msgstr ""
36733
36734 #. type: deftypevr
36735 #: guix-git/doc/guix.texi:20648
36736 msgid "Syslog facility to use if you're logging to syslog. Usually if you don't want to use @samp{mail}, you'll use local0..local7. Also other standard facilities are supported. Defaults to @samp{\"mail\"}."
36737 msgstr ""
36738
36739 #. type: deftypevr
36740 #: guix-git/doc/guix.texi:20650
36741 #, no-wrap
36742 msgid "{@code{dovecot-configuration} parameter} boolean auth-verbose?"
36743 msgstr ""
36744
36745 #. type: deftypevr
36746 #: guix-git/doc/guix.texi:20654
36747 msgid "Log unsuccessful authentication attempts and the reasons why they failed. Defaults to @samp{#f}."
36748 msgstr ""
36749
36750 #. type: deftypevr
36751 #: guix-git/doc/guix.texi:20656
36752 #, no-wrap
36753 msgid "{@code{dovecot-configuration} parameter} string auth-verbose-passwords"
36754 msgstr ""
36755
36756 #. type: deftypevr
36757 #: guix-git/doc/guix.texi:20663
36758 msgid "In case of password mismatches, log the attempted password. Valid values are no, plain and sha1. sha1 can be useful for detecting brute force password attempts vs. user simply trying the same password over and over again. You can also truncate the value to n chars by appending \":n\" (e.g.@: sha1:6). Defaults to @samp{\"no\"}."
36759 msgstr ""
36760
36761 #. type: deftypevr
36762 #: guix-git/doc/guix.texi:20665
36763 #, no-wrap
36764 msgid "{@code{dovecot-configuration} parameter} boolean auth-debug?"
36765 msgstr ""
36766
36767 #. type: deftypevr
36768 #: guix-git/doc/guix.texi:20669
36769 msgid "Even more verbose logging for debugging purposes. Shows for example SQL queries. Defaults to @samp{#f}."
36770 msgstr ""
36771
36772 #. type: deftypevr
36773 #: guix-git/doc/guix.texi:20671
36774 #, no-wrap
36775 msgid "{@code{dovecot-configuration} parameter} boolean auth-debug-passwords?"
36776 msgstr ""
36777
36778 #. type: deftypevr
36779 #: guix-git/doc/guix.texi:20676
36780 msgid "In case of password mismatches, log the passwords and used scheme so the problem can be debugged. Enabling this also enables @samp{auth-debug}. Defaults to @samp{#f}."
36781 msgstr ""
36782
36783 #. type: deftypevr
36784 #: guix-git/doc/guix.texi:20678
36785 #, no-wrap
36786 msgid "{@code{dovecot-configuration} parameter} boolean mail-debug?"
36787 msgstr ""
36788
36789 #. type: deftypevr
36790 #: guix-git/doc/guix.texi:20682
36791 msgid "Enable mail process debugging. This can help you figure out why Dovecot isn't finding your mails. Defaults to @samp{#f}."
36792 msgstr ""
36793
36794 #. type: deftypevr
36795 #: guix-git/doc/guix.texi:20684
36796 #, no-wrap
36797 msgid "{@code{dovecot-configuration} parameter} boolean verbose-ssl?"
36798 msgstr ""
36799
36800 #. type: deftypevr
36801 #: guix-git/doc/guix.texi:20687
36802 msgid "Show protocol level SSL errors. Defaults to @samp{#f}."
36803 msgstr ""
36804
36805 #. type: deftypevr
36806 #: guix-git/doc/guix.texi:20689
36807 #, no-wrap
36808 msgid "{@code{dovecot-configuration} parameter} string log-timestamp"
36809 msgstr ""
36810
36811 #. type: deftypevr
36812 #: guix-git/doc/guix.texi:20693
36813 msgid "Prefix for each line written to log file. % codes are in strftime(3) format. Defaults to @samp{\"\\\"%b %d %H:%M:%S \\\"\"}."
36814 msgstr ""
36815
36816 #. type: deftypevr
36817 #: guix-git/doc/guix.texi:20695
36818 #, no-wrap
36819 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list login-log-format-elements"
36820 msgstr ""
36821
36822 #. type: deftypevr
36823 #: guix-git/doc/guix.texi:20699
36824 msgid "List of elements we want to log. The elements which have a non-empty variable value are joined together to form a comma-separated string."
36825 msgstr ""
36826
36827 #. type: deftypevr
36828 #: guix-git/doc/guix.texi:20701
36829 #, no-wrap
36830 msgid "{@code{dovecot-configuration} parameter} string login-log-format"
36831 msgstr ""
36832
36833 #. type: deftypevr
36834 #: guix-git/doc/guix.texi:20705
36835 msgid "Login log format. %s contains @samp{login-log-format-elements} string, %$ contains the data we want to log. Defaults to @samp{\"%$: %s\"}."
36836 msgstr ""
36837
36838 #. type: deftypevr
36839 #: guix-git/doc/guix.texi:20707
36840 #, no-wrap
36841 msgid "{@code{dovecot-configuration} parameter} string mail-log-prefix"
36842 msgstr ""
36843
36844 #. type: deftypevr
36845 #: guix-git/doc/guix.texi:20711
36846 msgid "Log prefix for mail processes. See doc/wiki/Variables.txt for list of possible variables you can use. Defaults to @samp{\"\\\"%s(%u)<%@{pid@}><%@{session@}>: \\\"\"}."
36847 msgstr ""
36848
36849 #. type: deftypevr
36850 #: guix-git/doc/guix.texi:20713
36851 #, no-wrap
36852 msgid "{@code{dovecot-configuration} parameter} string deliver-log-format"
36853 msgstr ""
36854
36855 #. type: deftypevr
36856 #: guix-git/doc/guix.texi:20715
36857 msgid "Format to use for logging mail deliveries. You can use variables:"
36858 msgstr ""
36859
36860 #. type: item
36861 #: guix-git/doc/guix.texi:20716
36862 #, no-wrap
36863 msgid "%$"
36864 msgstr ""
36865
36866 #. type: table
36867 #: guix-git/doc/guix.texi:20718
36868 msgid "Delivery status message (e.g.@: @samp{saved to INBOX})"
36869 msgstr ""
36870
36871 #. type: item
36872 #: guix-git/doc/guix.texi:20718
36873 #, no-wrap
36874 msgid "%m"
36875 msgstr ""
36876
36877 #. type: table
36878 #: guix-git/doc/guix.texi:20720
36879 msgid "Message-ID"
36880 msgstr ""
36881
36882 #. type: item
36883 #: guix-git/doc/guix.texi:20720 guix-git/doc/guix.texi:21252
36884 #, no-wrap
36885 msgid "%s"
36886 msgstr ""
36887
36888 #. type: table
36889 #: guix-git/doc/guix.texi:20722
36890 msgid "Subject"
36891 msgstr ""
36892
36893 #. type: item
36894 #: guix-git/doc/guix.texi:20722
36895 #, no-wrap
36896 msgid "%f"
36897 msgstr ""
36898
36899 #. type: table
36900 #: guix-git/doc/guix.texi:20724
36901 msgid "From address"
36902 msgstr ""
36903
36904 #. type: table
36905 #: guix-git/doc/guix.texi:20726
36906 msgid "Physical size"
36907 msgstr ""
36908
36909 #. type: item
36910 #: guix-git/doc/guix.texi:20726
36911 #, no-wrap
36912 msgid "%w"
36913 msgstr ""
36914
36915 #. type: table
36916 #: guix-git/doc/guix.texi:20728
36917 msgid "Virtual size."
36918 msgstr ""
36919
36920 #. type: deftypevr
36921 #: guix-git/doc/guix.texi:20730
36922 msgid "Defaults to @samp{\"msgid=%m: %$\"}."
36923 msgstr ""
36924
36925 #. type: deftypevr
36926 #: guix-git/doc/guix.texi:20732
36927 #, no-wrap
36928 msgid "{@code{dovecot-configuration} parameter} string mail-location"
36929 msgstr ""
36930
36931 #. type: deftypevr
36932 #: guix-git/doc/guix.texi:20737
36933 msgid "Location for users' mailboxes. The default is empty, which means that Dovecot tries to find the mailboxes automatically. This won't work if the user doesn't yet have any mail, so you should explicitly tell Dovecot the full location."
36934 msgstr ""
36935
36936 #. type: deftypevr
36937 #: guix-git/doc/guix.texi:20743
36938 msgid "If you're using mbox, giving a path to the INBOX file (e.g.@: @file{/var/mail/%u}) isn't enough. You'll also need to tell Dovecot where the other mailboxes are kept. This is called the @emph{root mail directory}, and it must be the first path given in the @samp{mail-location} setting."
36939 msgstr ""
36940
36941 #. type: deftypevr
36942 #: guix-git/doc/guix.texi:20745
36943 msgid "There are a few special variables you can use, e.g.:"
36944 msgstr ""
36945
36946 #. type: table
36947 #: guix-git/doc/guix.texi:20749
36948 msgid "username"
36949 msgstr ""
36950
36951 #. type: item
36952 #: guix-git/doc/guix.texi:20749 guix-git/doc/guix.texi:21248
36953 #, no-wrap
36954 msgid "%n"
36955 msgstr ""
36956
36957 #. type: table
36958 #: guix-git/doc/guix.texi:20751
36959 msgid "user part in user@@domain, same as %u if there's no domain"
36960 msgstr ""
36961
36962 #. type: item
36963 #: guix-git/doc/guix.texi:20751
36964 #, no-wrap
36965 msgid "%d"
36966 msgstr ""
36967
36968 #. type: table
36969 #: guix-git/doc/guix.texi:20753
36970 msgid "domain part in user@@domain, empty if there's no domain"
36971 msgstr ""
36972
36973 #. type: item
36974 #: guix-git/doc/guix.texi:20753
36975 #, no-wrap
36976 msgid "%h"
36977 msgstr ""
36978
36979 #. type: table
36980 #: guix-git/doc/guix.texi:20755
36981 msgid "home director"
36982 msgstr ""
36983
36984 #. type: deftypevr
36985 #: guix-git/doc/guix.texi:20758
36986 msgid "See doc/wiki/Variables.txt for full list. Some examples:"
36987 msgstr ""
36988
36989 #. type: item
36990 #: guix-git/doc/guix.texi:20759
36991 #, no-wrap
36992 msgid "maildir:~/Maildir"
36993 msgstr ""
36994
36995 #. type: item
36996 #: guix-git/doc/guix.texi:20760
36997 #, no-wrap
36998 msgid "mbox:~/mail:INBOX=/var/mail/%u"
36999 msgstr ""
37000
37001 #. type: item
37002 #: guix-git/doc/guix.texi:20761
37003 #, no-wrap
37004 msgid "mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%"
37005 msgstr ""
37006
37007 #. type: deftypevr
37008 #: guix-git/doc/guix.texi:20766
37009 #, no-wrap
37010 msgid "{@code{dovecot-configuration} parameter} string mail-uid"
37011 msgstr ""
37012
37013 #. type: deftypevr
37014 #: guix-git/doc/guix.texi:20771
37015 msgid "System user and group used to access mails. If you use multiple, userdb can override these by returning uid or gid fields. You can use either numbers or names. <doc/wiki/UserIds.txt>. Defaults to @samp{\"\"}."
37016 msgstr ""
37017
37018 #. type: deftypevr
37019 #: guix-git/doc/guix.texi:20773
37020 #, no-wrap
37021 msgid "{@code{dovecot-configuration} parameter} string mail-gid"
37022 msgstr ""
37023
37024 #. type: deftypevr
37025 #: guix-git/doc/guix.texi:20778
37026 #, no-wrap
37027 msgid "{@code{dovecot-configuration} parameter} string mail-privileged-group"
37028 msgstr ""
37029
37030 #. type: deftypevr
37031 #: guix-git/doc/guix.texi:20784
37032 msgid "Group to enable temporarily for privileged operations. Currently this is used only with INBOX when either its initial creation or dotlocking fails. Typically this is set to @samp{\"mail\"} to give access to @file{/var/mail}. Defaults to @samp{\"\"}."
37033 msgstr ""
37034
37035 #. type: deftypevr
37036 #: guix-git/doc/guix.texi:20786
37037 #, no-wrap
37038 msgid "{@code{dovecot-configuration} parameter} string mail-access-groups"
37039 msgstr ""
37040
37041 #. type: deftypevr
37042 #: guix-git/doc/guix.texi:20794
37043 msgid "Grant access to these supplementary groups for mail processes. Typically these are used to set up access to shared mailboxes. Note that it may be dangerous to set these if users can create symlinks (e.g.@: if @samp{mail} group is set here, @code{ln -s /var/mail ~/mail/var} could allow a user to delete others' mailboxes, or @code{ln -s /secret/shared/box ~/mail/mybox} would allow reading it). Defaults to @samp{\"\"}."
37044 msgstr ""
37045
37046 #. type: deftypevr
37047 #: guix-git/doc/guix.texi:20796
37048 #, no-wrap
37049 msgid "{@code{dovecot-configuration} parameter} boolean mail-full-filesystem-access?"
37050 msgstr ""
37051
37052 #. type: deftypevr
37053 #: guix-git/doc/guix.texi:20802
37054 msgid "Allow full file system access to clients. There's no access checks other than what the operating system does for the active UID/GID@. It works with both maildir and mboxes, allowing you to prefix mailboxes names with e.g.@: @file{/path/} or @file{~user/}. Defaults to @samp{#f}."
37055 msgstr ""
37056
37057 #. type: deftypevr
37058 #: guix-git/doc/guix.texi:20804
37059 #, no-wrap
37060 msgid "{@code{dovecot-configuration} parameter} boolean mmap-disable?"
37061 msgstr ""
37062
37063 #. type: deftypevr
37064 #: guix-git/doc/guix.texi:20808
37065 msgid "Don't use @code{mmap()} at all. This is required if you store indexes to shared file systems (NFS or clustered file system). Defaults to @samp{#f}."
37066 msgstr ""
37067
37068 #. type: deftypevr
37069 #: guix-git/doc/guix.texi:20810
37070 #, no-wrap
37071 msgid "{@code{dovecot-configuration} parameter} boolean dotlock-use-excl?"
37072 msgstr ""
37073
37074 #. type: deftypevr
37075 #: guix-git/doc/guix.texi:20815
37076 msgid "Rely on @samp{O_EXCL} to work when creating dotlock files. NFS supports @samp{O_EXCL} since version 3, so this should be safe to use nowadays by default. Defaults to @samp{#t}."
37077 msgstr ""
37078
37079 #. type: deftypevr
37080 #: guix-git/doc/guix.texi:20817
37081 #, no-wrap
37082 msgid "{@code{dovecot-configuration} parameter} string mail-fsync"
37083 msgstr ""
37084
37085 #. type: deftypevr
37086 #: guix-git/doc/guix.texi:20819
37087 msgid "When to use fsync() or fdatasync() calls:"
37088 msgstr ""
37089
37090 #. type: item
37091 #: guix-git/doc/guix.texi:20820
37092 #, no-wrap
37093 msgid "optimized"
37094 msgstr ""
37095
37096 #. type: table
37097 #: guix-git/doc/guix.texi:20822
37098 msgid "Whenever necessary to avoid losing important data"
37099 msgstr ""
37100
37101 #. type: table
37102 #: guix-git/doc/guix.texi:20824
37103 msgid "Useful with e.g.@: NFS when @code{write()}s are delayed"
37104 msgstr ""
37105
37106 #. type: table
37107 #: guix-git/doc/guix.texi:20826
37108 msgid "Never use it (best performance, but crashes can lose data)."
37109 msgstr ""
37110
37111 #. type: deftypevr
37112 #: guix-git/doc/guix.texi:20828
37113 msgid "Defaults to @samp{\"optimized\"}."
37114 msgstr ""
37115
37116 #. type: deftypevr
37117 #: guix-git/doc/guix.texi:20830
37118 #, no-wrap
37119 msgid "{@code{dovecot-configuration} parameter} boolean mail-nfs-storage?"
37120 msgstr ""
37121
37122 #. type: deftypevr
37123 #: guix-git/doc/guix.texi:20835
37124 msgid "Mail storage exists in NFS@. Set this to yes to make Dovecot flush NFS caches whenever needed. If you're using only a single mail server this isn't needed. Defaults to @samp{#f}."
37125 msgstr ""
37126
37127 #. type: deftypevr
37128 #: guix-git/doc/guix.texi:20837
37129 #, no-wrap
37130 msgid "{@code{dovecot-configuration} parameter} boolean mail-nfs-index?"
37131 msgstr ""
37132
37133 #. type: deftypevr
37134 #: guix-git/doc/guix.texi:20841
37135 msgid "Mail index files also exist in NFS@. Setting this to yes requires @samp{mmap-disable? #t} and @samp{fsync-disable? #f}. Defaults to @samp{#f}."
37136 msgstr ""
37137
37138 #. type: deftypevr
37139 #: guix-git/doc/guix.texi:20843
37140 #, no-wrap
37141 msgid "{@code{dovecot-configuration} parameter} string lock-method"
37142 msgstr ""
37143
37144 #. type: deftypevr
37145 #: guix-git/doc/guix.texi:20849
37146 msgid "Locking method for index files. Alternatives are fcntl, flock and dotlock. Dotlocking uses some tricks which may create more disk I/O than other locking methods. NFS users: flock doesn't work, remember to change @samp{mmap-disable}. Defaults to @samp{\"fcntl\"}."
37147 msgstr ""
37148
37149 #. type: deftypevr
37150 #: guix-git/doc/guix.texi:20851
37151 #, no-wrap
37152 msgid "{@code{dovecot-configuration} parameter} file-name mail-temp-dir"
37153 msgstr ""
37154
37155 #. type: deftypevr
37156 #: guix-git/doc/guix.texi:20855
37157 msgid "Directory in which LDA/LMTP temporarily stores incoming mails >128 kB. Defaults to @samp{\"/tmp\"}."
37158 msgstr ""
37159
37160 #. type: deftypevr
37161 #: guix-git/doc/guix.texi:20857
37162 #, no-wrap
37163 msgid "{@code{dovecot-configuration} parameter} non-negative-integer first-valid-uid"
37164 msgstr ""
37165
37166 #. type: deftypevr
37167 #: guix-git/doc/guix.texi:20863
37168 msgid "Valid UID range for users. This is mostly to make sure that users can't log in as daemons or other system users. Note that denying root logins is hardcoded to dovecot binary and can't be done even if @samp{first-valid-uid} is set to 0. Defaults to @samp{500}."
37169 msgstr ""
37170
37171 #. type: deftypevr
37172 #: guix-git/doc/guix.texi:20865
37173 #, no-wrap
37174 msgid "{@code{dovecot-configuration} parameter} non-negative-integer last-valid-uid"
37175 msgstr ""
37176
37177 #. type: deftypevr
37178 #: guix-git/doc/guix.texi:20870
37179 #, no-wrap
37180 msgid "{@code{dovecot-configuration} parameter} non-negative-integer first-valid-gid"
37181 msgstr ""
37182
37183 #. type: deftypevr
37184 #: guix-git/doc/guix.texi:20875
37185 msgid "Valid GID range for users. Users having non-valid GID as primary group ID aren't allowed to log in. If user belongs to supplementary groups with non-valid GIDs, those groups are not set. Defaults to @samp{1}."
37186 msgstr ""
37187
37188 #. type: deftypevr
37189 #: guix-git/doc/guix.texi:20877
37190 #, no-wrap
37191 msgid "{@code{dovecot-configuration} parameter} non-negative-integer last-valid-gid"
37192 msgstr ""
37193
37194 #. type: deftypevr
37195 #: guix-git/doc/guix.texi:20882
37196 #, no-wrap
37197 msgid "{@code{dovecot-configuration} parameter} non-negative-integer mail-max-keyword-length"
37198 msgstr ""
37199
37200 #. type: deftypevr
37201 #: guix-git/doc/guix.texi:20886
37202 msgid "Maximum allowed length for mail keyword name. It's only forced when trying to create new keywords. Defaults to @samp{50}."
37203 msgstr ""
37204
37205 #. type: deftypevr
37206 #: guix-git/doc/guix.texi:20888
37207 #, no-wrap
37208 msgid "{@code{dovecot-configuration} parameter} colon-separated-file-name-list valid-chroot-dirs"
37209 msgstr ""
37210
37211 #. type: deftypevr
37212 #: guix-git/doc/guix.texi:20898
37213 msgid "List of directories under which chrooting is allowed for mail processes (i.e.@: @file{/var/mail} will allow chrooting to @file{/var/mail/foo/bar} too). This setting doesn't affect @samp{login-chroot} @samp{mail-chroot} or auth chroot settings. If this setting is empty, @samp{/./} in home dirs are ignored. WARNING: Never add directories here which local users can modify, that may lead to root exploit. Usually this should be done only if you don't allow shell access for users. <doc/wiki/Chrooting.txt>. Defaults to @samp{()}."
37214 msgstr ""
37215
37216 #. type: deftypevr
37217 #: guix-git/doc/guix.texi:20900
37218 #, no-wrap
37219 msgid "{@code{dovecot-configuration} parameter} string mail-chroot"
37220 msgstr ""
37221
37222 #. type: deftypevr
37223 #: guix-git/doc/guix.texi:20909
37224 msgid "Default chroot directory for mail processes. This can be overridden for specific users in user database by giving @samp{/./} in user's home directory (e.g.@: @samp{/home/./user} chroots into @file{/home}). Note that usually there is no real need to do chrooting, Dovecot doesn't allow users to access files outside their mail directory anyway. If your home directories are prefixed with the chroot directory, append @samp{/.} to @samp{mail-chroot}. <doc/wiki/Chrooting.txt>. Defaults to @samp{\"\"}."
37225 msgstr ""
37226
37227 #. type: deftypevr
37228 #: guix-git/doc/guix.texi:20911
37229 #, no-wrap
37230 msgid "{@code{dovecot-configuration} parameter} file-name auth-socket-path"
37231 msgstr ""
37232
37233 #. type: deftypevr
37234 #: guix-git/doc/guix.texi:20915
37235 msgid "UNIX socket path to master authentication server to find users. This is used by imap (for shared users) and lda. Defaults to @samp{\"/var/run/dovecot/auth-userdb\"}."
37236 msgstr ""
37237
37238 #. type: deftypevr
37239 #: guix-git/doc/guix.texi:20917
37240 #, no-wrap
37241 msgid "{@code{dovecot-configuration} parameter} file-name mail-plugin-dir"
37242 msgstr ""
37243
37244 #. type: deftypevr
37245 #: guix-git/doc/guix.texi:20920
37246 msgid "Directory where to look up mail plugins. Defaults to @samp{\"/usr/lib/dovecot\"}."
37247 msgstr ""
37248
37249 #. type: deftypevr
37250 #: guix-git/doc/guix.texi:20922
37251 #, no-wrap
37252 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list mail-plugins"
37253 msgstr ""
37254
37255 #. type: deftypevr
37256 #: guix-git/doc/guix.texi:20926
37257 msgid "List of plugins to load for all services. Plugins specific to IMAP, LDA, etc.@: are added to this list in their own .conf files. Defaults to @samp{()}."
37258 msgstr ""
37259
37260 #. type: deftypevr
37261 #: guix-git/doc/guix.texi:20928
37262 #, no-wrap
37263 msgid "{@code{dovecot-configuration} parameter} non-negative-integer mail-cache-min-mail-count"
37264 msgstr ""
37265
37266 #. type: deftypevr
37267 #: guix-git/doc/guix.texi:20933
37268 msgid "The minimum number of mails in a mailbox before updates are done to cache file. This allows optimizing Dovecot's behavior to do less disk writes at the cost of more disk reads. Defaults to @samp{0}."
37269 msgstr ""
37270
37271 #. type: deftypevr
37272 #: guix-git/doc/guix.texi:20935
37273 #, no-wrap
37274 msgid "{@code{dovecot-configuration} parameter} string mailbox-idle-check-interval"
37275 msgstr ""
37276
37277 #. type: deftypevr
37278 #: guix-git/doc/guix.texi:20942
37279 msgid "When IDLE command is running, mailbox is checked once in a while to see if there are any new mails or other changes. This setting defines the minimum time to wait between those checks. Dovecot can also use dnotify, inotify and kqueue to find out immediately when changes occur. Defaults to @samp{\"30 secs\"}."
37280 msgstr ""
37281
37282 #. type: deftypevr
37283 #: guix-git/doc/guix.texi:20944
37284 #, no-wrap
37285 msgid "{@code{dovecot-configuration} parameter} boolean mail-save-crlf?"
37286 msgstr ""
37287
37288 #. type: deftypevr
37289 #: guix-git/doc/guix.texi:20951
37290 msgid "Save mails with CR+LF instead of plain LF@. This makes sending those mails take less CPU, especially with sendfile() syscall with Linux and FreeBSD@. But it also creates a bit more disk I/O which may just make it slower. Also note that if other software reads the mboxes/maildirs, they may handle the extra CRs wrong and cause problems. Defaults to @samp{#f}."
37291 msgstr ""
37292
37293 #. type: deftypevr
37294 #: guix-git/doc/guix.texi:20953
37295 #, no-wrap
37296 msgid "{@code{dovecot-configuration} parameter} boolean maildir-stat-dirs?"
37297 msgstr ""
37298
37299 #. type: deftypevr
37300 #: guix-git/doc/guix.texi:20961
37301 msgid "By default LIST command returns all entries in maildir beginning with a dot. Enabling this option makes Dovecot return only entries which are directories. This is done by stat()ing each entry, so it causes more disk I/O. (For systems setting struct @samp{dirent->d_type} this check is free and it's done always regardless of this setting). Defaults to @samp{#f}."
37302 msgstr ""
37303
37304 #. type: deftypevr
37305 #: guix-git/doc/guix.texi:20963
37306 #, no-wrap
37307 msgid "{@code{dovecot-configuration} parameter} boolean maildir-copy-with-hardlinks?"
37308 msgstr ""
37309
37310 #. type: deftypevr
37311 #: guix-git/doc/guix.texi:20968
37312 msgid "When copying a message, do it with hard links whenever possible. This makes the performance much better, and it's unlikely to have any side effects. Defaults to @samp{#t}."
37313 msgstr ""
37314
37315 #. type: deftypevr
37316 #: guix-git/doc/guix.texi:20970
37317 #, no-wrap
37318 msgid "{@code{dovecot-configuration} parameter} boolean maildir-very-dirty-syncs?"
37319 msgstr ""
37320
37321 #. type: deftypevr
37322 #: guix-git/doc/guix.texi:20975
37323 msgid "Assume Dovecot is the only MUA accessing Maildir: Scan cur/ directory only when its mtime changes unexpectedly or when we can't find the mail otherwise. Defaults to @samp{#f}."
37324 msgstr ""
37325
37326 #. type: deftypevr
37327 #: guix-git/doc/guix.texi:20977
37328 #, no-wrap
37329 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list mbox-read-locks"
37330 msgstr ""
37331
37332 #. type: deftypevr
37333 #: guix-git/doc/guix.texi:20980
37334 msgid "Which locking methods to use for locking mbox. There are four available:"
37335 msgstr ""
37336
37337 #. type: item
37338 #: guix-git/doc/guix.texi:20982
37339 #, no-wrap
37340 msgid "dotlock"
37341 msgstr ""
37342
37343 #. type: table
37344 #: guix-git/doc/guix.texi:20986
37345 msgid "Create <mailbox>.lock file. This is the oldest and most NFS-safe solution. If you want to use /var/mail/ like directory, the users will need write access to that directory."
37346 msgstr ""
37347
37348 #. type: item
37349 #: guix-git/doc/guix.texi:20986
37350 #, no-wrap
37351 msgid "dotlock-try"
37352 msgstr ""
37353
37354 #. type: table
37355 #: guix-git/doc/guix.texi:20989
37356 msgid "Same as dotlock, but if it fails because of permissions or because there isn't enough disk space, just skip it."
37357 msgstr ""
37358
37359 #. type: item
37360 #: guix-git/doc/guix.texi:20989
37361 #, no-wrap
37362 msgid "fcntl"
37363 msgstr ""
37364
37365 #. type: table
37366 #: guix-git/doc/guix.texi:20991
37367 msgid "Use this if possible. Works with NFS too if lockd is used."
37368 msgstr ""
37369
37370 #. type: item
37371 #: guix-git/doc/guix.texi:20991
37372 #, no-wrap
37373 msgid "flock"
37374 msgstr ""
37375
37376 #. type: table
37377 #: guix-git/doc/guix.texi:20993 guix-git/doc/guix.texi:20995
37378 msgid "May not exist in all systems. Doesn't work with NFS."
37379 msgstr ""
37380
37381 #. type: item
37382 #: guix-git/doc/guix.texi:20993
37383 #, no-wrap
37384 msgid "lockf"
37385 msgstr ""
37386
37387 #. type: deftypevr
37388 #: guix-git/doc/guix.texi:21001
37389 msgid "You can use multiple locking methods; if you do the order they're declared in is important to avoid deadlocks if other MTAs/MUAs are using multiple locking methods as well. Some operating systems don't allow using some of them simultaneously."
37390 msgstr ""
37391
37392 #. type: deftypevr
37393 #: guix-git/doc/guix.texi:21003
37394 #, no-wrap
37395 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list mbox-write-locks"
37396 msgstr ""
37397
37398 #. type: deftypevr
37399 #: guix-git/doc/guix.texi:21007
37400 #, no-wrap
37401 msgid "{@code{dovecot-configuration} parameter} string mbox-lock-timeout"
37402 msgstr ""
37403
37404 #. type: deftypevr
37405 #: guix-git/doc/guix.texi:21010
37406 msgid "Maximum time to wait for lock (all of them) before aborting. Defaults to @samp{\"5 mins\"}."
37407 msgstr ""
37408
37409 #. type: deftypevr
37410 #: guix-git/doc/guix.texi:21012
37411 #, no-wrap
37412 msgid "{@code{dovecot-configuration} parameter} string mbox-dotlock-change-timeout"
37413 msgstr ""
37414
37415 #. type: deftypevr
37416 #: guix-git/doc/guix.texi:21016
37417 msgid "If dotlock exists but the mailbox isn't modified in any way, override the lock file after this much time. Defaults to @samp{\"2 mins\"}."
37418 msgstr ""
37419
37420 #. type: deftypevr
37421 #: guix-git/doc/guix.texi:21018
37422 #, no-wrap
37423 msgid "{@code{dovecot-configuration} parameter} boolean mbox-dirty-syncs?"
37424 msgstr ""
37425
37426 #. type: deftypevr
37427 #: guix-git/doc/guix.texi:21029
37428 msgid "When mbox changes unexpectedly we have to fully read it to find out what changed. If the mbox is large this can take a long time. Since the change is usually just a newly appended mail, it'd be faster to simply read the new mails. If this setting is enabled, Dovecot does this but still safely fallbacks to re-reading the whole mbox file whenever something in mbox isn't how it's expected to be. The only real downside to this setting is that if some other MUA changes message flags, Dovecot doesn't notice it immediately. Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK commands. Defaults to @samp{#t}."
37429 msgstr ""
37430
37431 #. type: deftypevr
37432 #: guix-git/doc/guix.texi:21031
37433 #, no-wrap
37434 msgid "{@code{dovecot-configuration} parameter} boolean mbox-very-dirty-syncs?"
37435 msgstr ""
37436
37437 #. type: deftypevr
37438 #: guix-git/doc/guix.texi:21036
37439 msgid "Like @samp{mbox-dirty-syncs}, but don't do full syncs even with SELECT, EXAMINE, EXPUNGE or CHECK commands. If this is set, @samp{mbox-dirty-syncs} is ignored. Defaults to @samp{#f}."
37440 msgstr ""
37441
37442 #. type: deftypevr
37443 #: guix-git/doc/guix.texi:21038
37444 #, no-wrap
37445 msgid "{@code{dovecot-configuration} parameter} boolean mbox-lazy-writes?"
37446 msgstr ""
37447
37448 #. type: deftypevr
37449 #: guix-git/doc/guix.texi:21044
37450 msgid "Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK commands and when closing the mailbox). This is especially useful for POP3 where clients often delete all mails. The downside is that our changes aren't immediately visible to other MUAs. Defaults to @samp{#t}."
37451 msgstr ""
37452
37453 #. type: deftypevr
37454 #: guix-git/doc/guix.texi:21046
37455 #, no-wrap
37456 msgid "{@code{dovecot-configuration} parameter} non-negative-integer mbox-min-index-size"
37457 msgstr ""
37458
37459 #. type: deftypevr
37460 #: guix-git/doc/guix.texi:21051
37461 msgid "If mbox size is smaller than this (e.g.@: 100k), don't write index files. If an index file already exists it's still read, just not updated. Defaults to @samp{0}."
37462 msgstr ""
37463
37464 #. type: deftypevr
37465 #: guix-git/doc/guix.texi:21053
37466 #, no-wrap
37467 msgid "{@code{dovecot-configuration} parameter} non-negative-integer mdbox-rotate-size"
37468 msgstr ""
37469
37470 #. type: deftypevr
37471 #: guix-git/doc/guix.texi:21056
37472 msgid "Maximum dbox file size until it's rotated. Defaults to @samp{10000000}."
37473 msgstr ""
37474
37475 #. type: deftypevr
37476 #: guix-git/doc/guix.texi:21058
37477 #, no-wrap
37478 msgid "{@code{dovecot-configuration} parameter} string mdbox-rotate-interval"
37479 msgstr ""
37480
37481 #. type: deftypevr
37482 #: guix-git/doc/guix.texi:21063
37483 msgid "Maximum dbox file age until it's rotated. Typically in days. Day begins from midnight, so 1d = today, 2d = yesterday, etc. 0 = check disabled. Defaults to @samp{\"1d\"}."
37484 msgstr ""
37485
37486 #. type: deftypevr
37487 #: guix-git/doc/guix.texi:21065
37488 #, no-wrap
37489 msgid "{@code{dovecot-configuration} parameter} boolean mdbox-preallocate-space?"
37490 msgstr ""
37491
37492 #. type: deftypevr
37493 #: guix-git/doc/guix.texi:21070
37494 msgid "When creating new mdbox files, immediately preallocate their size to @samp{mdbox-rotate-size}. This setting currently works only in Linux with some file systems (ext4, xfs). Defaults to @samp{#f}."
37495 msgstr ""
37496
37497 #. type: deftypevr
37498 #: guix-git/doc/guix.texi:21072
37499 #, no-wrap
37500 msgid "{@code{dovecot-configuration} parameter} string mail-attachment-dir"
37501 msgstr ""
37502
37503 #. type: deftypevr
37504 #: guix-git/doc/guix.texi:21076
37505 msgid "sdbox and mdbox support saving mail attachments to external files, which also allows single instance storage for them. Other backends don't support this for now."
37506 msgstr ""
37507
37508 #. type: deftypevr
37509 #: guix-git/doc/guix.texi:21078
37510 msgid "WARNING: This feature hasn't been tested much yet. Use at your own risk."
37511 msgstr ""
37512
37513 #. type: deftypevr
37514 #: guix-git/doc/guix.texi:21081
37515 msgid "Directory root where to store mail attachments. Disabled, if empty. Defaults to @samp{\"\"}."
37516 msgstr ""
37517
37518 #. type: deftypevr
37519 #: guix-git/doc/guix.texi:21083
37520 #, no-wrap
37521 msgid "{@code{dovecot-configuration} parameter} non-negative-integer mail-attachment-min-size"
37522 msgstr ""
37523
37524 #. type: deftypevr
37525 #: guix-git/doc/guix.texi:21088
37526 msgid "Attachments smaller than this aren't saved externally. It's also possible to write a plugin to disable saving specific attachments externally. Defaults to @samp{128000}."
37527 msgstr ""
37528
37529 #. type: deftypevr
37530 #: guix-git/doc/guix.texi:21090
37531 #, no-wrap
37532 msgid "{@code{dovecot-configuration} parameter} string mail-attachment-fs"
37533 msgstr ""
37534
37535 #. type: deftypevr
37536 #: guix-git/doc/guix.texi:21092
37537 msgid "File system backend to use for saving attachments:"
37538 msgstr ""
37539
37540 #. type: item
37541 #: guix-git/doc/guix.texi:21093
37542 #, no-wrap
37543 msgid "posix"
37544 msgstr ""
37545
37546 #. type: table
37547 #: guix-git/doc/guix.texi:21095
37548 msgid "No SiS done by Dovecot (but this might help FS's own deduplication)"
37549 msgstr ""
37550
37551 #. type: item
37552 #: guix-git/doc/guix.texi:21095
37553 #, no-wrap
37554 msgid "sis posix"
37555 msgstr ""
37556
37557 #. type: table
37558 #: guix-git/doc/guix.texi:21097
37559 msgid "SiS with immediate byte-by-byte comparison during saving"
37560 msgstr ""
37561
37562 #. type: item
37563 #: guix-git/doc/guix.texi:21097
37564 #, no-wrap
37565 msgid "sis-queue posix"
37566 msgstr ""
37567
37568 #. type: table
37569 #: guix-git/doc/guix.texi:21099
37570 msgid "SiS with delayed comparison and deduplication."
37571 msgstr ""
37572
37573 #. type: deftypevr
37574 #: guix-git/doc/guix.texi:21101
37575 msgid "Defaults to @samp{\"sis posix\"}."
37576 msgstr ""
37577
37578 #. type: deftypevr
37579 #: guix-git/doc/guix.texi:21103
37580 #, no-wrap
37581 msgid "{@code{dovecot-configuration} parameter} string mail-attachment-hash"
37582 msgstr ""
37583
37584 #. type: deftypevr
37585 #: guix-git/doc/guix.texi:21109
37586 msgid "Hash format to use in attachment filenames. You can add any text and variables: @code{%@{md4@}}, @code{%@{md5@}}, @code{%@{sha1@}}, @code{%@{sha256@}}, @code{%@{sha512@}}, @code{%@{size@}}. Variables can be truncated, e.g.@: @code{%@{sha256:80@}} returns only first 80 bits. Defaults to @samp{\"%@{sha1@}\"}."
37587 msgstr ""
37588
37589 #. type: deftypevr
37590 #: guix-git/doc/guix.texi:21111
37591 #, no-wrap
37592 msgid "{@code{dovecot-configuration} parameter} non-negative-integer default-process-limit"
37593 msgstr ""
37594
37595 #. type: deftypevr
37596 #: guix-git/doc/guix.texi:21116
37597 #, no-wrap
37598 msgid "{@code{dovecot-configuration} parameter} non-negative-integer default-client-limit"
37599 msgstr ""
37600
37601 #. type: deftypevr
37602 #: guix-git/doc/guix.texi:21119 guix-git/doc/guix.texi:28439
37603 msgid "Defaults to @samp{1000}."
37604 msgstr ""
37605
37606 #. type: deftypevr
37607 #: guix-git/doc/guix.texi:21121
37608 #, no-wrap
37609 msgid "{@code{dovecot-configuration} parameter} non-negative-integer default-vsz-limit"
37610 msgstr ""
37611
37612 #. type: deftypevr
37613 #: guix-git/doc/guix.texi:21126
37614 msgid "Default VSZ (virtual memory size) limit for service processes. This is mainly intended to catch and kill processes that leak memory before they eat up everything. Defaults to @samp{256000000}."
37615 msgstr ""
37616
37617 #. type: deftypevr
37618 #: guix-git/doc/guix.texi:21128
37619 #, no-wrap
37620 msgid "{@code{dovecot-configuration} parameter} string default-login-user"
37621 msgstr ""
37622
37623 #. type: deftypevr
37624 #: guix-git/doc/guix.texi:21133
37625 msgid "Login user is internally used by login processes. This is the most untrusted user in Dovecot system. It shouldn't have access to anything at all. Defaults to @samp{\"dovenull\"}."
37626 msgstr ""
37627
37628 #. type: deftypevr
37629 #: guix-git/doc/guix.texi:21135
37630 #, no-wrap
37631 msgid "{@code{dovecot-configuration} parameter} string default-internal-user"
37632 msgstr ""
37633
37634 #. type: deftypevr
37635 #: guix-git/doc/guix.texi:21140
37636 msgid "Internal user is used by unprivileged processes. It should be separate from login user, so that login processes can't disturb other processes. Defaults to @samp{\"dovecot\"}."
37637 msgstr ""
37638
37639 #. type: deftypevr
37640 #: guix-git/doc/guix.texi:21142
37641 #, no-wrap
37642 msgid "{@code{dovecot-configuration} parameter} string ssl?"
37643 msgstr ""
37644
37645 #. type: deftypevr
37646 #: guix-git/doc/guix.texi:21145
37647 msgid "SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>. Defaults to @samp{\"required\"}."
37648 msgstr ""
37649
37650 #. type: deftypevr
37651 #: guix-git/doc/guix.texi:21147
37652 #, no-wrap
37653 msgid "{@code{dovecot-configuration} parameter} string ssl-cert"
37654 msgstr ""
37655
37656 #. type: deftypevr
37657 #: guix-git/doc/guix.texi:21150
37658 msgid "PEM encoded X.509 SSL/TLS certificate (public key). Defaults to @samp{\"</etc/dovecot/default.pem\"}."
37659 msgstr ""
37660
37661 #. type: deftypevr
37662 #: guix-git/doc/guix.texi:21152
37663 #, no-wrap
37664 msgid "{@code{dovecot-configuration} parameter} string ssl-key"
37665 msgstr ""
37666
37667 #. type: deftypevr
37668 #: guix-git/doc/guix.texi:21157
37669 msgid "PEM encoded SSL/TLS private key. The key is opened before dropping root privileges, so keep the key file unreadable by anyone but root. Defaults to @samp{\"</etc/dovecot/private/default.pem\"}."
37670 msgstr ""
37671
37672 #. type: deftypevr
37673 #: guix-git/doc/guix.texi:21159
37674 #, no-wrap
37675 msgid "{@code{dovecot-configuration} parameter} string ssl-key-password"
37676 msgstr ""
37677
37678 #. type: deftypevr
37679 #: guix-git/doc/guix.texi:21165
37680 msgid "If key file is password protected, give the password here. Alternatively give it when starting dovecot with -p parameter. Since this file is often world-readable, you may want to place this setting instead to a different. Defaults to @samp{\"\"}."
37681 msgstr ""
37682
37683 #. type: deftypevr
37684 #: guix-git/doc/guix.texi:21167
37685 #, no-wrap
37686 msgid "{@code{dovecot-configuration} parameter} string ssl-ca"
37687 msgstr ""
37688
37689 #. type: deftypevr
37690 #: guix-git/doc/guix.texi:21173
37691 msgid "PEM encoded trusted certificate authority. Set this only if you intend to use @samp{ssl-verify-client-cert? #t}. The file should contain the CA certificate(s) followed by the matching CRL(s). (e.g.@: @samp{ssl-ca </etc/ssl/certs/ca.pem}). Defaults to @samp{\"\"}."
37692 msgstr ""
37693
37694 #. type: deftypevr
37695 #: guix-git/doc/guix.texi:21175
37696 #, no-wrap
37697 msgid "{@code{dovecot-configuration} parameter} boolean ssl-require-crl?"
37698 msgstr ""
37699
37700 #. type: deftypevr
37701 #: guix-git/doc/guix.texi:21178
37702 msgid "Require that CRL check succeeds for client certificates. Defaults to @samp{#t}."
37703 msgstr ""
37704
37705 #. type: deftypevr
37706 #: guix-git/doc/guix.texi:21180
37707 #, no-wrap
37708 msgid "{@code{dovecot-configuration} parameter} boolean ssl-verify-client-cert?"
37709 msgstr ""
37710
37711 #. type: deftypevr
37712 #: guix-git/doc/guix.texi:21184
37713 msgid "Request client to send a certificate. If you also want to require it, set @samp{auth-ssl-require-client-cert? #t} in auth section. Defaults to @samp{#f}."
37714 msgstr ""
37715
37716 #. type: deftypevr
37717 #: guix-git/doc/guix.texi:21186
37718 #, no-wrap
37719 msgid "{@code{dovecot-configuration} parameter} string ssl-cert-username-field"
37720 msgstr ""
37721
37722 #. type: deftypevr
37723 #: guix-git/doc/guix.texi:21191
37724 msgid "Which field from certificate to use for username. commonName and x500UniqueIdentifier are the usual choices. You'll also need to set @samp{auth-ssl-username-from-cert? #t}. Defaults to @samp{\"commonName\"}."
37725 msgstr ""
37726
37727 #. type: deftypevr
37728 #: guix-git/doc/guix.texi:21193
37729 #, no-wrap
37730 msgid "{@code{dovecot-configuration} parameter} string ssl-min-protocol"
37731 msgstr ""
37732
37733 #. type: deftypevr
37734 #: guix-git/doc/guix.texi:21196
37735 msgid "Minimum SSL protocol version to accept. Defaults to @samp{\"TLSv1\"}."
37736 msgstr ""
37737
37738 #. type: deftypevr
37739 #: guix-git/doc/guix.texi:21198
37740 #, no-wrap
37741 msgid "{@code{dovecot-configuration} parameter} string ssl-cipher-list"
37742 msgstr ""
37743
37744 #. type: deftypevr
37745 #: guix-git/doc/guix.texi:21201
37746 msgid "SSL ciphers to use. Defaults to @samp{\"ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@@STRENGTH\"}."
37747 msgstr ""
37748
37749 #. type: deftypevr
37750 #: guix-git/doc/guix.texi:21203
37751 #, no-wrap
37752 msgid "{@code{dovecot-configuration} parameter} string ssl-crypto-device"
37753 msgstr ""
37754
37755 #. type: deftypevr
37756 #: guix-git/doc/guix.texi:21206
37757 msgid "SSL crypto device to use, for valid values run \"openssl engine\". Defaults to @samp{\"\"}."
37758 msgstr ""
37759
37760 #. type: deftypevr
37761 #: guix-git/doc/guix.texi:21208
37762 #, no-wrap
37763 msgid "{@code{dovecot-configuration} parameter} string postmaster-address"
37764 msgstr ""
37765
37766 #. type: deftypevr
37767 #: guix-git/doc/guix.texi:21212
37768 msgid "Address to use when sending rejection mails. %d expands to recipient domain. Defaults to @samp{\"postmaster@@%d\"}."
37769 msgstr ""
37770
37771 #. type: deftypevr
37772 #: guix-git/doc/guix.texi:21214
37773 #, no-wrap
37774 msgid "{@code{dovecot-configuration} parameter} string hostname"
37775 msgstr ""
37776
37777 #. type: deftypevr
37778 #: guix-git/doc/guix.texi:21218
37779 msgid "Hostname to use in various parts of sent mails (e.g.@: in Message-Id) and in LMTP replies. Default is the system's real hostname@@domain. Defaults to @samp{\"\"}."
37780 msgstr ""
37781
37782 #. type: deftypevr
37783 #: guix-git/doc/guix.texi:21220
37784 #, no-wrap
37785 msgid "{@code{dovecot-configuration} parameter} boolean quota-full-tempfail?"
37786 msgstr ""
37787
37788 #. type: deftypevr
37789 #: guix-git/doc/guix.texi:21224
37790 msgid "If user is over quota, return with temporary failure instead of bouncing the mail. Defaults to @samp{#f}."
37791 msgstr ""
37792
37793 #. type: deftypevr
37794 #: guix-git/doc/guix.texi:21226
37795 #, no-wrap
37796 msgid "{@code{dovecot-configuration} parameter} file-name sendmail-path"
37797 msgstr ""
37798
37799 #. type: deftypevr
37800 #: guix-git/doc/guix.texi:21229
37801 msgid "Binary to use for sending mails. Defaults to @samp{\"/usr/sbin/sendmail\"}."
37802 msgstr ""
37803
37804 #. type: deftypevr
37805 #: guix-git/doc/guix.texi:21231
37806 #, no-wrap
37807 msgid "{@code{dovecot-configuration} parameter} string submission-host"
37808 msgstr ""
37809
37810 #. type: deftypevr
37811 #: guix-git/doc/guix.texi:21235
37812 msgid "If non-empty, send mails via this SMTP host[:port] instead of sendmail. Defaults to @samp{\"\"}."
37813 msgstr ""
37814
37815 #. type: deftypevr
37816 #: guix-git/doc/guix.texi:21237
37817 #, no-wrap
37818 msgid "{@code{dovecot-configuration} parameter} string rejection-subject"
37819 msgstr ""
37820
37821 #. type: deftypevr
37822 #: guix-git/doc/guix.texi:21241
37823 msgid "Subject: header to use for rejection mails. You can use the same variables as for @samp{rejection-reason} below. Defaults to @samp{\"Rejected: %s\"}."
37824 msgstr ""
37825
37826 #. type: deftypevr
37827 #: guix-git/doc/guix.texi:21243
37828 #, no-wrap
37829 msgid "{@code{dovecot-configuration} parameter} string rejection-reason"
37830 msgstr ""
37831
37832 #. type: deftypevr
37833 #: guix-git/doc/guix.texi:21246
37834 msgid "Human readable error message for rejection mails. You can use variables:"
37835 msgstr ""
37836
37837 #. type: table
37838 #: guix-git/doc/guix.texi:21250
37839 msgid "CRLF"
37840 msgstr ""
37841
37842 #. type: item
37843 #: guix-git/doc/guix.texi:21250
37844 #, no-wrap
37845 msgid "%r"
37846 msgstr ""
37847
37848 #. type: table
37849 #: guix-git/doc/guix.texi:21252
37850 msgid "reason"
37851 msgstr ""
37852
37853 #. type: table
37854 #: guix-git/doc/guix.texi:21254
37855 msgid "original subject"
37856 msgstr ""
37857
37858 #. type: item
37859 #: guix-git/doc/guix.texi:21254
37860 #, no-wrap
37861 msgid "%t"
37862 msgstr ""
37863
37864 #. type: table
37865 #: guix-git/doc/guix.texi:21256
37866 msgid "recipient"
37867 msgstr ""
37868
37869 #. type: deftypevr
37870 #: guix-git/doc/guix.texi:21258
37871 msgid "Defaults to @samp{\"Your message to <%t> was automatically rejected:%n%r\"}."
37872 msgstr ""
37873
37874 #. type: deftypevr
37875 #: guix-git/doc/guix.texi:21260
37876 #, no-wrap
37877 msgid "{@code{dovecot-configuration} parameter} string recipient-delimiter"
37878 msgstr ""
37879
37880 #. type: deftypevr
37881 #: guix-git/doc/guix.texi:21264
37882 msgid "Delimiter character between local-part and detail in email address. Defaults to @samp{\"+\"}."
37883 msgstr ""
37884
37885 #. type: deftypevr
37886 #: guix-git/doc/guix.texi:21266
37887 #, no-wrap
37888 msgid "{@code{dovecot-configuration} parameter} string lda-original-recipient-header"
37889 msgstr ""
37890
37891 #. type: deftypevr
37892 #: guix-git/doc/guix.texi:21272
37893 msgid "Header where the original recipient address (SMTP's RCPT TO: address) is taken from if not available elsewhere. With dovecot-lda -a parameter overrides this. A commonly used header for this is X-Original-To. Defaults to @samp{\"\"}."
37894 msgstr ""
37895
37896 #. type: deftypevr
37897 #: guix-git/doc/guix.texi:21274
37898 #, no-wrap
37899 msgid "{@code{dovecot-configuration} parameter} boolean lda-mailbox-autocreate?"
37900 msgstr ""
37901
37902 #. type: deftypevr
37903 #: guix-git/doc/guix.texi:21278
37904 msgid "Should saving a mail to a nonexistent mailbox automatically create it?. Defaults to @samp{#f}."
37905 msgstr ""
37906
37907 #. type: deftypevr
37908 #: guix-git/doc/guix.texi:21280
37909 #, no-wrap
37910 msgid "{@code{dovecot-configuration} parameter} boolean lda-mailbox-autosubscribe?"
37911 msgstr ""
37912
37913 #. type: deftypevr
37914 #: guix-git/doc/guix.texi:21284
37915 msgid "Should automatically created mailboxes be also automatically subscribed?. Defaults to @samp{#f}."
37916 msgstr ""
37917
37918 #. type: deftypevr
37919 #: guix-git/doc/guix.texi:21286
37920 #, no-wrap
37921 msgid "{@code{dovecot-configuration} parameter} non-negative-integer imap-max-line-length"
37922 msgstr ""
37923
37924 #. type: deftypevr
37925 #: guix-git/doc/guix.texi:21292
37926 msgid "Maximum IMAP command line length. Some clients generate very long command lines with huge mailboxes, so you may need to raise this if you get \"Too long argument\" or \"IMAP command line too large\" errors often. Defaults to @samp{64000}."
37927 msgstr ""
37928
37929 #. type: deftypevr
37930 #: guix-git/doc/guix.texi:21294
37931 #, no-wrap
37932 msgid "{@code{dovecot-configuration} parameter} string imap-logout-format"
37933 msgstr ""
37934
37935 #. type: deftypevr
37936 #: guix-git/doc/guix.texi:21296
37937 msgid "IMAP logout format string:"
37938 msgstr ""
37939
37940 #. type: item
37941 #: guix-git/doc/guix.texi:21297
37942 #, no-wrap
37943 msgid "%i"
37944 msgstr ""
37945
37946 #. type: table
37947 #: guix-git/doc/guix.texi:21299
37948 msgid "total number of bytes read from client"
37949 msgstr ""
37950
37951 #. type: item
37952 #: guix-git/doc/guix.texi:21299
37953 #, no-wrap
37954 msgid "%o"
37955 msgstr ""
37956
37957 #. type: table
37958 #: guix-git/doc/guix.texi:21301
37959 msgid "total number of bytes sent to client."
37960 msgstr ""
37961
37962 #. type: deftypevr
37963 #: guix-git/doc/guix.texi:21304
37964 msgid "See @file{doc/wiki/Variables.txt} for a list of all the variables you can use. Defaults to @samp{\"in=%i out=%o deleted=%@{deleted@} expunged=%@{expunged@} trashed=%@{trashed@} hdr_count=%@{fetch_hdr_count@} hdr_bytes=%@{fetch_hdr_bytes@} body_count=%@{fetch_body_count@} body_bytes=%@{fetch_body_bytes@}\"}."
37965 msgstr ""
37966
37967 #. type: deftypevr
37968 #: guix-git/doc/guix.texi:21306
37969 #, no-wrap
37970 msgid "{@code{dovecot-configuration} parameter} string imap-capability"
37971 msgstr ""
37972
37973 #. type: deftypevr
37974 #: guix-git/doc/guix.texi:21310
37975 msgid "Override the IMAP CAPABILITY response. If the value begins with '+', add the given capabilities on top of the defaults (e.g.@: +XFOO XBAR). Defaults to @samp{\"\"}."
37976 msgstr ""
37977
37978 #. type: deftypevr
37979 #: guix-git/doc/guix.texi:21312
37980 #, no-wrap
37981 msgid "{@code{dovecot-configuration} parameter} string imap-idle-notify-interval"
37982 msgstr ""
37983
37984 #. type: deftypevr
37985 #: guix-git/doc/guix.texi:21316
37986 msgid "How long to wait between \"OK Still here\" notifications when client is IDLEing. Defaults to @samp{\"2 mins\"}."
37987 msgstr ""
37988
37989 #. type: deftypevr
37990 #: guix-git/doc/guix.texi:21318
37991 #, no-wrap
37992 msgid "{@code{dovecot-configuration} parameter} string imap-id-send"
37993 msgstr ""
37994
37995 #. type: deftypevr
37996 #: guix-git/doc/guix.texi:21324
37997 msgid "ID field names and values to send to clients. Using * as the value makes Dovecot use the default value. The following fields have default values currently: name, version, os, os-version, support-url, support-email. Defaults to @samp{\"\"}."
37998 msgstr ""
37999
38000 #. type: deftypevr
38001 #: guix-git/doc/guix.texi:21326
38002 #, no-wrap
38003 msgid "{@code{dovecot-configuration} parameter} string imap-id-log"
38004 msgstr ""
38005
38006 #. type: deftypevr
38007 #: guix-git/doc/guix.texi:21329
38008 msgid "ID fields sent by client to log. * means everything. Defaults to @samp{\"\"}."
38009 msgstr ""
38010
38011 #. type: deftypevr
38012 #: guix-git/doc/guix.texi:21331
38013 #, no-wrap
38014 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list imap-client-workarounds"
38015 msgstr ""
38016
38017 #. type: deftypevr
38018 #: guix-git/doc/guix.texi:21333
38019 msgid "Workarounds for various client bugs:"
38020 msgstr ""
38021
38022 #. type: item
38023 #: guix-git/doc/guix.texi:21335
38024 #, no-wrap
38025 msgid "delay-newmail"
38026 msgstr ""
38027
38028 #. type: table
38029 #: guix-git/doc/guix.texi:21342
38030 msgid "Send EXISTS/RECENT new mail notifications only when replying to NOOP and CHECK commands. Some clients ignore them otherwise, for example OSX Mail (<v2.1). Outlook Express breaks more badly though, without this it may show user \"Message no longer in server\" errors. Note that OE6 still breaks even with this workaround if synchronization is set to \"Headers Only\"."
38031 msgstr ""
38032
38033 #. type: item
38034 #: guix-git/doc/guix.texi:21343
38035 #, no-wrap
38036 msgid "tb-extra-mailbox-sep"
38037 msgstr ""
38038
38039 #. type: table
38040 #: guix-git/doc/guix.texi:21347
38041 msgid "Thunderbird gets somehow confused with LAYOUT=fs (mbox and dbox) and adds extra @samp{/} suffixes to mailbox names. This option causes Dovecot to ignore the extra @samp{/} instead of treating it as invalid mailbox name."
38042 msgstr ""
38043
38044 #. type: item
38045 #: guix-git/doc/guix.texi:21348
38046 #, no-wrap
38047 msgid "tb-lsub-flags"
38048 msgstr ""
38049
38050 #. type: table
38051 #: guix-git/doc/guix.texi:21352
38052 msgid "Show \\Noselect flags for LSUB replies with LAYOUT=fs (e.g.@: mbox). This makes Thunderbird realize they aren't selectable and show them greyed out, instead of only later giving \"not selectable\" popup error."
38053 msgstr ""
38054
38055 #. type: deftypevr
38056 #: guix-git/doc/guix.texi:21356
38057 #, no-wrap
38058 msgid "{@code{dovecot-configuration} parameter} string imap-urlauth-host"
38059 msgstr ""
38060
38061 #. type: deftypevr
38062 #: guix-git/doc/guix.texi:21359
38063 msgid "Host allowed in URLAUTH URLs sent by client. \"*\" allows all. Defaults to @samp{\"\"}."
38064 msgstr ""
38065
38066 #. type: Plain text
38067 #: guix-git/doc/guix.texi:21367
38068 msgid "Whew! Lots of configuration options. The nice thing about it though is that Guix has a complete interface to Dovecot's configuration language. This allows not only a nice way to declare configurations, but also offers reflective capabilities as well: users can write code to inspect and transform configurations from within Scheme."
38069 msgstr ""
38070
38071 #. type: Plain text
38072 #: guix-git/doc/guix.texi:21373
38073 msgid "However, it could be that you just want to get a @code{dovecot.conf} up and running. In that case, you can pass an @code{opaque-dovecot-configuration} as the @code{#:config} parameter to @code{dovecot-service}. As its name indicates, an opaque configuration does not have easy reflective capabilities."
38074 msgstr ""
38075
38076 #. type: Plain text
38077 #: guix-git/doc/guix.texi:21375
38078 msgid "Available @code{opaque-dovecot-configuration} fields are:"
38079 msgstr ""
38080
38081 #. type: deftypevr
38082 #: guix-git/doc/guix.texi:21376
38083 #, no-wrap
38084 msgid "{@code{opaque-dovecot-configuration} parameter} package dovecot"
38085 msgstr ""
38086
38087 #. type: deftypevr
38088 #: guix-git/doc/guix.texi:21380
38089 #, no-wrap
38090 msgid "{@code{opaque-dovecot-configuration} parameter} string string"
38091 msgstr ""
38092
38093 #. type: deftypevr
38094 #: guix-git/doc/guix.texi:21382
38095 msgid "The contents of the @code{dovecot.conf}, as a string."
38096 msgstr ""
38097
38098 #. type: Plain text
38099 #: guix-git/doc/guix.texi:21386
38100 msgid "For example, if your @code{dovecot.conf} is just the empty string, you could instantiate a dovecot service like this:"
38101 msgstr ""
38102
38103 #. type: lisp
38104 #: guix-git/doc/guix.texi:21391
38105 #, no-wrap
38106 msgid ""
38107 "(dovecot-service #:config\n"
38108 " (opaque-dovecot-configuration\n"
38109 " (string \"\")))\n"
38110 msgstr ""
38111
38112 #. type: subsubheading
38113 #: guix-git/doc/guix.texi:21393
38114 #, no-wrap
38115 msgid "OpenSMTPD Service"
38116 msgstr ""
38117
38118 #. type: deffn
38119 #: guix-git/doc/guix.texi:21395
38120 #, no-wrap
38121 msgid "{Scheme Variable} opensmtpd-service-type"
38122 msgstr ""
38123
38124 #. type: deffn
38125 #: guix-git/doc/guix.texi:21399
38126 msgid "This is the type of the @uref{https://www.opensmtpd.org, OpenSMTPD} service, whose value should be an @code{opensmtpd-configuration} object as in this example:"
38127 msgstr ""
38128
38129 #. type: lisp
38130 #: guix-git/doc/guix.texi:21404
38131 #, no-wrap
38132 msgid ""
38133 "(service opensmtpd-service-type\n"
38134 " (opensmtpd-configuration\n"
38135 " (config-file (local-file \"./my-smtpd.conf\"))))\n"
38136 msgstr ""
38137
38138 #. type: deftp
38139 #: guix-git/doc/guix.texi:21407
38140 #, no-wrap
38141 msgid "{Data Type} opensmtpd-configuration"
38142 msgstr ""
38143
38144 #. type: deftp
38145 #: guix-git/doc/guix.texi:21409
38146 msgid "Data type representing the configuration of opensmtpd."
38147 msgstr ""
38148
38149 #. type: item
38150 #: guix-git/doc/guix.texi:21411
38151 #, no-wrap
38152 msgid "@code{package} (default: @var{opensmtpd})"
38153 msgstr ""
38154
38155 #. type: table
38156 #: guix-git/doc/guix.texi:21413
38157 msgid "Package object of the OpenSMTPD SMTP server."
38158 msgstr ""
38159
38160 #. type: item
38161 #: guix-git/doc/guix.texi:21414
38162 #, no-wrap
38163 msgid "@code{config-file} (default: @code{%default-opensmtpd-file})"
38164 msgstr ""
38165
38166 #. type: table
38167 #: guix-git/doc/guix.texi:21419
38168 msgid "File-like object of the OpenSMTPD configuration file to use. By default it listens on the loopback network interface, and allows for mail from users and daemons on the local machine, as well as permitting email to remote servers. Run @command{man smtpd.conf} for more information."
38169 msgstr ""
38170
38171 #. type: subsubheading
38172 #: guix-git/doc/guix.texi:21423
38173 #, no-wrap
38174 msgid "Exim Service"
38175 msgstr ""
38176
38177 #. type: cindex
38178 #: guix-git/doc/guix.texi:21425
38179 #, no-wrap
38180 msgid "mail transfer agent (MTA)"
38181 msgstr ""
38182
38183 #. type: cindex
38184 #: guix-git/doc/guix.texi:21426
38185 #, no-wrap
38186 msgid "MTA (mail transfer agent)"
38187 msgstr ""
38188
38189 #. type: cindex
38190 #: guix-git/doc/guix.texi:21427
38191 #, no-wrap
38192 msgid "SMTP"
38193 msgstr ""
38194
38195 #. type: deffn
38196 #: guix-git/doc/guix.texi:21429
38197 #, no-wrap
38198 msgid "{Scheme Variable} exim-service-type"
38199 msgstr ""
38200
38201 #. type: deffn
38202 #: guix-git/doc/guix.texi:21433
38203 msgid "This is the type of the @uref{https://exim.org, Exim} mail transfer agent (MTA), whose value should be an @code{exim-configuration} object as in this example:"
38204 msgstr ""
38205
38206 #. type: lisp
38207 #: guix-git/doc/guix.texi:21438
38208 #, no-wrap
38209 msgid ""
38210 "(service exim-service-type\n"
38211 " (exim-configuration\n"
38212 " (config-file (local-file \"./my-exim.conf\"))))\n"
38213 msgstr ""
38214
38215 #. type: Plain text
38216 #: guix-git/doc/guix.texi:21444
38217 msgid "In order to use an @code{exim-service-type} service you must also have a @code{mail-aliases-service-type} service present in your @code{operating-system} (even if it has no aliases)."
38218 msgstr ""
38219
38220 #. type: deftp
38221 #: guix-git/doc/guix.texi:21445
38222 #, no-wrap
38223 msgid "{Data Type} exim-configuration"
38224 msgstr ""
38225
38226 #. type: deftp
38227 #: guix-git/doc/guix.texi:21447
38228 msgid "Data type representing the configuration of exim."
38229 msgstr ""
38230
38231 #. type: item
38232 #: guix-git/doc/guix.texi:21449
38233 #, no-wrap
38234 msgid "@code{package} (default: @var{exim})"
38235 msgstr ""
38236
38237 #. type: table
38238 #: guix-git/doc/guix.texi:21451
38239 msgid "Package object of the Exim server."
38240 msgstr ""
38241
38242 #. type: table
38243 #: guix-git/doc/guix.texi:21458
38244 msgid "File-like object of the Exim configuration file to use. If its value is @code{#f} then use the default configuration file from the package provided in @code{package}. The resulting configuration file is loaded after setting the @code{exim_user} and @code{exim_group} configuration variables."
38245 msgstr ""
38246
38247 #. type: subsubheading
38248 #: guix-git/doc/guix.texi:21462
38249 #, no-wrap
38250 msgid "Getmail service"
38251 msgstr ""
38252
38253 #. type: cindex
38254 #: guix-git/doc/guix.texi:21464
38255 #, no-wrap
38256 msgid "IMAP"
38257 msgstr ""
38258
38259 #. type: cindex
38260 #: guix-git/doc/guix.texi:21465
38261 #, no-wrap
38262 msgid "POP"
38263 msgstr ""
38264
38265 #. type: deffn
38266 #: guix-git/doc/guix.texi:21467
38267 #, no-wrap
38268 msgid "{Scheme Variable} getmail-service-type"
38269 msgstr ""
38270
38271 #. type: deffn
38272 #: guix-git/doc/guix.texi:21470
38273 msgid "This is the type of the @uref{http://pyropus.ca/software/getmail/, Getmail} mail retriever, whose value should be an @code{getmail-configuration}."
38274 msgstr ""
38275
38276 #. type: Plain text
38277 #: guix-git/doc/guix.texi:21473
38278 msgid "Available @code{getmail-configuration} fields are:"
38279 msgstr ""
38280
38281 #. type: deftypevr
38282 #: guix-git/doc/guix.texi:21474
38283 #, no-wrap
38284 msgid "{@code{getmail-configuration} parameter} symbol name"
38285 msgstr ""
38286
38287 #. type: deftypevr
38288 #: guix-git/doc/guix.texi:21476
38289 msgid "A symbol to identify the getmail service."
38290 msgstr ""
38291
38292 #. type: deftypevr
38293 #: guix-git/doc/guix.texi:21478
38294 msgid "Defaults to @samp{\"unset\"}."
38295 msgstr ""
38296
38297 #. type: deftypevr
38298 #: guix-git/doc/guix.texi:21481
38299 #, no-wrap
38300 msgid "{@code{getmail-configuration} parameter} package package"
38301 msgstr ""
38302
38303 #. type: deftypevr
38304 #: guix-git/doc/guix.texi:21483
38305 msgid "The getmail package to use."
38306 msgstr ""
38307
38308 #. type: deftypevr
38309 #: guix-git/doc/guix.texi:21486
38310 #, no-wrap
38311 msgid "{@code{getmail-configuration} parameter} string user"
38312 msgstr ""
38313
38314 #. type: deftypevr
38315 #: guix-git/doc/guix.texi:21488
38316 msgid "The user to run getmail as."
38317 msgstr ""
38318
38319 #. type: deftypevr
38320 #: guix-git/doc/guix.texi:21490 guix-git/doc/guix.texi:21497
38321 msgid "Defaults to @samp{\"getmail\"}."
38322 msgstr ""
38323
38324 #. type: deftypevr
38325 #: guix-git/doc/guix.texi:21493
38326 #, no-wrap
38327 msgid "{@code{getmail-configuration} parameter} string group"
38328 msgstr ""
38329
38330 #. type: deftypevr
38331 #: guix-git/doc/guix.texi:21495
38332 msgid "The group to run getmail as."
38333 msgstr ""
38334
38335 #. type: deftypevr
38336 #: guix-git/doc/guix.texi:21500
38337 #, no-wrap
38338 msgid "{@code{getmail-configuration} parameter} string directory"
38339 msgstr ""
38340
38341 #. type: deftypevr
38342 #: guix-git/doc/guix.texi:21502
38343 msgid "The getmail directory to use."
38344 msgstr ""
38345
38346 #. type: deftypevr
38347 #: guix-git/doc/guix.texi:21504
38348 msgid "Defaults to @samp{\"/var/lib/getmail/default\"}."
38349 msgstr ""
38350
38351 #. type: deftypevr
38352 #: guix-git/doc/guix.texi:21507
38353 #, no-wrap
38354 msgid "{@code{getmail-configuration} parameter} getmail-configuration-file rcfile"
38355 msgstr ""
38356
38357 #. type: deftypevr
38358 #: guix-git/doc/guix.texi:21509
38359 msgid "The getmail configuration file to use."
38360 msgstr ""
38361
38362 #. type: deftypevr
38363 #: guix-git/doc/guix.texi:21511
38364 msgid "Available @code{getmail-configuration-file} fields are:"
38365 msgstr ""
38366
38367 #. type: deftypevr
38368 #: guix-git/doc/guix.texi:21512
38369 #, no-wrap
38370 msgid "{@code{getmail-configuration-file} parameter} getmail-retriever-configuration retriever"
38371 msgstr ""
38372
38373 #. type: deftypevr
38374 #: guix-git/doc/guix.texi:21514
38375 msgid "What mail account to retrieve mail from, and how to access that account."
38376 msgstr ""
38377
38378 #. type: deftypevr
38379 #: guix-git/doc/guix.texi:21516
38380 msgid "Available @code{getmail-retriever-configuration} fields are:"
38381 msgstr ""
38382
38383 #. type: deftypevr
38384 #: guix-git/doc/guix.texi:21517
38385 #, no-wrap
38386 msgid "{@code{getmail-retriever-configuration} parameter} string type"
38387 msgstr ""
38388
38389 #. type: deftypevr
38390 #: guix-git/doc/guix.texi:21520
38391 msgid "The type of mail retriever to use. Valid values include @samp{passwd} and @samp{static}."
38392 msgstr ""
38393
38394 #. type: deftypevr
38395 #: guix-git/doc/guix.texi:21522
38396 msgid "Defaults to @samp{\"SimpleIMAPSSLRetriever\"}."
38397 msgstr ""
38398
38399 #. type: deftypevr
38400 #: guix-git/doc/guix.texi:21525
38401 #, no-wrap
38402 msgid "{@code{getmail-retriever-configuration} parameter} string server"
38403 msgstr ""
38404
38405 #. type: deftypevr
38406 #: guix-git/doc/guix.texi:21527 guix-git/doc/guix.texi:21534
38407 msgid "Username to login to the mail server with."
38408 msgstr ""
38409
38410 #. type: deftypevr
38411 #: guix-git/doc/guix.texi:21529 guix-git/doc/guix.texi:21536
38412 #: guix-git/doc/guix.texi:21600
38413 msgid "Defaults to @samp{unset}."
38414 msgstr ""
38415
38416 #. type: deftypevr
38417 #: guix-git/doc/guix.texi:21532
38418 #, no-wrap
38419 msgid "{@code{getmail-retriever-configuration} parameter} string username"
38420 msgstr ""
38421
38422 #. type: deftypevr
38423 #: guix-git/doc/guix.texi:21539
38424 #, no-wrap
38425 msgid "{@code{getmail-retriever-configuration} parameter} non-negative-integer port"
38426 msgstr ""
38427
38428 #. type: deftypevr
38429 #: guix-git/doc/guix.texi:21541
38430 msgid "Port number to connect to."
38431 msgstr ""
38432
38433 #. type: deftypevr
38434 #: guix-git/doc/guix.texi:21546
38435 #, no-wrap
38436 msgid "{@code{getmail-retriever-configuration} parameter} string password"
38437 msgstr ""
38438
38439 #. type: deftypevr
38440 #: guix-git/doc/guix.texi:21548 guix-git/doc/guix.texi:21555
38441 msgid "Override fields from passwd."
38442 msgstr ""
38443
38444 #. type: deftypevr
38445 #: guix-git/doc/guix.texi:21553
38446 #, no-wrap
38447 msgid "{@code{getmail-retriever-configuration} parameter} list password-command"
38448 msgstr ""
38449
38450 #. type: deftypevr
38451 #: guix-git/doc/guix.texi:21560
38452 #, no-wrap
38453 msgid "{@code{getmail-retriever-configuration} parameter} string keyfile"
38454 msgstr ""
38455
38456 #. type: deftypevr
38457 #: guix-git/doc/guix.texi:21562
38458 msgid "PEM-formatted key file to use for the TLS negotiation."
38459 msgstr ""
38460
38461 #. type: deftypevr
38462 #: guix-git/doc/guix.texi:21567
38463 #, no-wrap
38464 msgid "{@code{getmail-retriever-configuration} parameter} string certfile"
38465 msgstr ""
38466
38467 #. type: deftypevr
38468 #: guix-git/doc/guix.texi:21569
38469 msgid "PEM-formatted certificate file to use for the TLS negotiation."
38470 msgstr ""
38471
38472 #. type: deftypevr
38473 #: guix-git/doc/guix.texi:21574
38474 #, no-wrap
38475 msgid "{@code{getmail-retriever-configuration} parameter} string ca-certs"
38476 msgstr ""
38477
38478 #. type: deftypevr
38479 #: guix-git/doc/guix.texi:21576
38480 msgid "CA certificates to use."
38481 msgstr ""
38482
38483 #. type: deftypevr
38484 #: guix-git/doc/guix.texi:21581
38485 #, no-wrap
38486 msgid "{@code{getmail-retriever-configuration} parameter} parameter-alist extra-parameters"
38487 msgstr ""
38488
38489 #. type: deftypevr
38490 #: guix-git/doc/guix.texi:21583
38491 msgid "Extra retriever parameters."
38492 msgstr ""
38493
38494 #. type: deftypevr
38495 #: guix-git/doc/guix.texi:21590
38496 #, no-wrap
38497 msgid "{@code{getmail-configuration-file} parameter} getmail-destination-configuration destination"
38498 msgstr ""
38499
38500 #. type: deftypevr
38501 #: guix-git/doc/guix.texi:21592
38502 msgid "What to do with retrieved messages."
38503 msgstr ""
38504
38505 #. type: deftypevr
38506 #: guix-git/doc/guix.texi:21594
38507 msgid "Available @code{getmail-destination-configuration} fields are:"
38508 msgstr ""
38509
38510 #. type: deftypevr
38511 #: guix-git/doc/guix.texi:21595
38512 #, no-wrap
38513 msgid "{@code{getmail-destination-configuration} parameter} string type"
38514 msgstr ""
38515
38516 #. type: deftypevr
38517 #: guix-git/doc/guix.texi:21598
38518 msgid "The type of mail destination. Valid values include @samp{Maildir}, @samp{Mboxrd} and @samp{MDA_external}."
38519 msgstr ""
38520
38521 #. type: deftypevr
38522 #: guix-git/doc/guix.texi:21603
38523 #, no-wrap
38524 msgid "{@code{getmail-destination-configuration} parameter} string-or-filelike path"
38525 msgstr ""
38526
38527 #. type: deftypevr
38528 #: guix-git/doc/guix.texi:21606
38529 msgid "The path option for the mail destination. The behaviour depends on the chosen type."
38530 msgstr ""
38531
38532 #. type: deftypevr
38533 #: guix-git/doc/guix.texi:21611
38534 #, no-wrap
38535 msgid "{@code{getmail-destination-configuration} parameter} parameter-alist extra-parameters"
38536 msgstr ""
38537
38538 #. type: deftypevr
38539 #: guix-git/doc/guix.texi:21613
38540 msgid "Extra destination parameters"
38541 msgstr ""
38542
38543 #. type: deftypevr
38544 #: guix-git/doc/guix.texi:21620
38545 #, no-wrap
38546 msgid "{@code{getmail-configuration-file} parameter} getmail-options-configuration options"
38547 msgstr ""
38548
38549 #. type: deftypevr
38550 #: guix-git/doc/guix.texi:21622
38551 msgid "Configure getmail."
38552 msgstr ""
38553
38554 #. type: deftypevr
38555 #: guix-git/doc/guix.texi:21624
38556 msgid "Available @code{getmail-options-configuration} fields are:"
38557 msgstr ""
38558
38559 #. type: deftypevr
38560 #: guix-git/doc/guix.texi:21625
38561 #, no-wrap
38562 msgid "{@code{getmail-options-configuration} parameter} non-negative-integer verbose"
38563 msgstr ""
38564
38565 #. type: deftypevr
38566 #: guix-git/doc/guix.texi:21630
38567 msgid "If set to @samp{0}, getmail will only print warnings and errors. A value of @samp{1} means that messages will be printed about retrieving and deleting messages. If set to @samp{2}, getmail will print messages about each of it's actions."
38568 msgstr ""
38569
38570 #. type: deftypevr
38571 #: guix-git/doc/guix.texi:21632 guix-git/doc/guix.texi:27909
38572 #: guix-git/doc/guix.texi:28497 guix-git/doc/guix.texi:28642
38573 msgid "Defaults to @samp{1}."
38574 msgstr ""
38575
38576 #. type: deftypevr
38577 #: guix-git/doc/guix.texi:21635
38578 #, no-wrap
38579 msgid "{@code{getmail-options-configuration} parameter} boolean read-all"
38580 msgstr ""
38581
38582 #. type: deftypevr
38583 #: guix-git/doc/guix.texi:21638
38584 msgid "If true, getmail will retrieve all available messages. Otherwise it will only retrieve messages it hasn't seen previously."
38585 msgstr ""
38586
38587 #. type: deftypevr
38588 #: guix-git/doc/guix.texi:21643
38589 #, no-wrap
38590 msgid "{@code{getmail-options-configuration} parameter} boolean delete"
38591 msgstr ""
38592
38593 #. type: deftypevr
38594 #: guix-git/doc/guix.texi:21647
38595 msgid "If set to true, messages will be deleted from the server after retrieving and successfully delivering them. Otherwise, messages will be left on the server."
38596 msgstr ""
38597
38598 #. type: deftypevr
38599 #: guix-git/doc/guix.texi:21652
38600 #, no-wrap
38601 msgid "{@code{getmail-options-configuration} parameter} non-negative-integer delete-after"
38602 msgstr ""
38603
38604 #. type: deftypevr
38605 #: guix-git/doc/guix.texi:21657
38606 msgid "Getmail will delete messages this number of days after seeing them, if they have been delivered. This means messages will be left on the server this number of days after delivering them. A value of @samp{0} disabled this feature."
38607 msgstr ""
38608
38609 #. type: deftypevr
38610 #: guix-git/doc/guix.texi:21662
38611 #, no-wrap
38612 msgid "{@code{getmail-options-configuration} parameter} non-negative-integer delete-bigger-than"
38613 msgstr ""
38614
38615 #. type: deftypevr
38616 #: guix-git/doc/guix.texi:21666
38617 msgid "Delete messages larger than this of bytes after retrieving them, even if the delete and delete-after options are disabled. A value of @samp{0} disables this feature."
38618 msgstr ""
38619
38620 #. type: deftypevr
38621 #: guix-git/doc/guix.texi:21671
38622 #, no-wrap
38623 msgid "{@code{getmail-options-configuration} parameter} non-negative-integer max-bytes-per-session"
38624 msgstr ""
38625
38626 #. type: deftypevr
38627 #: guix-git/doc/guix.texi:21674
38628 msgid "Retrieve messages totalling up to this number of bytes before closing the session with the server. A value of @samp{0} disables this feature."
38629 msgstr ""
38630
38631 #. type: deftypevr
38632 #: guix-git/doc/guix.texi:21679
38633 #, no-wrap
38634 msgid "{@code{getmail-options-configuration} parameter} non-negative-integer max-message-size"
38635 msgstr ""
38636
38637 #. type: deftypevr
38638 #: guix-git/doc/guix.texi:21682
38639 msgid "Don't retrieve messages larger than this number of bytes. A value of @samp{0} disables this feature."
38640 msgstr ""
38641
38642 #. type: deftypevr
38643 #: guix-git/doc/guix.texi:21687
38644 #, no-wrap
38645 msgid "{@code{getmail-options-configuration} parameter} boolean delivered-to"
38646 msgstr ""
38647
38648 #. type: deftypevr
38649 #: guix-git/doc/guix.texi:21689
38650 msgid "If true, getmail will add a Delivered-To header to messages."
38651 msgstr ""
38652
38653 #. type: deftypevr
38654 #: guix-git/doc/guix.texi:21694
38655 #, no-wrap
38656 msgid "{@code{getmail-options-configuration} parameter} boolean received"
38657 msgstr ""
38658
38659 #. type: deftypevr
38660 #: guix-git/doc/guix.texi:21696
38661 msgid "If set, getmail adds a Received header to the messages."
38662 msgstr ""
38663
38664 #. type: deftypevr
38665 #: guix-git/doc/guix.texi:21701
38666 #, no-wrap
38667 msgid "{@code{getmail-options-configuration} parameter} string message-log"
38668 msgstr ""
38669
38670 #. type: deftypevr
38671 #: guix-git/doc/guix.texi:21704
38672 msgid "Getmail will record a log of its actions to the named file. A value of @samp{\"\"} disables this feature."
38673 msgstr ""
38674
38675 #. type: deftypevr
38676 #: guix-git/doc/guix.texi:21709
38677 #, no-wrap
38678 msgid "{@code{getmail-options-configuration} parameter} boolean message-log-syslog"
38679 msgstr ""
38680
38681 #. type: deftypevr
38682 #: guix-git/doc/guix.texi:21712
38683 msgid "If true, getmail will record a log of its actions using the system logger."
38684 msgstr ""
38685
38686 #. type: deftypevr
38687 #: guix-git/doc/guix.texi:21717
38688 #, no-wrap
38689 msgid "{@code{getmail-options-configuration} parameter} boolean message-log-verbose"
38690 msgstr ""
38691
38692 #. type: deftypevr
38693 #: guix-git/doc/guix.texi:21721
38694 msgid "If true, getmail will log information about messages not retrieved and the reason for not retrieving them, as well as starting and ending information lines."
38695 msgstr ""
38696
38697 #. type: deftypevr
38698 #: guix-git/doc/guix.texi:21726
38699 #, no-wrap
38700 msgid "{@code{getmail-options-configuration} parameter} parameter-alist extra-parameters"
38701 msgstr ""
38702
38703 #. type: deftypevr
38704 #: guix-git/doc/guix.texi:21728
38705 msgid "Extra options to include."
38706 msgstr ""
38707
38708 #. type: deftypevr
38709 #: guix-git/doc/guix.texi:21737
38710 #, no-wrap
38711 msgid "{@code{getmail-configuration} parameter} list idle"
38712 msgstr ""
38713
38714 #. type: deftypevr
38715 #: guix-git/doc/guix.texi:21741
38716 msgid "A list of mailboxes that getmail should wait on the server for new mail notifications. This depends on the server supporting the IDLE extension."
38717 msgstr ""
38718
38719 #. type: deftypevr
38720 #: guix-git/doc/guix.texi:21746
38721 #, no-wrap
38722 msgid "{@code{getmail-configuration} parameter} list environment-variables"
38723 msgstr ""
38724
38725 #. type: deftypevr
38726 #: guix-git/doc/guix.texi:21748
38727 msgid "Environment variables to set for getmail."
38728 msgstr ""
38729
38730 #. type: subsubheading
38731 #: guix-git/doc/guix.texi:21753
38732 #, no-wrap
38733 msgid "Mail Aliases Service"
38734 msgstr ""
38735
38736 #. type: cindex
38737 #: guix-git/doc/guix.texi:21755
38738 #, no-wrap
38739 msgid "email aliases"
38740 msgstr ""
38741
38742 #. type: cindex
38743 #: guix-git/doc/guix.texi:21756
38744 #, no-wrap
38745 msgid "aliases, for email addresses"
38746 msgstr ""
38747
38748 #. type: deffn
38749 #: guix-git/doc/guix.texi:21758
38750 #, no-wrap
38751 msgid "{Scheme Variable} mail-aliases-service-type"
38752 msgstr ""
38753
38754 #. type: deffn
38755 #: guix-git/doc/guix.texi:21761
38756 msgid "This is the type of the service which provides @code{/etc/aliases}, specifying how to deliver mail to users on this system."
38757 msgstr ""
38758
38759 #. type: lisp
38760 #: guix-git/doc/guix.texi:21766
38761 #, no-wrap
38762 msgid ""
38763 "(service mail-aliases-service-type\n"
38764 " '((\"postmaster\" \"bob\")\n"
38765 " (\"bob\" \"bob@@example.com\" \"bob@@example2.com\")))\n"
38766 msgstr ""
38767
38768 #. type: Plain text
38769 #: guix-git/doc/guix.texi:21774
38770 msgid "The configuration for a @code{mail-aliases-service-type} service is an association list denoting how to deliver mail that comes to this system. Each entry is of the form @code{(alias addresses ...)}, with @code{alias} specifying the local alias and @code{addresses} specifying where to deliver this user's mail."
38771 msgstr ""
38772
38773 #. type: Plain text
38774 #: guix-git/doc/guix.texi:21780
38775 msgid "The aliases aren't required to exist as users on the local system. In the above example, there doesn't need to be a @code{postmaster} entry in the @code{operating-system}'s @code{user-accounts} in order to deliver the @code{postmaster} mail to @code{bob} (which subsequently would deliver mail to @code{bob@@example.com} and @code{bob@@example2.com})."
38776 msgstr ""
38777
38778 #. type: cindex
38779 #: guix-git/doc/guix.texi:21781 guix-git/doc/guix.texi:21782
38780 #, no-wrap
38781 msgid "GNU Mailutils IMAP4 Daemon"
38782 msgstr ""
38783
38784 #. type: deffn
38785 #: guix-git/doc/guix.texi:21784
38786 #, no-wrap
38787 msgid "{Scheme Variable} imap4d-service-type"
38788 msgstr ""
38789
38790 #. type: deffn
38791 #: guix-git/doc/guix.texi:21788
38792 msgid "This is the type of the GNU Mailutils IMAP4 Daemon (@pxref{imap4d,,, mailutils, GNU Mailutils Manual}), whose value should be an @code{imap4d-configuration} object as in this example:"
38793 msgstr ""
38794
38795 #. type: lisp
38796 #: guix-git/doc/guix.texi:21793
38797 #, no-wrap
38798 msgid ""
38799 "(service imap4d-service-type\n"
38800 " (imap4d-configuration\n"
38801 " (config-file (local-file \"imap4d.conf\"))))\n"
38802 msgstr ""
38803
38804 #. type: deftp
38805 #: guix-git/doc/guix.texi:21796
38806 #, no-wrap
38807 msgid "{Data Type} imap4d-configuration"
38808 msgstr ""
38809
38810 #. type: deftp
38811 #: guix-git/doc/guix.texi:21798
38812 msgid "Data type representing the configuration of @command{imap4d}."
38813 msgstr ""
38814
38815 #. type: item
38816 #: guix-git/doc/guix.texi:21800
38817 #, no-wrap
38818 msgid "@code{package} (default: @code{mailutils})"
38819 msgstr ""
38820
38821 #. type: table
38822 #: guix-git/doc/guix.texi:21802
38823 msgid "The package that provides @command{imap4d}."
38824 msgstr ""
38825
38826 #. type: item
38827 #: guix-git/doc/guix.texi:21803
38828 #, no-wrap
38829 msgid "@code{config-file} (default: @code{%default-imap4d-config-file})"
38830 msgstr ""
38831
38832 #. type: table
38833 #: guix-git/doc/guix.texi:21807
38834 msgid "File-like object of the configuration file to use, by default it will listen on TCP port 143 of @code{localhost}. @xref{Conf-imap4d,,, mailutils, GNU Mailutils Manual}, for details."
38835 msgstr ""
38836
38837 #. type: subsubheading
38838 #: guix-git/doc/guix.texi:21811
38839 #, no-wrap
38840 msgid "Radicale Service"
38841 msgstr ""
38842
38843 #. type: cindex
38844 #: guix-git/doc/guix.texi:21812
38845 #, no-wrap
38846 msgid "CalDAV"
38847 msgstr ""
38848
38849 #. type: cindex
38850 #: guix-git/doc/guix.texi:21813
38851 #, no-wrap
38852 msgid "CardDAV"
38853 msgstr ""
38854
38855 #. type: deffn
38856 #: guix-git/doc/guix.texi:21815
38857 #, no-wrap
38858 msgid "{Scheme Variable} radicale-service-type"
38859 msgstr ""
38860
38861 #. type: deffn
38862 #: guix-git/doc/guix.texi:21818
38863 msgid "This is the type of the @uref{https://radicale.org, Radicale} CalDAV/CardDAV server whose value should be a @code{radicale-configuration}."
38864 msgstr ""
38865
38866 #. type: deftp
38867 #: guix-git/doc/guix.texi:21820
38868 #, no-wrap
38869 msgid "{Data Type} radicale-configuration"
38870 msgstr ""
38871
38872 #. type: deftp
38873 #: guix-git/doc/guix.texi:21822
38874 msgid "Data type representing the configuration of @command{radicale}."
38875 msgstr ""
38876
38877 #. type: item
38878 #: guix-git/doc/guix.texi:21824
38879 #, no-wrap
38880 msgid "@code{package} (default: @code{radicale})"
38881 msgstr ""
38882
38883 #. type: table
38884 #: guix-git/doc/guix.texi:21826
38885 msgid "The package that provides @command{radicale}."
38886 msgstr ""
38887
38888 #. type: item
38889 #: guix-git/doc/guix.texi:21827
38890 #, no-wrap
38891 msgid "@code{config-file} (default: @code{%default-radicale-config-file})"
38892 msgstr ""
38893
38894 #. type: table
38895 #: guix-git/doc/guix.texi:21831
38896 msgid "File-like object of the configuration file to use, by default it will listen on TCP port 5232 of @code{localhost} and use the @code{htpasswd} file at @file{/var/lib/radicale/users} with no (@code{plain}) encryption."
38897 msgstr ""
38898
38899 #. type: cindex
38900 #: guix-git/doc/guix.texi:21838
38901 #, no-wrap
38902 msgid "messaging"
38903 msgstr ""
38904
38905 #. type: cindex
38906 #: guix-git/doc/guix.texi:21839
38907 #, no-wrap
38908 msgid "jabber"
38909 msgstr ""
38910
38911 #. type: cindex
38912 #: guix-git/doc/guix.texi:21840
38913 #, no-wrap
38914 msgid "XMPP"
38915 msgstr ""
38916
38917 #. type: Plain text
38918 #: guix-git/doc/guix.texi:21844
38919 msgid "The @code{(gnu services messaging)} module provides Guix service definitions for messaging services. Currently it provides the following services:"
38920 msgstr ""
38921
38922 #. type: subsubheading
38923 #: guix-git/doc/guix.texi:21845
38924 #, no-wrap
38925 msgid "Prosody Service"
38926 msgstr ""
38927
38928 #. type: deffn
38929 #: guix-git/doc/guix.texi:21847
38930 #, no-wrap
38931 msgid "{Scheme Variable} prosody-service-type"
38932 msgstr ""
38933
38934 #. type: deffn
38935 #: guix-git/doc/guix.texi:21851
38936 msgid "This is the type for the @uref{https://prosody.im, Prosody XMPP communication server}. Its value must be a @code{prosody-configuration} record as in this example:"
38937 msgstr ""
38938
38939 #. type: lisp
38940 #: guix-git/doc/guix.texi:21866
38941 #, no-wrap
38942 msgid ""
38943 "(service prosody-service-type\n"
38944 " (prosody-configuration\n"
38945 " (modules-enabled (cons* \"groups\" \"mam\" %default-modules-enabled))\n"
38946 " (int-components\n"
38947 " (list\n"
38948 " (int-component-configuration\n"
38949 " (hostname \"conference.example.net\")\n"
38950 " (plugin \"muc\")\n"
38951 " (mod-muc (mod-muc-configuration)))))\n"
38952 " (virtualhosts\n"
38953 " (list\n"
38954 " (virtualhost-configuration\n"
38955 " (domain \"example.net\"))))))\n"
38956 msgstr ""
38957
38958 #. type: deffn
38959 #: guix-git/doc/guix.texi:21869
38960 msgid "See below for details about @code{prosody-configuration}."
38961 msgstr ""
38962
38963 #. type: Plain text
38964 #: guix-git/doc/guix.texi:21875
38965 msgid "By default, Prosody does not need much configuration. Only one @code{virtualhosts} field is needed: it specifies the domain you wish Prosody to serve."
38966 msgstr ""
38967
38968 #. type: Plain text
38969 #: guix-git/doc/guix.texi:21878
38970 msgid "You can perform various sanity checks on the generated configuration with the @code{prosodyctl check} command."
38971 msgstr ""
38972
38973 #. type: Plain text
38974 #: guix-git/doc/guix.texi:21882
38975 msgid "Prosodyctl will also help you to import certificates from the @code{letsencrypt} directory so that the @code{prosody} user can access them. See @url{https://prosody.im/doc/letsencrypt}."
38976 msgstr ""
38977
38978 #. type: example
38979 #: guix-git/doc/guix.texi:21885
38980 #, no-wrap
38981 msgid "prosodyctl --root cert import /etc/letsencrypt/live\n"
38982 msgstr ""
38983
38984 #. type: Plain text
38985 #: guix-git/doc/guix.texi:21892
38986 msgid "The available configuration parameters follow. Each parameter definition is preceded by its type; for example, @samp{string-list foo} indicates that the @code{foo} parameter should be specified as a list of strings. Types starting with @code{maybe-} denote parameters that won't show up in @code{prosody.cfg.lua} when their value is @code{'disabled}."
38987 msgstr ""
38988
38989 #. type: Plain text
38990 #: guix-git/doc/guix.texi:21896
38991 msgid "There is also a way to specify the configuration as a string, if you have an old @code{prosody.cfg.lua} file that you want to port over from some other system; see the end for more details."
38992 msgstr ""
38993
38994 #. type: Plain text
38995 #: guix-git/doc/guix.texi:21899
38996 msgid "The @code{file-object} type designates either a file-like object (@pxref{G-Expressions, file-like objects}) or a file name."
38997 msgstr ""
38998
38999 #. type: Plain text
39000 #: guix-git/doc/guix.texi:21909
39001 msgid "Available @code{prosody-configuration} fields are:"
39002 msgstr ""
39003
39004 #. type: deftypevr
39005 #: guix-git/doc/guix.texi:21910
39006 #, no-wrap
39007 msgid "{@code{prosody-configuration} parameter} package prosody"
39008 msgstr ""
39009
39010 #. type: deftypevr
39011 #: guix-git/doc/guix.texi:21912
39012 msgid "The Prosody package."
39013 msgstr ""
39014
39015 #. type: deftypevr
39016 #: guix-git/doc/guix.texi:21914
39017 #, no-wrap
39018 msgid "{@code{prosody-configuration} parameter} file-name data-path"
39019 msgstr ""
39020
39021 #. type: deftypevr
39022 #: guix-git/doc/guix.texi:21918
39023 msgid "Location of the Prosody data storage directory. See @url{https://prosody.im/doc/configure}. Defaults to @samp{\"/var/lib/prosody\"}."
39024 msgstr ""
39025
39026 #. type: deftypevr
39027 #: guix-git/doc/guix.texi:21920
39028 #, no-wrap
39029 msgid "{@code{prosody-configuration} parameter} file-object-list plugin-paths"
39030 msgstr ""
39031
39032 #. type: deftypevr
39033 #: guix-git/doc/guix.texi:21924
39034 msgid "Additional plugin directories. They are searched in all the specified paths in order. See @url{https://prosody.im/doc/plugins_directory}. Defaults to @samp{()}."
39035 msgstr ""
39036
39037 #. type: deftypevr
39038 #: guix-git/doc/guix.texi:21926
39039 #, no-wrap
39040 msgid "{@code{prosody-configuration} parameter} file-name certificates"
39041 msgstr ""
39042
39043 #. type: deftypevr
39044 #: guix-git/doc/guix.texi:21931
39045 msgid "Every virtual host and component needs a certificate so that clients and servers can securely verify its identity. Prosody will automatically load certificates/keys from the directory specified here. Defaults to @samp{\"/etc/prosody/certs\"}."
39046 msgstr ""
39047
39048 #. type: deftypevr
39049 #: guix-git/doc/guix.texi:21933
39050 #, no-wrap
39051 msgid "{@code{prosody-configuration} parameter} string-list admins"
39052 msgstr ""
39053
39054 #. type: deftypevr
39055 #: guix-git/doc/guix.texi:21939
39056 msgid "This is a list of accounts that are admins for the server. Note that you must create the accounts separately. See @url{https://prosody.im/doc/admins} and @url{https://prosody.im/doc/creating_accounts}. Example: @code{(admins '(\"user1@@example.com\" \"user2@@example.net\"))} Defaults to @samp{()}."
39057 msgstr ""
39058
39059 #. type: deftypevr
39060 #: guix-git/doc/guix.texi:21941
39061 #, no-wrap
39062 msgid "{@code{prosody-configuration} parameter} boolean use-libevent?"
39063 msgstr ""
39064
39065 #. type: deftypevr
39066 #: guix-git/doc/guix.texi:21945
39067 msgid "Enable use of libevent for better performance under high load. See @url{https://prosody.im/doc/libevent}. Defaults to @samp{#f}."
39068 msgstr ""
39069
39070 #. type: deftypevr
39071 #: guix-git/doc/guix.texi:21947
39072 #, no-wrap
39073 msgid "{@code{prosody-configuration} parameter} module-list modules-enabled"
39074 msgstr ""
39075
39076 #. type: deftypevr
39077 #: guix-git/doc/guix.texi:21953
39078 msgid "This is the list of modules Prosody will load on startup. It looks for @code{mod_modulename.lua} in the plugins folder, so make sure that exists too. Documentation on modules can be found at: @url{https://prosody.im/doc/modules}. Defaults to @samp{(\"roster\" \"saslauth\" \"tls\" \"dialback\" \"disco\" \"carbons\" \"private\" \"blocklist\" \"vcard\" \"version\" \"uptime\" \"time\" \"ping\" \"pep\" \"register\" \"admin_adhoc\")}."
39079 msgstr ""
39080
39081 #. type: deftypevr
39082 #: guix-git/doc/guix.texi:21955
39083 #, no-wrap
39084 msgid "{@code{prosody-configuration} parameter} string-list modules-disabled"
39085 msgstr ""
39086
39087 #. type: deftypevr
39088 #: guix-git/doc/guix.texi:21959
39089 msgid "@samp{\"offline\"}, @samp{\"c2s\"} and @samp{\"s2s\"} are auto-loaded, but should you want to disable them then add them to this list. Defaults to @samp{()}."
39090 msgstr ""
39091
39092 #. type: deftypevr
39093 #: guix-git/doc/guix.texi:21961
39094 #, no-wrap
39095 msgid "{@code{prosody-configuration} parameter} file-object groups-file"
39096 msgstr ""
39097
39098 #. type: deftypevr
39099 #: guix-git/doc/guix.texi:21966
39100 msgid "Path to a text file where the shared groups are defined. If this path is empty then @samp{mod_groups} does nothing. See @url{https://prosody.im/doc/modules/mod_groups}. Defaults to @samp{\"/var/lib/prosody/sharedgroups.txt\"}."
39101 msgstr ""
39102
39103 #. type: deftypevr
39104 #: guix-git/doc/guix.texi:21968
39105 #, no-wrap
39106 msgid "{@code{prosody-configuration} parameter} boolean allow-registration?"
39107 msgstr ""
39108
39109 #. type: deftypevr
39110 #: guix-git/doc/guix.texi:21972
39111 msgid "Disable account creation by default, for security. See @url{https://prosody.im/doc/creating_accounts}. Defaults to @samp{#f}."
39112 msgstr ""
39113
39114 #. type: deftypevr
39115 #: guix-git/doc/guix.texi:21974
39116 #, no-wrap
39117 msgid "{@code{prosody-configuration} parameter} maybe-ssl-configuration ssl"
39118 msgstr ""
39119
39120 #. type: deftypevr
39121 #: guix-git/doc/guix.texi:21979
39122 msgid "These are the SSL/TLS-related settings. Most of them are disabled so to use Prosody's defaults. If you do not completely understand these options, do not add them to your config, it is easy to lower the security of your server using them. See @url{https://prosody.im/doc/advanced_ssl_config}."
39123 msgstr ""
39124
39125 #. type: deftypevr
39126 #: guix-git/doc/guix.texi:21981
39127 msgid "Available @code{ssl-configuration} fields are:"
39128 msgstr ""
39129
39130 #. type: deftypevr
39131 #: guix-git/doc/guix.texi:21982
39132 #, no-wrap
39133 msgid "{@code{ssl-configuration} parameter} maybe-string protocol"
39134 msgstr ""
39135
39136 #. type: deftypevr
39137 #: guix-git/doc/guix.texi:21984
39138 msgid "This determines what handshake to use."
39139 msgstr ""
39140
39141 #. type: deftypevr
39142 #: guix-git/doc/guix.texi:21986
39143 #, no-wrap
39144 msgid "{@code{ssl-configuration} parameter} maybe-file-name key"
39145 msgstr ""
39146
39147 #. type: deftypevr
39148 #: guix-git/doc/guix.texi:21988
39149 msgid "Path to your private key file."
39150 msgstr ""
39151
39152 #. type: deftypevr
39153 #: guix-git/doc/guix.texi:21990
39154 #, no-wrap
39155 msgid "{@code{ssl-configuration} parameter} maybe-file-name certificate"
39156 msgstr ""
39157
39158 #. type: deftypevr
39159 #: guix-git/doc/guix.texi:21992
39160 msgid "Path to your certificate file."
39161 msgstr ""
39162
39163 #. type: deftypevr
39164 #: guix-git/doc/guix.texi:21994
39165 #, no-wrap
39166 msgid "{@code{ssl-configuration} parameter} file-object capath"
39167 msgstr ""
39168
39169 #. type: deftypevr
39170 #: guix-git/doc/guix.texi:21998
39171 msgid "Path to directory containing root certificates that you wish Prosody to trust when verifying the certificates of remote servers. Defaults to @samp{\"/etc/ssl/certs\"}."
39172 msgstr ""
39173
39174 #. type: deftypevr
39175 #: guix-git/doc/guix.texi:22000
39176 #, no-wrap
39177 msgid "{@code{ssl-configuration} parameter} maybe-file-object cafile"
39178 msgstr ""
39179
39180 #. type: deftypevr
39181 #: guix-git/doc/guix.texi:22003
39182 msgid "Path to a file containing root certificates that you wish Prosody to trust. Similar to @code{capath} but with all certificates concatenated together."
39183 msgstr ""
39184
39185 #. type: deftypevr
39186 #: guix-git/doc/guix.texi:22005
39187 #, no-wrap
39188 msgid "{@code{ssl-configuration} parameter} maybe-string-list verify"
39189 msgstr ""
39190
39191 #. type: deftypevr
39192 #: guix-git/doc/guix.texi:22008
39193 msgid "A list of verification options (these mostly map to OpenSSL's @code{set_verify()} flags)."
39194 msgstr ""
39195
39196 #. type: deftypevr
39197 #: guix-git/doc/guix.texi:22010
39198 #, no-wrap
39199 msgid "{@code{ssl-configuration} parameter} maybe-string-list options"
39200 msgstr ""
39201
39202 #. type: deftypevr
39203 #: guix-git/doc/guix.texi:22014
39204 msgid "A list of general options relating to SSL/TLS@. These map to OpenSSL's @code{set_options()}. For a full list of options available in LuaSec, see the LuaSec source."
39205 msgstr ""
39206
39207 #. type: deftypevr
39208 #: guix-git/doc/guix.texi:22016
39209 #, no-wrap
39210 msgid "{@code{ssl-configuration} parameter} maybe-non-negative-integer depth"
39211 msgstr ""
39212
39213 #. type: deftypevr
39214 #: guix-git/doc/guix.texi:22019
39215 msgid "How long a chain of certificate authorities to check when looking for a trusted root certificate."
39216 msgstr ""
39217
39218 #. type: deftypevr
39219 #: guix-git/doc/guix.texi:22021
39220 #, no-wrap
39221 msgid "{@code{ssl-configuration} parameter} maybe-string ciphers"
39222 msgstr ""
39223
39224 #. type: deftypevr
39225 #: guix-git/doc/guix.texi:22024
39226 msgid "An OpenSSL cipher string. This selects what ciphers Prosody will offer to clients, and in what order."
39227 msgstr ""
39228
39229 #. type: deftypevr
39230 #: guix-git/doc/guix.texi:22026
39231 #, no-wrap
39232 msgid "{@code{ssl-configuration} parameter} maybe-file-name dhparam"
39233 msgstr ""
39234
39235 #. type: deftypevr
39236 #: guix-git/doc/guix.texi:22030
39237 msgid "A path to a file containing parameters for Diffie-Hellman key exchange. You can create such a file with: @code{openssl dhparam -out /etc/prosody/certs/dh-2048.pem 2048}"
39238 msgstr ""
39239
39240 #. type: deftypevr
39241 #: guix-git/doc/guix.texi:22032
39242 #, no-wrap
39243 msgid "{@code{ssl-configuration} parameter} maybe-string curve"
39244 msgstr ""
39245
39246 #. type: deftypevr
39247 #: guix-git/doc/guix.texi:22035
39248 msgid "Curve for Elliptic curve Diffie-Hellman. Prosody's default is @samp{\"secp384r1\"}."
39249 msgstr ""
39250
39251 #. type: deftypevr
39252 #: guix-git/doc/guix.texi:22037
39253 #, no-wrap
39254 msgid "{@code{ssl-configuration} parameter} maybe-string-list verifyext"
39255 msgstr ""
39256
39257 #. type: deftypevr
39258 #: guix-git/doc/guix.texi:22039
39259 msgid "A list of ``extra'' verification options."
39260 msgstr ""
39261
39262 #. type: deftypevr
39263 #: guix-git/doc/guix.texi:22041
39264 #, no-wrap
39265 msgid "{@code{ssl-configuration} parameter} maybe-string password"
39266 msgstr ""
39267
39268 #. type: deftypevr
39269 #: guix-git/doc/guix.texi:22043
39270 msgid "Password for encrypted private keys."
39271 msgstr ""
39272
39273 #. type: deftypevr
39274 #: guix-git/doc/guix.texi:22047
39275 #, no-wrap
39276 msgid "{@code{prosody-configuration} parameter} boolean c2s-require-encryption?"
39277 msgstr ""
39278
39279 #. type: deftypevr
39280 #: guix-git/doc/guix.texi:22051
39281 msgid "Whether to force all client-to-server connections to be encrypted or not. See @url{https://prosody.im/doc/modules/mod_tls}. Defaults to @samp{#f}."
39282 msgstr ""
39283
39284 #. type: deftypevr
39285 #: guix-git/doc/guix.texi:22053
39286 #, no-wrap
39287 msgid "{@code{prosody-configuration} parameter} string-list disable-sasl-mechanisms"
39288 msgstr ""
39289
39290 #. type: deftypevr
39291 #: guix-git/doc/guix.texi:22057
39292 msgid "Set of mechanisms that will never be offered. See @url{https://prosody.im/doc/modules/mod_saslauth}. Defaults to @samp{(\"DIGEST-MD5\")}."
39293 msgstr ""
39294
39295 #. type: deftypevr
39296 #: guix-git/doc/guix.texi:22059
39297 #, no-wrap
39298 msgid "{@code{prosody-configuration} parameter} boolean s2s-require-encryption?"
39299 msgstr ""
39300
39301 #. type: deftypevr
39302 #: guix-git/doc/guix.texi:22063
39303 msgid "Whether to force all server-to-server connections to be encrypted or not. See @url{https://prosody.im/doc/modules/mod_tls}. Defaults to @samp{#f}."
39304 msgstr ""
39305
39306 #. type: deftypevr
39307 #: guix-git/doc/guix.texi:22065
39308 #, no-wrap
39309 msgid "{@code{prosody-configuration} parameter} boolean s2s-secure-auth?"
39310 msgstr ""
39311
39312 #. type: deftypevr
39313 #: guix-git/doc/guix.texi:22071
39314 msgid "Whether to require encryption and certificate authentication. This provides ideal security, but requires servers you communicate with to support encryption AND present valid, trusted certificates. See @url{https://prosody.im/doc/s2s#security}. Defaults to @samp{#f}."
39315 msgstr ""
39316
39317 #. type: deftypevr
39318 #: guix-git/doc/guix.texi:22073
39319 #, no-wrap
39320 msgid "{@code{prosody-configuration} parameter} string-list s2s-insecure-domains"
39321 msgstr ""
39322
39323 #. type: deftypevr
39324 #: guix-git/doc/guix.texi:22079
39325 msgid "Many servers don't support encryption or have invalid or self-signed certificates. You can list domains here that will not be required to authenticate using certificates. They will be authenticated using DNS@. See @url{https://prosody.im/doc/s2s#security}. Defaults to @samp{()}."
39326 msgstr ""
39327
39328 #. type: deftypevr
39329 #: guix-git/doc/guix.texi:22081
39330 #, no-wrap
39331 msgid "{@code{prosody-configuration} parameter} string-list s2s-secure-domains"
39332 msgstr ""
39333
39334 #. type: deftypevr
39335 #: guix-git/doc/guix.texi:22086
39336 msgid "Even if you leave @code{s2s-secure-auth?} disabled, you can still require valid certificates for some domains by specifying a list here. See @url{https://prosody.im/doc/s2s#security}. Defaults to @samp{()}."
39337 msgstr ""
39338
39339 #. type: deftypevr
39340 #: guix-git/doc/guix.texi:22088
39341 #, no-wrap
39342 msgid "{@code{prosody-configuration} parameter} string authentication"
39343 msgstr ""
39344
39345 #. type: deftypevr
39346 #: guix-git/doc/guix.texi:22096
39347 msgid "Select the authentication backend to use. The default provider stores passwords in plaintext and uses Prosody's configured data storage to store the authentication data. If you do not trust your server please see @url{https://prosody.im/doc/modules/mod_auth_internal_hashed} for information about using the hashed backend. See also @url{https://prosody.im/doc/authentication} Defaults to @samp{\"internal_plain\"}."
39348 msgstr ""
39349
39350 #. type: deftypevr
39351 #: guix-git/doc/guix.texi:22098
39352 #, no-wrap
39353 msgid "{@code{prosody-configuration} parameter} maybe-string log"
39354 msgstr ""
39355
39356 #. type: deftypevr
39357 #: guix-git/doc/guix.texi:22102
39358 msgid "Set logging options. Advanced logging configuration is not yet supported by the Prosody service. See @url{https://prosody.im/doc/logging}. Defaults to @samp{\"*syslog\"}."
39359 msgstr ""
39360
39361 #. type: deftypevr
39362 #: guix-git/doc/guix.texi:22104
39363 #, no-wrap
39364 msgid "{@code{prosody-configuration} parameter} file-name pidfile"
39365 msgstr ""
39366
39367 #. type: deftypevr
39368 #: guix-git/doc/guix.texi:22107
39369 msgid "File to write pid in. See @url{https://prosody.im/doc/modules/mod_posix}. Defaults to @samp{\"/var/run/prosody/prosody.pid\"}."
39370 msgstr ""
39371
39372 #. type: deftypevr
39373 #: guix-git/doc/guix.texi:22109
39374 #, no-wrap
39375 msgid "{@code{prosody-configuration} parameter} maybe-non-negative-integer http-max-content-size"
39376 msgstr ""
39377
39378 #. type: deftypevr
39379 #: guix-git/doc/guix.texi:22111
39380 msgid "Maximum allowed size of the HTTP body (in bytes)."
39381 msgstr ""
39382
39383 #. type: deftypevr
39384 #: guix-git/doc/guix.texi:22113
39385 #, no-wrap
39386 msgid "{@code{prosody-configuration} parameter} maybe-string http-external-url"
39387 msgstr ""
39388
39389 #. type: deftypevr
39390 #: guix-git/doc/guix.texi:22118
39391 msgid "Some modules expose their own URL in various ways. This URL is built from the protocol, host and port used. If Prosody sits behind a proxy, the public URL will be @code{http-external-url} instead. See @url{https://prosody.im/doc/http#external_url}."
39392 msgstr ""
39393
39394 #. type: deftypevr
39395 #: guix-git/doc/guix.texi:22120
39396 #, no-wrap
39397 msgid "{@code{prosody-configuration} parameter} virtualhost-configuration-list virtualhosts"
39398 msgstr ""
39399
39400 #. type: deftypevr
39401 #: guix-git/doc/guix.texi:22125
39402 msgid "A host in Prosody is a domain on which user accounts can be created. For example if you want your users to have addresses like @samp{\"john.smith@@example.com\"} then you need to add a host @samp{\"example.com\"}. All options in this list will apply only to this host."
39403 msgstr ""
39404
39405 #. type: deftypevr
39406 #: guix-git/doc/guix.texi:22131
39407 msgid "Note: the name @emph{virtual} host is used in configuration to avoid confusion with the actual physical host that Prosody is installed on. A single Prosody instance can serve many domains, each one defined as a VirtualHost entry in Prosody's configuration. Conversely a server that hosts a single domain would have just one VirtualHost entry."
39408 msgstr ""
39409
39410 #. type: deftypevr
39411 #: guix-git/doc/guix.texi:22133
39412 msgid "See @url{https://prosody.im/doc/configure#virtual_host_settings}."
39413 msgstr ""
39414
39415 #. type: deftypevr
39416 #: guix-git/doc/guix.texi:22135
39417 msgid "Available @code{virtualhost-configuration} fields are:"
39418 msgstr ""
39419
39420 #. type: deftypevr
39421 #: guix-git/doc/guix.texi:22137 guix-git/doc/guix.texi:22159
39422 #: guix-git/doc/guix.texi:22212
39423 msgid "all these @code{prosody-configuration} fields: @code{admins}, @code{use-libevent?}, @code{modules-enabled}, @code{modules-disabled}, @code{groups-file}, @code{allow-registration?}, @code{ssl}, @code{c2s-require-encryption?}, @code{disable-sasl-mechanisms}, @code{s2s-require-encryption?}, @code{s2s-secure-auth?}, @code{s2s-insecure-domains}, @code{s2s-secure-domains}, @code{authentication}, @code{log}, @code{http-max-content-size}, @code{http-external-url}, @code{raw-content}, plus:"
39424 msgstr ""
39425
39426 #. type: deftypevr
39427 #: guix-git/doc/guix.texi:22137
39428 #, no-wrap
39429 msgid "{@code{virtualhost-configuration} parameter} string domain"
39430 msgstr ""
39431
39432 #. type: deftypevr
39433 #: guix-git/doc/guix.texi:22139
39434 msgid "Domain you wish Prosody to serve."
39435 msgstr ""
39436
39437 #. type: deftypevr
39438 #: guix-git/doc/guix.texi:22143
39439 #, no-wrap
39440 msgid "{@code{prosody-configuration} parameter} int-component-configuration-list int-components"
39441 msgstr ""
39442
39443 #. type: deftypevr
39444 #: guix-git/doc/guix.texi:22148
39445 msgid "Components are extra services on a server which are available to clients, usually on a subdomain of the main server (such as @samp{\"mycomponent.example.com\"}). Example components might be chatroom servers, user directories, or gateways to other protocols."
39446 msgstr ""
39447
39448 #. type: deftypevr
39449 #: guix-git/doc/guix.texi:22152
39450 msgid "Internal components are implemented with Prosody-specific plugins. To add an internal component, you simply fill the hostname field, and the plugin you wish to use for the component."
39451 msgstr ""
39452
39453 #. type: deftypevr
39454 #: guix-git/doc/guix.texi:22155
39455 msgid "See @url{https://prosody.im/doc/components}. Defaults to @samp{()}."
39456 msgstr ""
39457
39458 #. type: deftypevr
39459 #: guix-git/doc/guix.texi:22157
39460 msgid "Available @code{int-component-configuration} fields are:"
39461 msgstr ""
39462
39463 #. type: deftypevr
39464 #: guix-git/doc/guix.texi:22159
39465 #, no-wrap
39466 msgid "{@code{int-component-configuration} parameter} string hostname"
39467 msgstr ""
39468
39469 #. type: deftypevr
39470 #: guix-git/doc/guix.texi:22161 guix-git/doc/guix.texi:22218
39471 msgid "Hostname of the component."
39472 msgstr ""
39473
39474 #. type: deftypevr
39475 #: guix-git/doc/guix.texi:22163
39476 #, no-wrap
39477 msgid "{@code{int-component-configuration} parameter} string plugin"
39478 msgstr ""
39479
39480 #. type: deftypevr
39481 #: guix-git/doc/guix.texi:22165
39482 msgid "Plugin you wish to use for the component."
39483 msgstr ""
39484
39485 #. type: deftypevr
39486 #: guix-git/doc/guix.texi:22167
39487 #, no-wrap
39488 msgid "{@code{int-component-configuration} parameter} maybe-mod-muc-configuration mod-muc"
39489 msgstr ""
39490
39491 #. type: deftypevr
39492 #: guix-git/doc/guix.texi:22170
39493 msgid "Multi-user chat (MUC) is Prosody's module for allowing you to create hosted chatrooms/conferences for XMPP users."
39494 msgstr ""
39495
39496 #. type: deftypevr
39497 #: guix-git/doc/guix.texi:22174
39498 msgid "General information on setting up and using multi-user chatrooms can be found in the ``Chatrooms'' documentation (@url{https://prosody.im/doc/chatrooms}), which you should read if you are new to XMPP chatrooms."
39499 msgstr ""
39500
39501 #. type: deftypevr
39502 #: guix-git/doc/guix.texi:22176
39503 msgid "See also @url{https://prosody.im/doc/modules/mod_muc}."
39504 msgstr ""
39505
39506 #. type: deftypevr
39507 #: guix-git/doc/guix.texi:22178
39508 msgid "Available @code{mod-muc-configuration} fields are:"
39509 msgstr ""
39510
39511 #. type: deftypevr
39512 #: guix-git/doc/guix.texi:22179
39513 #, no-wrap
39514 msgid "{@code{mod-muc-configuration} parameter} string name"
39515 msgstr ""
39516
39517 #. type: deftypevr
39518 #: guix-git/doc/guix.texi:22182
39519 msgid "The name to return in service discovery responses. Defaults to @samp{\"Prosody Chatrooms\"}."
39520 msgstr ""
39521
39522 #. type: deftypevr
39523 #: guix-git/doc/guix.texi:22184
39524 #, no-wrap
39525 msgid "{@code{mod-muc-configuration} parameter} string-or-boolean restrict-room-creation"
39526 msgstr ""
39527
39528 #. type: deftypevr
39529 #: guix-git/doc/guix.texi:22191
39530 msgid "If @samp{#t}, this will only allow admins to create new chatrooms. Otherwise anyone can create a room. The value @samp{\"local\"} restricts room creation to users on the service's parent domain. E.g.@: @samp{user@@example.com} can create rooms on @samp{rooms.example.com}. The value @samp{\"admin\"} restricts to service administrators only. Defaults to @samp{#f}."
39531 msgstr ""
39532
39533 #. type: deftypevr
39534 #: guix-git/doc/guix.texi:22193
39535 #, no-wrap
39536 msgid "{@code{mod-muc-configuration} parameter} non-negative-integer max-history-messages"
39537 msgstr ""
39538
39539 #. type: deftypevr
39540 #: guix-git/doc/guix.texi:22197
39541 msgid "Maximum number of history messages that will be sent to the member that has just joined the room. Defaults to @samp{20}."
39542 msgstr ""
39543
39544 #. type: deftypevr
39545 #: guix-git/doc/guix.texi:22203
39546 #, no-wrap
39547 msgid "{@code{prosody-configuration} parameter} ext-component-configuration-list ext-components"
39548 msgstr ""
39549
39550 #. type: deftypevr
39551 #: guix-git/doc/guix.texi:22208
39552 msgid "External components use XEP-0114, which most standalone components support. To add an external component, you simply fill the hostname field. See @url{https://prosody.im/doc/components}. Defaults to @samp{()}."
39553 msgstr ""
39554
39555 #. type: deftypevr
39556 #: guix-git/doc/guix.texi:22210
39557 msgid "Available @code{ext-component-configuration} fields are:"
39558 msgstr ""
39559
39560 #. type: deftypevr
39561 #: guix-git/doc/guix.texi:22212
39562 #, no-wrap
39563 msgid "{@code{ext-component-configuration} parameter} string component-secret"
39564 msgstr ""
39565
39566 #. type: deftypevr
39567 #: guix-git/doc/guix.texi:22214
39568 msgid "Password which the component will use to log in."
39569 msgstr ""
39570
39571 #. type: deftypevr
39572 #: guix-git/doc/guix.texi:22216
39573 #, no-wrap
39574 msgid "{@code{ext-component-configuration} parameter} string hostname"
39575 msgstr ""
39576
39577 #. type: deftypevr
39578 #: guix-git/doc/guix.texi:22222
39579 #, no-wrap
39580 msgid "{@code{prosody-configuration} parameter} non-negative-integer-list component-ports"
39581 msgstr ""
39582
39583 #. type: deftypevr
39584 #: guix-git/doc/guix.texi:22225
39585 msgid "Port(s) Prosody listens on for component connections. Defaults to @samp{(5347)}."
39586 msgstr ""
39587
39588 #. type: deftypevr
39589 #: guix-git/doc/guix.texi:22227
39590 #, no-wrap
39591 msgid "{@code{prosody-configuration} parameter} string component-interface"
39592 msgstr ""
39593
39594 #. type: deftypevr
39595 #: guix-git/doc/guix.texi:22230
39596 msgid "Interface Prosody listens on for component connections. Defaults to @samp{\"127.0.0.1\"}."
39597 msgstr ""
39598
39599 #. type: deftypevr
39600 #: guix-git/doc/guix.texi:22232
39601 #, no-wrap
39602 msgid "{@code{prosody-configuration} parameter} maybe-raw-content raw-content"
39603 msgstr ""
39604
39605 #. type: deftypevr
39606 #: guix-git/doc/guix.texi:22234
39607 msgid "Raw content that will be added to the configuration file."
39608 msgstr ""
39609
39610 #. type: Plain text
39611 #: guix-git/doc/guix.texi:22242
39612 msgid "It could be that you just want to get a @code{prosody.cfg.lua} up and running. In that case, you can pass an @code{opaque-prosody-configuration} record as the value of @code{prosody-service-type}. As its name indicates, an opaque configuration does not have easy reflective capabilities. Available @code{opaque-prosody-configuration} fields are:"
39613 msgstr ""
39614
39615 #. type: deftypevr
39616 #: guix-git/doc/guix.texi:22243
39617 #, no-wrap
39618 msgid "{@code{opaque-prosody-configuration} parameter} package prosody"
39619 msgstr ""
39620
39621 #. type: deftypevr
39622 #: guix-git/doc/guix.texi:22245
39623 msgid "The prosody package."
39624 msgstr ""
39625
39626 #. type: deftypevr
39627 #: guix-git/doc/guix.texi:22247
39628 #, no-wrap
39629 msgid "{@code{opaque-prosody-configuration} parameter} string prosody.cfg.lua"
39630 msgstr ""
39631
39632 #. type: deftypevr
39633 #: guix-git/doc/guix.texi:22249
39634 msgid "The contents of the @code{prosody.cfg.lua} to use."
39635 msgstr ""
39636
39637 #. type: Plain text
39638 #: guix-git/doc/guix.texi:22253
39639 msgid "For example, if your @code{prosody.cfg.lua} is just the empty string, you could instantiate a prosody service like this:"
39640 msgstr ""
39641
39642 #. type: lisp
39643 #: guix-git/doc/guix.texi:22258
39644 #, no-wrap
39645 msgid ""
39646 "(service prosody-service-type\n"
39647 " (opaque-prosody-configuration\n"
39648 " (prosody.cfg.lua \"\")))\n"
39649 msgstr ""
39650
39651 #. type: subsubheading
39652 #: guix-git/doc/guix.texi:22262
39653 #, no-wrap
39654 msgid "BitlBee Service"
39655 msgstr ""
39656
39657 #. type: cindex
39658 #: guix-git/doc/guix.texi:22264 guix-git/doc/guix.texi:22308
39659 #, no-wrap
39660 msgid "IRC (Internet Relay Chat)"
39661 msgstr ""
39662
39663 #. type: cindex
39664 #: guix-git/doc/guix.texi:22265
39665 #, no-wrap
39666 msgid "IRC gateway"
39667 msgstr ""
39668
39669 #. type: Plain text
39670 #: guix-git/doc/guix.texi:22268
39671 msgid "@url{https://bitlbee.org,BitlBee} is a gateway that provides an IRC interface to a variety of messaging protocols such as XMPP."
39672 msgstr ""
39673
39674 #. type: defvr
39675 #: guix-git/doc/guix.texi:22269
39676 #, no-wrap
39677 msgid "{Scheme Variable} bitlbee-service-type"
39678 msgstr ""
39679
39680 #. type: defvr
39681 #: guix-git/doc/guix.texi:22273
39682 msgid "This is the service type for the @url{https://bitlbee.org,BitlBee} IRC gateway daemon. Its value is a @code{bitlbee-configuration} (see below)."
39683 msgstr ""
39684
39685 #. type: defvr
39686 #: guix-git/doc/guix.texi:22276
39687 msgid "To have BitlBee listen on port 6667 on localhost, add this line to your services:"
39688 msgstr ""
39689
39690 #. type: lisp
39691 #: guix-git/doc/guix.texi:22279
39692 #, no-wrap
39693 msgid "(service bitlbee-service-type)\n"
39694 msgstr ""
39695
39696 #. type: deftp
39697 #: guix-git/doc/guix.texi:22282
39698 #, no-wrap
39699 msgid "{Data Type} bitlbee-configuration"
39700 msgstr ""
39701
39702 #. type: deftp
39703 #: guix-git/doc/guix.texi:22284
39704 msgid "This is the configuration for BitlBee, with the following fields:"
39705 msgstr ""
39706
39707 #. type: item
39708 #: guix-git/doc/guix.texi:22286
39709 #, no-wrap
39710 msgid "@code{interface} (default: @code{\"127.0.0.1\"})"
39711 msgstr ""
39712
39713 #. type: itemx
39714 #: guix-git/doc/guix.texi:22287
39715 #, no-wrap
39716 msgid "@code{port} (default: @code{6667})"
39717 msgstr ""
39718
39719 #. type: table
39720 #: guix-git/doc/guix.texi:22290
39721 msgid "Listen on the network interface corresponding to the IP address specified in @var{interface}, on @var{port}."
39722 msgstr ""
39723
39724 #. type: table
39725 #: guix-git/doc/guix.texi:22294
39726 msgid "When @var{interface} is @code{127.0.0.1}, only local clients can connect; when it is @code{0.0.0.0}, connections can come from any networking interface."
39727 msgstr ""
39728
39729 #. type: item
39730 #: guix-git/doc/guix.texi:22295
39731 #, no-wrap
39732 msgid "@code{bitlbee} (default: @code{bitlbee})"
39733 msgstr ""
39734
39735 #. type: table
39736 #: guix-git/doc/guix.texi:22297
39737 msgid "The BitlBee package to use."
39738 msgstr ""
39739
39740 #. type: item
39741 #: guix-git/doc/guix.texi:22298
39742 #, no-wrap
39743 msgid "@code{plugins} (default: @code{'()})"
39744 msgstr ""
39745
39746 #. type: table
39747 #: guix-git/doc/guix.texi:22300
39748 msgid "List of plugin packages to use---e.g., @code{bitlbee-discord}."
39749 msgstr ""
39750
39751 #. type: table
39752 #: guix-git/doc/guix.texi:22303
39753 msgid "Configuration snippet added as-is to the BitlBee configuration file."
39754 msgstr ""
39755
39756 #. type: subsubheading
39757 #: guix-git/doc/guix.texi:22306
39758 #, no-wrap
39759 msgid "Quassel Service"
39760 msgstr ""
39761
39762 #. type: Plain text
39763 #: guix-git/doc/guix.texi:22312
39764 msgid "@url{https://quassel-irc.org/,Quassel} is a distributed IRC client, meaning that one or more clients can attach to and detach from the central core."
39765 msgstr ""
39766
39767 #. type: defvr
39768 #: guix-git/doc/guix.texi:22313
39769 #, no-wrap
39770 msgid "{Scheme Variable} quassel-service-type"
39771 msgstr ""
39772
39773 #. type: defvr
39774 #: guix-git/doc/guix.texi:22317
39775 msgid "This is the service type for the @url{https://quassel-irc.org/,Quassel} IRC backend daemon. Its value is a @code{quassel-configuration} (see below)."
39776 msgstr ""
39777
39778 #. type: deftp
39779 #: guix-git/doc/guix.texi:22319
39780 #, no-wrap
39781 msgid "{Data Type} quassel-configuration"
39782 msgstr ""
39783
39784 #. type: deftp
39785 #: guix-git/doc/guix.texi:22321
39786 msgid "This is the configuration for Quassel, with the following fields:"
39787 msgstr ""
39788
39789 #. type: item
39790 #: guix-git/doc/guix.texi:22323
39791 #, no-wrap
39792 msgid "@code{quassel} (default: @code{quassel})"
39793 msgstr ""
39794
39795 #. type: table
39796 #: guix-git/doc/guix.texi:22325
39797 msgid "The Quassel package to use."
39798 msgstr ""
39799
39800 #. type: item
39801 #: guix-git/doc/guix.texi:22326
39802 #, no-wrap
39803 msgid "@code{interface} (default: @code{\"::,0.0.0.0\"})"
39804 msgstr ""
39805
39806 #. type: item
39807 #: guix-git/doc/guix.texi:22327
39808 #, no-wrap
39809 msgid "@code{port} (default: @code{4242})"
39810 msgstr ""
39811
39812 #. type: table
39813 #: guix-git/doc/guix.texi:22331
39814 msgid "Listen on the network interface(s) corresponding to the IPv4 or IPv6 interfaces specified in the comma delimited @var{interface}, on @var{port}."
39815 msgstr ""
39816
39817 #. type: item
39818 #: guix-git/doc/guix.texi:22332
39819 #, no-wrap
39820 msgid "@code{loglevel} (default: @code{\"Info\"})"
39821 msgstr ""
39822
39823 #. type: table
39824 #: guix-git/doc/guix.texi:22335
39825 msgid "The level of logging desired. Accepted values are Debug, Info, Warning and Error."
39826 msgstr ""
39827
39828 #. type: cindex
39829 #: guix-git/doc/guix.texi:22341
39830 #, no-wrap
39831 msgid "Murmur (VoIP server)"
39832 msgstr ""
39833
39834 #. type: cindex
39835 #: guix-git/doc/guix.texi:22342
39836 #, no-wrap
39837 msgid "VoIP server"
39838 msgstr ""
39839
39840 #. type: Plain text
39841 #: guix-git/doc/guix.texi:22346
39842 msgid "This section describes how to set up and run a Murmur server. Murmur is the server of the @uref{https://mumble.info, Mumble} voice-over-IP (VoIP) suite."
39843 msgstr ""
39844
39845 #. type: deftp
39846 #: guix-git/doc/guix.texi:22347
39847 #, no-wrap
39848 msgid "{Data Type} murmur-configuration"
39849 msgstr ""
39850
39851 #. type: deftp
39852 #: guix-git/doc/guix.texi:22350
39853 msgid "The service type for the Murmur server. An example configuration can look like this:"
39854 msgstr ""
39855
39856 #. type: lisp
39857 #: guix-git/doc/guix.texi:22359
39858 #, no-wrap
39859 msgid ""
39860 "(service murmur-service-type\n"
39861 " (murmur-configuration\n"
39862 " (welcome-text\n"
39863 " \"Welcome to this Mumble server running on Guix!\")\n"
39864 " (cert-required? #t) ;disallow text password logins\n"
39865 " (ssl-cert \"/etc/letsencrypt/live/mumble.example.com/fullchain.pem\")\n"
39866 " (ssl-key \"/etc/letsencrypt/live/mumble.example.com/privkey.pem\")))\n"
39867 msgstr ""
39868
39869 #. type: deftp
39870 #: guix-git/doc/guix.texi:22363
39871 msgid "After reconfiguring your system, you can manually set the murmur @code{SuperUser} password with the command that is printed during the activation phase."
39872 msgstr ""
39873
39874 #. type: deftp
39875 #: guix-git/doc/guix.texi:22372
39876 msgid "It is recommended to register a normal Mumble user account and grant it admin or moderator rights. You can use the @code{mumble} client to login as new normal user, register yourself, and log out. For the next step login with the name @code{SuperUser} use the @code{SuperUser} password that you set previously, and grant your newly registered mumble user administrator or moderator rights and create some channels."
39877 msgstr ""
39878
39879 #. type: deftp
39880 #: guix-git/doc/guix.texi:22374
39881 msgid "Available @code{murmur-configuration} fields are:"
39882 msgstr ""
39883
39884 #. type: item
39885 #: guix-git/doc/guix.texi:22376
39886 #, no-wrap
39887 msgid "@code{package} (default: @code{mumble})"
39888 msgstr ""
39889
39890 #. type: table
39891 #: guix-git/doc/guix.texi:22378
39892 msgid "Package that contains @code{bin/murmurd}."
39893 msgstr ""
39894
39895 #. type: item
39896 #: guix-git/doc/guix.texi:22379
39897 #, no-wrap
39898 msgid "@code{user} (default: @code{\"murmur\"})"
39899 msgstr ""
39900
39901 #. type: table
39902 #: guix-git/doc/guix.texi:22381
39903 msgid "User who will run the Murmur server."
39904 msgstr ""
39905
39906 #. type: item
39907 #: guix-git/doc/guix.texi:22382
39908 #, no-wrap
39909 msgid "@code{group} (default: @code{\"murmur\"})"
39910 msgstr ""
39911
39912 #. type: table
39913 #: guix-git/doc/guix.texi:22384
39914 msgid "Group of the user who will run the murmur server."
39915 msgstr ""
39916
39917 #. type: item
39918 #: guix-git/doc/guix.texi:22385
39919 #, no-wrap
39920 msgid "@code{port} (default: @code{64738})"
39921 msgstr ""
39922
39923 #. type: table
39924 #: guix-git/doc/guix.texi:22387
39925 msgid "Port on which the server will listen."
39926 msgstr ""
39927
39928 #. type: item
39929 #: guix-git/doc/guix.texi:22388
39930 #, no-wrap
39931 msgid "@code{welcome-text} (default: @code{\"\"})"
39932 msgstr ""
39933
39934 #. type: table
39935 #: guix-git/doc/guix.texi:22390
39936 msgid "Welcome text sent to clients when they connect."
39937 msgstr ""
39938
39939 #. type: item
39940 #: guix-git/doc/guix.texi:22391
39941 #, no-wrap
39942 msgid "@code{server-password} (default: @code{\"\"})"
39943 msgstr ""
39944
39945 #. type: table
39946 #: guix-git/doc/guix.texi:22393
39947 msgid "Password the clients have to enter in order to connect."
39948 msgstr ""
39949
39950 #. type: item
39951 #: guix-git/doc/guix.texi:22394
39952 #, no-wrap
39953 msgid "@code{max-users} (default: @code{100})"
39954 msgstr ""
39955
39956 #. type: table
39957 #: guix-git/doc/guix.texi:22396
39958 msgid "Maximum of users that can be connected to the server at once."
39959 msgstr ""
39960
39961 #. type: item
39962 #: guix-git/doc/guix.texi:22397
39963 #, no-wrap
39964 msgid "@code{max-user-bandwidth} (default: @code{#f})"
39965 msgstr ""
39966
39967 #. type: table
39968 #: guix-git/doc/guix.texi:22399
39969 msgid "Maximum voice traffic a user can send per second."
39970 msgstr ""
39971
39972 #. type: item
39973 #: guix-git/doc/guix.texi:22400
39974 #, no-wrap
39975 msgid "@code{database-file} (default: @code{\"/var/lib/murmur/db.sqlite\"})"
39976 msgstr ""
39977
39978 #. type: table
39979 #: guix-git/doc/guix.texi:22403
39980 msgid "File name of the sqlite database. The service's user will become the owner of the directory."
39981 msgstr ""
39982
39983 #. type: item
39984 #: guix-git/doc/guix.texi:22404
39985 #, no-wrap
39986 msgid "@code{log-file} (default: @code{\"/var/log/murmur/murmur.log\"})"
39987 msgstr ""
39988
39989 #. type: table
39990 #: guix-git/doc/guix.texi:22407
39991 msgid "File name of the log file. The service's user will become the owner of the directory."
39992 msgstr ""
39993
39994 #. type: item
39995 #: guix-git/doc/guix.texi:22408
39996 #, no-wrap
39997 msgid "@code{autoban-attempts} (default: @code{10})"
39998 msgstr ""
39999
40000 #. type: table
40001 #: guix-git/doc/guix.texi:22411
40002 msgid "Maximum number of logins a user can make in @code{autoban-timeframe} without getting auto banned for @code{autoban-time}."
40003 msgstr ""
40004
40005 #. type: item
40006 #: guix-git/doc/guix.texi:22412
40007 #, no-wrap
40008 msgid "@code{autoban-timeframe} (default: @code{120})"
40009 msgstr ""
40010
40011 #. type: table
40012 #: guix-git/doc/guix.texi:22414
40013 msgid "Timeframe for autoban in seconds."
40014 msgstr ""
40015
40016 #. type: item
40017 #: guix-git/doc/guix.texi:22415
40018 #, no-wrap
40019 msgid "@code{autoban-time} (default: @code{300})"
40020 msgstr ""
40021
40022 #. type: table
40023 #: guix-git/doc/guix.texi:22418
40024 msgid "Amount of time in seconds for which a client gets banned when violating the autoban limits."
40025 msgstr ""
40026
40027 #. type: item
40028 #: guix-git/doc/guix.texi:22419
40029 #, no-wrap
40030 msgid "@code{opus-threshold} (default: @code{100})"
40031 msgstr ""
40032
40033 #. type: table
40034 #: guix-git/doc/guix.texi:22422
40035 msgid "Percentage of clients that need to support opus before switching over to opus audio codec."
40036 msgstr ""
40037
40038 #. type: item
40039 #: guix-git/doc/guix.texi:22423
40040 #, no-wrap
40041 msgid "@code{channel-nesting-limit} (default: @code{10})"
40042 msgstr ""
40043
40044 #. type: table
40045 #: guix-git/doc/guix.texi:22425
40046 msgid "How deep channels can be nested at maximum."
40047 msgstr ""
40048
40049 #. type: item
40050 #: guix-git/doc/guix.texi:22426
40051 #, no-wrap
40052 msgid "@code{channelname-regex} (default: @code{#f})"
40053 msgstr ""
40054
40055 #. type: table
40056 #: guix-git/doc/guix.texi:22428
40057 msgid "A string in form of a Qt regular expression that channel names must conform to."
40058 msgstr ""
40059
40060 #. type: item
40061 #: guix-git/doc/guix.texi:22429
40062 #, no-wrap
40063 msgid "@code{username-regex} (default: @code{#f})"
40064 msgstr ""
40065
40066 #. type: table
40067 #: guix-git/doc/guix.texi:22431
40068 msgid "A string in form of a Qt regular expression that user names must conform to."
40069 msgstr ""
40070
40071 #. type: item
40072 #: guix-git/doc/guix.texi:22432
40073 #, no-wrap
40074 msgid "@code{text-message-length} (default: @code{5000})"
40075 msgstr ""
40076
40077 #. type: table
40078 #: guix-git/doc/guix.texi:22434
40079 msgid "Maximum size in bytes that a user can send in one text chat message."
40080 msgstr ""
40081
40082 #. type: item
40083 #: guix-git/doc/guix.texi:22435
40084 #, no-wrap
40085 msgid "@code{image-message-length} (default: @code{(* 128 1024)})"
40086 msgstr ""
40087
40088 #. type: table
40089 #: guix-git/doc/guix.texi:22437
40090 msgid "Maximum size in bytes that a user can send in one image message."
40091 msgstr ""
40092
40093 #. type: item
40094 #: guix-git/doc/guix.texi:22438
40095 #, no-wrap
40096 msgid "@code{cert-required?} (default: @code{#f})"
40097 msgstr ""
40098
40099 #. type: table
40100 #: guix-git/doc/guix.texi:22441
40101 msgid "If it is set to @code{#t} clients that use weak password authentication will not be accepted. Users must have completed the certificate wizard to join."
40102 msgstr ""
40103
40104 #. type: item
40105 #: guix-git/doc/guix.texi:22442
40106 #, no-wrap
40107 msgid "@code{remember-channel?} (default: @code{#f})"
40108 msgstr ""
40109
40110 #. type: table
40111 #: guix-git/doc/guix.texi:22445
40112 msgid "Should murmur remember the last channel each user was in when they disconnected and put them into the remembered channel when they rejoin."
40113 msgstr ""
40114
40115 #. type: item
40116 #: guix-git/doc/guix.texi:22446
40117 #, no-wrap
40118 msgid "@code{allow-html?} (default: @code{#f})"
40119 msgstr ""
40120
40121 #. type: table
40122 #: guix-git/doc/guix.texi:22448
40123 msgid "Should html be allowed in text messages, user comments, and channel descriptions."
40124 msgstr ""
40125
40126 #. type: item
40127 #: guix-git/doc/guix.texi:22449
40128 #, no-wrap
40129 msgid "@code{allow-ping?} (default: @code{#f})"
40130 msgstr ""
40131
40132 #. type: table
40133 #: guix-git/doc/guix.texi:22453
40134 msgid "Setting to true exposes the current user count, the maximum user count, and the server's maximum bandwidth per client to unauthenticated users. In the Mumble client, this information is shown in the Connect dialog."
40135 msgstr ""
40136
40137 #. type: table
40138 #: guix-git/doc/guix.texi:22455
40139 msgid "Disabling this setting will prevent public listing of the server."
40140 msgstr ""
40141
40142 #. type: item
40143 #: guix-git/doc/guix.texi:22456
40144 #, no-wrap
40145 msgid "@code{bonjour?} (default: @code{#f})"
40146 msgstr ""
40147
40148 #. type: table
40149 #: guix-git/doc/guix.texi:22458
40150 msgid "Should the server advertise itself in the local network through the bonjour protocol."
40151 msgstr ""
40152
40153 #. type: item
40154 #: guix-git/doc/guix.texi:22459
40155 #, no-wrap
40156 msgid "@code{send-version?} (default: @code{#f})"
40157 msgstr ""
40158
40159 #. type: table
40160 #: guix-git/doc/guix.texi:22461
40161 msgid "Should the murmur server version be exposed in ping requests."
40162 msgstr ""
40163
40164 #. type: item
40165 #: guix-git/doc/guix.texi:22462
40166 #, no-wrap
40167 msgid "@code{log-days} (default: @code{31})"
40168 msgstr ""
40169
40170 #. type: table
40171 #: guix-git/doc/guix.texi:22466
40172 msgid "Murmur also stores logs in the database, which are accessible via RPC. The default is 31 days of months, but you can set this setting to 0 to keep logs forever, or -1 to disable logging to the database."
40173 msgstr ""
40174
40175 #. type: item
40176 #: guix-git/doc/guix.texi:22467
40177 #, no-wrap
40178 msgid "@code{obfuscate-ips?} (default: @code{#t})"
40179 msgstr ""
40180
40181 #. type: table
40182 #: guix-git/doc/guix.texi:22469
40183 msgid "Should logged ips be obfuscated to protect the privacy of users."
40184 msgstr ""
40185
40186 #. type: item
40187 #: guix-git/doc/guix.texi:22470
40188 #, no-wrap
40189 msgid "@code{ssl-cert} (default: @code{#f})"
40190 msgstr ""
40191
40192 #. type: table
40193 #: guix-git/doc/guix.texi:22472
40194 msgid "File name of the SSL/TLS certificate used for encrypted connections."
40195 msgstr ""
40196
40197 #. type: lisp
40198 #: guix-git/doc/guix.texi:22475
40199 #, no-wrap
40200 msgid "(ssl-cert \"/etc/letsencrypt/live/example.com/fullchain.pem\")\n"
40201 msgstr ""
40202
40203 #. type: item
40204 #: guix-git/doc/guix.texi:22476
40205 #, no-wrap
40206 msgid "@code{ssl-key} (default: @code{#f})"
40207 msgstr ""
40208
40209 #. type: table
40210 #: guix-git/doc/guix.texi:22478
40211 msgid "Filepath to the ssl private key used for encrypted connections."
40212 msgstr ""
40213
40214 #. type: lisp
40215 #: guix-git/doc/guix.texi:22480
40216 #, no-wrap
40217 msgid "(ssl-key \"/etc/letsencrypt/live/example.com/privkey.pem\")\n"
40218 msgstr ""
40219
40220 #. type: item
40221 #: guix-git/doc/guix.texi:22482
40222 #, no-wrap
40223 msgid "@code{ssl-dh-params} (default: @code{#f})"
40224 msgstr ""
40225
40226 #. type: table
40227 #: guix-git/doc/guix.texi:22487
40228 msgid "File name of a PEM-encoded file with Diffie-Hellman parameters for the SSL/TLS encryption. Alternatively you set it to @code{\"@@ffdhe2048\"}, @code{\"@@ffdhe3072\"}, @code{\"@@ffdhe4096\"}, @code{\"@@ffdhe6144\"} or @code{\"@@ffdhe8192\"} to use bundled parameters from RFC 7919."
40229 msgstr ""
40230
40231 #. type: item
40232 #: guix-git/doc/guix.texi:22488
40233 #, no-wrap
40234 msgid "@code{ssl-ciphers} (default: @code{#f})"
40235 msgstr ""
40236
40237 #. type: table
40238 #: guix-git/doc/guix.texi:22491
40239 msgid "The @code{ssl-ciphers} option chooses the cipher suites to make available for use in SSL/TLS."
40240 msgstr ""
40241
40242 #. type: table
40243 #: guix-git/doc/guix.texi:22495
40244 msgid "This option is specified using @uref{https://www.openssl.org/docs/apps/ciphers.html#CIPHER-LIST-FORMAT, OpenSSL cipher list notation}."
40245 msgstr ""
40246
40247 #. type: table
40248 #: guix-git/doc/guix.texi:22500
40249 msgid "It is recommended that you try your cipher string using 'openssl ciphers <string>' before setting it here, to get a feel for which cipher suites you will get. After setting this option, it is recommend that you inspect your Murmur log to ensure that Murmur is using the cipher suites that you expected it to."
40250 msgstr ""
40251
40252 #. type: table
40253 #: guix-git/doc/guix.texi:22504
40254 msgid "Note: Changing this option may impact the backwards compatibility of your Murmur server, and can remove the ability for older Mumble clients to be able to connect to it."
40255 msgstr ""
40256
40257 #. type: item
40258 #: guix-git/doc/guix.texi:22505
40259 #, no-wrap
40260 msgid "@code{public-registration} (default: @code{#f})"
40261 msgstr ""
40262
40263 #. type: table
40264 #: guix-git/doc/guix.texi:22507
40265 msgid "Must be a @code{<murmur-public-registration-configuration>} record or @code{#f}."
40266 msgstr ""
40267
40268 #. type: table
40269 #: guix-git/doc/guix.texi:22512
40270 msgid "You can optionally register your server in the public server list that the @code{mumble} client shows on startup. You cannot register your server if you have set a @code{server-password}, or set @code{allow-ping} to @code{#f}."
40271 msgstr ""
40272
40273 #. type: table
40274 #: guix-git/doc/guix.texi:22514
40275 msgid "It might take a few hours until it shows up in the public list."
40276 msgstr ""
40277
40278 #. type: item
40279 #: guix-git/doc/guix.texi:22515 guix-git/doc/guix.texi:24751
40280 #, no-wrap
40281 msgid "@code{file} (default: @code{#f})"
40282 msgstr ""
40283
40284 #. type: table
40285 #: guix-git/doc/guix.texi:22517
40286 msgid "Optional alternative override for this configuration."
40287 msgstr ""
40288
40289 #. type: deftp
40290 #: guix-git/doc/guix.texi:22520
40291 #, no-wrap
40292 msgid "{Data Type} murmur-public-registration-configuration"
40293 msgstr ""
40294
40295 #. type: deftp
40296 #: guix-git/doc/guix.texi:22522
40297 msgid "Configuration for public registration of a murmur service."
40298 msgstr ""
40299
40300 #. type: table
40301 #: guix-git/doc/guix.texi:22526
40302 msgid "This is a display name for your server. Not to be confused with the hostname."
40303 msgstr ""
40304
40305 #. type: itemx
40306 #: guix-git/doc/guix.texi:22527 guix-git/doc/guix.texi:31202
40307 #: guix-git/doc/guix.texi:32243
40308 #, no-wrap
40309 msgid "password"
40310 msgstr ""
40311
40312 #. type: table
40313 #: guix-git/doc/guix.texi:22530
40314 msgid "A password to identify your registration. Subsequent updates will need the same password. Don't lose your password."
40315 msgstr ""
40316
40317 #. type: table
40318 #: guix-git/doc/guix.texi:22534
40319 msgid "This should be a @code{http://} or @code{https://} link to your web site."
40320 msgstr ""
40321
40322 #. type: item
40323 #: guix-git/doc/guix.texi:22535 guix-git/doc/guix.texi:25630
40324 #, no-wrap
40325 msgid "@code{hostname} (default: @code{#f})"
40326 msgstr ""
40327
40328 #. type: table
40329 #: guix-git/doc/guix.texi:22538
40330 msgid "By default your server will be listed by its IP address. If it is set your server will be linked by this host name instead."
40331 msgstr ""
40332
40333 #. type: Plain text
40334 #: guix-git/doc/guix.texi:22548
40335 msgid "The @code{(gnu services file-sharing)} module provides services that assist with transferring files over peer-to-peer file-sharing networks."
40336 msgstr ""
40337
40338 #. type: subsubheading
40339 #: guix-git/doc/guix.texi:22549
40340 #, no-wrap
40341 msgid "Transmission Daemon Service"
40342 msgstr ""
40343
40344 #. type: Plain text
40345 #: guix-git/doc/guix.texi:22557
40346 msgid "@uref{https://transmissionbt.com/, Transmission} is a flexible BitTorrent client that offers a variety of graphical and command-line interfaces. A @code{transmission-daemon-service-type} service provides Transmission's headless variant, @command{transmission-daemon}, as a system service, allowing users to share files via BitTorrent even when they are not logged in."
40347 msgstr ""
40348
40349 #. type: deffn
40350 #: guix-git/doc/guix.texi:22558
40351 #, no-wrap
40352 msgid "{Scheme Variable} transmission-daemon-service-type"
40353 msgstr ""
40354
40355 #. type: deffn
40356 #: guix-git/doc/guix.texi:22562
40357 msgid "The service type for the Transmission Daemon BitTorrent client. Its value must be a @code{transmission-daemon-configuration} object as in this example:"
40358 msgstr ""
40359
40360 #. type: lisp
40361 #: guix-git/doc/guix.texi:22573
40362 #, no-wrap
40363 msgid ""
40364 "(service transmission-daemon-service-type\n"
40365 " (transmission-daemon-configuration\n"
40366 " ;; Restrict access to the RPC (\"control\") interface\n"
40367 " (rpc-authentication-required? #t)\n"
40368 " (rpc-username \"transmission\")\n"
40369 " (rpc-password\n"
40370 " (transmission-password-hash\n"
40371 " \"transmission\" ; desired password\n"
40372 " \"uKd1uMs9\")) ; arbitrary salt value\n"
40373 "\n"
40374 msgstr ""
40375
40376 #. type: lisp
40377 #: guix-git/doc/guix.texi:22578
40378 #, no-wrap
40379 msgid ""
40380 " ;; Accept requests from this and other hosts on the\n"
40381 " ;; local network\n"
40382 " (rpc-whitelist-enabled? #t)\n"
40383 " (rpc-whitelist '(\"::1\" \"127.0.0.1\" \"192.168.0.*\"))\n"
40384 "\n"
40385 msgstr ""
40386
40387 #. type: lisp
40388 #: guix-git/doc/guix.texi:22582
40389 #, no-wrap
40390 msgid ""
40391 " ;; Limit bandwidth use during work hours\n"
40392 " (alt-speed-down (* 1024 2)) ; 2 MB/s\n"
40393 " (alt-speed-up 512) ; 512 kB/s\n"
40394 "\n"
40395 msgstr ""
40396
40397 #. type: lisp
40398 #: guix-git/doc/guix.texi:22589
40399 #, no-wrap
40400 msgid ""
40401 " (alt-speed-time-enabled? #t)\n"
40402 " (alt-speed-time-day 'weekdays)\n"
40403 " (alt-speed-time-begin\n"
40404 " (+ (* 60 8) 30)) ; 8:30 am\n"
40405 " (alt-speed-time-end\n"
40406 " (+ (* 60 (+ 12 5)) 30)))) ; 5:30 pm\n"
40407 msgstr ""
40408
40409 #. type: Plain text
40410 #: guix-git/doc/guix.texi:22602
40411 msgid "Once the service is started, users can interact with the daemon through its Web interface (at @code{http://localhost:9091/}) or by using the @command{transmission-remote} command-line tool, available in the @code{transmission} package. (Emacs users may want to also consider the @code{emacs-transmission} package.) Both communicate with the daemon through its remote procedure call (RPC) interface, which by default is available to all users on the system; you may wish to change this by assigning values to the @code{rpc-authentication-required?}, @code{rpc-username} and @code{rpc-password} settings, as shown in the example above and documented further below."
40412 msgstr ""
40413
40414 #. type: Plain text
40415 #: guix-git/doc/guix.texi:22610
40416 msgid "The value for @code{rpc-password} must be a password hash of the type generated and used by Transmission clients. This can be copied verbatim from an existing @file{settings.json} file, if another Transmission client is already being used. Otherwise, the @code{transmission-password-hash} and @code{transmission-random-salt} procedures provided by this module can be used to obtain a suitable hash value."
40417 msgstr ""
40418
40419 #. type: deffn
40420 #: guix-git/doc/guix.texi:22611
40421 #, no-wrap
40422 msgid "{Scheme Procedure} transmission-password-hash @var{password} @var{salt}"
40423 msgstr ""
40424
40425 #. type: deffn
40426 #: guix-git/doc/guix.texi:22615
40427 msgid "Returns a string containing the result of hashing @var{password} together with @var{salt}, in the format recognized by Transmission clients for their @code{rpc-password} configuration setting."
40428 msgstr ""
40429
40430 #. type: deffn
40431 #: guix-git/doc/guix.texi:22619
40432 msgid "@var{salt} must be an eight-character string. The @code{transmission-random-salt} procedure can be used to generate a suitable salt value at random."
40433 msgstr ""
40434
40435 #. type: deffn
40436 #: guix-git/doc/guix.texi:22621
40437 #, no-wrap
40438 msgid "{Scheme Procedure} transmission-random-salt"
40439 msgstr ""
40440
40441 #. type: deffn
40442 #: guix-git/doc/guix.texi:22625
40443 msgid "Returns a string containing a random, eight-character salt value of the type generated and used by Transmission clients, suitable for passing to the @code{transmission-password-hash} procedure."
40444 msgstr ""
40445
40446 #. type: Plain text
40447 #: guix-git/doc/guix.texi:22631
40448 msgid "These procedures are accessible from within a Guile REPL started with the @command{guix repl} command (@pxref{Invoking guix repl}). This is useful for obtaining a random salt value to provide as the second parameter to `transmission-password-hash`, as in this example session:"
40449 msgstr ""
40450
40451 #. type: example
40452 #: guix-git/doc/guix.texi:22637
40453 #, no-wrap
40454 msgid ""
40455 "$ guix repl\n"
40456 "scheme@@(guix-user)> ,use (gnu services file-sharing)\n"
40457 "scheme@@(guix-user)> (transmission-random-salt)\n"
40458 "$1 = \"uKd1uMs9\"\n"
40459 msgstr ""
40460
40461 #. type: Plain text
40462 #: guix-git/doc/guix.texi:22640
40463 msgid "Alternatively, a complete password hash can generated in a single step:"
40464 msgstr ""
40465
40466 #. type: example
40467 #: guix-git/doc/guix.texi:22645
40468 #, no-wrap
40469 msgid ""
40470 "scheme@@(guix-user)> (transmission-password-hash \"transmission\"\n"
40471 "(transmission-random-salt))\n"
40472 "$2 = \"@{c8bbc6d1740cd8dc819a6e25563b67812c1c19c9VtFPfdsX\"\n"
40473 msgstr ""
40474
40475 #. type: Plain text
40476 #: guix-git/doc/guix.texi:22650
40477 msgid "The resulting string can be used as-is for the value of @code{rpc-password}, allowing the password to be kept hidden even in the operating-system configuration."
40478 msgstr ""
40479
40480 #. type: Plain text
40481 #: guix-git/doc/guix.texi:22659
40482 msgid "Torrent files downloaded by the daemon are directly accessible only to users in the ``transmission'' user group, who receive read-only access to the directory specified by the @code{download-dir} configuration setting (and also the directory specified by @code{incomplete-dir}, if @code{incomplete-dir-enabled?} is @code{#t}). Downloaded files can be moved to another directory or deleted altogether using @command{transmission-remote} with its @code{--move} and @code{--remove-and-delete} options."
40483 msgstr ""
40484
40485 #. type: Plain text
40486 #: guix-git/doc/guix.texi:22666
40487 msgid "If the @code{watch-dir-enabled?} setting is set to @code{#t}, users in the ``transmission'' group are able also to place @file{.torrent} files in the directory specified by @code{watch-dir} to have the corresponding torrents added by the daemon. (The @code{trash-original-torrent-files?} setting controls whether the daemon deletes these files after processing them.)"
40488 msgstr ""
40489
40490 #. type: Plain text
40491 #: guix-git/doc/guix.texi:22671
40492 msgid "Some of the daemon's configuration settings can be changed temporarily by @command{transmission-remote} and similar tools. To undo these changes, use the service's @code{reload} action to have the daemon reload its settings from disk:"
40493 msgstr ""
40494
40495 #. type: example
40496 #: guix-git/doc/guix.texi:22674
40497 #, no-wrap
40498 msgid "# herd reload transmission-daemon\n"
40499 msgstr ""
40500
40501 #. type: Plain text
40502 #: guix-git/doc/guix.texi:22678
40503 msgid "The full set of available configuration settings is defined by the @code{transmission-daemon-configuration} data type."
40504 msgstr ""
40505
40506 #. type: deftp
40507 #: guix-git/doc/guix.texi:22679
40508 #, no-wrap
40509 msgid "{Data Type} transmission-daemon-configuration"
40510 msgstr ""
40511
40512 #. type: deftp
40513 #: guix-git/doc/guix.texi:22683
40514 msgid "The data type representing configuration settings for Transmission Daemon. These correspond directly to the settings recognized by Transmission clients in their @file{settings.json} file."
40515 msgstr ""
40516
40517 #. type: Plain text
40518 #: guix-git/doc/guix.texi:22697
40519 msgid "Available @code{transmission-daemon-configuration} fields are:"
40520 msgstr ""
40521
40522 #. type: deftypevr
40523 #: guix-git/doc/guix.texi:22698
40524 #, no-wrap
40525 msgid "{@code{transmission-daemon-configuration} parameter} package transmission"
40526 msgstr ""
40527
40528 #. type: deftypevr
40529 #: guix-git/doc/guix.texi:22700
40530 msgid "The Transmission package to use."
40531 msgstr ""
40532
40533 #. type: deftypevr
40534 #: guix-git/doc/guix.texi:22703
40535 #, no-wrap
40536 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer stop-wait-period"
40537 msgstr ""
40538
40539 #. type: deftypevr
40540 #: guix-git/doc/guix.texi:22709
40541 msgid "The period, in seconds, to wait when stopping the service for @command{transmission-daemon} to exit before killing its process. This allows the daemon time to complete its housekeeping and send a final update to trackers as it shuts down. On slow hosts, or hosts with a slow network connection, this value may need to be increased."
40542 msgstr ""
40543
40544 #. type: deftypevr
40545 #: guix-git/doc/guix.texi:22711 guix-git/doc/guix.texi:23083
40546 #: guix-git/doc/guix.texi:30315 guix-git/doc/guix.texi:30550
40547 #: guix-git/doc/guix.texi:30558 guix-git/doc/guix.texi:30566
40548 msgid "Defaults to @samp{10}."
40549 msgstr ""
40550
40551 #. type: deftypevr
40552 #: guix-git/doc/guix.texi:22714
40553 #, no-wrap
40554 msgid "{@code{transmission-daemon-configuration} parameter} string download-dir"
40555 msgstr ""
40556
40557 #. type: deftypevr
40558 #: guix-git/doc/guix.texi:22716
40559 msgid "The directory to which torrent files are downloaded."
40560 msgstr ""
40561
40562 #. type: deftypevr
40563 #: guix-git/doc/guix.texi:22718
40564 msgid "Defaults to @samp{\"/var/lib/transmission-daemon/downloads\"}."
40565 msgstr ""
40566
40567 #. type: deftypevr
40568 #: guix-git/doc/guix.texi:22721
40569 #, no-wrap
40570 msgid "{@code{transmission-daemon-configuration} parameter} boolean incomplete-dir-enabled?"
40571 msgstr ""
40572
40573 #. type: deftypevr
40574 #: guix-git/doc/guix.texi:22726
40575 msgid "If @code{#t}, files will be held in @code{incomplete-dir} while their torrent is being downloaded, then moved to @code{download-dir} once the torrent is complete. Otherwise, files for all torrents (including those still being downloaded) will be placed in @code{download-dir}."
40576 msgstr ""
40577
40578 #. type: deftypevr
40579 #: guix-git/doc/guix.texi:22731
40580 #, no-wrap
40581 msgid "{@code{transmission-daemon-configuration} parameter} maybe-string incomplete-dir"
40582 msgstr ""
40583
40584 #. type: deftypevr
40585 #: guix-git/doc/guix.texi:22734
40586 msgid "The directory in which files from incompletely downloaded torrents will be held when @code{incomplete-dir-enabled?} is @code{#t}."
40587 msgstr ""
40588
40589 #. type: deftypevr
40590 #: guix-git/doc/guix.texi:22736 guix-git/doc/guix.texi:22780
40591 #: guix-git/doc/guix.texi:22993 guix-git/doc/guix.texi:23049
40592 #: guix-git/doc/guix.texi:23223 guix-git/doc/guix.texi:23234
40593 #: guix-git/doc/guix.texi:23307 guix-git/doc/guix.texi:24032
40594 #: guix-git/doc/guix.texi:24075 guix-git/doc/guix.texi:24083
40595 #: guix-git/doc/guix.texi:24091 guix-git/doc/guix.texi:24099
40596 #: guix-git/doc/guix.texi:24108 guix-git/doc/guix.texi:24116
40597 #: guix-git/doc/guix.texi:24123 guix-git/doc/guix.texi:24131
40598 #: guix-git/doc/guix.texi:24139 guix-git/doc/guix.texi:24149
40599 #: guix-git/doc/guix.texi:24156 guix-git/doc/guix.texi:24180
40600 #: guix-git/doc/guix.texi:24188 guix-git/doc/guix.texi:24214
40601 #: guix-git/doc/guix.texi:24223 guix-git/doc/guix.texi:24232
40602 #: guix-git/doc/guix.texi:24241 guix-git/doc/guix.texi:24250
40603 #: guix-git/doc/guix.texi:24259 guix-git/doc/guix.texi:24267
40604 #: guix-git/doc/guix.texi:24275 guix-git/doc/guix.texi:24282
40605 #: guix-git/doc/guix.texi:24290 guix-git/doc/guix.texi:24297
40606 #: guix-git/doc/guix.texi:24305 guix-git/doc/guix.texi:24313
40607 #: guix-git/doc/guix.texi:24322 guix-git/doc/guix.texi:24331
40608 #: guix-git/doc/guix.texi:24339 guix-git/doc/guix.texi:24347
40609 #: guix-git/doc/guix.texi:24355 guix-git/doc/guix.texi:24366
40610 #: guix-git/doc/guix.texi:24376 guix-git/doc/guix.texi:24387
40611 #: guix-git/doc/guix.texi:24396 guix-git/doc/guix.texi:24406
40612 #: guix-git/doc/guix.texi:24414 guix-git/doc/guix.texi:24425
40613 #: guix-git/doc/guix.texi:24434 guix-git/doc/guix.texi:24444
40614 #: guix-git/doc/guix.texi:27607 guix-git/doc/guix.texi:27614
40615 #: guix-git/doc/guix.texi:27621 guix-git/doc/guix.texi:27628
40616 #: guix-git/doc/guix.texi:27635 guix-git/doc/guix.texi:27642
40617 #: guix-git/doc/guix.texi:27650 guix-git/doc/guix.texi:27658
40618 #: guix-git/doc/guix.texi:27665 guix-git/doc/guix.texi:27672
40619 #: guix-git/doc/guix.texi:27679 guix-git/doc/guix.texi:27686
40620 #: guix-git/doc/guix.texi:27716 guix-git/doc/guix.texi:27754
40621 #: guix-git/doc/guix.texi:27761 guix-git/doc/guix.texi:27770
40622 #: guix-git/doc/guix.texi:27792 guix-git/doc/guix.texi:27800
40623 #: guix-git/doc/guix.texi:27807 guix-git/doc/guix.texi:27962
40624 #: guix-git/doc/guix.texi:27982 guix-git/doc/guix.texi:27997
40625 #: guix-git/doc/guix.texi:28004 guix-git/doc/guix.texi:30687
40626 #: guix-git/doc/guix.texi:30695 guix-git/doc/guix.texi:30703
40627 #: guix-git/doc/guix.texi:30711 guix-git/doc/guix.texi:30719
40628 #: guix-git/doc/guix.texi:30727
40629 msgid "Defaults to @samp{disabled}."
40630 msgstr ""
40631
40632 #. type: deftypevr
40633 #: guix-git/doc/guix.texi:22739
40634 #, no-wrap
40635 msgid "{@code{transmission-daemon-configuration} parameter} umask umask"
40636 msgstr ""
40637
40638 #. type: deftypevr
40639 #: guix-git/doc/guix.texi:22742
40640 msgid "The file mode creation mask used for downloaded files. (See the @command{umask} man page for more information.)"
40641 msgstr ""
40642
40643 #. type: deftypevr
40644 #: guix-git/doc/guix.texi:22744
40645 msgid "Defaults to @samp{18}."
40646 msgstr ""
40647
40648 #. type: deftypevr
40649 #: guix-git/doc/guix.texi:22747
40650 #, no-wrap
40651 msgid "{@code{transmission-daemon-configuration} parameter} boolean rename-partial-files?"
40652 msgstr ""
40653
40654 #. type: deftypevr
40655 #: guix-git/doc/guix.texi:22750
40656 msgid "When @code{#t}, ``.part'' is appended to the name of partially downloaded files."
40657 msgstr ""
40658
40659 #. type: deftypevr
40660 #: guix-git/doc/guix.texi:22755
40661 #, no-wrap
40662 msgid "{@code{transmission-daemon-configuration} parameter} preallocation-mode preallocation"
40663 msgstr ""
40664
40665 #. type: deftypevr
40666 #: guix-git/doc/guix.texi:22760
40667 msgid "The mode by which space should be preallocated for downloaded files, one of @code{none}, @code{fast} (or @code{sparse}) and @code{full}. Specifying @code{full} will minimize disk fragmentation at a cost to file-creation speed."
40668 msgstr ""
40669
40670 #. type: deftypevr
40671 #: guix-git/doc/guix.texi:22762
40672 msgid "Defaults to @samp{fast}."
40673 msgstr ""
40674
40675 #. type: deftypevr
40676 #: guix-git/doc/guix.texi:22765
40677 #, no-wrap
40678 msgid "{@code{transmission-daemon-configuration} parameter} boolean watch-dir-enabled?"
40679 msgstr ""
40680
40681 #. type: deftypevr
40682 #: guix-git/doc/guix.texi:22770
40683 msgid "If @code{#t}, the directory specified by @code{watch-dir} will be watched for new @file{.torrent} files and the torrents they describe added automatically (and the original files removed, if @code{trash-original-torrent-files?} is @code{#t})."
40684 msgstr ""
40685
40686 #. type: deftypevr
40687 #: guix-git/doc/guix.texi:22775
40688 #, no-wrap
40689 msgid "{@code{transmission-daemon-configuration} parameter} maybe-string watch-dir"
40690 msgstr ""
40691
40692 #. type: deftypevr
40693 #: guix-git/doc/guix.texi:22778
40694 msgid "The directory to be watched for @file{.torrent} files indicating new torrents to be added, when @code{watch-dir-enabled} is @code{#t}."
40695 msgstr ""
40696
40697 #. type: deftypevr
40698 #: guix-git/doc/guix.texi:22783
40699 #, no-wrap
40700 msgid "{@code{transmission-daemon-configuration} parameter} boolean trash-original-torrent-files?"
40701 msgstr ""
40702
40703 #. type: deftypevr
40704 #: guix-git/doc/guix.texi:22787
40705 msgid "When @code{#t}, @file{.torrent} files will be deleted from the watch directory once their torrent has been added (see @code{watch-directory-enabled?})."
40706 msgstr ""
40707
40708 #. type: deftypevr
40709 #: guix-git/doc/guix.texi:22792
40710 #, no-wrap
40711 msgid "{@code{transmission-daemon-configuration} parameter} boolean speed-limit-down-enabled?"
40712 msgstr ""
40713
40714 #. type: deftypevr
40715 #: guix-git/doc/guix.texi:22795
40716 msgid "When @code{#t}, the daemon's download speed will be limited to the rate specified by @code{speed-limit-down}."
40717 msgstr ""
40718
40719 #. type: deftypevr
40720 #: guix-git/doc/guix.texi:22800
40721 #, no-wrap
40722 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer speed-limit-down"
40723 msgstr ""
40724
40725 #. type: deftypevr
40726 #: guix-git/doc/guix.texi:22802
40727 msgid "The default global-maximum download speed, in kilobytes per second."
40728 msgstr ""
40729
40730 #. type: deftypevr
40731 #: guix-git/doc/guix.texi:22807
40732 #, no-wrap
40733 msgid "{@code{transmission-daemon-configuration} parameter} boolean speed-limit-up-enabled?"
40734 msgstr ""
40735
40736 #. type: deftypevr
40737 #: guix-git/doc/guix.texi:22810
40738 msgid "When @code{#t}, the daemon's upload speed will be limited to the rate specified by @code{speed-limit-up}."
40739 msgstr ""
40740
40741 #. type: deftypevr
40742 #: guix-git/doc/guix.texi:22815
40743 #, no-wrap
40744 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer speed-limit-up"
40745 msgstr ""
40746
40747 #. type: deftypevr
40748 #: guix-git/doc/guix.texi:22817
40749 msgid "The default global-maximum upload speed, in kilobytes per second."
40750 msgstr ""
40751
40752 #. type: deftypevr
40753 #: guix-git/doc/guix.texi:22822
40754 #, no-wrap
40755 msgid "{@code{transmission-daemon-configuration} parameter} boolean alt-speed-enabled?"
40756 msgstr ""
40757
40758 #. type: deftypevr
40759 #: guix-git/doc/guix.texi:22828
40760 msgid "When @code{#t}, the alternate speed limits @code{alt-speed-down} and @code{alt-speed-up} are used (in place of @code{speed-limit-down} and @code{speed-limit-up}, if they are enabled) to constrain the daemon's bandwidth usage. This can be scheduled to occur automatically at certain times during the week; see @code{alt-speed-time-enabled?}."
40761 msgstr ""
40762
40763 #. type: deftypevr
40764 #: guix-git/doc/guix.texi:22833
40765 #, no-wrap
40766 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer alt-speed-down"
40767 msgstr ""
40768
40769 #. type: deftypevr
40770 #: guix-git/doc/guix.texi:22835
40771 msgid "The alternate global-maximum download speed, in kilobytes per second."
40772 msgstr ""
40773
40774 #. type: deftypevr
40775 #: guix-git/doc/guix.texi:22837 guix-git/doc/guix.texi:22844
40776 #: guix-git/doc/guix.texi:23016 guix-git/doc/guix.texi:30322
40777 #: guix-git/doc/guix.texi:30337
40778 msgid "Defaults to @samp{50}."
40779 msgstr ""
40780
40781 #. type: deftypevr
40782 #: guix-git/doc/guix.texi:22840
40783 #, no-wrap
40784 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer alt-speed-up"
40785 msgstr ""
40786
40787 #. type: deftypevr
40788 #: guix-git/doc/guix.texi:22842
40789 msgid "The alternate global-maximum upload speed, in kilobytes per second."
40790 msgstr ""
40791
40792 #. type: deftypevr
40793 #: guix-git/doc/guix.texi:22847
40794 #, no-wrap
40795 msgid "{@code{transmission-daemon-configuration} parameter} boolean alt-speed-time-enabled?"
40796 msgstr ""
40797
40798 #. type: deftypevr
40799 #: guix-git/doc/guix.texi:22852
40800 msgid "When @code{#t}, the alternate speed limits @code{alt-speed-down} and @code{alt-speed-up} will be enabled automatically during the periods specified by @code{alt-speed-time-day}, @code{alt-speed-time-begin} and @code{alt-time-speed-end}."
40801 msgstr ""
40802
40803 #. type: deftypevr
40804 #: guix-git/doc/guix.texi:22857
40805 #, no-wrap
40806 msgid "{@code{transmission-daemon-configuration} parameter} day-list alt-speed-time-day"
40807 msgstr ""
40808
40809 #. type: deftypevr
40810 #: guix-git/doc/guix.texi:22862
40811 msgid "The days of the week on which the alternate-speed schedule should be used, specified either as a list of days (@code{sunday}, @code{monday}, and so on) or using one of the symbols @code{weekdays}, @code{weekends} or @code{all}."
40812 msgstr ""
40813
40814 #. type: deftypevr
40815 #: guix-git/doc/guix.texi:22864
40816 msgid "Defaults to @samp{all}."
40817 msgstr ""
40818
40819 #. type: deftypevr
40820 #: guix-git/doc/guix.texi:22867
40821 #, no-wrap
40822 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer alt-speed-time-begin"
40823 msgstr ""
40824
40825 #. type: deftypevr
40826 #: guix-git/doc/guix.texi:22870
40827 msgid "The time of day at which to enable the alternate speed limits, expressed as a number of minutes since midnight."
40828 msgstr ""
40829
40830 #. type: deftypevr
40831 #: guix-git/doc/guix.texi:22872
40832 msgid "Defaults to @samp{540}."
40833 msgstr ""
40834
40835 #. type: deftypevr
40836 #: guix-git/doc/guix.texi:22875
40837 #, no-wrap
40838 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer alt-speed-time-end"
40839 msgstr ""
40840
40841 #. type: deftypevr
40842 #: guix-git/doc/guix.texi:22878
40843 msgid "The time of day at which to disable the alternate speed limits, expressed as a number of minutes since midnight."
40844 msgstr ""
40845
40846 #. type: deftypevr
40847 #: guix-git/doc/guix.texi:22880
40848 msgid "Defaults to @samp{1020}."
40849 msgstr ""
40850
40851 #. type: deftypevr
40852 #: guix-git/doc/guix.texi:22883
40853 #, no-wrap
40854 msgid "{@code{transmission-daemon-configuration} parameter} string bind-address-ipv4"
40855 msgstr ""
40856
40857 #. type: deftypevr
40858 #: guix-git/doc/guix.texi:22886
40859 msgid "The IP address at which to listen for peer connections, or ``0.0.0.0'' to listen at all available IP addresses."
40860 msgstr ""
40861
40862 #. type: deftypevr
40863 #: guix-git/doc/guix.texi:22888 guix-git/doc/guix.texi:23191
40864 #: guix-git/doc/guix.texi:28237
40865 msgid "Defaults to @samp{\"0.0.0.0\"}."
40866 msgstr ""
40867
40868 #. type: deftypevr
40869 #: guix-git/doc/guix.texi:22891
40870 #, no-wrap
40871 msgid "{@code{transmission-daemon-configuration} parameter} string bind-address-ipv6"
40872 msgstr ""
40873
40874 #. type: deftypevr
40875 #: guix-git/doc/guix.texi:22894
40876 msgid "The IPv6 address at which to listen for peer connections, or ``::'' to listen at all available IPv6 addresses."
40877 msgstr ""
40878
40879 #. type: deftypevr
40880 #: guix-git/doc/guix.texi:22896
40881 msgid "Defaults to @samp{\"::\"}."
40882 msgstr ""
40883
40884 #. type: deftypevr
40885 #: guix-git/doc/guix.texi:22899
40886 #, no-wrap
40887 msgid "{@code{transmission-daemon-configuration} parameter} boolean peer-port-random-on-start?"
40888 msgstr ""
40889
40890 #. type: deftypevr
40891 #: guix-git/doc/guix.texi:22905
40892 msgid "If @code{#t}, when the daemon starts it will select a port at random on which to listen for peer connections, from the range specified (inclusively) by @code{peer-port-random-low} and @code{peer-port-random-high}. Otherwise, it listens on the port specified by @code{peer-port}."
40893 msgstr ""
40894
40895 #. type: deftypevr
40896 #: guix-git/doc/guix.texi:22910
40897 #, no-wrap
40898 msgid "{@code{transmission-daemon-configuration} parameter} port-number peer-port-random-low"
40899 msgstr ""
40900
40901 #. type: deftypevr
40902 #: guix-git/doc/guix.texi:22913
40903 msgid "The lowest selectable port number when @code{peer-port-random-on-start?} is @code{#t}."
40904 msgstr ""
40905
40906 #. type: deftypevr
40907 #: guix-git/doc/guix.texi:22915
40908 msgid "Defaults to @samp{49152}."
40909 msgstr ""
40910
40911 #. type: deftypevr
40912 #: guix-git/doc/guix.texi:22918
40913 #, no-wrap
40914 msgid "{@code{transmission-daemon-configuration} parameter} port-number peer-port-random-high"
40915 msgstr ""
40916
40917 #. type: deftypevr
40918 #: guix-git/doc/guix.texi:22921
40919 msgid "The highest selectable port number when @code{peer-port-random-on-start} is @code{#t}."
40920 msgstr ""
40921
40922 #. type: deftypevr
40923 #: guix-git/doc/guix.texi:22923
40924 msgid "Defaults to @samp{65535}."
40925 msgstr ""
40926
40927 #. type: deftypevr
40928 #: guix-git/doc/guix.texi:22926
40929 #, no-wrap
40930 msgid "{@code{transmission-daemon-configuration} parameter} port-number peer-port"
40931 msgstr ""
40932
40933 #. type: deftypevr
40934 #: guix-git/doc/guix.texi:22929
40935 msgid "The port on which to listen for peer connections when @code{peer-port-random-on-start?} is @code{#f}."
40936 msgstr ""
40937
40938 #. type: deftypevr
40939 #: guix-git/doc/guix.texi:22931
40940 msgid "Defaults to @samp{51413}."
40941 msgstr ""
40942
40943 #. type: deftypevr
40944 #: guix-git/doc/guix.texi:22934
40945 #, no-wrap
40946 msgid "{@code{transmission-daemon-configuration} parameter} boolean port-forwarding-enabled?"
40947 msgstr ""
40948
40949 #. type: deftypevr
40950 #: guix-git/doc/guix.texi:22938
40951 msgid "If @code{#t}, the daemon will attempt to configure port-forwarding on an upstream gateway automatically using @acronym{UPnP} and @acronym{NAT-PMP}."
40952 msgstr ""
40953
40954 #. type: deftypevr
40955 #: guix-git/doc/guix.texi:22943
40956 #, no-wrap
40957 msgid "{@code{transmission-daemon-configuration} parameter} encryption-mode encryption"
40958 msgstr ""
40959
40960 #. type: deftypevr
40961 #: guix-git/doc/guix.texi:22948
40962 msgid "The encryption preference for peer connections, one of @code{prefer-unencrypted-connections}, @code{prefer-encrypted-connections} or @code{require-encrypted-connections}."
40963 msgstr ""
40964
40965 #. type: deftypevr
40966 #: guix-git/doc/guix.texi:22950
40967 msgid "Defaults to @samp{prefer-encrypted-connections}."
40968 msgstr ""
40969
40970 #. type: deftypevr
40971 #: guix-git/doc/guix.texi:22953
40972 #, no-wrap
40973 msgid "{@code{transmission-daemon-configuration} parameter} maybe-string peer-congestion-algorithm"
40974 msgstr ""
40975
40976 #. type: deftypevr
40977 #: guix-git/doc/guix.texi:22958
40978 msgid "The TCP congestion-control algorithm to use for peer connections, specified using a string recognized by the operating system in calls to @code{setsockopt} (or set to @code{disabled}, in which case the operating-system default is used)."
40979 msgstr ""
40980
40981 #. type: deftypevr
40982 #: guix-git/doc/guix.texi:22967
40983 msgid "Note that on GNU/Linux systems, the kernel must be configured to allow processes to use a congestion-control algorithm not in the default set; otherwise, it will deny these requests with ``Operation not permitted''. To see which algorithms are available on your system and which are currently permitted for use, look at the contents of the files @file{tcp_available_congestion_control} and @file{tcp_allowed_congestion_control} in the @file{/proc/sys/net/ipv4} directory."
40984 msgstr ""
40985
40986 #. type: deftypevr
40987 #: guix-git/doc/guix.texi:22975
40988 msgid "As an example, to have Transmission Daemon use @uref{http://www-ece.rice.edu/networks/TCP-LP/,the TCP Low Priority congestion-control algorithm}, you'll need to modify your kernel configuration to build in support for the algorithm, then update your operating-system configuration to allow its use by adding a @code{sysctl-service-type} service (or updating the existing one's configuration) with lines like the following:"
40989 msgstr ""
40990
40991 #. type: lisp
40992 #: guix-git/doc/guix.texi:22982
40993 #, no-wrap
40994 msgid ""
40995 "(service sysctl-service-type\n"
40996 " (sysctl-configuration\n"
40997 " (settings\n"
40998 " (\"net.ipv4.tcp_allowed_congestion_control\" .\n"
40999 " \"reno cubic lp\"))))\n"
41000 msgstr ""
41001
41002 #. type: deftypevr
41003 #: guix-git/doc/guix.texi:22985
41004 msgid "The Transmission Daemon configuration can then be updated with"
41005 msgstr ""
41006
41007 #. type: lisp
41008 #: guix-git/doc/guix.texi:22988
41009 #, no-wrap
41010 msgid "(peer-congestion-algorithm \"lp\")\n"
41011 msgstr ""
41012
41013 #. type: deftypevr
41014 #: guix-git/doc/guix.texi:22991
41015 msgid "and the system reconfigured to have the changes take effect."
41016 msgstr ""
41017
41018 #. type: deftypevr
41019 #: guix-git/doc/guix.texi:22996
41020 #, no-wrap
41021 msgid "{@code{transmission-daemon-configuration} parameter} tcp-type-of-service peer-socket-tos"
41022 msgstr ""
41023
41024 #. type: deftypevr
41025 #: guix-git/doc/guix.texi:23000
41026 msgid "The type of service to request in outgoing @acronym{TCP} packets, one of @code{default}, @code{low-cost}, @code{throughput}, @code{low-delay} and @code{reliability}."
41027 msgstr ""
41028
41029 #. type: deftypevr
41030 #: guix-git/doc/guix.texi:23002
41031 msgid "Defaults to @samp{default}."
41032 msgstr ""
41033
41034 #. type: deftypevr
41035 #: guix-git/doc/guix.texi:23005
41036 #, no-wrap
41037 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer peer-limit-global"
41038 msgstr ""
41039
41040 #. type: deftypevr
41041 #: guix-git/doc/guix.texi:23007
41042 msgid "The global limit on the number of connected peers."
41043 msgstr ""
41044
41045 #. type: deftypevr
41046 #: guix-git/doc/guix.texi:23009
41047 msgid "Defaults to @samp{200}."
41048 msgstr ""
41049
41050 #. type: deftypevr
41051 #: guix-git/doc/guix.texi:23012
41052 #, no-wrap
41053 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer peer-limit-per-torrent"
41054 msgstr ""
41055
41056 #. type: deftypevr
41057 #: guix-git/doc/guix.texi:23014
41058 msgid "The per-torrent limit on the number of connected peers."
41059 msgstr ""
41060
41061 #. type: deftypevr
41062 #: guix-git/doc/guix.texi:23019
41063 #, no-wrap
41064 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer upload-slots-per-torrent"
41065 msgstr ""
41066
41067 #. type: deftypevr
41068 #: guix-git/doc/guix.texi:23022
41069 msgid "The maximum number of peers to which the daemon will upload data simultaneously for each torrent."
41070 msgstr ""
41071
41072 #. type: deftypevr
41073 #: guix-git/doc/guix.texi:23024
41074 msgid "Defaults to @samp{14}."
41075 msgstr ""
41076
41077 #. type: deftypevr
41078 #: guix-git/doc/guix.texi:23027
41079 #, no-wrap
41080 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer peer-id-ttl-hours"
41081 msgstr ""
41082
41083 #. type: deftypevr
41084 #: guix-git/doc/guix.texi:23030
41085 msgid "The maximum lifespan, in hours, of the peer ID associated with each public torrent before it is regenerated."
41086 msgstr ""
41087
41088 #. type: deftypevr
41089 #: guix-git/doc/guix.texi:23032
41090 msgid "Defaults to @samp{6}."
41091 msgstr ""
41092
41093 #. type: deftypevr
41094 #: guix-git/doc/guix.texi:23035
41095 #, no-wrap
41096 msgid "{@code{transmission-daemon-configuration} parameter} boolean blocklist-enabled?"
41097 msgstr ""
41098
41099 #. type: deftypevr
41100 #: guix-git/doc/guix.texi:23038
41101 msgid "When @code{#t}, the daemon will ignore peers mentioned in the blocklist it has most recently downloaded from @code{blocklist-url}."
41102 msgstr ""
41103
41104 #. type: deftypevr
41105 #: guix-git/doc/guix.texi:23043
41106 #, no-wrap
41107 msgid "{@code{transmission-daemon-configuration} parameter} maybe-string blocklist-url"
41108 msgstr ""
41109
41110 #. type: deftypevr
41111 #: guix-git/doc/guix.texi:23047
41112 msgid "The URL of a peer blocklist (in @acronym{P2P}-plaintext or eMule @file{.dat} format) to be periodically downloaded and applied when @code{blocklist-enabled?} is @code{#t}."
41113 msgstr ""
41114
41115 #. type: deftypevr
41116 #: guix-git/doc/guix.texi:23052
41117 #, no-wrap
41118 msgid "{@code{transmission-daemon-configuration} parameter} boolean download-queue-enabled?"
41119 msgstr ""
41120
41121 #. type: deftypevr
41122 #: guix-git/doc/guix.texi:23055
41123 msgid "If @code{#t}, the daemon will be limited to downloading at most @code{download-queue-size} non-stalled torrents simultaneously."
41124 msgstr ""
41125
41126 #. type: deftypevr
41127 #: guix-git/doc/guix.texi:23060
41128 #, no-wrap
41129 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer download-queue-size"
41130 msgstr ""
41131
41132 #. type: deftypevr
41133 #: guix-git/doc/guix.texi:23064
41134 msgid "The size of the daemon's download queue, which limits the number of non-stalled torrents it will download at any one time when @code{download-queue-enabled?} is @code{#t}."
41135 msgstr ""
41136
41137 #. type: deftypevr
41138 #: guix-git/doc/guix.texi:23069
41139 #, no-wrap
41140 msgid "{@code{transmission-daemon-configuration} parameter} boolean seed-queue-enabled?"
41141 msgstr ""
41142
41143 #. type: deftypevr
41144 #: guix-git/doc/guix.texi:23072
41145 msgid "If @code{#t}, the daemon will be limited to seeding at most @code{seed-queue-size} non-stalled torrents simultaneously."
41146 msgstr ""
41147
41148 #. type: deftypevr
41149 #: guix-git/doc/guix.texi:23077
41150 #, no-wrap
41151 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer seed-queue-size"
41152 msgstr ""
41153
41154 #. type: deftypevr
41155 #: guix-git/doc/guix.texi:23081
41156 msgid "The size of the daemon's seed queue, which limits the number of non-stalled torrents it will seed at any one time when @code{seed-queue-enabled?} is @code{#t}."
41157 msgstr ""
41158
41159 #. type: deftypevr
41160 #: guix-git/doc/guix.texi:23086
41161 #, no-wrap
41162 msgid "{@code{transmission-daemon-configuration} parameter} boolean queue-stalled-enabled?"
41163 msgstr ""
41164
41165 #. type: deftypevr
41166 #: guix-git/doc/guix.texi:23091
41167 msgid "When @code{#t}, the daemon will consider torrents for which it has not shared data in the past @code{queue-stalled-minutes} minutes to be stalled and not count them against its @code{download-queue-size} and @code{seed-queue-size} limits."
41168 msgstr ""
41169
41170 #. type: deftypevr
41171 #: guix-git/doc/guix.texi:23096
41172 #, no-wrap
41173 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer queue-stalled-minutes"
41174 msgstr ""
41175
41176 #. type: deftypevr
41177 #: guix-git/doc/guix.texi:23100
41178 msgid "The maximum period, in minutes, a torrent may be idle before it is considered to be stalled, when @code{queue-stalled-enabled?} is @code{#t}."
41179 msgstr ""
41180
41181 #. type: deftypevr
41182 #: guix-git/doc/guix.texi:23105
41183 #, no-wrap
41184 msgid "{@code{transmission-daemon-configuration} parameter} boolean ratio-limit-enabled?"
41185 msgstr ""
41186
41187 #. type: deftypevr
41188 #: guix-git/doc/guix.texi:23108
41189 msgid "When @code{#t}, a torrent being seeded will automatically be paused once it reaches the ratio specified by @code{ratio-limit}."
41190 msgstr ""
41191
41192 #. type: deftypevr
41193 #: guix-git/doc/guix.texi:23113
41194 #, no-wrap
41195 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-rational ratio-limit"
41196 msgstr ""
41197
41198 #. type: deftypevr
41199 #: guix-git/doc/guix.texi:23116
41200 msgid "The ratio at which a torrent being seeded will be paused, when @code{ratio-limit-enabled?} is @code{#t}."
41201 msgstr ""
41202
41203 #. type: deftypevr
41204 #: guix-git/doc/guix.texi:23118
41205 msgid "Defaults to @samp{2.0}."
41206 msgstr ""
41207
41208 #. type: deftypevr
41209 #: guix-git/doc/guix.texi:23121
41210 #, no-wrap
41211 msgid "{@code{transmission-daemon-configuration} parameter} boolean idle-seeding-limit-enabled?"
41212 msgstr ""
41213
41214 #. type: deftypevr
41215 #: guix-git/doc/guix.texi:23124
41216 msgid "When @code{#t}, a torrent being seeded will automatically be paused once it has been idle for @code{idle-seeding-limit} minutes."
41217 msgstr ""
41218
41219 #. type: deftypevr
41220 #: guix-git/doc/guix.texi:23129
41221 #, no-wrap
41222 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer idle-seeding-limit"
41223 msgstr ""
41224
41225 #. type: deftypevr
41226 #: guix-git/doc/guix.texi:23133
41227 msgid "The maximum period, in minutes, a torrent being seeded may be idle before it is paused, when @code{idle-seeding-limit-enabled?} is @code{#t}."
41228 msgstr ""
41229
41230 #. type: deftypevr
41231 #: guix-git/doc/guix.texi:23138
41232 #, no-wrap
41233 msgid "{@code{transmission-daemon-configuration} parameter} boolean dht-enabled?"
41234 msgstr ""
41235
41236 #. type: deftypevr
41237 #: guix-git/doc/guix.texi:23142
41238 msgid "Enable @uref{http://bittorrent.org/beps/bep_0005.html,the distributed hash table (@acronym{DHT}) protocol}, which supports the use of trackerless torrents."
41239 msgstr ""
41240
41241 #. type: deftypevr
41242 #: guix-git/doc/guix.texi:23147
41243 #, no-wrap
41244 msgid "{@code{transmission-daemon-configuration} parameter} boolean lpd-enabled?"
41245 msgstr ""
41246
41247 #. type: deftypevr
41248 #: guix-git/doc/guix.texi:23152
41249 msgid "Enable @uref{https://en.wikipedia.org/wiki/Local_Peer_Discovery,local peer discovery} (@acronym{LPD}), which allows the discovery of peers on the local network and may reduce the amount of data sent over the public Internet."
41250 msgstr ""
41251
41252 #. type: deftypevr
41253 #: guix-git/doc/guix.texi:23157
41254 #, no-wrap
41255 msgid "{@code{transmission-daemon-configuration} parameter} boolean pex-enabled?"
41256 msgstr ""
41257
41258 #. type: deftypevr
41259 #: guix-git/doc/guix.texi:23161
41260 msgid "Enable @uref{https://en.wikipedia.org/wiki/Peer_exchange,peer exchange} (@acronym{PEX}), which reduces the daemon's reliance on external trackers and may improve its performance."
41261 msgstr ""
41262
41263 #. type: deftypevr
41264 #: guix-git/doc/guix.texi:23166
41265 #, no-wrap
41266 msgid "{@code{transmission-daemon-configuration} parameter} boolean utp-enabled?"
41267 msgstr ""
41268
41269 #. type: deftypevr
41270 #: guix-git/doc/guix.texi:23171
41271 msgid "Enable @uref{http://bittorrent.org/beps/bep_0029.html,the micro transport protocol} (@acronym{uTP}), which aims to reduce the impact of BitTorrent traffic on other users of the local network while maintaining full utilization of the available bandwidth."
41272 msgstr ""
41273
41274 #. type: deftypevr
41275 #: guix-git/doc/guix.texi:23176
41276 #, no-wrap
41277 msgid "{@code{transmission-daemon-configuration} parameter} boolean rpc-enabled?"
41278 msgstr ""
41279
41280 #. type: deftypevr
41281 #: guix-git/doc/guix.texi:23181
41282 msgid "If @code{#t}, enable the remote procedure call (@acronym{RPC}) interface, which allows remote control of the daemon via its Web interface, the @command{transmission-remote} command-line client, and similar tools."
41283 msgstr ""
41284
41285 #. type: deftypevr
41286 #: guix-git/doc/guix.texi:23186
41287 #, no-wrap
41288 msgid "{@code{transmission-daemon-configuration} parameter} string rpc-bind-address"
41289 msgstr ""
41290
41291 #. type: deftypevr
41292 #: guix-git/doc/guix.texi:23189
41293 msgid "The IP address at which to listen for @acronym{RPC} connections, or ``0.0.0.0'' to listen at all available IP addresses."
41294 msgstr ""
41295
41296 #. type: deftypevr
41297 #: guix-git/doc/guix.texi:23194
41298 #, no-wrap
41299 msgid "{@code{transmission-daemon-configuration} parameter} port-number rpc-port"
41300 msgstr ""
41301
41302 #. type: deftypevr
41303 #: guix-git/doc/guix.texi:23196
41304 msgid "The port on which to listen for @acronym{RPC} connections."
41305 msgstr ""
41306
41307 #. type: deftypevr
41308 #: guix-git/doc/guix.texi:23198
41309 msgid "Defaults to @samp{9091}."
41310 msgstr ""
41311
41312 #. type: deftypevr
41313 #: guix-git/doc/guix.texi:23201
41314 #, no-wrap
41315 msgid "{@code{transmission-daemon-configuration} parameter} string rpc-url"
41316 msgstr ""
41317
41318 #. type: deftypevr
41319 #: guix-git/doc/guix.texi:23203
41320 msgid "The path prefix to use in the @acronym{RPC}-endpoint @acronym{URL}."
41321 msgstr ""
41322
41323 #. type: deftypevr
41324 #: guix-git/doc/guix.texi:23205
41325 msgid "Defaults to @samp{\"/transmission/\"}."
41326 msgstr ""
41327
41328 #. type: deftypevr
41329 #: guix-git/doc/guix.texi:23208
41330 #, no-wrap
41331 msgid "{@code{transmission-daemon-configuration} parameter} boolean rpc-authentication-required?"
41332 msgstr ""
41333
41334 #. type: deftypevr
41335 #: guix-git/doc/guix.texi:23213
41336 msgid "When @code{#t}, clients must authenticate (see @code{rpc-username} and @code{rpc-password}) when using the @acronym{RPC} interface. Note this has the side effect of disabling host-name whitelisting (see @code{rpc-host-whitelist-enabled?}."
41337 msgstr ""
41338
41339 #. type: deftypevr
41340 #: guix-git/doc/guix.texi:23218
41341 #, no-wrap
41342 msgid "{@code{transmission-daemon-configuration} parameter} maybe-string rpc-username"
41343 msgstr ""
41344
41345 #. type: deftypevr
41346 #: guix-git/doc/guix.texi:23221
41347 msgid "The username required by clients to access the @acronym{RPC} interface when @code{rpc-authentication-required?} is @code{#t}."
41348 msgstr ""
41349
41350 #. type: deftypevr
41351 #: guix-git/doc/guix.texi:23226
41352 #, no-wrap
41353 msgid "{@code{transmission-daemon-configuration} parameter} maybe-transmission-password-hash rpc-password"
41354 msgstr ""
41355
41356 #. type: deftypevr
41357 #: guix-git/doc/guix.texi:23232
41358 msgid "The password required by clients to access the @acronym{RPC} interface when @code{rpc-authentication-required?} is @code{#t}. This must be specified using a password hash in the format recognized by Transmission clients, either copied from an existing @file{settings.json} file or generated using the @code{transmission-password-hash} procedure."
41359 msgstr ""
41360
41361 #. type: deftypevr
41362 #: guix-git/doc/guix.texi:23237
41363 #, no-wrap
41364 msgid "{@code{transmission-daemon-configuration} parameter} boolean rpc-whitelist-enabled?"
41365 msgstr ""
41366
41367 #. type: deftypevr
41368 #: guix-git/doc/guix.texi:23240
41369 msgid "When @code{#t}, @acronym{RPC} requests will be accepted only when they originate from an address specified in @code{rpc-whitelist}."
41370 msgstr ""
41371
41372 #. type: deftypevr
41373 #: guix-git/doc/guix.texi:23245
41374 #, no-wrap
41375 msgid "{@code{transmission-daemon-configuration} parameter} string-list rpc-whitelist"
41376 msgstr ""
41377
41378 #. type: deftypevr
41379 #: guix-git/doc/guix.texi:23249
41380 msgid "The list of IP and IPv6 addresses from which @acronym{RPC} requests will be accepted when @code{rpc-whitelist-enabled?} is @code{#t}. Wildcards may be specified using @samp{*}."
41381 msgstr ""
41382
41383 #. type: deftypevr
41384 #: guix-git/doc/guix.texi:23251
41385 msgid "Defaults to @samp{(\"127.0.0.1\" \"::1\")}."
41386 msgstr ""
41387
41388 #. type: deftypevr
41389 #: guix-git/doc/guix.texi:23254
41390 #, no-wrap
41391 msgid "{@code{transmission-daemon-configuration} parameter} boolean rpc-host-whitelist-enabled?"
41392 msgstr ""
41393
41394 #. type: deftypevr
41395 #: guix-git/doc/guix.texi:23259
41396 msgid "When @code{#t}, @acronym{RPC} requests will be accepted only when they are addressed to a host named in @code{rpc-host-whitelist}. Note that requests to ``localhost'' or ``localhost.'', or to a numeric address, are always accepted regardless of these settings."
41397 msgstr ""
41398
41399 #. type: deftypevr
41400 #: guix-git/doc/guix.texi:23262
41401 msgid "Note also this functionality is disabled when @code{rpc-authentication-required?} is @code{#t}."
41402 msgstr ""
41403
41404 #. type: deftypevr
41405 #: guix-git/doc/guix.texi:23267
41406 #, no-wrap
41407 msgid "{@code{transmission-daemon-configuration} parameter} string-list rpc-host-whitelist"
41408 msgstr ""
41409
41410 #. type: deftypevr
41411 #: guix-git/doc/guix.texi:23270
41412 msgid "The list of host names recognized by the @acronym{RPC} server when @code{rpc-host-whitelist-enabled?} is @code{#t}."
41413 msgstr ""
41414
41415 #. type: deftypevr
41416 #: guix-git/doc/guix.texi:23275
41417 #, no-wrap
41418 msgid "{@code{transmission-daemon-configuration} parameter} message-level message-level"
41419 msgstr ""
41420
41421 #. type: deftypevr
41422 #: guix-git/doc/guix.texi:23279
41423 msgid "The minimum severity level of messages to be logged (to @file{/var/log/transmission.log}) by the daemon, one of @code{none} (no logging), @code{error}, @code{info} and @code{debug}."
41424 msgstr ""
41425
41426 #. type: deftypevr
41427 #: guix-git/doc/guix.texi:23284
41428 #, no-wrap
41429 msgid "{@code{transmission-daemon-configuration} parameter} boolean start-added-torrents?"
41430 msgstr ""
41431
41432 #. type: deftypevr
41433 #: guix-git/doc/guix.texi:23287
41434 msgid "When @code{#t}, torrents are started as soon as they are added; otherwise, they are added in ``paused'' state."
41435 msgstr ""
41436
41437 #. type: deftypevr
41438 #: guix-git/doc/guix.texi:23292
41439 #, no-wrap
41440 msgid "{@code{transmission-daemon-configuration} parameter} boolean script-torrent-done-enabled?"
41441 msgstr ""
41442
41443 #. type: deftypevr
41444 #: guix-git/doc/guix.texi:23296
41445 msgid "When @code{#t}, the script specified by @code{script-torrent-done-filename} will be invoked each time a torrent completes."
41446 msgstr ""
41447
41448 #. type: deftypevr
41449 #: guix-git/doc/guix.texi:23301
41450 #, no-wrap
41451 msgid "{@code{transmission-daemon-configuration} parameter} maybe-file-object script-torrent-done-filename"
41452 msgstr ""
41453
41454 #. type: deftypevr
41455 #: guix-git/doc/guix.texi:23305
41456 msgid "A file name or file-like object specifying a script to run each time a torrent completes, when @code{script-torrent-done-enabled?} is @code{#t}."
41457 msgstr ""
41458
41459 #. type: deftypevr
41460 #: guix-git/doc/guix.texi:23310
41461 #, no-wrap
41462 msgid "{@code{transmission-daemon-configuration} parameter} boolean scrape-paused-torrents-enabled?"
41463 msgstr ""
41464
41465 #. type: deftypevr
41466 #: guix-git/doc/guix.texi:23313
41467 msgid "When @code{#t}, the daemon will scrape trackers for a torrent even when the torrent is paused."
41468 msgstr ""
41469
41470 #. type: deftypevr
41471 #: guix-git/doc/guix.texi:23318
41472 #, no-wrap
41473 msgid "{@code{transmission-daemon-configuration} parameter} non-negative-integer cache-size-mb"
41474 msgstr ""
41475
41476 #. type: deftypevr
41477 #: guix-git/doc/guix.texi:23322
41478 msgid "The amount of memory, in megabytes, to allocate for the daemon's in-memory cache. A larger value may increase performance by reducing the frequency of disk I/O."
41479 msgstr ""
41480
41481 #. type: deftypevr
41482 #: guix-git/doc/guix.texi:23324
41483 msgid "Defaults to @samp{4}."
41484 msgstr ""
41485
41486 #. type: deftypevr
41487 #: guix-git/doc/guix.texi:23327
41488 #, no-wrap
41489 msgid "{@code{transmission-daemon-configuration} parameter} boolean prefetch-enabled?"
41490 msgstr ""
41491
41492 #. type: deftypevr
41493 #: guix-git/doc/guix.texi:23331
41494 msgid "When @code{#t}, the daemon will try to improve I/O performance by hinting to the operating system which data is likely to be read next from disk to satisfy requests from peers."
41495 msgstr ""
41496
41497 #. type: subsubheading
41498 #: guix-git/doc/guix.texi:23344
41499 #, no-wrap
41500 msgid "Tailon Service"
41501 msgstr ""
41502
41503 #. type: Plain text
41504 #: guix-git/doc/guix.texi:23348
41505 msgid "@uref{https://tailon.readthedocs.io/, Tailon} is a web application for viewing and searching log files."
41506 msgstr ""
41507
41508 #. type: Plain text
41509 #: guix-git/doc/guix.texi:23351
41510 msgid "The following example will configure the service with default values. By default, Tailon can be accessed on port 8080 (@code{http://localhost:8080})."
41511 msgstr ""
41512
41513 #. type: lisp
41514 #: guix-git/doc/guix.texi:23354
41515 #, no-wrap
41516 msgid "(service tailon-service-type)\n"
41517 msgstr ""
41518
41519 #. type: Plain text
41520 #: guix-git/doc/guix.texi:23358
41521 msgid "The following example customises more of the Tailon configuration, adding @command{sed} to the list of allowed commands."
41522 msgstr ""
41523
41524 #. type: lisp
41525 #: guix-git/doc/guix.texi:23365
41526 #, no-wrap
41527 msgid ""
41528 "(service tailon-service-type\n"
41529 " (tailon-configuration\n"
41530 " (config-file\n"
41531 " (tailon-configuration-file\n"
41532 " (allowed-commands '(\"tail\" \"grep\" \"awk\" \"sed\"))))))\n"
41533 msgstr ""
41534
41535 #. type: deftp
41536 #: guix-git/doc/guix.texi:23368
41537 #, no-wrap
41538 msgid "{Data Type} tailon-configuration"
41539 msgstr ""
41540
41541 #. type: deftp
41542 #: guix-git/doc/guix.texi:23371
41543 msgid "Data type representing the configuration of Tailon. This type has the following parameters:"
41544 msgstr ""
41545
41546 #. type: item
41547 #: guix-git/doc/guix.texi:23373
41548 #, no-wrap
41549 msgid "@code{config-file} (default: @code{(tailon-configuration-file)})"
41550 msgstr ""
41551
41552 #. type: table
41553 #: guix-git/doc/guix.texi:23377
41554 msgid "The configuration file to use for Tailon. This can be set to a @dfn{tailon-configuration-file} record value, or any gexp (@pxref{G-Expressions})."
41555 msgstr ""
41556
41557 #. type: table
41558 #: guix-git/doc/guix.texi:23380
41559 msgid "For example, to instead use a local file, the @code{local-file} function can be used:"
41560 msgstr ""
41561
41562 #. type: lisp
41563 #: guix-git/doc/guix.texi:23385
41564 #, no-wrap
41565 msgid ""
41566 "(service tailon-service-type\n"
41567 " (tailon-configuration\n"
41568 " (config-file (local-file \"./my-tailon.conf\"))))\n"
41569 msgstr ""
41570
41571 #. type: item
41572 #: guix-git/doc/guix.texi:23387
41573 #, no-wrap
41574 msgid "@code{package} (default: @code{tailon})"
41575 msgstr ""
41576
41577 #. type: table
41578 #: guix-git/doc/guix.texi:23389
41579 msgid "The tailon package to use."
41580 msgstr ""
41581
41582 #. type: deftp
41583 #: guix-git/doc/guix.texi:23393
41584 #, no-wrap
41585 msgid "{Data Type} tailon-configuration-file"
41586 msgstr ""
41587
41588 #. type: deftp
41589 #: guix-git/doc/guix.texi:23396
41590 msgid "Data type representing the configuration options for Tailon. This type has the following parameters:"
41591 msgstr ""
41592
41593 #. type: item
41594 #: guix-git/doc/guix.texi:23398
41595 #, no-wrap
41596 msgid "@code{files} (default: @code{(list \"/var/log\")})"
41597 msgstr ""
41598
41599 #. type: table
41600 #: guix-git/doc/guix.texi:23403
41601 msgid "List of files to display. The list can include strings for a single file or directory, or a list, where the first item is the name of a subsection, and the remaining items are the files or directories in that subsection."
41602 msgstr ""
41603
41604 #. type: item
41605 #: guix-git/doc/guix.texi:23404
41606 #, no-wrap
41607 msgid "@code{bind} (default: @code{\"localhost:8080\"})"
41608 msgstr ""
41609
41610 #. type: table
41611 #: guix-git/doc/guix.texi:23406
41612 msgid "Address and port to which Tailon should bind on."
41613 msgstr ""
41614
41615 #. type: item
41616 #: guix-git/doc/guix.texi:23407
41617 #, no-wrap
41618 msgid "@code{relative-root} (default: @code{#f})"
41619 msgstr ""
41620
41621 #. type: table
41622 #: guix-git/doc/guix.texi:23409
41623 msgid "URL path to use for Tailon, set to @code{#f} to not use a path."
41624 msgstr ""
41625
41626 #. type: item
41627 #: guix-git/doc/guix.texi:23410
41628 #, no-wrap
41629 msgid "@code{allow-transfers?} (default: @code{#t})"
41630 msgstr ""
41631
41632 #. type: table
41633 #: guix-git/doc/guix.texi:23412
41634 msgid "Allow downloading the log files in the web interface."
41635 msgstr ""
41636
41637 #. type: item
41638 #: guix-git/doc/guix.texi:23413
41639 #, no-wrap
41640 msgid "@code{follow-names?} (default: @code{#t})"
41641 msgstr ""
41642
41643 #. type: table
41644 #: guix-git/doc/guix.texi:23415
41645 msgid "Allow tailing of not-yet existent files."
41646 msgstr ""
41647
41648 #. type: item
41649 #: guix-git/doc/guix.texi:23416
41650 #, no-wrap
41651 msgid "@code{tail-lines} (default: @code{200})"
41652 msgstr ""
41653
41654 #. type: table
41655 #: guix-git/doc/guix.texi:23418
41656 msgid "Number of lines to read initially from each file."
41657 msgstr ""
41658
41659 #. type: item
41660 #: guix-git/doc/guix.texi:23419
41661 #, no-wrap
41662 msgid "@code{allowed-commands} (default: @code{(list \"tail\" \"grep\" \"awk\")})"
41663 msgstr ""
41664
41665 #. type: table
41666 #: guix-git/doc/guix.texi:23421
41667 msgid "Commands to allow running. By default, @code{sed} is disabled."
41668 msgstr ""
41669
41670 #. type: table
41671 #: guix-git/doc/guix.texi:23424
41672 msgid "Set @code{debug?} to @code{#t} to show debug messages."
41673 msgstr ""
41674
41675 #. type: item
41676 #: guix-git/doc/guix.texi:23425
41677 #, no-wrap
41678 msgid "@code{wrap-lines} (default: @code{#t})"
41679 msgstr ""
41680
41681 #. type: table
41682 #: guix-git/doc/guix.texi:23429
41683 msgid "Initial line wrapping state in the web interface. Set to @code{#t} to initially wrap lines (the default), or to @code{#f} to initially not wrap lines."
41684 msgstr ""
41685
41686 #. type: item
41687 #: guix-git/doc/guix.texi:23430
41688 #, no-wrap
41689 msgid "@code{http-auth} (default: @code{#f})"
41690 msgstr ""
41691
41692 #. type: table
41693 #: guix-git/doc/guix.texi:23434
41694 msgid "HTTP authentication type to use. Set to @code{#f} to disable authentication (the default). Supported values are @code{\"digest\"} or @code{\"basic\"}."
41695 msgstr ""
41696
41697 #. type: item
41698 #: guix-git/doc/guix.texi:23435
41699 #, no-wrap
41700 msgid "@code{users} (default: @code{#f})"
41701 msgstr ""
41702
41703 #. type: table
41704 #: guix-git/doc/guix.texi:23440
41705 msgid "If HTTP authentication is enabled (see @code{http-auth}), access will be restricted to the credentials provided here. To configure users, use a list of pairs, where the first element of the pair is the username, and the 2nd element of the pair is the password."
41706 msgstr ""
41707
41708 #. type: lisp
41709 #: guix-git/doc/guix.texi:23446
41710 #, no-wrap
41711 msgid ""
41712 "(tailon-configuration-file\n"
41713 " (http-auth \"basic\")\n"
41714 " (users '((\"user1\" . \"password1\")\n"
41715 " (\"user2\" . \"password2\"))))\n"
41716 msgstr ""
41717
41718 #. type: subsubheading
41719 #: guix-git/doc/guix.texi:23452
41720 #, no-wrap
41721 msgid "Darkstat Service"
41722 msgstr ""
41723
41724 #. type: cindex
41725 #: guix-git/doc/guix.texi:23453
41726 #, no-wrap
41727 msgid "darkstat"
41728 msgstr ""
41729
41730 #. type: Plain text
41731 #: guix-git/doc/guix.texi:23456
41732 msgid "Darkstat is a packet sniffer that captures network traffic, calculates statistics about usage, and serves reports over HTTP."
41733 msgstr ""
41734
41735 #. type: defvar
41736 #: guix-git/doc/guix.texi:23457
41737 #, no-wrap
41738 msgid "{Scheme Variable} darkstat-service-type"
41739 msgstr ""
41740
41741 #. type: defvar
41742 #: guix-git/doc/guix.texi:23462
41743 msgid "This is the service type for the @uref{https://unix4lyfe.org/darkstat/, darkstat} service, its value must be a @code{darkstat-configuration} record as in this example:"
41744 msgstr ""
41745
41746 #. type: lisp
41747 #: guix-git/doc/guix.texi:23467
41748 #, no-wrap
41749 msgid ""
41750 "(service darkstat-service-type\n"
41751 " (darkstat-configuration\n"
41752 " (interface \"eno1\")))\n"
41753 msgstr ""
41754
41755 #. type: deftp
41756 #: guix-git/doc/guix.texi:23470
41757 #, no-wrap
41758 msgid "{Data Type} darkstat-configuration"
41759 msgstr ""
41760
41761 #. type: deftp
41762 #: guix-git/doc/guix.texi:23472
41763 msgid "Data type representing the configuration of @command{darkstat}."
41764 msgstr ""
41765
41766 #. type: item
41767 #: guix-git/doc/guix.texi:23474
41768 #, no-wrap
41769 msgid "@code{package} (default: @code{darkstat})"
41770 msgstr ""
41771
41772 #. type: table
41773 #: guix-git/doc/guix.texi:23476
41774 msgid "The darkstat package to use."
41775 msgstr ""
41776
41777 #. type: code{#1}
41778 #: guix-git/doc/guix.texi:23477
41779 #, no-wrap
41780 msgid "interface"
41781 msgstr ""
41782
41783 #. type: table
41784 #: guix-git/doc/guix.texi:23479
41785 msgid "Capture traffic on the specified network interface."
41786 msgstr ""
41787
41788 #. type: item
41789 #: guix-git/doc/guix.texi:23480
41790 #, no-wrap
41791 msgid "@code{port} (default: @code{\"667\"})"
41792 msgstr ""
41793
41794 #. type: table
41795 #: guix-git/doc/guix.texi:23482
41796 msgid "Bind the web interface to the specified port."
41797 msgstr ""
41798
41799 #. type: table
41800 #: guix-git/doc/guix.texi:23485 guix-git/doc/guix.texi:23520
41801 msgid "Bind the web interface to the specified address."
41802 msgstr ""
41803
41804 #. type: item
41805 #: guix-git/doc/guix.texi:23486
41806 #, no-wrap
41807 msgid "@code{base} (default: @code{\"/\"})"
41808 msgstr ""
41809
41810 #. type: table
41811 #: guix-git/doc/guix.texi:23489
41812 msgid "Specify the path of the base URL@. This can be useful if @command{darkstat} is accessed via a reverse proxy."
41813 msgstr ""
41814
41815 #. type: subsubheading
41816 #: guix-git/doc/guix.texi:23493
41817 #, no-wrap
41818 msgid "Prometheus Node Exporter Service"
41819 msgstr ""
41820
41821 #. type: cindex
41822 #: guix-git/doc/guix.texi:23495
41823 #, no-wrap
41824 msgid "prometheus-node-exporter"
41825 msgstr ""
41826
41827 #. type: Plain text
41828 #: guix-git/doc/guix.texi:23500
41829 msgid "The Prometheus ``node exporter'' makes hardware and operating system statistics provided by the Linux kernel available for the Prometheus monitoring system. This service should be deployed on all physical nodes and virtual machines, where monitoring these statistics is desirable."
41830 msgstr ""
41831
41832 #. type: defvar
41833 #: guix-git/doc/guix.texi:23501
41834 #, no-wrap
41835 msgid "{Scheme variable} prometheus-node-exporter-service-type"
41836 msgstr ""
41837
41838 #. type: defvar
41839 #: guix-git/doc/guix.texi:23505
41840 msgid "This is the service type for the @uref{https://github.com/prometheus/node_exporter/, prometheus-node-exporter} service, its value must be a @code{prometheus-node-exporter-configuration}."
41841 msgstr ""
41842
41843 #. type: lisp
41844 #: guix-git/doc/guix.texi:23508
41845 #, no-wrap
41846 msgid "(service prometheus-node-exporter-service-type)\n"
41847 msgstr ""
41848
41849 #. type: deftp
41850 #: guix-git/doc/guix.texi:23511
41851 #, no-wrap
41852 msgid "{Data Type} prometheus-node-exporter-configuration"
41853 msgstr ""
41854
41855 #. type: deftp
41856 #: guix-git/doc/guix.texi:23513
41857 msgid "Data type representing the configuration of @command{node_exporter}."
41858 msgstr ""
41859
41860 #. type: item
41861 #: guix-git/doc/guix.texi:23515
41862 #, no-wrap
41863 msgid "@code{package} (default: @code{go-github-com-prometheus-node-exporter})"
41864 msgstr ""
41865
41866 #. type: table
41867 #: guix-git/doc/guix.texi:23517
41868 msgid "The prometheus-node-exporter package to use."
41869 msgstr ""
41870
41871 #. type: item
41872 #: guix-git/doc/guix.texi:23518
41873 #, no-wrap
41874 msgid "@code{web-listen-address} (default: @code{\":9100\"})"
41875 msgstr ""
41876
41877 #. type: item
41878 #: guix-git/doc/guix.texi:23521
41879 #, no-wrap
41880 msgid "@code{textfile-directory} (default: @code{\"/var/lib/prometheus/node-exporter\"})"
41881 msgstr ""
41882
41883 #. type: table
41884 #: guix-git/doc/guix.texi:23525
41885 msgid "This directory can be used to export metrics specific to this machine. Files containing metrics in the text format, with the filename ending in @code{.prom} should be placed in this directory."
41886 msgstr ""
41887
41888 #. type: table
41889 #: guix-git/doc/guix.texi:23528
41890 msgid "Extra options to pass to the Prometheus node exporter."
41891 msgstr ""
41892
41893 #. type: subsubheading
41894 #: guix-git/doc/guix.texi:23532
41895 #, no-wrap
41896 msgid "Zabbix server"
41897 msgstr ""
41898
41899 #. type: cindex
41900 #: guix-git/doc/guix.texi:23533
41901 #, no-wrap
41902 msgid "zabbix zabbix-server"
41903 msgstr ""
41904
41905 #. type: Plain text
41906 #: guix-git/doc/guix.texi:23536
41907 msgid "Zabbix provides monitoring metrics, among others network utilization, CPU load and disk space consumption:"
41908 msgstr ""
41909
41910 #. type: item
41911 #: guix-git/doc/guix.texi:23538
41912 #, no-wrap
41913 msgid "High performance, high capacity (able to monitor hundreds of thousands of devices)."
41914 msgstr ""
41915
41916 #. type: item
41917 #: guix-git/doc/guix.texi:23539
41918 #, no-wrap
41919 msgid "Auto-discovery of servers and network devices and interfaces."
41920 msgstr ""
41921
41922 #. type: item
41923 #: guix-git/doc/guix.texi:23540
41924 #, no-wrap
41925 msgid "Low-level discovery, allows to automatically start monitoring new items, file systems or network interfaces among others."
41926 msgstr ""
41927
41928 #. type: item
41929 #: guix-git/doc/guix.texi:23541
41930 #, no-wrap
41931 msgid "Distributed monitoring with centralized web administration."
41932 msgstr ""
41933
41934 #. type: item
41935 #: guix-git/doc/guix.texi:23542
41936 #, no-wrap
41937 msgid "Native high performance agents."
41938 msgstr ""
41939
41940 #. type: item
41941 #: guix-git/doc/guix.texi:23543
41942 #, no-wrap
41943 msgid "SLA, and ITIL KPI metrics on reporting."
41944 msgstr ""
41945
41946 #. type: item
41947 #: guix-git/doc/guix.texi:23544
41948 #, no-wrap
41949 msgid "High-level (business) view of monitored resources through user-defined visual console screens and dashboards."
41950 msgstr ""
41951
41952 #. type: item
41953 #: guix-git/doc/guix.texi:23545
41954 #, no-wrap
41955 msgid "Remote command execution through Zabbix proxies."
41956 msgstr ""
41957
41958 #. type: Plain text
41959 #: guix-git/doc/guix.texi:23551
41960 msgid "Available @code{zabbix-server-configuration} fields are:"
41961 msgstr ""
41962
41963 #. type: deftypevr
41964 #: guix-git/doc/guix.texi:23552
41965 #, no-wrap
41966 msgid "{@code{zabbix-server-configuration} parameter} package zabbix-server"
41967 msgstr ""
41968
41969 #. type: deftypevr
41970 #: guix-git/doc/guix.texi:23554
41971 msgid "The zabbix-server package."
41972 msgstr ""
41973
41974 #. type: deftypevr
41975 #: guix-git/doc/guix.texi:23557
41976 #, no-wrap
41977 msgid "{@code{zabbix-server-configuration} parameter} string user"
41978 msgstr ""
41979
41980 #. type: deftypevr
41981 #: guix-git/doc/guix.texi:23559
41982 msgid "User who will run the Zabbix server."
41983 msgstr ""
41984
41985 #. type: deftypevr
41986 #: guix-git/doc/guix.texi:23561 guix-git/doc/guix.texi:23568
41987 #: guix-git/doc/guix.texi:23582 guix-git/doc/guix.texi:23589
41988 #: guix-git/doc/guix.texi:23690 guix-git/doc/guix.texi:23697
41989 #: guix-git/doc/guix.texi:23808 guix-git/doc/guix.texi:23815
41990 msgid "Defaults to @samp{\"zabbix\"}."
41991 msgstr ""
41992
41993 #. type: deftypevr
41994 #: guix-git/doc/guix.texi:23564
41995 #, no-wrap
41996 msgid "{@code{zabbix-server-configuration} parameter} group group"
41997 msgstr ""
41998
41999 #. type: deftypevr
42000 #: guix-git/doc/guix.texi:23566
42001 msgid "Group who will run the Zabbix server."
42002 msgstr ""
42003
42004 #. type: deftypevr
42005 #: guix-git/doc/guix.texi:23571
42006 #, no-wrap
42007 msgid "{@code{zabbix-server-configuration} parameter} string db-host"
42008 msgstr ""
42009
42010 #. type: deftypevr
42011 #: guix-git/doc/guix.texi:23573 guix-git/doc/guix.texi:23792
42012 msgid "Database host name."
42013 msgstr ""
42014
42015 #. type: deftypevr
42016 #: guix-git/doc/guix.texi:23575
42017 msgid "Defaults to @samp{\"127.0.0.1\"}."
42018 msgstr ""
42019
42020 #. type: deftypevr
42021 #: guix-git/doc/guix.texi:23578
42022 #, no-wrap
42023 msgid "{@code{zabbix-server-configuration} parameter} string db-name"
42024 msgstr ""
42025
42026 #. type: deftypevr
42027 #: guix-git/doc/guix.texi:23580 guix-git/doc/guix.texi:23806
42028 msgid "Database name."
42029 msgstr ""
42030
42031 #. type: deftypevr
42032 #: guix-git/doc/guix.texi:23585
42033 #, no-wrap
42034 msgid "{@code{zabbix-server-configuration} parameter} string db-user"
42035 msgstr ""
42036
42037 #. type: deftypevr
42038 #: guix-git/doc/guix.texi:23587 guix-git/doc/guix.texi:23813
42039 msgid "Database user."
42040 msgstr ""
42041
42042 #. type: deftypevr
42043 #: guix-git/doc/guix.texi:23592
42044 #, no-wrap
42045 msgid "{@code{zabbix-server-configuration} parameter} string db-password"
42046 msgstr ""
42047
42048 #. type: deftypevr
42049 #: guix-git/doc/guix.texi:23595
42050 msgid "Database password. Please, use @code{include-files} with @code{DBPassword=SECRET} inside a specified file instead."
42051 msgstr ""
42052
42053 #. type: deftypevr
42054 #: guix-git/doc/guix.texi:23600
42055 #, no-wrap
42056 msgid "{@code{zabbix-server-configuration} parameter} number db-port"
42057 msgstr ""
42058
42059 #. type: deftypevr
42060 #: guix-git/doc/guix.texi:23602 guix-git/doc/guix.texi:23799
42061 msgid "Database port."
42062 msgstr ""
42063
42064 #. type: deftypevr
42065 #: guix-git/doc/guix.texi:23604 guix-git/doc/guix.texi:23801
42066 msgid "Defaults to @samp{5432}."
42067 msgstr ""
42068
42069 #. type: deftypevr
42070 #: guix-git/doc/guix.texi:23607
42071 #, no-wrap
42072 msgid "{@code{zabbix-server-configuration} parameter} string log-type"
42073 msgstr ""
42074
42075 #. type: deftypevr
42076 #: guix-git/doc/guix.texi:23609 guix-git/doc/guix.texi:23710
42077 msgid "Specifies where log messages are written to:"
42078 msgstr ""
42079
42080 #. type: itemize
42081 #: guix-git/doc/guix.texi:23613 guix-git/doc/guix.texi:23714
42082 msgid "@code{system} - syslog."
42083 msgstr ""
42084
42085 #. type: itemize
42086 #: guix-git/doc/guix.texi:23616 guix-git/doc/guix.texi:23717
42087 msgid "@code{file} - file specified with @code{log-file} parameter."
42088 msgstr ""
42089
42090 #. type: itemize
42091 #: guix-git/doc/guix.texi:23619 guix-git/doc/guix.texi:23720
42092 msgid "@code{console} - standard output."
42093 msgstr ""
42094
42095 #. type: deftypevr
42096 #: guix-git/doc/guix.texi:23626
42097 #, no-wrap
42098 msgid "{@code{zabbix-server-configuration} parameter} string log-file"
42099 msgstr ""
42100
42101 #. type: deftypevr
42102 #: guix-git/doc/guix.texi:23628 guix-git/doc/guix.texi:23729
42103 msgid "Log file name for @code{log-type} @code{file} parameter."
42104 msgstr ""
42105
42106 #. type: deftypevr
42107 #: guix-git/doc/guix.texi:23630
42108 msgid "Defaults to @samp{\"/var/log/zabbix/server.log\"}."
42109 msgstr ""
42110
42111 #. type: deftypevr
42112 #: guix-git/doc/guix.texi:23633
42113 #, no-wrap
42114 msgid "{@code{zabbix-server-configuration} parameter} string pid-file"
42115 msgstr ""
42116
42117 #. type: deftypevr
42118 #: guix-git/doc/guix.texi:23635 guix-git/doc/guix.texi:23736
42119 msgid "Name of PID file."
42120 msgstr ""
42121
42122 #. type: deftypevr
42123 #: guix-git/doc/guix.texi:23637
42124 msgid "Defaults to @samp{\"/var/run/zabbix/zabbix_server.pid\"}."
42125 msgstr ""
42126
42127 #. type: deftypevr
42128 #: guix-git/doc/guix.texi:23640
42129 #, no-wrap
42130 msgid "{@code{zabbix-server-configuration} parameter} string ssl-ca-location"
42131 msgstr ""
42132
42133 #. type: deftypevr
42134 #: guix-git/doc/guix.texi:23643
42135 msgid "The location of certificate authority (CA) files for SSL server certificate verification."
42136 msgstr ""
42137
42138 #. type: deftypevr
42139 #: guix-git/doc/guix.texi:23645
42140 msgid "Defaults to @samp{\"/etc/ssl/certs/ca-certificates.crt\"}."
42141 msgstr ""
42142
42143 #. type: deftypevr
42144 #: guix-git/doc/guix.texi:23648
42145 #, no-wrap
42146 msgid "{@code{zabbix-server-configuration} parameter} string ssl-cert-location"
42147 msgstr ""
42148
42149 #. type: deftypevr
42150 #: guix-git/doc/guix.texi:23650
42151 msgid "Location of SSL client certificates."
42152 msgstr ""
42153
42154 #. type: deftypevr
42155 #: guix-git/doc/guix.texi:23652
42156 msgid "Defaults to @samp{\"/etc/ssl/certs\"}."
42157 msgstr ""
42158
42159 #. type: deftypevr
42160 #: guix-git/doc/guix.texi:23655
42161 #, no-wrap
42162 msgid "{@code{zabbix-server-configuration} parameter} string extra-options"
42163 msgstr ""
42164
42165 #. type: deftypevr
42166 #: guix-git/doc/guix.texi:23657 guix-git/doc/guix.texi:23761
42167 msgid "Extra options will be appended to Zabbix server configuration file."
42168 msgstr ""
42169
42170 #. type: deftypevr
42171 #: guix-git/doc/guix.texi:23662
42172 #, no-wrap
42173 msgid "{@code{zabbix-server-configuration} parameter} include-files include-files"
42174 msgstr ""
42175
42176 #. type: deftypevr
42177 #: guix-git/doc/guix.texi:23665 guix-git/doc/guix.texi:23769
42178 msgid "You may include individual files or all files in a directory in the configuration file."
42179 msgstr ""
42180
42181 #. type: subsubheading
42182 #: guix-git/doc/guix.texi:23672
42183 #, no-wrap
42184 msgid "Zabbix agent"
42185 msgstr ""
42186
42187 #. type: cindex
42188 #: guix-git/doc/guix.texi:23673
42189 #, no-wrap
42190 msgid "zabbix zabbix-agent"
42191 msgstr ""
42192
42193 #. type: Plain text
42194 #: guix-git/doc/guix.texi:23676
42195 msgid "Zabbix agent gathers information for Zabbix server."
42196 msgstr ""
42197
42198 #. type: Plain text
42199 #: guix-git/doc/guix.texi:23680
42200 msgid "Available @code{zabbix-agent-configuration} fields are:"
42201 msgstr ""
42202
42203 #. type: deftypevr
42204 #: guix-git/doc/guix.texi:23681
42205 #, no-wrap
42206 msgid "{@code{zabbix-agent-configuration} parameter} package zabbix-agent"
42207 msgstr ""
42208
42209 #. type: deftypevr
42210 #: guix-git/doc/guix.texi:23683
42211 msgid "The zabbix-agent package."
42212 msgstr ""
42213
42214 #. type: deftypevr
42215 #: guix-git/doc/guix.texi:23686
42216 #, no-wrap
42217 msgid "{@code{zabbix-agent-configuration} parameter} string user"
42218 msgstr ""
42219
42220 #. type: deftypevr
42221 #: guix-git/doc/guix.texi:23688
42222 msgid "User who will run the Zabbix agent."
42223 msgstr ""
42224
42225 #. type: deftypevr
42226 #: guix-git/doc/guix.texi:23693
42227 #, no-wrap
42228 msgid "{@code{zabbix-agent-configuration} parameter} group group"
42229 msgstr ""
42230
42231 #. type: deftypevr
42232 #: guix-git/doc/guix.texi:23695
42233 msgid "Group who will run the Zabbix agent."
42234 msgstr ""
42235
42236 #. type: deftypevr
42237 #: guix-git/doc/guix.texi:23700
42238 #, no-wrap
42239 msgid "{@code{zabbix-agent-configuration} parameter} string hostname"
42240 msgstr ""
42241
42242 #. type: deftypevr
42243 #: guix-git/doc/guix.texi:23703
42244 msgid "Unique, case sensitive hostname which is required for active checks and must match hostname as configured on the server."
42245 msgstr ""
42246
42247 #. type: deftypevr
42248 #: guix-git/doc/guix.texi:23708
42249 #, no-wrap
42250 msgid "{@code{zabbix-agent-configuration} parameter} string log-type"
42251 msgstr ""
42252
42253 #. type: deftypevr
42254 #: guix-git/doc/guix.texi:23727
42255 #, no-wrap
42256 msgid "{@code{zabbix-agent-configuration} parameter} string log-file"
42257 msgstr ""
42258
42259 #. type: deftypevr
42260 #: guix-git/doc/guix.texi:23731
42261 msgid "Defaults to @samp{\"/var/log/zabbix/agent.log\"}."
42262 msgstr ""
42263
42264 #. type: deftypevr
42265 #: guix-git/doc/guix.texi:23734
42266 #, no-wrap
42267 msgid "{@code{zabbix-agent-configuration} parameter} string pid-file"
42268 msgstr ""
42269
42270 #. type: deftypevr
42271 #: guix-git/doc/guix.texi:23738
42272 msgid "Defaults to @samp{\"/var/run/zabbix/zabbix_agent.pid\"}."
42273 msgstr ""
42274
42275 #. type: deftypevr
42276 #: guix-git/doc/guix.texi:23741
42277 #, no-wrap
42278 msgid "{@code{zabbix-agent-configuration} parameter} list server"
42279 msgstr ""
42280
42281 #. type: deftypevr
42282 #: guix-git/doc/guix.texi:23745
42283 msgid "List of IP addresses, optionally in CIDR notation, or hostnames of Zabbix servers and Zabbix proxies. Incoming connections will be accepted only from the hosts listed here."
42284 msgstr ""
42285
42286 #. type: deftypevr
42287 #: guix-git/doc/guix.texi:23747 guix-git/doc/guix.texi:23756
42288 msgid "Defaults to @samp{(\"127.0.0.1\")}."
42289 msgstr ""
42290
42291 #. type: deftypevr
42292 #: guix-git/doc/guix.texi:23750
42293 #, no-wrap
42294 msgid "{@code{zabbix-agent-configuration} parameter} list server-active"
42295 msgstr ""
42296
42297 #. type: deftypevr
42298 #: guix-git/doc/guix.texi:23754
42299 msgid "List of IP:port (or hostname:port) pairs of Zabbix servers and Zabbix proxies for active checks. If port is not specified, default port is used. If this parameter is not specified, active checks are disabled."
42300 msgstr ""
42301
42302 #. type: deftypevr
42303 #: guix-git/doc/guix.texi:23759
42304 #, no-wrap
42305 msgid "{@code{zabbix-agent-configuration} parameter} string extra-options"
42306 msgstr ""
42307
42308 #. type: deftypevr
42309 #: guix-git/doc/guix.texi:23766
42310 #, no-wrap
42311 msgid "{@code{zabbix-agent-configuration} parameter} include-files include-files"
42312 msgstr ""
42313
42314 #. type: subsubheading
42315 #: guix-git/doc/guix.texi:23776
42316 #, no-wrap
42317 msgid "Zabbix front-end"
42318 msgstr ""
42319
42320 #. type: cindex
42321 #: guix-git/doc/guix.texi:23777
42322 #, no-wrap
42323 msgid "zabbix zabbix-front-end"
42324 msgstr ""
42325
42326 #. type: Plain text
42327 #: guix-git/doc/guix.texi:23780
42328 msgid "This service provides a WEB interface to Zabbix server."
42329 msgstr ""
42330
42331 #. type: Plain text
42332 #: guix-git/doc/guix.texi:23784
42333 msgid "Available @code{zabbix-front-end-configuration} fields are:"
42334 msgstr ""
42335
42336 #. type: deftypevr
42337 #: guix-git/doc/guix.texi:23785
42338 #, no-wrap
42339 msgid "{@code{zabbix-front-end-configuration} parameter} nginx-server-configuration-list nginx"
42340 msgstr ""
42341
42342 #. type: deftypevr
42343 #: guix-git/doc/guix.texi:23787 guix-git/doc/guix.texi:29949
42344 msgid "NGINX configuration."
42345 msgstr ""
42346
42347 #. type: deftypevr
42348 #: guix-git/doc/guix.texi:23790
42349 #, no-wrap
42350 msgid "{@code{zabbix-front-end-configuration} parameter} string db-host"
42351 msgstr ""
42352
42353 #. type: deftypevr
42354 #: guix-git/doc/guix.texi:23797
42355 #, no-wrap
42356 msgid "{@code{zabbix-front-end-configuration} parameter} number db-port"
42357 msgstr ""
42358
42359 #. type: deftypevr
42360 #: guix-git/doc/guix.texi:23804
42361 #, no-wrap
42362 msgid "{@code{zabbix-front-end-configuration} parameter} string db-name"
42363 msgstr ""
42364
42365 #. type: deftypevr
42366 #: guix-git/doc/guix.texi:23811
42367 #, no-wrap
42368 msgid "{@code{zabbix-front-end-configuration} parameter} string db-user"
42369 msgstr ""
42370
42371 #. type: deftypevr
42372 #: guix-git/doc/guix.texi:23818
42373 #, no-wrap
42374 msgid "{@code{zabbix-front-end-configuration} parameter} string db-password"
42375 msgstr ""
42376
42377 #. type: deftypevr
42378 #: guix-git/doc/guix.texi:23820
42379 msgid "Database password. Please, use @code{db-secret-file} instead."
42380 msgstr ""
42381
42382 #. type: deftypevr
42383 #: guix-git/doc/guix.texi:23825
42384 #, no-wrap
42385 msgid "{@code{zabbix-front-end-configuration} parameter} string db-secret-file"
42386 msgstr ""
42387
42388 #. type: deftypevr
42389 #: guix-git/doc/guix.texi:23830
42390 msgid "Secret file containing the credentials for the Zabbix front-end. The value must be a local file name, not a G-expression. You are expected to create this file manually. Its contents will be copied into @file{zabbix.conf.php} as the value of @code{$DB['PASSWORD']}."
42391 msgstr ""
42392
42393 #. type: deftypevr
42394 #: guix-git/doc/guix.texi:23835
42395 #, no-wrap
42396 msgid "{@code{zabbix-front-end-configuration} parameter} string zabbix-host"
42397 msgstr ""
42398
42399 #. type: deftypevr
42400 #: guix-git/doc/guix.texi:23837
42401 msgid "Zabbix server hostname."
42402 msgstr ""
42403
42404 #. type: deftypevr
42405 #: guix-git/doc/guix.texi:23842
42406 #, no-wrap
42407 msgid "{@code{zabbix-front-end-configuration} parameter} number zabbix-port"
42408 msgstr ""
42409
42410 #. type: deftypevr
42411 #: guix-git/doc/guix.texi:23844
42412 msgid "Zabbix server port."
42413 msgstr ""
42414
42415 #. type: deftypevr
42416 #: guix-git/doc/guix.texi:23846
42417 msgid "Defaults to @samp{10051}."
42418 msgstr ""
42419
42420 #. type: cindex
42421 #: guix-git/doc/guix.texi:23854
42422 #, no-wrap
42423 msgid "Kerberos"
42424 msgstr ""
42425
42426 #. type: Plain text
42427 #: guix-git/doc/guix.texi:23858
42428 msgid "The @code{(gnu services kerberos)} module provides services relating to the authentication protocol @dfn{Kerberos}."
42429 msgstr ""
42430
42431 #. type: subsubheading
42432 #: guix-git/doc/guix.texi:23859
42433 #, no-wrap
42434 msgid "Krb5 Service"
42435 msgstr ""
42436
42437 #. type: Plain text
42438 #: guix-git/doc/guix.texi:23866
42439 msgid "Programs using a Kerberos client library normally expect a configuration file in @file{/etc/krb5.conf}. This service generates such a file from a definition provided in the operating system declaration. It does not cause any daemon to be started."
42440 msgstr ""
42441
42442 #. type: Plain text
42443 #: guix-git/doc/guix.texi:23870
42444 msgid "No ``keytab'' files are provided by this service---you must explicitly create them. This service is known to work with the MIT client library, @code{mit-krb5}. Other implementations have not been tested."
42445 msgstr ""
42446
42447 #. type: defvr
42448 #: guix-git/doc/guix.texi:23871
42449 #, no-wrap
42450 msgid "{Scheme Variable} krb5-service-type"
42451 msgstr ""
42452
42453 #. type: defvr
42454 #: guix-git/doc/guix.texi:23873
42455 msgid "A service type for Kerberos 5 clients."
42456 msgstr ""
42457
42458 #. type: Plain text
42459 #: guix-git/doc/guix.texi:23877
42460 msgid "Here is an example of its use:"
42461 msgstr ""
42462
42463 #. type: lisp
42464 #: guix-git/doc/guix.texi:23891
42465 #, no-wrap
42466 msgid ""
42467 "(service krb5-service-type\n"
42468 " (krb5-configuration\n"
42469 " (default-realm \"EXAMPLE.COM\")\n"
42470 " (allow-weak-crypto? #t)\n"
42471 " (realms (list\n"
42472 " (krb5-realm\n"
42473 " (name \"EXAMPLE.COM\")\n"
42474 " (admin-server \"groucho.example.com\")\n"
42475 " (kdc \"karl.example.com\"))\n"
42476 " (krb5-realm\n"
42477 " (name \"ARGRX.EDU\")\n"
42478 " (admin-server \"kerb-admin.argrx.edu\")\n"
42479 " (kdc \"keys.argrx.edu\"))))))\n"
42480 msgstr ""
42481
42482 #. type: Plain text
42483 #: guix-git/doc/guix.texi:23895
42484 msgid "This example provides a Kerberos@tie{}5 client configuration which:"
42485 msgstr ""
42486
42487 #. type: item
42488 #: guix-git/doc/guix.texi:23896
42489 #, no-wrap
42490 msgid "Recognizes two realms, @i{viz:} ``EXAMPLE.COM'' and ``ARGRX.EDU'', both"
42491 msgstr ""
42492
42493 #. type: itemize
42494 #: guix-git/doc/guix.texi:23898
42495 msgid "of which have distinct administration servers and key distribution centers;"
42496 msgstr ""
42497
42498 #. type: item
42499 #: guix-git/doc/guix.texi:23898
42500 #, no-wrap
42501 msgid "Will default to the realm ``EXAMPLE.COM'' if the realm is not explicitly"
42502 msgstr ""
42503
42504 #. type: itemize
42505 #: guix-git/doc/guix.texi:23900
42506 msgid "specified by clients;"
42507 msgstr ""
42508
42509 #. type: item
42510 #: guix-git/doc/guix.texi:23900
42511 #, no-wrap
42512 msgid "Accepts services which only support encryption types known to be weak."
42513 msgstr ""
42514
42515 #. type: Plain text
42516 #: guix-git/doc/guix.texi:23908
42517 msgid "The @code{krb5-realm} and @code{krb5-configuration} types have many fields. Only the most commonly used ones are described here. For a full list, and more detailed explanation of each, see the MIT @uref{https://web.mit.edu/kerberos/krb5-devel/doc/admin/conf_files/krb5_conf.html,,krb5.conf} documentation."
42518 msgstr ""
42519
42520 #. type: deftp
42521 #: guix-git/doc/guix.texi:23910
42522 #, no-wrap
42523 msgid "{Data Type} krb5-realm"
42524 msgstr ""
42525
42526 #. type: cindex
42527 #: guix-git/doc/guix.texi:23911
42528 #, no-wrap
42529 msgid "realm, kerberos"
42530 msgstr ""
42531
42532 #. type: table
42533 #: guix-git/doc/guix.texi:23917
42534 msgid "This field is a string identifying the name of the realm. A common convention is to use the fully qualified DNS name of your organization, converted to upper case."
42535 msgstr ""
42536
42537 #. type: code{#1}
42538 #: guix-git/doc/guix.texi:23918
42539 #, no-wrap
42540 msgid "admin-server"
42541 msgstr ""
42542
42543 #. type: table
42544 #: guix-git/doc/guix.texi:23921
42545 msgid "This field is a string identifying the host where the administration server is running."
42546 msgstr ""
42547
42548 #. type: code{#1}
42549 #: guix-git/doc/guix.texi:23922
42550 #, no-wrap
42551 msgid "kdc"
42552 msgstr ""
42553
42554 #. type: table
42555 #: guix-git/doc/guix.texi:23925
42556 msgid "This field is a string identifying the key distribution center for the realm."
42557 msgstr ""
42558
42559 #. type: deftp
42560 #: guix-git/doc/guix.texi:23928
42561 #, no-wrap
42562 msgid "{Data Type} krb5-configuration"
42563 msgstr ""
42564
42565 #. type: item
42566 #: guix-git/doc/guix.texi:23931
42567 #, no-wrap
42568 msgid "@code{allow-weak-crypto?} (default: @code{#f})"
42569 msgstr ""
42570
42571 #. type: table
42572 #: guix-git/doc/guix.texi:23934
42573 msgid "If this flag is @code{#t} then services which only offer encryption algorithms known to be weak will be accepted."
42574 msgstr ""
42575
42576 #. type: item
42577 #: guix-git/doc/guix.texi:23935
42578 #, no-wrap
42579 msgid "@code{default-realm} (default: @code{#f})"
42580 msgstr ""
42581
42582 #. type: table
42583 #: guix-git/doc/guix.texi:23942
42584 msgid "This field should be a string identifying the default Kerberos realm for the client. You should set this field to the name of your Kerberos realm. If this value is @code{#f} then a realm must be specified with every Kerberos principal when invoking programs such as @command{kinit}."
42585 msgstr ""
42586
42587 #. type: code{#1}
42588 #: guix-git/doc/guix.texi:23943
42589 #, no-wrap
42590 msgid "realms"
42591 msgstr ""
42592
42593 #. type: table
42594 #: guix-git/doc/guix.texi:23948
42595 msgid "This should be a non-empty list of @code{krb5-realm} objects, which clients may access. Normally, one of them will have a @code{name} field matching the @code{default-realm} field."
42596 msgstr ""
42597
42598 #. type: subsubheading
42599 #: guix-git/doc/guix.texi:23952
42600 #, no-wrap
42601 msgid "PAM krb5 Service"
42602 msgstr ""
42603
42604 #. type: cindex
42605 #: guix-git/doc/guix.texi:23953
42606 #, no-wrap
42607 msgid "pam-krb5"
42608 msgstr ""
42609
42610 #. type: Plain text
42611 #: guix-git/doc/guix.texi:23959
42612 msgid "The @code{pam-krb5} service allows for login authentication and password management via Kerberos. You will need this service if you want PAM enabled applications to authenticate users using Kerberos."
42613 msgstr ""
42614
42615 #. type: defvr
42616 #: guix-git/doc/guix.texi:23960
42617 #, no-wrap
42618 msgid "{Scheme Variable} pam-krb5-service-type"
42619 msgstr ""
42620
42621 #. type: defvr
42622 #: guix-git/doc/guix.texi:23962
42623 msgid "A service type for the Kerberos 5 PAM module."
42624 msgstr ""
42625
42626 #. type: deftp
42627 #: guix-git/doc/guix.texi:23964
42628 #, no-wrap
42629 msgid "{Data Type} pam-krb5-configuration"
42630 msgstr ""
42631
42632 #. type: deftp
42633 #: guix-git/doc/guix.texi:23967
42634 msgid "Data type representing the configuration of the Kerberos 5 PAM module. This type has the following parameters:"
42635 msgstr ""
42636
42637 #. type: item
42638 #: guix-git/doc/guix.texi:23968
42639 #, no-wrap
42640 msgid "@code{pam-krb5} (default: @code{pam-krb5})"
42641 msgstr ""
42642
42643 #. type: table
42644 #: guix-git/doc/guix.texi:23970
42645 msgid "The pam-krb5 package to use."
42646 msgstr ""
42647
42648 #. type: item
42649 #: guix-git/doc/guix.texi:23971
42650 #, no-wrap
42651 msgid "@code{minimum-uid} (default: @code{1000})"
42652 msgstr ""
42653
42654 #. type: table
42655 #: guix-git/doc/guix.texi:23974
42656 msgid "The smallest user ID for which Kerberos authentications should be attempted. Local accounts with lower values will silently fail to authenticate."
42657 msgstr ""
42658
42659 #. type: cindex
42660 #: guix-git/doc/guix.texi:23980
42661 #, no-wrap
42662 msgid "LDAP"
42663 msgstr ""
42664
42665 #. type: cindex
42666 #: guix-git/doc/guix.texi:23981
42667 #, no-wrap
42668 msgid "nslcd, LDAP service"
42669 msgstr ""
42670
42671 #. type: Plain text
42672 #: guix-git/doc/guix.texi:23988
42673 msgid "The @code{(gnu services authentication)} module provides the @code{nslcd-service-type}, which can be used to authenticate against an LDAP server. In addition to configuring the service itself, you may want to add @code{ldap} as a name service to the Name Service Switch. @xref{Name Service Switch} for detailed information."
42674 msgstr ""
42675
42676 #. type: Plain text
42677 #: guix-git/doc/guix.texi:23992
42678 msgid "Here is a simple operating system declaration with a default configuration of the @code{nslcd-service-type} and a Name Service Switch configuration that consults the @code{ldap} name service last:"
42679 msgstr ""
42680
42681 #. type: lisp
42682 #: guix-git/doc/guix.texi:24015
42683 #, no-wrap
42684 msgid ""
42685 "(use-service-modules authentication)\n"
42686 "(use-modules (gnu system nss))\n"
42687 "...\n"
42688 "(operating-system\n"
42689 " ...\n"
42690 " (services\n"
42691 " (cons*\n"
42692 " (service nslcd-service-type)\n"
42693 " (service dhcp-client-service-type)\n"
42694 " %base-services))\n"
42695 " (name-service-switch\n"
42696 " (let ((services (list (name-service (name \"db\"))\n"
42697 " (name-service (name \"files\"))\n"
42698 " (name-service (name \"ldap\")))))\n"
42699 " (name-service-switch\n"
42700 " (inherit %mdns-host-lookup-nss)\n"
42701 " (password services)\n"
42702 " (shadow services)\n"
42703 " (group services)\n"
42704 " (netgroup services)\n"
42705 " (gshadow services)))))\n"
42706 msgstr ""
42707
42708 #. type: Plain text
42709 #: guix-git/doc/guix.texi:24020
42710 msgid "Available @code{nslcd-configuration} fields are:"
42711 msgstr ""
42712
42713 #. type: deftypevr
42714 #: guix-git/doc/guix.texi:24021
42715 #, no-wrap
42716 msgid "{@code{nslcd-configuration} parameter} package nss-pam-ldapd"
42717 msgstr ""
42718
42719 #. type: deftypevr
42720 #: guix-git/doc/guix.texi:24023
42721 msgid "The @code{nss-pam-ldapd} package to use."
42722 msgstr ""
42723
42724 #. type: deftypevr
42725 #: guix-git/doc/guix.texi:24026
42726 #, no-wrap
42727 msgid "{@code{nslcd-configuration} parameter} maybe-number threads"
42728 msgstr ""
42729
42730 #. type: deftypevr
42731 #: guix-git/doc/guix.texi:24030
42732 msgid "The number of threads to start that can handle requests and perform LDAP queries. Each thread opens a separate connection to the LDAP server. The default is to start 5 threads."
42733 msgstr ""
42734
42735 #. type: deftypevr
42736 #: guix-git/doc/guix.texi:24035
42737 #, no-wrap
42738 msgid "{@code{nslcd-configuration} parameter} string uid"
42739 msgstr ""
42740
42741 #. type: deftypevr
42742 #: guix-git/doc/guix.texi:24037
42743 msgid "This specifies the user id with which the daemon should be run."
42744 msgstr ""
42745
42746 #. type: deftypevr
42747 #: guix-git/doc/guix.texi:24039 guix-git/doc/guix.texi:24046
42748 msgid "Defaults to @samp{\"nslcd\"}."
42749 msgstr ""
42750
42751 #. type: deftypevr
42752 #: guix-git/doc/guix.texi:24042
42753 #, no-wrap
42754 msgid "{@code{nslcd-configuration} parameter} string gid"
42755 msgstr ""
42756
42757 #. type: deftypevr
42758 #: guix-git/doc/guix.texi:24044
42759 msgid "This specifies the group id with which the daemon should be run."
42760 msgstr ""
42761
42762 #. type: deftypevr
42763 #: guix-git/doc/guix.texi:24049
42764 #, no-wrap
42765 msgid "{@code{nslcd-configuration} parameter} log-option log"
42766 msgstr ""
42767
42768 #. type: deftypevr
42769 #: guix-git/doc/guix.texi:24057
42770 msgid "This option controls the way logging is done via a list containing SCHEME and LEVEL@. The SCHEME argument may either be the symbols @samp{none} or @samp{syslog}, or an absolute file name. The LEVEL argument is optional and specifies the log level. The log level may be one of the following symbols: @samp{crit}, @samp{error}, @samp{warning}, @samp{notice}, @samp{info} or @samp{debug}. All messages with the specified log level or higher are logged."
42771 msgstr ""
42772
42773 #. type: deftypevr
42774 #: guix-git/doc/guix.texi:24059
42775 msgid "Defaults to @samp{(\"/var/log/nslcd\" info)}."
42776 msgstr ""
42777
42778 #. type: deftypevr
42779 #: guix-git/doc/guix.texi:24062
42780 #, no-wrap
42781 msgid "{@code{nslcd-configuration} parameter} list uri"
42782 msgstr ""
42783
42784 #. type: deftypevr
42785 #: guix-git/doc/guix.texi:24065
42786 msgid "The list of LDAP server URIs. Normally, only the first server will be used with the following servers as fall-back."
42787 msgstr ""
42788
42789 #. type: deftypevr
42790 #: guix-git/doc/guix.texi:24067
42791 msgid "Defaults to @samp{(\"ldap://localhost:389/\")}."
42792 msgstr ""
42793
42794 #. type: deftypevr
42795 #: guix-git/doc/guix.texi:24070
42796 #, no-wrap
42797 msgid "{@code{nslcd-configuration} parameter} maybe-string ldap-version"
42798 msgstr ""
42799
42800 #. type: deftypevr
42801 #: guix-git/doc/guix.texi:24073
42802 msgid "The version of the LDAP protocol to use. The default is to use the maximum version supported by the LDAP library."
42803 msgstr ""
42804
42805 #. type: deftypevr
42806 #: guix-git/doc/guix.texi:24078
42807 #, no-wrap
42808 msgid "{@code{nslcd-configuration} parameter} maybe-string binddn"
42809 msgstr ""
42810
42811 #. type: deftypevr
42812 #: guix-git/doc/guix.texi:24081
42813 msgid "Specifies the distinguished name with which to bind to the directory server for lookups. The default is to bind anonymously."
42814 msgstr ""
42815
42816 #. type: deftypevr
42817 #: guix-git/doc/guix.texi:24086
42818 #, no-wrap
42819 msgid "{@code{nslcd-configuration} parameter} maybe-string bindpw"
42820 msgstr ""
42821
42822 #. type: deftypevr
42823 #: guix-git/doc/guix.texi:24089
42824 msgid "Specifies the credentials with which to bind. This option is only applicable when used with binddn."
42825 msgstr ""
42826
42827 #. type: deftypevr
42828 #: guix-git/doc/guix.texi:24094
42829 #, no-wrap
42830 msgid "{@code{nslcd-configuration} parameter} maybe-string rootpwmoddn"
42831 msgstr ""
42832
42833 #. type: deftypevr
42834 #: guix-git/doc/guix.texi:24097
42835 msgid "Specifies the distinguished name to use when the root user tries to modify a user's password using the PAM module."
42836 msgstr ""
42837
42838 #. type: deftypevr
42839 #: guix-git/doc/guix.texi:24102
42840 #, no-wrap
42841 msgid "{@code{nslcd-configuration} parameter} maybe-string rootpwmodpw"
42842 msgstr ""
42843
42844 #. type: deftypevr
42845 #: guix-git/doc/guix.texi:24106
42846 msgid "Specifies the credentials with which to bind if the root user tries to change a user's password. This option is only applicable when used with rootpwmoddn"
42847 msgstr ""
42848
42849 #. type: deftypevr
42850 #: guix-git/doc/guix.texi:24111
42851 #, no-wrap
42852 msgid "{@code{nslcd-configuration} parameter} maybe-string sasl-mech"
42853 msgstr ""
42854
42855 #. type: deftypevr
42856 #: guix-git/doc/guix.texi:24114
42857 msgid "Specifies the SASL mechanism to be used when performing SASL authentication."
42858 msgstr ""
42859
42860 #. type: deftypevr
42861 #: guix-git/doc/guix.texi:24119
42862 #, no-wrap
42863 msgid "{@code{nslcd-configuration} parameter} maybe-string sasl-realm"
42864 msgstr ""
42865
42866 #. type: deftypevr
42867 #: guix-git/doc/guix.texi:24121
42868 msgid "Specifies the SASL realm to be used when performing SASL authentication."
42869 msgstr ""
42870
42871 #. type: deftypevr
42872 #: guix-git/doc/guix.texi:24126
42873 #, no-wrap
42874 msgid "{@code{nslcd-configuration} parameter} maybe-string sasl-authcid"
42875 msgstr ""
42876
42877 #. type: deftypevr
42878 #: guix-git/doc/guix.texi:24129
42879 msgid "Specifies the authentication identity to be used when performing SASL authentication."
42880 msgstr ""
42881
42882 #. type: deftypevr
42883 #: guix-git/doc/guix.texi:24134
42884 #, no-wrap
42885 msgid "{@code{nslcd-configuration} parameter} maybe-string sasl-authzid"
42886 msgstr ""
42887
42888 #. type: deftypevr
42889 #: guix-git/doc/guix.texi:24137
42890 msgid "Specifies the authorization identity to be used when performing SASL authentication."
42891 msgstr ""
42892
42893 #. type: deftypevr
42894 #: guix-git/doc/guix.texi:24142
42895 #, no-wrap
42896 msgid "{@code{nslcd-configuration} parameter} maybe-boolean sasl-canonicalize?"
42897 msgstr ""
42898
42899 #. type: deftypevr
42900 #: guix-git/doc/guix.texi:24147
42901 msgid "Determines whether the LDAP server host name should be canonicalised. If this is enabled the LDAP library will do a reverse host name lookup. By default, it is left up to the LDAP library whether this check is performed or not."
42902 msgstr ""
42903
42904 #. type: deftypevr
42905 #: guix-git/doc/guix.texi:24152
42906 #, no-wrap
42907 msgid "{@code{nslcd-configuration} parameter} maybe-string krb5-ccname"
42908 msgstr ""
42909
42910 #. type: deftypevr
42911 #: guix-git/doc/guix.texi:24154
42912 msgid "Set the name for the GSS-API Kerberos credentials cache."
42913 msgstr ""
42914
42915 #. type: deftypevr
42916 #: guix-git/doc/guix.texi:24159
42917 #, no-wrap
42918 msgid "{@code{nslcd-configuration} parameter} string base"
42919 msgstr ""
42920
42921 #. type: deftypevr
42922 #: guix-git/doc/guix.texi:24161
42923 msgid "The directory search base."
42924 msgstr ""
42925
42926 #. type: deftypevr
42927 #: guix-git/doc/guix.texi:24163
42928 msgid "Defaults to @samp{\"dc=example,dc=com\"}."
42929 msgstr ""
42930
42931 #. type: deftypevr
42932 #: guix-git/doc/guix.texi:24166
42933 #, no-wrap
42934 msgid "{@code{nslcd-configuration} parameter} scope-option scope"
42935 msgstr ""
42936
42937 #. type: deftypevr
42938 #: guix-git/doc/guix.texi:24170
42939 msgid "Specifies the search scope (subtree, onelevel, base or children). The default scope is subtree; base scope is almost never useful for name service lookups; children scope is not supported on all servers."
42940 msgstr ""
42941
42942 #. type: deftypevr
42943 #: guix-git/doc/guix.texi:24172
42944 msgid "Defaults to @samp{(subtree)}."
42945 msgstr ""
42946
42947 #. type: deftypevr
42948 #: guix-git/doc/guix.texi:24175
42949 #, no-wrap
42950 msgid "{@code{nslcd-configuration} parameter} maybe-deref-option deref"
42951 msgstr ""
42952
42953 #. type: deftypevr
42954 #: guix-git/doc/guix.texi:24178
42955 msgid "Specifies the policy for dereferencing aliases. The default policy is to never dereference aliases."
42956 msgstr ""
42957
42958 #. type: deftypevr
42959 #: guix-git/doc/guix.texi:24183
42960 #, no-wrap
42961 msgid "{@code{nslcd-configuration} parameter} maybe-boolean referrals"
42962 msgstr ""
42963
42964 #. type: deftypevr
42965 #: guix-git/doc/guix.texi:24186
42966 msgid "Specifies whether automatic referral chasing should be enabled. The default behaviour is to chase referrals."
42967 msgstr ""
42968
42969 #. type: deftypevr
42970 #: guix-git/doc/guix.texi:24191
42971 #, no-wrap
42972 msgid "{@code{nslcd-configuration} parameter} list-of-map-entries maps"
42973 msgstr ""
42974
42975 #. type: deftypevr
42976 #: guix-git/doc/guix.texi:24196
42977 msgid "This option allows for custom attributes to be looked up instead of the default RFC 2307 attributes. It is a list of maps, each consisting of the name of a map, the RFC 2307 attribute to match and the query expression for the attribute as it is available in the directory."
42978 msgstr ""
42979
42980 #. type: deftypevr
42981 #: guix-git/doc/guix.texi:24201
42982 #, no-wrap
42983 msgid "{@code{nslcd-configuration} parameter} list-of-filter-entries filters"
42984 msgstr ""
42985
42986 #. type: deftypevr
42987 #: guix-git/doc/guix.texi:24204
42988 msgid "A list of filters consisting of the name of a map to which the filter applies and an LDAP search filter expression."
42989 msgstr ""
42990
42991 #. type: deftypevr
42992 #: guix-git/doc/guix.texi:24209
42993 #, no-wrap
42994 msgid "{@code{nslcd-configuration} parameter} maybe-number bind-timelimit"
42995 msgstr ""
42996
42997 #. type: deftypevr
42998 #: guix-git/doc/guix.texi:24212
42999 msgid "Specifies the time limit in seconds to use when connecting to the directory server. The default value is 10 seconds."
43000 msgstr ""
43001
43002 #. type: deftypevr
43003 #: guix-git/doc/guix.texi:24217
43004 #, no-wrap
43005 msgid "{@code{nslcd-configuration} parameter} maybe-number timelimit"
43006 msgstr ""
43007
43008 #. type: deftypevr
43009 #: guix-git/doc/guix.texi:24221
43010 msgid "Specifies the time limit (in seconds) to wait for a response from the LDAP server. A value of zero, which is the default, is to wait indefinitely for searches to be completed."
43011 msgstr ""
43012
43013 #. type: deftypevr
43014 #: guix-git/doc/guix.texi:24226
43015 #, no-wrap
43016 msgid "{@code{nslcd-configuration} parameter} maybe-number idle-timelimit"
43017 msgstr ""
43018
43019 #. type: deftypevr
43020 #: guix-git/doc/guix.texi:24230
43021 msgid "Specifies the period if inactivity (in seconds) after which the con‐ nection to the LDAP server will be closed. The default is not to time out connections."
43022 msgstr ""
43023
43024 #. type: deftypevr
43025 #: guix-git/doc/guix.texi:24235
43026 #, no-wrap
43027 msgid "{@code{nslcd-configuration} parameter} maybe-number reconnect-sleeptime"
43028 msgstr ""
43029
43030 #. type: deftypevr
43031 #: guix-git/doc/guix.texi:24239
43032 msgid "Specifies the number of seconds to sleep when connecting to all LDAP servers fails. By default one second is waited between the first failure and the first retry."
43033 msgstr ""
43034
43035 #. type: deftypevr
43036 #: guix-git/doc/guix.texi:24244
43037 #, no-wrap
43038 msgid "{@code{nslcd-configuration} parameter} maybe-number reconnect-retrytime"
43039 msgstr ""
43040
43041 #. type: deftypevr
43042 #: guix-git/doc/guix.texi:24248
43043 msgid "Specifies the time after which the LDAP server is considered to be permanently unavailable. Once this time is reached retries will be done only once per this time period. The default value is 10 seconds."
43044 msgstr ""
43045
43046 #. type: deftypevr
43047 #: guix-git/doc/guix.texi:24253
43048 #, no-wrap
43049 msgid "{@code{nslcd-configuration} parameter} maybe-ssl-option ssl"
43050 msgstr ""
43051
43052 #. type: deftypevr
43053 #: guix-git/doc/guix.texi:24257
43054 msgid "Specifies whether to use SSL/TLS or not (the default is not to). If 'start-tls is specified then StartTLS is used rather than raw LDAP over SSL."
43055 msgstr ""
43056
43057 #. type: deftypevr
43058 #: guix-git/doc/guix.texi:24262
43059 #, no-wrap
43060 msgid "{@code{nslcd-configuration} parameter} maybe-tls-reqcert-option tls-reqcert"
43061 msgstr ""
43062
43063 #. type: deftypevr
43064 #: guix-git/doc/guix.texi:24265
43065 msgid "Specifies what checks to perform on a server-supplied certificate. The meaning of the values is described in the ldap.conf(5) manual page."
43066 msgstr ""
43067
43068 #. type: deftypevr
43069 #: guix-git/doc/guix.texi:24270
43070 #, no-wrap
43071 msgid "{@code{nslcd-configuration} parameter} maybe-string tls-cacertdir"
43072 msgstr ""
43073
43074 #. type: deftypevr
43075 #: guix-git/doc/guix.texi:24273
43076 msgid "Specifies the directory containing X.509 certificates for peer authen‐ tication. This parameter is ignored when using GnuTLS."
43077 msgstr ""
43078
43079 #. type: deftypevr
43080 #: guix-git/doc/guix.texi:24278
43081 #, no-wrap
43082 msgid "{@code{nslcd-configuration} parameter} maybe-string tls-cacertfile"
43083 msgstr ""
43084
43085 #. type: deftypevr
43086 #: guix-git/doc/guix.texi:24280
43087 msgid "Specifies the path to the X.509 certificate for peer authentication."
43088 msgstr ""
43089
43090 #. type: deftypevr
43091 #: guix-git/doc/guix.texi:24285
43092 #, no-wrap
43093 msgid "{@code{nslcd-configuration} parameter} maybe-string tls-randfile"
43094 msgstr ""
43095
43096 #. type: deftypevr
43097 #: guix-git/doc/guix.texi:24288
43098 msgid "Specifies the path to an entropy source. This parameter is ignored when using GnuTLS."
43099 msgstr ""
43100
43101 #. type: deftypevr
43102 #: guix-git/doc/guix.texi:24293
43103 #, no-wrap
43104 msgid "{@code{nslcd-configuration} parameter} maybe-string tls-ciphers"
43105 msgstr ""
43106
43107 #. type: deftypevr
43108 #: guix-git/doc/guix.texi:24295
43109 msgid "Specifies the ciphers to use for TLS as a string."
43110 msgstr ""
43111
43112 #. type: deftypevr
43113 #: guix-git/doc/guix.texi:24300
43114 #, no-wrap
43115 msgid "{@code{nslcd-configuration} parameter} maybe-string tls-cert"
43116 msgstr ""
43117
43118 #. type: deftypevr
43119 #: guix-git/doc/guix.texi:24303
43120 msgid "Specifies the path to the file containing the local certificate for client TLS authentication."
43121 msgstr ""
43122
43123 #. type: deftypevr
43124 #: guix-git/doc/guix.texi:24308
43125 #, no-wrap
43126 msgid "{@code{nslcd-configuration} parameter} maybe-string tls-key"
43127 msgstr ""
43128
43129 #. type: deftypevr
43130 #: guix-git/doc/guix.texi:24311
43131 msgid "Specifies the path to the file containing the private key for client TLS authentication."
43132 msgstr ""
43133
43134 #. type: deftypevr
43135 #: guix-git/doc/guix.texi:24316
43136 #, no-wrap
43137 msgid "{@code{nslcd-configuration} parameter} maybe-number pagesize"
43138 msgstr ""
43139
43140 #. type: deftypevr
43141 #: guix-git/doc/guix.texi:24320
43142 msgid "Set this to a number greater than 0 to request paged results from the LDAP server in accordance with RFC2696. The default (0) is to not request paged results."
43143 msgstr ""
43144
43145 #. type: deftypevr
43146 #: guix-git/doc/guix.texi:24325
43147 #, no-wrap
43148 msgid "{@code{nslcd-configuration} parameter} maybe-ignore-users-option nss-initgroups-ignoreusers"
43149 msgstr ""
43150
43151 #. type: deftypevr
43152 #: guix-git/doc/guix.texi:24329
43153 msgid "This option prevents group membership lookups through LDAP for the specified users. Alternatively, the value 'all-local may be used. With that value nslcd builds a full list of non-LDAP users on startup."
43154 msgstr ""
43155
43156 #. type: deftypevr
43157 #: guix-git/doc/guix.texi:24334
43158 #, no-wrap
43159 msgid "{@code{nslcd-configuration} parameter} maybe-number nss-min-uid"
43160 msgstr ""
43161
43162 #. type: deftypevr
43163 #: guix-git/doc/guix.texi:24337
43164 msgid "This option ensures that LDAP users with a numeric user id lower than the specified value are ignored."
43165 msgstr ""
43166
43167 #. type: deftypevr
43168 #: guix-git/doc/guix.texi:24342
43169 #, no-wrap
43170 msgid "{@code{nslcd-configuration} parameter} maybe-number nss-uid-offset"
43171 msgstr ""
43172
43173 #. type: deftypevr
43174 #: guix-git/doc/guix.texi:24345
43175 msgid "This option specifies an offset that is added to all LDAP numeric user ids. This can be used to avoid user id collisions with local users."
43176 msgstr ""
43177
43178 #. type: deftypevr
43179 #: guix-git/doc/guix.texi:24350
43180 #, no-wrap
43181 msgid "{@code{nslcd-configuration} parameter} maybe-number nss-gid-offset"
43182 msgstr ""
43183
43184 #. type: deftypevr
43185 #: guix-git/doc/guix.texi:24353
43186 msgid "This option specifies an offset that is added to all LDAP numeric group ids. This can be used to avoid user id collisions with local groups."
43187 msgstr ""
43188
43189 #. type: deftypevr
43190 #: guix-git/doc/guix.texi:24358
43191 #, no-wrap
43192 msgid "{@code{nslcd-configuration} parameter} maybe-boolean nss-nested-groups"
43193 msgstr ""
43194
43195 #. type: deftypevr
43196 #: guix-git/doc/guix.texi:24364
43197 msgid "If this option is set, the member attribute of a group may point to another group. Members of nested groups are also returned in the higher level group and parent groups are returned when finding groups for a specific user. The default is not to perform extra searches for nested groups."
43198 msgstr ""
43199
43200 #. type: deftypevr
43201 #: guix-git/doc/guix.texi:24369
43202 #, no-wrap
43203 msgid "{@code{nslcd-configuration} parameter} maybe-boolean nss-getgrent-skipmembers"
43204 msgstr ""
43205
43206 #. type: deftypevr
43207 #: guix-git/doc/guix.texi:24374
43208 msgid "If this option is set, the group member list is not retrieved when looking up groups. Lookups for finding which groups a user belongs to will remain functional so the user will likely still get the correct groups assigned on login."
43209 msgstr ""
43210
43211 #. type: deftypevr
43212 #: guix-git/doc/guix.texi:24379
43213 #, no-wrap
43214 msgid "{@code{nslcd-configuration} parameter} maybe-boolean nss-disable-enumeration"
43215 msgstr ""
43216
43217 #. type: deftypevr
43218 #: guix-git/doc/guix.texi:24385
43219 msgid "If this option is set, functions which cause all user/group entries to be loaded from the directory will not succeed in doing so. This can dramatically reduce LDAP server load in situations where there are a great number of users and/or groups. This option is not recommended for most configurations."
43220 msgstr ""
43221
43222 #. type: deftypevr
43223 #: guix-git/doc/guix.texi:24390
43224 #, no-wrap
43225 msgid "{@code{nslcd-configuration} parameter} maybe-string validnames"
43226 msgstr ""
43227
43228 #. type: deftypevr
43229 #: guix-git/doc/guix.texi:24394
43230 msgid "This option can be used to specify how user and group names are verified within the system. This pattern is used to check all user and group names that are requested and returned from LDAP."
43231 msgstr ""
43232
43233 #. type: deftypevr
43234 #: guix-git/doc/guix.texi:24399
43235 #, no-wrap
43236 msgid "{@code{nslcd-configuration} parameter} maybe-boolean ignorecase"
43237 msgstr ""
43238
43239 #. type: deftypevr
43240 #: guix-git/doc/guix.texi:24404
43241 msgid "This specifies whether or not to perform searches using case-insensitive matching. Enabling this could open up the system to authorization bypass vulnerabilities and introduce nscd cache poisoning vulnerabilities which allow denial of service."
43242 msgstr ""
43243
43244 #. type: deftypevr
43245 #: guix-git/doc/guix.texi:24409
43246 #, no-wrap
43247 msgid "{@code{nslcd-configuration} parameter} maybe-boolean pam-authc-ppolicy"
43248 msgstr ""
43249
43250 #. type: deftypevr
43251 #: guix-git/doc/guix.texi:24412
43252 msgid "This option specifies whether password policy controls are requested and handled from the LDAP server when performing user authentication."
43253 msgstr ""
43254
43255 #. type: deftypevr
43256 #: guix-git/doc/guix.texi:24417
43257 #, no-wrap
43258 msgid "{@code{nslcd-configuration} parameter} maybe-string pam-authc-search"
43259 msgstr ""
43260
43261 #. type: deftypevr
43262 #: guix-git/doc/guix.texi:24423
43263 msgid "By default nslcd performs an LDAP search with the user's credentials after BIND (authentication) to ensure that the BIND operation was successful. The default search is a simple check to see if the user's DN exists. A search filter can be specified that will be used instead. It should return at least one entry."
43264 msgstr ""
43265
43266 #. type: deftypevr
43267 #: guix-git/doc/guix.texi:24428
43268 #, no-wrap
43269 msgid "{@code{nslcd-configuration} parameter} maybe-string pam-authz-search"
43270 msgstr ""
43271
43272 #. type: deftypevr
43273 #: guix-git/doc/guix.texi:24432
43274 msgid "This option allows flexible fine tuning of the authorisation check that should be performed. The search filter specified is executed and if any entries match, access is granted, otherwise access is denied."
43275 msgstr ""
43276
43277 #. type: deftypevr
43278 #: guix-git/doc/guix.texi:24437
43279 #, no-wrap
43280 msgid "{@code{nslcd-configuration} parameter} maybe-string pam-password-prohibit-message"
43281 msgstr ""
43282
43283 #. type: deftypevr
43284 #: guix-git/doc/guix.texi:24442
43285 msgid "If this option is set password modification using pam_ldap will be denied and the specified message will be presented to the user instead. The message can be used to direct the user to an alternative means of changing their password."
43286 msgstr ""
43287
43288 #. type: deftypevr
43289 #: guix-git/doc/guix.texi:24447
43290 #, no-wrap
43291 msgid "{@code{nslcd-configuration} parameter} list pam-services"
43292 msgstr ""
43293
43294 #. type: deftypevr
43295 #: guix-git/doc/guix.texi:24449
43296 msgid "List of pam service names for which LDAP authentication should suffice."
43297 msgstr ""
43298
43299 #. type: cindex
43300 #: guix-git/doc/guix.texi:24460
43301 #, no-wrap
43302 msgid "web"
43303 msgstr ""
43304
43305 #. type: cindex
43306 #: guix-git/doc/guix.texi:24461
43307 #, no-wrap
43308 msgid "www"
43309 msgstr ""
43310
43311 #. type: cindex
43312 #: guix-git/doc/guix.texi:24462
43313 #, no-wrap
43314 msgid "HTTP"
43315 msgstr ""
43316
43317 #. type: Plain text
43318 #: guix-git/doc/guix.texi:24465
43319 msgid "The @code{(gnu services web)} module provides the Apache HTTP Server, the nginx web server, and also a fastcgi wrapper daemon."
43320 msgstr ""
43321
43322 #. type: subsubheading
43323 #: guix-git/doc/guix.texi:24466
43324 #, no-wrap
43325 msgid "Apache HTTP Server"
43326 msgstr ""
43327
43328 #. type: deffn
43329 #: guix-git/doc/guix.texi:24468
43330 #, no-wrap
43331 msgid "{Scheme Variable} httpd-service-type"
43332 msgstr ""
43333
43334 #. type: deffn
43335 #: guix-git/doc/guix.texi:24472
43336 msgid "Service type for the @uref{https://httpd.apache.org/,Apache HTTP} server (@dfn{httpd}). The value for this service type is a @code{httpd-configuration} record."
43337 msgstr ""
43338
43339 #. type: deffn
43340 #: guix-git/doc/guix.texi:24474 guix-git/doc/guix.texi:24655
43341 msgid "A simple example configuration is given below."
43342 msgstr ""
43343
43344 #. type: lisp
43345 #: guix-git/doc/guix.texi:24482
43346 #, no-wrap
43347 msgid ""
43348 "(service httpd-service-type\n"
43349 " (httpd-configuration\n"
43350 " (config\n"
43351 " (httpd-config-file\n"
43352 " (server-name \"www.example.com\")\n"
43353 " (document-root \"/srv/http/www.example.com\")))))\n"
43354 msgstr ""
43355
43356 #. type: deffn
43357 #: guix-git/doc/guix.texi:24486
43358 msgid "Other services can also extend the @code{httpd-service-type} to add to the configuration."
43359 msgstr ""
43360
43361 #. type: lisp
43362 #: guix-git/doc/guix.texi:24495 guix-git/doc/guix.texi:24635
43363 #, no-wrap
43364 msgid ""
43365 "(simple-service 'www.example.com-server httpd-service-type\n"
43366 " (list\n"
43367 " (httpd-virtualhost\n"
43368 " \"*:80\"\n"
43369 " (list (string-join '(\"ServerName www.example.com\"\n"
43370 " \"DocumentRoot /srv/http/www.example.com\")\n"
43371 " \"\\n\")))))\n"
43372 msgstr ""
43373
43374 #. type: Plain text
43375 #: guix-git/doc/guix.texi:24501
43376 msgid "The details for the @code{httpd-configuration}, @code{httpd-module}, @code{httpd-config-file} and @code{httpd-virtualhost} record types are given below."
43377 msgstr ""
43378
43379 #. type: deffn
43380 #: guix-git/doc/guix.texi:24502
43381 #, no-wrap
43382 msgid "{Data Type} httpd-configuration"
43383 msgstr ""
43384
43385 #. type: deffn
43386 #: guix-git/doc/guix.texi:24504
43387 msgid "This data type represents the configuration for the httpd service."
43388 msgstr ""
43389
43390 #. type: item
43391 #: guix-git/doc/guix.texi:24506
43392 #, no-wrap
43393 msgid "@code{package} (default: @code{httpd})"
43394 msgstr ""
43395
43396 #. type: table
43397 #: guix-git/doc/guix.texi:24508
43398 msgid "The httpd package to use."
43399 msgstr ""
43400
43401 #. type: item
43402 #: guix-git/doc/guix.texi:24509 guix-git/doc/guix.texi:24598
43403 #, no-wrap
43404 msgid "@code{pid-file} (default: @code{\"/var/run/httpd\"})"
43405 msgstr ""
43406
43407 #. type: table
43408 #: guix-git/doc/guix.texi:24511
43409 msgid "The pid file used by the shepherd-service."
43410 msgstr ""
43411
43412 #. type: item
43413 #: guix-git/doc/guix.texi:24512
43414 #, no-wrap
43415 msgid "@code{config} (default: @code{(httpd-config-file)})"
43416 msgstr ""
43417
43418 #. type: table
43419 #: guix-git/doc/guix.texi:24517
43420 msgid "The configuration file to use with the httpd service. The default value is a @code{httpd-config-file} record, but this can also be a different G-expression that generates a file, for example a @code{plain-file}. A file outside of the store can also be specified through a string."
43421 msgstr ""
43422
43423 #. type: deffn
43424 #: guix-git/doc/guix.texi:24521
43425 #, no-wrap
43426 msgid "{Data Type} httpd-module"
43427 msgstr ""
43428
43429 #. type: deffn
43430 #: guix-git/doc/guix.texi:24523
43431 msgid "This data type represents a module for the httpd service."
43432 msgstr ""
43433
43434 #. type: table
43435 #: guix-git/doc/guix.texi:24527
43436 msgid "The name of the module."
43437 msgstr ""
43438
43439 #. type: table
43440 #: guix-git/doc/guix.texi:24533
43441 msgid "The file for the module. This can be relative to the httpd package being used, the absolute location of a file, or a G-expression for a file within the store, for example @code{(file-append mod-wsgi \"/modules/mod_wsgi.so\")}."
43442 msgstr ""
43443
43444 #. type: defvr
43445 #: guix-git/doc/guix.texi:24537
43446 #, no-wrap
43447 msgid "{Scheme Variable} %default-httpd-modules"
43448 msgstr ""
43449
43450 #. type: defvr
43451 #: guix-git/doc/guix.texi:24539
43452 msgid "A default list of @code{httpd-module} objects."
43453 msgstr ""
43454
43455 #. type: deffn
43456 #: guix-git/doc/guix.texi:24541
43457 #, no-wrap
43458 msgid "{Data Type} httpd-config-file"
43459 msgstr ""
43460
43461 #. type: deffn
43462 #: guix-git/doc/guix.texi:24543
43463 msgid "This data type represents a configuration file for the httpd service."
43464 msgstr ""
43465
43466 #. type: item
43467 #: guix-git/doc/guix.texi:24545
43468 #, no-wrap
43469 msgid "@code{modules} (default: @code{%default-httpd-modules})"
43470 msgstr ""
43471
43472 #. type: table
43473 #: guix-git/doc/guix.texi:24548
43474 msgid "The modules to load. Additional modules can be added here, or loaded by additional configuration."
43475 msgstr ""
43476
43477 #. type: table
43478 #: guix-git/doc/guix.texi:24551
43479 msgid "For example, in order to handle requests for PHP files, you can use Apache’s @code{mod_proxy_fcgi} module along with @code{php-fpm-service-type}:"
43480 msgstr ""
43481
43482 #. type: lisp
43483 #: guix-git/doc/guix.texi:24573
43484 #, no-wrap
43485 msgid ""
43486 "(service httpd-service-type\n"
43487 " (httpd-configuration\n"
43488 " (config\n"
43489 " (httpd-config-file\n"
43490 " (modules (cons*\n"
43491 " (httpd-module\n"
43492 " (name \"proxy_module\")\n"
43493 " (file \"modules/mod_proxy.so\"))\n"
43494 " (httpd-module\n"
43495 " (name \"proxy_fcgi_module\")\n"
43496 " (file \"modules/mod_proxy_fcgi.so\"))\n"
43497 " %default-httpd-modules))\n"
43498 " (extra-config (list \"\\\n"
43499 "<FilesMatch \\\\.php$>\n"
43500 " SetHandler \\\"proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/\\\"\n"
43501 "</FilesMatch>\"))))))\n"
43502 "(service php-fpm-service-type\n"
43503 " (php-fpm-configuration\n"
43504 " (socket \"/var/run/php-fpm.sock\")\n"
43505 " (socket-group \"httpd\")))\n"
43506 msgstr ""
43507
43508 #. type: item
43509 #: guix-git/doc/guix.texi:24575
43510 #, no-wrap
43511 msgid "@code{server-root} (default: @code{httpd})"
43512 msgstr ""
43513
43514 #. type: table
43515 #: guix-git/doc/guix.texi:24579
43516 msgid "The @code{ServerRoot} in the configuration file, defaults to the httpd package. Directives including @code{Include} and @code{LoadModule} are taken as relative to the server root."
43517 msgstr ""
43518
43519 #. type: item
43520 #: guix-git/doc/guix.texi:24580
43521 #, no-wrap
43522 msgid "@code{server-name} (default: @code{#f})"
43523 msgstr ""
43524
43525 #. type: table
43526 #: guix-git/doc/guix.texi:24584
43527 msgid "The @code{ServerName} in the configuration file, used to specify the request scheme, hostname and port that the server uses to identify itself."
43528 msgstr ""
43529
43530 #. type: table
43531 #: guix-git/doc/guix.texi:24588
43532 msgid "This doesn't need to be set in the server config, and can be specified in virtual hosts. The default is @code{#f} to not specify a @code{ServerName}."
43533 msgstr ""
43534
43535 #. type: item
43536 #: guix-git/doc/guix.texi:24589
43537 #, no-wrap
43538 msgid "@code{document-root} (default: @code{\"/srv/http\"})"
43539 msgstr ""
43540
43541 #. type: table
43542 #: guix-git/doc/guix.texi:24591
43543 msgid "The @code{DocumentRoot} from which files will be served."
43544 msgstr ""
43545
43546 #. type: item
43547 #: guix-git/doc/guix.texi:24592
43548 #, no-wrap
43549 msgid "@code{listen} (default: @code{'(\"80\")})"
43550 msgstr ""
43551
43552 #. type: table
43553 #: guix-git/doc/guix.texi:24597
43554 msgid "The list of values for the @code{Listen} directives in the config file. The value should be a list of strings, when each string can specify the port number to listen on, and optionally the IP address and protocol to use."
43555 msgstr ""
43556
43557 #. type: table
43558 #: guix-git/doc/guix.texi:24602
43559 msgid "The @code{PidFile} to use. This should match the @code{pid-file} set in the @code{httpd-configuration} so that the Shepherd service is configured correctly."
43560 msgstr ""
43561
43562 #. type: item
43563 #: guix-git/doc/guix.texi:24603
43564 #, no-wrap
43565 msgid "@code{error-log} (default: @code{\"/var/log/httpd/error_log\"})"
43566 msgstr ""
43567
43568 #. type: table
43569 #: guix-git/doc/guix.texi:24605
43570 msgid "The @code{ErrorLog} to which the server will log errors."
43571 msgstr ""
43572
43573 #. type: item
43574 #: guix-git/doc/guix.texi:24606 guix-git/doc/guix.texi:25167
43575 #, no-wrap
43576 msgid "@code{user} (default: @code{\"httpd\"})"
43577 msgstr ""
43578
43579 #. type: table
43580 #: guix-git/doc/guix.texi:24608
43581 msgid "The @code{User} which the server will answer requests as."
43582 msgstr ""
43583
43584 #. type: item
43585 #: guix-git/doc/guix.texi:24609
43586 #, no-wrap
43587 msgid "@code{group} (default: @code{\"httpd\"})"
43588 msgstr ""
43589
43590 #. type: table
43591 #: guix-git/doc/guix.texi:24611
43592 msgid "The @code{Group} which the server will answer requests as."
43593 msgstr ""
43594
43595 #. type: item
43596 #: guix-git/doc/guix.texi:24612
43597 #, no-wrap
43598 msgid "@code{extra-config} (default: @code{(list \"TypesConfig etc/httpd/mime.types\")})"
43599 msgstr ""
43600
43601 #. type: table
43602 #: guix-git/doc/guix.texi:24615
43603 msgid "A flat list of strings and G-expressions which will be added to the end of the configuration file."
43604 msgstr ""
43605
43606 #. type: table
43607 #: guix-git/doc/guix.texi:24618
43608 msgid "Any values which the service is extended with will be appended to this list."
43609 msgstr ""
43610
43611 #. type: deffn
43612 #: guix-git/doc/guix.texi:24622
43613 #, no-wrap
43614 msgid "{Data Type} httpd-virtualhost"
43615 msgstr ""
43616
43617 #. type: deffn
43618 #: guix-git/doc/guix.texi:24624
43619 msgid "This data type represents a virtualhost configuration block for the httpd service."
43620 msgstr ""
43621
43622 #. type: deffn
43623 #: guix-git/doc/guix.texi:24626
43624 msgid "These should be added to the extra-config for the httpd-service."
43625 msgstr ""
43626
43627 #. type: code{#1}
43628 #: guix-git/doc/guix.texi:24638
43629 #, no-wrap
43630 msgid "addresses-and-ports"
43631 msgstr ""
43632
43633 #. type: table
43634 #: guix-git/doc/guix.texi:24640
43635 msgid "The addresses and ports for the @code{VirtualHost} directive."
43636 msgstr ""
43637
43638 #. type: code{#1}
43639 #: guix-git/doc/guix.texi:24641
43640 #, no-wrap
43641 msgid "contents"
43642 msgstr ""
43643
43644 #. type: table
43645 #: guix-git/doc/guix.texi:24644
43646 msgid "The contents of the @code{VirtualHost} directive, this should be a list of strings and G-expressions."
43647 msgstr ""
43648
43649 #. type: subsubheading
43650 #: guix-git/doc/guix.texi:24648
43651 #, no-wrap
43652 msgid "NGINX"
43653 msgstr ""
43654
43655 #. type: deffn
43656 #: guix-git/doc/guix.texi:24650
43657 #, no-wrap
43658 msgid "{Scheme Variable} nginx-service-type"
43659 msgstr ""
43660
43661 #. type: deffn
43662 #: guix-git/doc/guix.texi:24653
43663 msgid "Service type for the @uref{https://nginx.org/,NGinx} web server. The value for this service type is a @code{<nginx-configuration>} record."
43664 msgstr ""
43665
43666 #. type: lisp
43667 #: guix-git/doc/guix.texi:24663 guix-git/doc/guix.texi:24717
43668 #, no-wrap
43669 msgid ""
43670 "(service nginx-service-type\n"
43671 " (nginx-configuration\n"
43672 " (server-blocks\n"
43673 " (list (nginx-server-configuration\n"
43674 " (server-name '(\"www.example.com\"))\n"
43675 " (root \"/srv/http/www.example.com\"))))))\n"
43676 msgstr ""
43677
43678 #. type: deffn
43679 #: guix-git/doc/guix.texi:24668
43680 msgid "In addition to adding server blocks to the service configuration directly, this service can be extended by other services to add server blocks, as in this example:"
43681 msgstr ""
43682
43683 #. type: lisp
43684 #: guix-git/doc/guix.texi:24674
43685 #, no-wrap
43686 msgid ""
43687 "(simple-service 'my-extra-server nginx-service-type\n"
43688 " (list (nginx-server-configuration\n"
43689 " (root \"/srv/http/extra-website\")\n"
43690 " (try-files (list \"$uri\" \"$uri/index.html\")))))\n"
43691 msgstr ""
43692
43693 #. type: Plain text
43694 #: guix-git/doc/guix.texi:24685
43695 msgid "At startup, @command{nginx} has not yet read its configuration file, so it uses a default file to log error messages. If it fails to load its configuration file, that is where error messages are logged. After the configuration file is loaded, the default error log file changes as per configuration. In our case, startup error messages can be found in @file{/var/run/nginx/logs/error.log}, and after configuration in @file{/var/log/nginx/error.log}. The second location can be changed with the @var{log-directory} configuration option."
43696 msgstr ""
43697
43698 #. type: deffn
43699 #: guix-git/doc/guix.texi:24686
43700 #, no-wrap
43701 msgid "{Data Type} nginx-configuration"
43702 msgstr ""
43703
43704 #. type: deffn
43705 #: guix-git/doc/guix.texi:24690
43706 msgid "This data type represents the configuration for NGinx. Some configuration can be done through this and the other provided record types, or alternatively, a config file can be provided."
43707 msgstr ""
43708
43709 #. type: item
43710 #: guix-git/doc/guix.texi:24692
43711 #, no-wrap
43712 msgid "@code{nginx} (default: @code{nginx})"
43713 msgstr ""
43714
43715 #. type: table
43716 #: guix-git/doc/guix.texi:24694
43717 msgid "The nginx package to use."
43718 msgstr ""
43719
43720 #. type: item
43721 #: guix-git/doc/guix.texi:24695
43722 #, no-wrap
43723 msgid "@code{log-directory} (default: @code{\"/var/log/nginx\"})"
43724 msgstr ""
43725
43726 #. type: table
43727 #: guix-git/doc/guix.texi:24697
43728 msgid "The directory to which NGinx will write log files."
43729 msgstr ""
43730
43731 #. type: item
43732 #: guix-git/doc/guix.texi:24698
43733 #, no-wrap
43734 msgid "@code{run-directory} (default: @code{\"/var/run/nginx\"})"
43735 msgstr ""
43736
43737 #. type: table
43738 #: guix-git/doc/guix.texi:24701
43739 msgid "The directory in which NGinx will create a pid file, and write temporary files."
43740 msgstr ""
43741
43742 #. type: item
43743 #: guix-git/doc/guix.texi:24702
43744 #, no-wrap
43745 msgid "@code{server-blocks} (default: @code{'()})"
43746 msgstr ""
43747
43748 #. type: table
43749 #: guix-git/doc/guix.texi:24706
43750 msgid "A list of @dfn{server blocks} to create in the generated configuration file, the elements should be of type @code{<nginx-server-configuration>}."
43751 msgstr ""
43752
43753 #. type: table
43754 #: guix-git/doc/guix.texi:24710
43755 msgid "The following example would setup NGinx to serve @code{www.example.com} from the @code{/srv/http/www.example.com} directory, without using HTTPS."
43756 msgstr ""
43757
43758 #. type: item
43759 #: guix-git/doc/guix.texi:24719
43760 #, no-wrap
43761 msgid "@code{upstream-blocks} (default: @code{'()})"
43762 msgstr ""
43763
43764 #. type: table
43765 #: guix-git/doc/guix.texi:24723
43766 msgid "A list of @dfn{upstream blocks} to create in the generated configuration file, the elements should be of type @code{<nginx-upstream-configuration>}."
43767 msgstr ""
43768
43769 #. type: table
43770 #: guix-git/doc/guix.texi:24730
43771 msgid "Configuring upstreams through the @code{upstream-blocks} can be useful when combined with @code{locations} in the @code{<nginx-server-configuration>} records. The following example creates a server configuration with one location configuration, that will proxy requests to a upstream configuration, which will handle requests with two servers."
43772 msgstr ""
43773
43774 #. type: lisp
43775 #: guix-git/doc/guix.texi:24749
43776 #, no-wrap
43777 msgid ""
43778 "(service\n"
43779 " nginx-service-type\n"
43780 " (nginx-configuration\n"
43781 " (server-blocks\n"
43782 " (list (nginx-server-configuration\n"
43783 " (server-name '(\"www.example.com\"))\n"
43784 " (root \"/srv/http/www.example.com\")\n"
43785 " (locations\n"
43786 " (list\n"
43787 " (nginx-location-configuration\n"
43788 " (uri \"/path1\")\n"
43789 " (body '(\"proxy_pass http://server-proxy;\"))))))))\n"
43790 " (upstream-blocks\n"
43791 " (list (nginx-upstream-configuration\n"
43792 " (name \"server-proxy\")\n"
43793 " (servers (list \"server1.example.com\"\n"
43794 " \"server2.example.com\")))))))\n"
43795 msgstr ""
43796
43797 #. type: table
43798 #: guix-git/doc/guix.texi:24757
43799 msgid "If a configuration @var{file} is provided, this will be used, rather than generating a configuration file from the provided @code{log-directory}, @code{run-directory}, @code{server-blocks} and @code{upstream-blocks}. For proper operation, these arguments should match what is in @var{file} to ensure that the directories are created when the service is activated."
43800 msgstr ""
43801
43802 #. type: table
43803 #: guix-git/doc/guix.texi:24761
43804 msgid "This can be useful if you have an existing configuration file, or it's not possible to do what is required through the other parts of the nginx-configuration record."
43805 msgstr ""
43806
43807 #. type: item
43808 #: guix-git/doc/guix.texi:24762
43809 #, no-wrap
43810 msgid "@code{server-names-hash-bucket-size} (default: @code{#f})"
43811 msgstr ""
43812
43813 #. type: table
43814 #: guix-git/doc/guix.texi:24765
43815 msgid "Bucket size for the server names hash tables, defaults to @code{#f} to use the size of the processors cache line."
43816 msgstr ""
43817
43818 #. type: item
43819 #: guix-git/doc/guix.texi:24766
43820 #, no-wrap
43821 msgid "@code{server-names-hash-bucket-max-size} (default: @code{#f})"
43822 msgstr ""
43823
43824 #. type: table
43825 #: guix-git/doc/guix.texi:24768
43826 msgid "Maximum bucket size for the server names hash tables."
43827 msgstr ""
43828
43829 #. type: table
43830 #: guix-git/doc/guix.texi:24772
43831 msgid "List of nginx dynamic modules to load. This should be a list of file names of loadable modules, as in this example:"
43832 msgstr ""
43833
43834 #. type: lisp
43835 #: guix-git/doc/guix.texi:24780
43836 #, no-wrap
43837 msgid ""
43838 "(modules\n"
43839 " (list\n"
43840 " (file-append nginx-accept-language-module \"\\\n"
43841 "/etc/nginx/modules/ngx_http_accept_language_module.so\")\n"
43842 " (file-append nginx-lua-module \"\\\n"
43843 "/etc/nginx/modules/ngx_http_lua_module.so\")))\n"
43844 msgstr ""
43845
43846 #. type: item
43847 #: guix-git/doc/guix.texi:24782
43848 #, no-wrap
43849 msgid "@code{lua-package-path} (default: @code{'()})"
43850 msgstr ""
43851
43852 #. type: table
43853 #: guix-git/doc/guix.texi:24785
43854 msgid "List of nginx lua packages to load. This should be a list of package names of loadable lua modules, as in this example:"
43855 msgstr ""
43856
43857 #. type: lisp
43858 #: guix-git/doc/guix.texi:24792
43859 #, no-wrap
43860 msgid ""
43861 "(lua-package-path (list lua-resty-core\n"
43862 " lua-resty-lrucache\n"
43863 " lua-resty-signal\n"
43864 " lua-tablepool\n"
43865 " lua-resty-shell))\n"
43866 msgstr ""
43867
43868 #. type: item
43869 #: guix-git/doc/guix.texi:24794
43870 #, no-wrap
43871 msgid "@code{lua-package-cpath} (default: @code{'()})"
43872 msgstr ""
43873
43874 #. type: table
43875 #: guix-git/doc/guix.texi:24797
43876 msgid "List of nginx lua C packages to load. This should be a list of package names of loadable lua C modules, as in this example:"
43877 msgstr ""
43878
43879 #. type: lisp
43880 #: guix-git/doc/guix.texi:24800
43881 #, no-wrap
43882 msgid "(lua-package-cpath (list lua-resty-signal))\n"
43883 msgstr ""
43884
43885 #. type: item
43886 #: guix-git/doc/guix.texi:24802
43887 #, no-wrap
43888 msgid "@code{global-directives} (default: @code{'((events . ()))})"
43889 msgstr ""
43890
43891 #. type: table
43892 #: guix-git/doc/guix.texi:24805
43893 msgid "Association list of global directives for the top level of the nginx configuration. Values may themselves be association lists."
43894 msgstr ""
43895
43896 #. type: lisp
43897 #: guix-git/doc/guix.texi:24811
43898 #, no-wrap
43899 msgid ""
43900 "(global-directives\n"
43901 " `((worker_processes . 16)\n"
43902 " (pcre_jit . on)\n"
43903 " (events . ((worker_connections . 1024)))))\n"
43904 msgstr ""
43905
43906 #. type: table
43907 #: guix-git/doc/guix.texi:24816
43908 msgid "Extra content for the @code{http} block. Should be string or a string valued G-expression."
43909 msgstr ""
43910
43911 #. type: deftp
43912 #: guix-git/doc/guix.texi:24820
43913 #, no-wrap
43914 msgid "{Data Type} nginx-server-configuration"
43915 msgstr ""
43916
43917 #. type: deftp
43918 #: guix-git/doc/guix.texi:24823
43919 msgid "Data type representing the configuration of an nginx server block. This type has the following parameters:"
43920 msgstr ""
43921
43922 #. type: item
43923 #: guix-git/doc/guix.texi:24825
43924 #, no-wrap
43925 msgid "@code{listen} (default: @code{'(\"80\" \"443 ssl\")})"
43926 msgstr ""
43927
43928 #. type: table
43929 #: guix-git/doc/guix.texi:24830
43930 msgid "Each @code{listen} directive sets the address and port for IP, or the path for a UNIX-domain socket on which the server will accept requests. Both address and port, or only address or only port can be specified. An address may also be a hostname, for example:"
43931 msgstr ""
43932
43933 #. type: lisp
43934 #: guix-git/doc/guix.texi:24833
43935 #, no-wrap
43936 msgid "'(\"127.0.0.1:8000\" \"127.0.0.1\" \"8000\" \"*:8000\" \"localhost:8000\")\n"
43937 msgstr ""
43938
43939 #. type: item
43940 #: guix-git/doc/guix.texi:24835
43941 #, no-wrap
43942 msgid "@code{server-name} (default: @code{(list 'default)})"
43943 msgstr ""
43944
43945 #. type: table
43946 #: guix-git/doc/guix.texi:24838
43947 msgid "A list of server names this server represents. @code{'default} represents the default server for connections matching no other server."
43948 msgstr ""
43949
43950 #. type: item
43951 #: guix-git/doc/guix.texi:24839
43952 #, no-wrap
43953 msgid "@code{root} (default: @code{\"/srv/http\"})"
43954 msgstr ""
43955
43956 #. type: table
43957 #: guix-git/doc/guix.texi:24841
43958 msgid "Root of the website nginx will serve."
43959 msgstr ""
43960
43961 #. type: item
43962 #: guix-git/doc/guix.texi:24842
43963 #, no-wrap
43964 msgid "@code{locations} (default: @code{'()})"
43965 msgstr ""
43966
43967 #. type: table
43968 #: guix-git/doc/guix.texi:24846
43969 msgid "A list of @dfn{nginx-location-configuration} or @dfn{nginx-named-location-configuration} records to use within this server block."
43970 msgstr ""
43971
43972 #. type: item
43973 #: guix-git/doc/guix.texi:24847
43974 #, no-wrap
43975 msgid "@code{index} (default: @code{(list \"index.html\")})"
43976 msgstr ""
43977
43978 #. type: table
43979 #: guix-git/doc/guix.texi:24850
43980 msgid "Index files to look for when clients ask for a directory. If it cannot be found, Nginx will send the list of files in the directory."
43981 msgstr ""
43982
43983 #. type: item
43984 #: guix-git/doc/guix.texi:24851
43985 #, no-wrap
43986 msgid "@code{try-files} (default: @code{'()})"
43987 msgstr ""
43988
43989 #. type: table
43990 #: guix-git/doc/guix.texi:24854
43991 msgid "A list of files whose existence is checked in the specified order. @code{nginx} will use the first file it finds to process the request."
43992 msgstr ""
43993
43994 #. type: item
43995 #: guix-git/doc/guix.texi:24855
43996 #, no-wrap
43997 msgid "@code{ssl-certificate} (default: @code{#f})"
43998 msgstr ""
43999
44000 #. type: table
44001 #: guix-git/doc/guix.texi:24858
44002 msgid "Where to find the certificate for secure connections. Set it to @code{#f} if you don't have a certificate or you don't want to use HTTPS."
44003 msgstr ""
44004
44005 #. type: item
44006 #: guix-git/doc/guix.texi:24859
44007 #, no-wrap
44008 msgid "@code{ssl-certificate-key} (default: @code{#f})"
44009 msgstr ""
44010
44011 #. type: table
44012 #: guix-git/doc/guix.texi:24862
44013 msgid "Where to find the private key for secure connections. Set it to @code{#f} if you don't have a key or you don't want to use HTTPS."
44014 msgstr ""
44015
44016 #. type: item
44017 #: guix-git/doc/guix.texi:24863
44018 #, no-wrap
44019 msgid "@code{server-tokens?} (default: @code{#f})"
44020 msgstr ""
44021
44022 #. type: table
44023 #: guix-git/doc/guix.texi:24865
44024 msgid "Whether the server should add its configuration to response."
44025 msgstr ""
44026
44027 #. type: item
44028 #: guix-git/doc/guix.texi:24866
44029 #, no-wrap
44030 msgid "@code{raw-content} (default: @code{'()})"
44031 msgstr ""
44032
44033 #. type: table
44034 #: guix-git/doc/guix.texi:24868
44035 msgid "A list of raw lines added to the server block."
44036 msgstr ""
44037
44038 #. type: deftp
44039 #: guix-git/doc/guix.texi:24872
44040 #, no-wrap
44041 msgid "{Data Type} nginx-upstream-configuration"
44042 msgstr ""
44043
44044 #. type: deftp
44045 #: guix-git/doc/guix.texi:24875
44046 msgid "Data type representing the configuration of an nginx @code{upstream} block. This type has the following parameters:"
44047 msgstr ""
44048
44049 #. type: table
44050 #: guix-git/doc/guix.texi:24879
44051 msgid "Name for this group of servers."
44052 msgstr ""
44053
44054 #. type: code{#1}
44055 #: guix-git/doc/guix.texi:24880
44056 #, no-wrap
44057 msgid "servers"
44058 msgstr ""
44059
44060 #. type: table
44061 #: guix-git/doc/guix.texi:24887
44062 msgid "Specify the addresses of the servers in the group. The address can be specified as a IP address (e.g.@: @samp{127.0.0.1}), domain name (e.g.@: @samp{backend1.example.com}) or a path to a UNIX socket using the prefix @samp{unix:}. For addresses using an IP address or domain name, the default port is 80, and a different port can be specified explicitly."
44063 msgstr ""
44064
44065 #. type: deftp
44066 #: guix-git/doc/guix.texi:24891
44067 #, no-wrap
44068 msgid "{Data Type} nginx-location-configuration"
44069 msgstr ""
44070
44071 #. type: deftp
44072 #: guix-git/doc/guix.texi:24894
44073 msgid "Data type representing the configuration of an nginx @code{location} block. This type has the following parameters:"
44074 msgstr ""
44075
44076 #. type: table
44077 #: guix-git/doc/guix.texi:24898
44078 msgid "URI which this location block matches."
44079 msgstr ""
44080
44081 #. type: anchor{#1}
44082 #: guix-git/doc/guix.texi:24900
44083 msgid "nginx-location-configuration body"
44084 msgstr ""
44085
44086 #. type: code{#1}
44087 #: guix-git/doc/guix.texi:24900 guix-git/doc/guix.texi:24921
44088 #, no-wrap
44089 msgid "body"
44090 msgstr ""
44091
44092 #. type: table
44093 #: guix-git/doc/guix.texi:24907
44094 msgid "Body of the location block, specified as a list of strings. This can contain many configuration directives. For example, to pass requests to a upstream server group defined using an @code{nginx-upstream-configuration} block, the following directive would be specified in the body @samp{(list \"proxy_pass http://upstream-name;\")}."
44095 msgstr ""
44096
44097 #. type: deftp
44098 #: guix-git/doc/guix.texi:24911
44099 #, no-wrap
44100 msgid "{Data Type} nginx-named-location-configuration"
44101 msgstr ""
44102
44103 #. type: deftp
44104 #: guix-git/doc/guix.texi:24916
44105 msgid "Data type representing the configuration of an nginx named location block. Named location blocks are used for request redirection, and not used for regular request processing. This type has the following parameters:"
44106 msgstr ""
44107
44108 #. type: table
44109 #: guix-git/doc/guix.texi:24920
44110 msgid "Name to identify this location block."
44111 msgstr ""
44112
44113 #. type: table
44114 #: guix-git/doc/guix.texi:24926
44115 msgid "@xref{nginx-location-configuration body}, as the body for named location blocks can be used in a similar way to the @code{nginx-location-configuration body}. One restriction is that the body of a named location block cannot contain location blocks."
44116 msgstr ""
44117
44118 #. type: subsubheading
44119 #: guix-git/doc/guix.texi:24930
44120 #, no-wrap
44121 msgid "Varnish Cache"
44122 msgstr ""
44123
44124 #. type: cindex
44125 #: guix-git/doc/guix.texi:24931
44126 #, no-wrap
44127 msgid "Varnish"
44128 msgstr ""
44129
44130 #. type: Plain text
44131 #: guix-git/doc/guix.texi:24936
44132 msgid "Varnish is a fast cache server that sits in between web applications and end users. It proxies requests from clients and caches the accessed URLs such that multiple requests for the same resource only creates one request to the back-end."
44133 msgstr ""
44134
44135 #. type: defvr
44136 #: guix-git/doc/guix.texi:24937
44137 #, no-wrap
44138 msgid "{Scheme Variable} varnish-service-type"
44139 msgstr ""
44140
44141 #. type: defvr
44142 #: guix-git/doc/guix.texi:24939
44143 msgid "Service type for the Varnish daemon."
44144 msgstr ""
44145
44146 #. type: deftp
44147 #: guix-git/doc/guix.texi:24941
44148 #, no-wrap
44149 msgid "{Data Type} varnish-configuration"
44150 msgstr ""
44151
44152 #. type: deftp
44153 #: guix-git/doc/guix.texi:24944
44154 msgid "Data type representing the @code{varnish} service configuration. This type has the following parameters:"
44155 msgstr ""
44156
44157 #. type: item
44158 #: guix-git/doc/guix.texi:24946
44159 #, no-wrap
44160 msgid "@code{package} (default: @code{varnish})"
44161 msgstr ""
44162
44163 #. type: table
44164 #: guix-git/doc/guix.texi:24948
44165 msgid "The Varnish package to use."
44166 msgstr ""
44167
44168 #. type: item
44169 #: guix-git/doc/guix.texi:24949
44170 #, no-wrap
44171 msgid "@code{name} (default: @code{\"default\"})"
44172 msgstr ""
44173
44174 #. type: table
44175 #: guix-git/doc/guix.texi:24954
44176 msgid "A name for this Varnish instance. Varnish will create a directory in @file{/var/varnish/} with this name and keep temporary files there. If the name starts with a forward slash, it is interpreted as an absolute directory name."
44177 msgstr ""
44178
44179 #. type: table
44180 #: guix-git/doc/guix.texi:24957
44181 msgid "Pass the @code{-n} argument to other Varnish programs to connect to the named instance, e.g.@: @command{varnishncsa -n default}."
44182 msgstr ""
44183
44184 #. type: item
44185 #: guix-git/doc/guix.texi:24958
44186 #, no-wrap
44187 msgid "@code{backend} (default: @code{\"localhost:8080\"})"
44188 msgstr ""
44189
44190 #. type: table
44191 #: guix-git/doc/guix.texi:24960
44192 msgid "The backend to use. This option has no effect if @code{vcl} is set."
44193 msgstr ""
44194
44195 #. type: item
44196 #: guix-git/doc/guix.texi:24961
44197 #, no-wrap
44198 msgid "@code{vcl} (default: #f)"
44199 msgstr ""
44200
44201 #. type: table
44202 #: guix-git/doc/guix.texi:24966
44203 msgid "The @dfn{VCL} (Varnish Configuration Language) program to run. If this is @code{#f}, Varnish will proxy @code{backend} using the default configuration. Otherwise this must be a file-like object with valid VCL syntax."
44204 msgstr ""
44205
44206 #. type: table
44207 #: guix-git/doc/guix.texi:24970
44208 msgid "For example, to mirror @url{https://www.gnu.org,www.gnu.org} with VCL you can do something along these lines:"
44209 msgstr ""
44210
44211 #. type: lisp
44212 #: guix-git/doc/guix.texi:24976
44213 #, no-wrap
44214 msgid ""
44215 "(define %gnu-mirror\n"
44216 " (plain-file \"gnu.vcl\"\n"
44217 " \"vcl 4.1;\n"
44218 "backend gnu @{ .host = \\\"www.gnu.org\\\"; @}\"))\n"
44219 "\n"
44220 msgstr ""
44221
44222 #. type: lisp
44223 #: guix-git/doc/guix.texi:24984
44224 #, no-wrap
44225 msgid ""
44226 "(operating-system\n"
44227 " ;; @dots{}\n"
44228 " (services (cons (service varnish-service-type\n"
44229 " (varnish-configuration\n"
44230 " (listen '(\":80\"))\n"
44231 " (vcl %gnu-mirror)))\n"
44232 " %base-services)))\n"
44233 msgstr ""
44234
44235 #. type: table
44236 #: guix-git/doc/guix.texi:24988
44237 msgid "The configuration of an already running Varnish instance can be inspected and changed using the @command{varnishadm} program."
44238 msgstr ""
44239
44240 #. type: table
44241 #: guix-git/doc/guix.texi:24992
44242 msgid "Consult the @url{https://varnish-cache.org/docs/,Varnish User Guide} and @url{https://book.varnish-software.com/4.0/,Varnish Book} for comprehensive documentation on Varnish and its configuration language."
44243 msgstr ""
44244
44245 #. type: item
44246 #: guix-git/doc/guix.texi:24993
44247 #, no-wrap
44248 msgid "@code{listen} (default: @code{'(\"localhost:80\")})"
44249 msgstr ""
44250
44251 #. type: table
44252 #: guix-git/doc/guix.texi:24995
44253 msgid "List of addresses Varnish will listen on."
44254 msgstr ""
44255
44256 #. type: item
44257 #: guix-git/doc/guix.texi:24996
44258 #, no-wrap
44259 msgid "@code{storage} (default: @code{'(\"malloc,128m\")})"
44260 msgstr ""
44261
44262 #. type: table
44263 #: guix-git/doc/guix.texi:24998
44264 msgid "List of storage backends that will be available in VCL."
44265 msgstr ""
44266
44267 #. type: item
44268 #: guix-git/doc/guix.texi:24999
44269 #, no-wrap
44270 msgid "@code{parameters} (default: @code{'()})"
44271 msgstr ""
44272
44273 #. type: table
44274 #: guix-git/doc/guix.texi:25001
44275 msgid "List of run-time parameters in the form @code{'((\"parameter\" . \"value\"))}."
44276 msgstr ""
44277
44278 #. type: table
44279 #: guix-git/doc/guix.texi:25004
44280 msgid "Additional arguments to pass to the @command{varnishd} process."
44281 msgstr ""
44282
44283 #. type: cindex
44284 #: guix-git/doc/guix.texi:25008 guix-git/doc/guix.texi:25009
44285 #, no-wrap
44286 msgid "Patchwork"
44287 msgstr ""
44288
44289 #. type: Plain text
44290 #: guix-git/doc/guix.texi:25012
44291 msgid "Patchwork is a patch tracking system. It can collect patches sent to a mailing list, and display them in a web interface."
44292 msgstr ""
44293
44294 #. type: defvr
44295 #: guix-git/doc/guix.texi:25013
44296 #, no-wrap
44297 msgid "{Scheme Variable} patchwork-service-type"
44298 msgstr ""
44299
44300 #. type: defvr
44301 #: guix-git/doc/guix.texi:25015
44302 msgid "Service type for Patchwork."
44303 msgstr ""
44304
44305 #. type: Plain text
44306 #: guix-git/doc/guix.texi:25019
44307 msgid "The following example is an example of a minimal service for Patchwork, for the @code{patchwork.example.com} domain."
44308 msgstr ""
44309
44310 #. type: lisp
44311 #: guix-git/doc/guix.texi:25039
44312 #, no-wrap
44313 msgid ""
44314 "(service patchwork-service-type\n"
44315 " (patchwork-configuration\n"
44316 " (domain \"patchwork.example.com\")\n"
44317 " (settings-module\n"
44318 " (patchwork-settings-module\n"
44319 " (allowed-hosts (list domain))\n"
44320 " (default-from-email \"patchwork@@patchwork.example.com\")))\n"
44321 " (getmail-retriever-config\n"
44322 " (getmail-retriever-configuration\n"
44323 " (type \"SimpleIMAPSSLRetriever\")\n"
44324 " (server \"imap.example.com\")\n"
44325 " (port 993)\n"
44326 " (username \"patchwork\")\n"
44327 " (password-command\n"
44328 " (list (file-append coreutils \"/bin/cat\")\n"
44329 " \"/etc/getmail-patchwork-imap-password\"))\n"
44330 " (extra-parameters\n"
44331 " '((mailboxes . (\"Patches\"))))))))\n"
44332 "\n"
44333 msgstr ""
44334
44335 #. type: Plain text
44336 #: guix-git/doc/guix.texi:25045
44337 msgid "There are three records for configuring the Patchwork service. The @code{<patchwork-configuration>} relates to the configuration for Patchwork within the HTTPD service."
44338 msgstr ""
44339
44340 #. type: Plain text
44341 #: guix-git/doc/guix.texi:25049
44342 msgid "The @code{settings-module} field within the @code{<patchwork-configuration>} record can be populated with the @code{<patchwork-settings-module>} record, which describes a settings module that is generated within the Guix store."
44343 msgstr ""
44344
44345 #. type: Plain text
44346 #: guix-git/doc/guix.texi:25053
44347 msgid "For the @code{database-configuration} field within the @code{<patchwork-settings-module>}, the @code{<patchwork-database-configuration>} must be used."
44348 msgstr ""
44349
44350 #. type: deftp
44351 #: guix-git/doc/guix.texi:25054
44352 #, no-wrap
44353 msgid "{Data Type} patchwork-configuration"
44354 msgstr ""
44355
44356 #. type: deftp
44357 #: guix-git/doc/guix.texi:25057
44358 msgid "Data type representing the Patchwork service configuration. This type has the following parameters:"
44359 msgstr ""
44360
44361 #. type: item
44362 #: guix-git/doc/guix.texi:25059
44363 #, no-wrap
44364 msgid "@code{patchwork} (default: @code{patchwork})"
44365 msgstr ""
44366
44367 #. type: table
44368 #: guix-git/doc/guix.texi:25061
44369 msgid "The Patchwork package to use."
44370 msgstr ""
44371
44372 #. type: code{#1}
44373 #: guix-git/doc/guix.texi:25062
44374 #, no-wrap
44375 msgid "domain"
44376 msgstr ""
44377
44378 #. type: table
44379 #: guix-git/doc/guix.texi:25065
44380 msgid "The domain to use for Patchwork, this is used in the HTTPD service virtual host."
44381 msgstr ""
44382
44383 #. type: code{#1}
44384 #: guix-git/doc/guix.texi:25066
44385 #, no-wrap
44386 msgid "settings-module"
44387 msgstr ""
44388
44389 #. type: table
44390 #: guix-git/doc/guix.texi:25072
44391 msgid "The settings module to use for Patchwork. As a Django application, Patchwork is configured with a Python module containing the settings. This can either be an instance of the @code{<patchwork-settings-module>} record, any other record that represents the settings in the store, or a directory outside of the store."
44392 msgstr ""
44393
44394 #. type: item
44395 #: guix-git/doc/guix.texi:25073
44396 #, no-wrap
44397 msgid "@code{static-path} (default: @code{\"/static/\"})"
44398 msgstr ""
44399
44400 #. type: table
44401 #: guix-git/doc/guix.texi:25075
44402 msgid "The path under which the HTTPD service should serve the static files."
44403 msgstr ""
44404
44405 #. type: code{#1}
44406 #: guix-git/doc/guix.texi:25076
44407 #, no-wrap
44408 msgid "getmail-retriever-config"
44409 msgstr ""
44410
44411 #. type: table
44412 #: guix-git/doc/guix.texi:25080
44413 msgid "The getmail-retriever-configuration record value to use with Patchwork. Getmail will be configured with this value, the messages will be delivered to Patchwork."
44414 msgstr ""
44415
44416 #. type: deftp
44417 #: guix-git/doc/guix.texi:25084
44418 #, no-wrap
44419 msgid "{Data Type} patchwork-settings-module"
44420 msgstr ""
44421
44422 #. type: deftp
44423 #: guix-git/doc/guix.texi:25089
44424 msgid "Data type representing a settings module for Patchwork. Some of these settings relate directly to Patchwork, but others relate to Django, the web framework used by Patchwork, or the Django Rest Framework library. This type has the following parameters:"
44425 msgstr ""
44426
44427 #. type: item
44428 #: guix-git/doc/guix.texi:25091
44429 #, no-wrap
44430 msgid "@code{database-configuration} (default: @code{(patchwork-database-configuration)})"
44431 msgstr ""
44432
44433 #. type: table
44434 #: guix-git/doc/guix.texi:25094
44435 msgid "The database connection settings used for Patchwork. See the @code{<patchwork-database-configuration>} record type for more information."
44436 msgstr ""
44437
44438 #. type: item
44439 #: guix-git/doc/guix.texi:25095
44440 #, no-wrap
44441 msgid "@code{secret-key-file} (default: @code{\"/etc/patchwork/django-secret-key\"})"
44442 msgstr ""
44443
44444 #. type: table
44445 #: guix-git/doc/guix.texi:25098
44446 msgid "Patchwork, as a Django web application uses a secret key for cryptographically signing values. This file should contain a unique unpredictable value."
44447 msgstr ""
44448
44449 #. type: table
44450 #: guix-git/doc/guix.texi:25101
44451 msgid "If this file does not exist, it will be created and populated with a random value by the patchwork-setup shepherd service."
44452 msgstr ""
44453
44454 #. type: table
44455 #: guix-git/doc/guix.texi:25103
44456 msgid "This setting relates to Django."
44457 msgstr ""
44458
44459 #. type: code{#1}
44460 #: guix-git/doc/guix.texi:25104
44461 #, no-wrap
44462 msgid "allowed-hosts"
44463 msgstr ""
44464
44465 #. type: table
44466 #: guix-git/doc/guix.texi:25107
44467 msgid "A list of valid hosts for this Patchwork service. This should at least include the domain specified in the @code{<patchwork-configuration>} record."
44468 msgstr ""
44469
44470 #. type: table
44471 #: guix-git/doc/guix.texi:25109 guix-git/doc/guix.texi:25123
44472 #: guix-git/doc/guix.texi:25129 guix-git/doc/guix.texi:25135
44473 msgid "This is a Django setting."
44474 msgstr ""
44475
44476 #. type: code{#1}
44477 #: guix-git/doc/guix.texi:25110
44478 #, no-wrap
44479 msgid "default-from-email"
44480 msgstr ""
44481
44482 #. type: table
44483 #: guix-git/doc/guix.texi:25112
44484 msgid "The email address from which Patchwork should send email by default."
44485 msgstr ""
44486
44487 #. type: table
44488 #: guix-git/doc/guix.texi:25114 guix-git/doc/guix.texi:25140
44489 #: guix-git/doc/guix.texi:25145 guix-git/doc/guix.texi:25150
44490 msgid "This is a Patchwork setting."
44491 msgstr ""
44492
44493 #. type: item
44494 #: guix-git/doc/guix.texi:25115
44495 #, no-wrap
44496 msgid "@code{static-url} (default: @code{#f})"
44497 msgstr ""
44498
44499 #. type: table
44500 #: guix-git/doc/guix.texi:25118
44501 msgid "The URL to use when serving static assets. It can be part of a URL, or a full URL, but must end in a @code{/}."
44502 msgstr ""
44503
44504 #. type: table
44505 #: guix-git/doc/guix.texi:25121
44506 msgid "If the default value is used, the @code{static-path} value from the @code{<patchwork-configuration>} record will be used."
44507 msgstr ""
44508
44509 #. type: item
44510 #: guix-git/doc/guix.texi:25124
44511 #, no-wrap
44512 msgid "@code{admins} (default: @code{'()})"
44513 msgstr ""
44514
44515 #. type: table
44516 #: guix-git/doc/guix.texi:25127
44517 msgid "Email addresses to send the details of errors that occur. Each value should be a list containing two elements, the name and then the email address."
44518 msgstr ""
44519
44520 #. type: table
44521 #: guix-git/doc/guix.texi:25133
44522 msgid "Whether to run Patchwork in debug mode. If set to @code{#t}, detailed error messages will be shown."
44523 msgstr ""
44524
44525 #. type: item
44526 #: guix-git/doc/guix.texi:25136
44527 #, no-wrap
44528 msgid "@code{enable-rest-api?} (default: @code{#t})"
44529 msgstr ""
44530
44531 #. type: table
44532 #: guix-git/doc/guix.texi:25138
44533 msgid "Whether to enable the Patchwork REST API."
44534 msgstr ""
44535
44536 #. type: item
44537 #: guix-git/doc/guix.texi:25141
44538 #, no-wrap
44539 msgid "@code{enable-xmlrpc?} (default: @code{#t})"
44540 msgstr ""
44541
44542 #. type: table
44543 #: guix-git/doc/guix.texi:25143
44544 msgid "Whether to enable the XML RPC API."
44545 msgstr ""
44546
44547 #. type: item
44548 #: guix-git/doc/guix.texi:25146
44549 #, no-wrap
44550 msgid "@code{force-https-links?} (default: @code{#t})"
44551 msgstr ""
44552
44553 #. type: table
44554 #: guix-git/doc/guix.texi:25148
44555 msgid "Whether to use HTTPS links on Patchwork pages."
44556 msgstr ""
44557
44558 #. type: table
44559 #: guix-git/doc/guix.texi:25153
44560 msgid "Extra code to place at the end of the Patchwork settings module."
44561 msgstr ""
44562
44563 #. type: deftp
44564 #: guix-git/doc/guix.texi:25157
44565 #, no-wrap
44566 msgid "{Data Type} patchwork-database-configuration"
44567 msgstr ""
44568
44569 #. type: deftp
44570 #: guix-git/doc/guix.texi:25159
44571 msgid "Data type representing the database configuration for Patchwork."
44572 msgstr ""
44573
44574 #. type: item
44575 #: guix-git/doc/guix.texi:25161
44576 #, no-wrap
44577 msgid "@code{engine} (default: @code{\"django.db.backends.postgresql_psycopg2\"})"
44578 msgstr ""
44579
44580 #. type: table
44581 #: guix-git/doc/guix.texi:25163
44582 msgid "The database engine to use."
44583 msgstr ""
44584
44585 #. type: item
44586 #: guix-git/doc/guix.texi:25164
44587 #, no-wrap
44588 msgid "@code{name} (default: @code{\"patchwork\"})"
44589 msgstr ""
44590
44591 #. type: table
44592 #: guix-git/doc/guix.texi:25166
44593 msgid "The name of the database to use."
44594 msgstr ""
44595
44596 #. type: table
44597 #: guix-git/doc/guix.texi:25169
44598 msgid "The user to connect to the database as."
44599 msgstr ""
44600
44601 #. type: item
44602 #: guix-git/doc/guix.texi:25170
44603 #, no-wrap
44604 msgid "@code{password} (default: @code{\"\"})"
44605 msgstr ""
44606
44607 #. type: table
44608 #: guix-git/doc/guix.texi:25172
44609 msgid "The password to use when connecting to the database."
44610 msgstr ""
44611
44612 #. type: item
44613 #: guix-git/doc/guix.texi:25173
44614 #, no-wrap
44615 msgid "@code{host} (default: @code{\"\"})"
44616 msgstr ""
44617
44618 #. type: table
44619 #: guix-git/doc/guix.texi:25175
44620 msgid "The host to make the database connection to."
44621 msgstr ""
44622
44623 #. type: item
44624 #: guix-git/doc/guix.texi:25176
44625 #, no-wrap
44626 msgid "@code{port} (default: @code{\"\"})"
44627 msgstr ""
44628
44629 #. type: table
44630 #: guix-git/doc/guix.texi:25178
44631 msgid "The port on which to connect to the database."
44632 msgstr ""
44633
44634 #. type: subsubheading
44635 #: guix-git/doc/guix.texi:25182
44636 #, no-wrap
44637 msgid "Mumi"
44638 msgstr ""
44639
44640 #. type: cindex
44641 #: guix-git/doc/guix.texi:25184
44642 #, no-wrap
44643 msgid "Mumi, Debbugs Web interface"
44644 msgstr ""
44645
44646 #. type: cindex
44647 #: guix-git/doc/guix.texi:25185
44648 #, no-wrap
44649 msgid "Debbugs, Mumi Web interface"
44650 msgstr ""
44651
44652 #. type: Plain text
44653 #: guix-git/doc/guix.texi:25190
44654 msgid "@uref{https://git.elephly.net/gitweb.cgi?p=software/mumi.git, Mumi} is a Web interface to the Debbugs bug tracker, by default for @uref{https://bugs.gnu.org, the GNU instance}. Mumi is a Web server, but it also fetches and indexes mail retrieved from Debbugs."
44655 msgstr ""
44656
44657 #. type: defvr
44658 #: guix-git/doc/guix.texi:25191
44659 #, no-wrap
44660 msgid "{Scheme Variable} mumi-service-type"
44661 msgstr ""
44662
44663 #. type: defvr
44664 #: guix-git/doc/guix.texi:25193
44665 msgid "This is the service type for Mumi."
44666 msgstr ""
44667
44668 #. type: deftp
44669 #: guix-git/doc/guix.texi:25195
44670 #, no-wrap
44671 msgid "{Data Type} mumi-configuration"
44672 msgstr ""
44673
44674 #. type: deftp
44675 #: guix-git/doc/guix.texi:25198
44676 msgid "Data type representing the Mumi service configuration. This type has the following fields:"
44677 msgstr ""
44678
44679 #. type: item
44680 #: guix-git/doc/guix.texi:25200
44681 #, no-wrap
44682 msgid "@code{mumi} (default: @code{mumi})"
44683 msgstr ""
44684
44685 #. type: table
44686 #: guix-git/doc/guix.texi:25202
44687 msgid "The Mumi package to use."
44688 msgstr ""
44689
44690 #. type: item
44691 #: guix-git/doc/guix.texi:25203
44692 #, no-wrap
44693 msgid "@code{mailer?} (default: @code{#true})"
44694 msgstr ""
44695
44696 #. type: table
44697 #: guix-git/doc/guix.texi:25205
44698 msgid "Whether to enable or disable the mailer component."
44699 msgstr ""
44700
44701 #. type: code{#1}
44702 #: guix-git/doc/guix.texi:25206
44703 #, no-wrap
44704 msgid "mumi-configuration-sender"
44705 msgstr ""
44706
44707 #. type: table
44708 #: guix-git/doc/guix.texi:25208
44709 msgid "The email address used as the sender for comments."
44710 msgstr ""
44711
44712 #. type: code{#1}
44713 #: guix-git/doc/guix.texi:25209
44714 #, no-wrap
44715 msgid "mumi-configuration-smtp"
44716 msgstr ""
44717
44718 #. type: table
44719 #: guix-git/doc/guix.texi:25214
44720 msgid "A URI to configure the SMTP settings for Mailutils. This could be something like @code{sendmail:///path/to/bin/msmtp} or any other URI supported by Mailutils. @xref{SMTP Mailboxes, SMTP Mailboxes,, mailutils, GNU@tie{}Mailutils}."
44721 msgstr ""
44722
44723 #. type: subsubheading
44724 #: guix-git/doc/guix.texi:25219
44725 #, no-wrap
44726 msgid "FastCGI"
44727 msgstr ""
44728
44729 #. type: cindex
44730 #: guix-git/doc/guix.texi:25220
44731 #, no-wrap
44732 msgid "fastcgi"
44733 msgstr ""
44734
44735 #. type: cindex
44736 #: guix-git/doc/guix.texi:25221
44737 #, no-wrap
44738 msgid "fcgiwrap"
44739 msgstr ""
44740
44741 #. type: Plain text
44742 #: guix-git/doc/guix.texi:25228
44743 msgid "FastCGI is an interface between the front-end and the back-end of a web service. It is a somewhat legacy facility; new web services should generally just talk HTTP between the front-end and the back-end. However there are a number of back-end services such as PHP or the optimized HTTP Git repository access that use FastCGI, so we have support for it in Guix."
44744 msgstr ""
44745
44746 #. type: Plain text
44747 #: guix-git/doc/guix.texi:25235
44748 msgid "To use FastCGI, you configure the front-end web server (e.g., nginx) to dispatch some subset of its requests to the fastcgi backend, which listens on a local TCP or UNIX socket. There is an intermediary @code{fcgiwrap} program that sits between the actual backend process and the web server. The front-end indicates which backend program to run, passing that information to the @code{fcgiwrap} process."
44749 msgstr ""
44750
44751 #. type: defvr
44752 #: guix-git/doc/guix.texi:25236
44753 #, no-wrap
44754 msgid "{Scheme Variable} fcgiwrap-service-type"
44755 msgstr ""
44756
44757 #. type: defvr
44758 #: guix-git/doc/guix.texi:25238
44759 msgid "A service type for the @code{fcgiwrap} FastCGI proxy."
44760 msgstr ""
44761
44762 #. type: deftp
44763 #: guix-git/doc/guix.texi:25240
44764 #, no-wrap
44765 msgid "{Data Type} fcgiwrap-configuration"
44766 msgstr ""
44767
44768 #. type: deftp
44769 #: guix-git/doc/guix.texi:25243
44770 msgid "Data type representing the configuration of the @code{fcgiwrap} service. This type has the following parameters:"
44771 msgstr ""
44772
44773 #. type: item
44774 #: guix-git/doc/guix.texi:25244
44775 #, no-wrap
44776 msgid "@code{package} (default: @code{fcgiwrap})"
44777 msgstr ""
44778
44779 #. type: table
44780 #: guix-git/doc/guix.texi:25246
44781 msgid "The fcgiwrap package to use."
44782 msgstr ""
44783
44784 #. type: item
44785 #: guix-git/doc/guix.texi:25247
44786 #, no-wrap
44787 msgid "@code{socket} (default: @code{tcp:127.0.0.1:9000})"
44788 msgstr ""
44789
44790 #. type: table
44791 #: guix-git/doc/guix.texi:25253
44792 msgid "The socket on which the @code{fcgiwrap} process should listen, as a string. Valid @var{socket} values include @code{unix:@var{/path/to/unix/socket}}, @code{tcp:@var{dot.ted.qu.ad}:@var{port}} and @code{tcp6:[@var{ipv6_addr}]:port}."
44793 msgstr ""
44794
44795 #. type: item
44796 #: guix-git/doc/guix.texi:25254
44797 #, no-wrap
44798 msgid "@code{user} (default: @code{fcgiwrap})"
44799 msgstr ""
44800
44801 #. type: itemx
44802 #: guix-git/doc/guix.texi:25255
44803 #, no-wrap
44804 msgid "@code{group} (default: @code{fcgiwrap})"
44805 msgstr ""
44806
44807 #. type: table
44808 #: guix-git/doc/guix.texi:25260
44809 msgid "The user and group names, as strings, under which to run the @code{fcgiwrap} process. The @code{fastcgi} service will ensure that if the user asks for the specific user or group names @code{fcgiwrap} that the corresponding user and/or group is present on the system."
44810 msgstr ""
44811
44812 #. type: table
44813 #: guix-git/doc/guix.texi:25267
44814 msgid "It is possible to configure a FastCGI-backed web service to pass HTTP authentication information from the front-end to the back-end, and to allow @code{fcgiwrap} to run the back-end process as a corresponding local user. To enable this capability on the back-end, run @code{fcgiwrap} as the @code{root} user and group. Note that this capability also has to be configured on the front-end as well."
44815 msgstr ""
44816
44817 #. type: cindex
44818 #: guix-git/doc/guix.texi:25270
44819 #, no-wrap
44820 msgid "php-fpm"
44821 msgstr ""
44822
44823 #. type: Plain text
44824 #: guix-git/doc/guix.texi:25273
44825 msgid "PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size."
44826 msgstr ""
44827
44828 #. type: Plain text
44829 #: guix-git/doc/guix.texi:25275
44830 msgid "These features include:"
44831 msgstr ""
44832
44833 #. type: item
44834 #: guix-git/doc/guix.texi:25276
44835 #, no-wrap
44836 msgid "Adaptive process spawning"
44837 msgstr ""
44838
44839 #. type: item
44840 #: guix-git/doc/guix.texi:25277
44841 #, no-wrap
44842 msgid "Basic statistics (similar to Apache's mod_status)"
44843 msgstr ""
44844
44845 #. type: item
44846 #: guix-git/doc/guix.texi:25278
44847 #, no-wrap
44848 msgid "Advanced process management with graceful stop/start"
44849 msgstr ""
44850
44851 #. type: item
44852 #: guix-git/doc/guix.texi:25279
44853 #, no-wrap
44854 msgid "Ability to start workers with different uid/gid/chroot/environment"
44855 msgstr ""
44856
44857 #. type: itemize
44858 #: guix-git/doc/guix.texi:25281
44859 msgid "and different php.ini (replaces safe_mode)"
44860 msgstr ""
44861
44862 #. type: item
44863 #: guix-git/doc/guix.texi:25281
44864 #, no-wrap
44865 msgid "Stdout & stderr logging"
44866 msgstr ""
44867
44868 #. type: item
44869 #: guix-git/doc/guix.texi:25282
44870 #, no-wrap
44871 msgid "Emergency restart in case of accidental opcode cache destruction"
44872 msgstr ""
44873
44874 #. type: item
44875 #: guix-git/doc/guix.texi:25283
44876 #, no-wrap
44877 msgid "Accelerated upload support"
44878 msgstr ""
44879
44880 #. type: item
44881 #: guix-git/doc/guix.texi:25284
44882 #, no-wrap
44883 msgid "Support for a \"slowlog\""
44884 msgstr ""
44885
44886 #. type: item
44887 #: guix-git/doc/guix.texi:25285
44888 #, no-wrap
44889 msgid "Enhancements to FastCGI, such as fastcgi_finish_request() -"
44890 msgstr ""
44891
44892 #. type: itemize
44893 #: guix-git/doc/guix.texi:25288
44894 msgid "a special function to finish request & flush all data while continuing to do something time-consuming (video converting, stats processing, etc.)"
44895 msgstr ""
44896
44897 #. type: Plain text
44898 #: guix-git/doc/guix.texi:25290
44899 msgid "...@: and much more."
44900 msgstr ""
44901
44902 #. type: defvr
44903 #: guix-git/doc/guix.texi:25291
44904 #, no-wrap
44905 msgid "{Scheme Variable} php-fpm-service-type"
44906 msgstr ""
44907
44908 #. type: defvr
44909 #: guix-git/doc/guix.texi:25293
44910 msgid "A Service type for @code{php-fpm}."
44911 msgstr ""
44912
44913 #. type: deftp
44914 #: guix-git/doc/guix.texi:25295
44915 #, no-wrap
44916 msgid "{Data Type} php-fpm-configuration"
44917 msgstr ""
44918
44919 #. type: deftp
44920 #: guix-git/doc/guix.texi:25297
44921 msgid "Data Type for php-fpm service configuration."
44922 msgstr ""
44923
44924 #. type: item
44925 #: guix-git/doc/guix.texi:25298
44926 #, no-wrap
44927 msgid "@code{php} (default: @code{php})"
44928 msgstr ""
44929
44930 #. type: table
44931 #: guix-git/doc/guix.texi:25300
44932 msgid "The php package to use."
44933 msgstr ""
44934
44935 #. type: item
44936 #: guix-git/doc/guix.texi:25300
44937 #, no-wrap
44938 msgid "@code{socket} (default: @code{(string-append \"/var/run/php\" (version-major (package-version php)) \"-fpm.sock\")})"
44939 msgstr ""
44940
44941 #. type: table
44942 #: guix-git/doc/guix.texi:25302
44943 msgid "The address on which to accept FastCGI requests. Valid syntaxes are:"
44944 msgstr ""
44945
44946 #. type: code{#1}
44947 #: guix-git/doc/guix.texi:25303
44948 #, no-wrap
44949 msgid "\"ip.add.re.ss:port\""
44950 msgstr ""
44951
44952 #. type: table
44953 #: guix-git/doc/guix.texi:25305
44954 msgid "Listen on a TCP socket to a specific address on a specific port."
44955 msgstr ""
44956
44957 #. type: code{#1}
44958 #: guix-git/doc/guix.texi:25305
44959 #, no-wrap
44960 msgid "\"port\""
44961 msgstr ""
44962
44963 #. type: table
44964 #: guix-git/doc/guix.texi:25307
44965 msgid "Listen on a TCP socket to all addresses on a specific port."
44966 msgstr ""
44967
44968 #. type: code{#1}
44969 #: guix-git/doc/guix.texi:25307
44970 #, no-wrap
44971 msgid "\"/path/to/unix/socket\""
44972 msgstr ""
44973
44974 #. type: table
44975 #: guix-git/doc/guix.texi:25309
44976 msgid "Listen on a unix socket."
44977 msgstr ""
44978
44979 #. type: item
44980 #: guix-git/doc/guix.texi:25311
44981 #, no-wrap
44982 msgid "@code{user} (default: @code{php-fpm})"
44983 msgstr ""
44984
44985 #. type: table
44986 #: guix-git/doc/guix.texi:25313
44987 msgid "User who will own the php worker processes."
44988 msgstr ""
44989
44990 #. type: item
44991 #: guix-git/doc/guix.texi:25313
44992 #, no-wrap
44993 msgid "@code{group} (default: @code{php-fpm})"
44994 msgstr ""
44995
44996 #. type: table
44997 #: guix-git/doc/guix.texi:25315
44998 msgid "Group of the worker processes."
44999 msgstr ""
45000
45001 #. type: item
45002 #: guix-git/doc/guix.texi:25315
45003 #, no-wrap
45004 msgid "@code{socket-user} (default: @code{php-fpm})"
45005 msgstr ""
45006
45007 #. type: table
45008 #: guix-git/doc/guix.texi:25317
45009 msgid "User who can speak to the php-fpm socket."
45010 msgstr ""
45011
45012 #. type: item
45013 #: guix-git/doc/guix.texi:25317
45014 #, no-wrap
45015 msgid "@code{socket-group} (default: @code{nginx})"
45016 msgstr ""
45017
45018 #. type: table
45019 #: guix-git/doc/guix.texi:25319
45020 msgid "Group that can speak to the php-fpm socket."
45021 msgstr ""
45022
45023 #. type: item
45024 #: guix-git/doc/guix.texi:25319
45025 #, no-wrap
45026 msgid "@code{pid-file} (default: @code{(string-append \"/var/run/php\" (version-major (package-version php)) \"-fpm.pid\")})"
45027 msgstr ""
45028
45029 #. type: table
45030 #: guix-git/doc/guix.texi:25322
45031 msgid "The process id of the php-fpm process is written to this file once the service has started."
45032 msgstr ""
45033
45034 #. type: item
45035 #: guix-git/doc/guix.texi:25322
45036 #, no-wrap
45037 msgid "@code{log-file} (default: @code{(string-append \"/var/log/php\" (version-major (package-version php)) \"-fpm.log\")})"
45038 msgstr ""
45039
45040 #. type: table
45041 #: guix-git/doc/guix.texi:25324
45042 msgid "Log for the php-fpm master process."
45043 msgstr ""
45044
45045 #. type: item
45046 #: guix-git/doc/guix.texi:25324
45047 #, no-wrap
45048 msgid "@code{process-manager} (default: @code{(php-fpm-dynamic-process-manager-configuration)})"
45049 msgstr ""
45050
45051 #. type: table
45052 #: guix-git/doc/guix.texi:25327
45053 msgid "Detailed settings for the php-fpm process manager. Must be one of:"
45054 msgstr ""
45055
45056 #. type: code{#1}
45057 #: guix-git/doc/guix.texi:25328
45058 #, no-wrap
45059 msgid "<php-fpm-dynamic-process-manager-configuration>"
45060 msgstr ""
45061
45062 #. type: code{#1}
45063 #: guix-git/doc/guix.texi:25329
45064 #, no-wrap
45065 msgid "<php-fpm-static-process-manager-configuration>"
45066 msgstr ""
45067
45068 #. type: code{#1}
45069 #: guix-git/doc/guix.texi:25330
45070 #, no-wrap
45071 msgid "<php-fpm-on-demand-process-manager-configuration>"
45072 msgstr ""
45073
45074 #. type: item
45075 #: guix-git/doc/guix.texi:25332
45076 #, no-wrap
45077 msgid "@code{display-errors} (default @code{#f})"
45078 msgstr ""
45079
45080 #. type: table
45081 #: guix-git/doc/guix.texi:25337
45082 msgid "Determines whether php errors and warning should be sent to clients and displayed in their browsers. This is useful for local php development, but a security risk for public sites, as error messages can reveal passwords and personal data."
45083 msgstr ""
45084
45085 #. type: item
45086 #: guix-git/doc/guix.texi:25337
45087 #, no-wrap
45088 msgid "@code{timezone} (default @code{#f})"
45089 msgstr ""
45090
45091 #. type: table
45092 #: guix-git/doc/guix.texi:25339
45093 msgid "Specifies @code{php_admin_value[date.timezone]} parameter."
45094 msgstr ""
45095
45096 #. type: item
45097 #: guix-git/doc/guix.texi:25339
45098 #, no-wrap
45099 msgid "@code{workers-logfile} (default @code{(string-append \"/var/log/php\" (version-major (package-version php)) \"-fpm.www.log\")})"
45100 msgstr ""
45101
45102 #. type: table
45103 #: guix-git/doc/guix.texi:25342
45104 msgid "This file will log the @code{stderr} outputs of php worker processes. Can be set to @code{#f} to disable logging."
45105 msgstr ""
45106
45107 #. type: item
45108 #: guix-git/doc/guix.texi:25342
45109 #, no-wrap
45110 msgid "@code{file} (default @code{#f})"
45111 msgstr ""
45112
45113 #. type: table
45114 #: guix-git/doc/guix.texi:25345
45115 msgid "An optional override of the whole configuration. You can use the @code{mixed-text-file} function or an absolute filepath for it."
45116 msgstr ""
45117
45118 #. type: item
45119 #: guix-git/doc/guix.texi:25345
45120 #, no-wrap
45121 msgid "@code{php-ini-file} (default @code{#f})"
45122 msgstr ""
45123
45124 #. type: table
45125 #: guix-git/doc/guix.texi:25349
45126 msgid "An optional override of the default php settings. It may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}). You can use the @code{mixed-text-file} function or an absolute filepath for it."
45127 msgstr ""
45128
45129 #. type: table
45130 #: guix-git/doc/guix.texi:25353
45131 msgid "For local development it is useful to set a higher timeout and memory limit for spawned php processes. This be accomplished with the following operating system configuration snippet:"
45132 msgstr ""
45133
45134 #. type: lisp
45135 #: guix-git/doc/guix.texi:25358
45136 #, no-wrap
45137 msgid ""
45138 "(define %local-php-ini\n"
45139 " (plain-file \"php.ini\"\n"
45140 " \"memory_limit = 2G\n"
45141 "max_execution_time = 1800\"))\n"
45142 "\n"
45143 msgstr ""
45144
45145 #. type: lisp
45146 #: guix-git/doc/guix.texi:25365
45147 #, no-wrap
45148 msgid ""
45149 "(operating-system\n"
45150 " ;; @dots{}\n"
45151 " (services (cons (service php-fpm-service-type\n"
45152 " (php-fpm-configuration\n"
45153 " (php-ini-file %local-php-ini)))\n"
45154 " %base-services)))\n"
45155 msgstr ""
45156
45157 #. type: table
45158 #: guix-git/doc/guix.texi:25370
45159 msgid "Consult the @url{https://www.php.net/manual/en/ini.core.php,core php.ini directives} for comprehensive documentation on the acceptable @file{php.ini} directives."
45160 msgstr ""
45161
45162 #. type: deftp
45163 #: guix-git/doc/guix.texi:25373
45164 #, no-wrap
45165 msgid "{Data type} php-fpm-dynamic-process-manager-configuration"
45166 msgstr ""
45167
45168 #. type: deftp
45169 #: guix-git/doc/guix.texi:25377
45170 msgid "Data Type for the @code{dynamic} php-fpm process manager. With the @code{dynamic} process manager, spare worker processes are kept around based on it's configured limits."
45171 msgstr ""
45172
45173 #. type: item
45174 #: guix-git/doc/guix.texi:25378 guix-git/doc/guix.texi:25394
45175 #: guix-git/doc/guix.texi:25404
45176 #, no-wrap
45177 msgid "@code{max-children} (default: @code{5})"
45178 msgstr ""
45179
45180 #. type: table
45181 #: guix-git/doc/guix.texi:25380 guix-git/doc/guix.texi:25396
45182 #: guix-git/doc/guix.texi:25406
45183 msgid "Maximum of worker processes."
45184 msgstr ""
45185
45186 #. type: item
45187 #: guix-git/doc/guix.texi:25380
45188 #, no-wrap
45189 msgid "@code{start-servers} (default: @code{2})"
45190 msgstr ""
45191
45192 #. type: table
45193 #: guix-git/doc/guix.texi:25382
45194 msgid "How many worker processes should be started on start-up."
45195 msgstr ""
45196
45197 #. type: item
45198 #: guix-git/doc/guix.texi:25382
45199 #, no-wrap
45200 msgid "@code{min-spare-servers} (default: @code{1})"
45201 msgstr ""
45202
45203 #. type: table
45204 #: guix-git/doc/guix.texi:25384
45205 msgid "How many spare worker processes should be kept around at minimum."
45206 msgstr ""
45207
45208 #. type: item
45209 #: guix-git/doc/guix.texi:25384
45210 #, no-wrap
45211 msgid "@code{max-spare-servers} (default: @code{3})"
45212 msgstr ""
45213
45214 #. type: table
45215 #: guix-git/doc/guix.texi:25386
45216 msgid "How many spare worker processes should be kept around at maximum."
45217 msgstr ""
45218
45219 #. type: deftp
45220 #: guix-git/doc/guix.texi:25389
45221 #, no-wrap
45222 msgid "{Data type} php-fpm-static-process-manager-configuration"
45223 msgstr ""
45224
45225 #. type: deftp
45226 #: guix-git/doc/guix.texi:25393
45227 msgid "Data Type for the @code{static} php-fpm process manager. With the @code{static} process manager, an unchanging number of worker processes are created."
45228 msgstr ""
45229
45230 #. type: deftp
45231 #: guix-git/doc/guix.texi:25399
45232 #, no-wrap
45233 msgid "{Data type} php-fpm-on-demand-process-manager-configuration"
45234 msgstr ""
45235
45236 #. type: deftp
45237 #: guix-git/doc/guix.texi:25403
45238 msgid "Data Type for the @code{on-demand} php-fpm process manager. With the @code{on-demand} process manager, worker processes are only created as requests arrive."
45239 msgstr ""
45240
45241 #. type: item
45242 #: guix-git/doc/guix.texi:25406
45243 #, no-wrap
45244 msgid "@code{process-idle-timeout} (default: @code{10})"
45245 msgstr ""
45246
45247 #. type: table
45248 #: guix-git/doc/guix.texi:25408
45249 msgid "The time in seconds after which a process with no requests is killed."
45250 msgstr ""
45251
45252 #. type: deffn
45253 #: guix-git/doc/guix.texi:25412
45254 #, no-wrap
45255 msgid "{Scheme Procedure} nginx-php-location @"
45256 msgstr ""
45257
45258 #. type: deffn
45259 #: guix-git/doc/guix.texi:25418
45260 msgid "[#:nginx-package nginx] @ [socket (string-append \"/var/run/php\" @ (version-major (package-version php)) @ \"-fpm.sock\")] A helper function to quickly add php to an @code{nginx-server-configuration}."
45261 msgstr ""
45262
45263 #. type: Plain text
45264 #: guix-git/doc/guix.texi:25421
45265 msgid "A simple services setup for nginx with php can look like this:"
45266 msgstr ""
45267
45268 #. type: lisp
45269 #: guix-git/doc/guix.texi:25434
45270 #, no-wrap
45271 msgid ""
45272 "(services (cons* (service dhcp-client-service-type)\n"
45273 " (service php-fpm-service-type)\n"
45274 " (service nginx-service-type\n"
45275 " (nginx-server-configuration\n"
45276 " (server-name '(\"example.com\"))\n"
45277 " (root \"/srv/http/\")\n"
45278 " (locations\n"
45279 " (list (nginx-php-location)))\n"
45280 " (listen '(\"80\"))\n"
45281 " (ssl-certificate #f)\n"
45282 " (ssl-certificate-key #f)))\n"
45283 " %base-services))\n"
45284 msgstr ""
45285
45286 #. type: cindex
45287 #: guix-git/doc/guix.texi:25436
45288 #, no-wrap
45289 msgid "cat-avatar-generator"
45290 msgstr ""
45291
45292 #. type: Plain text
45293 #: guix-git/doc/guix.texi:25440
45294 msgid "The cat avatar generator is a simple service to demonstrate the use of php-fpm in @code{Nginx}. It is used to generate cat avatar from a seed, for instance the hash of a user's email address."
45295 msgstr ""
45296
45297 #. type: deffn
45298 #: guix-git/doc/guix.texi:25441
45299 #, no-wrap
45300 msgid "{Scheme Procedure} cat-avatar-generator-service @"
45301 msgstr ""
45302
45303 #. type: deffn
45304 #: guix-git/doc/guix.texi:25449
45305 msgid "[#:cache-dir \"/var/cache/cat-avatar-generator\"] @ [#:package cat-avatar-generator] @ [#:configuration (nginx-server-configuration)] Returns an nginx-server-configuration that inherits @code{configuration}. It extends the nginx configuration to add a server block that serves @code{package}, a version of cat-avatar-generator. During execution, cat-avatar-generator will be able to use @code{cache-dir} as its cache directory."
45306 msgstr ""
45307
45308 #. type: Plain text
45309 #: guix-git/doc/guix.texi:25452
45310 msgid "A simple setup for cat-avatar-generator can look like this:"
45311 msgstr ""
45312
45313 #. type: lisp
45314 #: guix-git/doc/guix.texi:25459
45315 #, no-wrap
45316 msgid ""
45317 "(services (cons* (cat-avatar-generator-service\n"
45318 " #:configuration\n"
45319 " (nginx-server-configuration\n"
45320 " (server-name '(\"example.com\"))))\n"
45321 " ...\n"
45322 " %base-services))\n"
45323 msgstr ""
45324
45325 #. type: subsubheading
45326 #: guix-git/doc/guix.texi:25461
45327 #, no-wrap
45328 msgid "Hpcguix-web"
45329 msgstr ""
45330
45331 #. type: cindex
45332 #: guix-git/doc/guix.texi:25463
45333 #, no-wrap
45334 msgid "hpcguix-web"
45335 msgstr ""
45336
45337 #. type: Plain text
45338 #: guix-git/doc/guix.texi:25468
45339 msgid "The @uref{https://github.com/UMCUGenetics/hpcguix-web/, hpcguix-web} program is a customizable web interface to browse Guix packages, initially designed for users of high-performance computing (HPC) clusters."
45340 msgstr ""
45341
45342 #. type: defvr
45343 #: guix-git/doc/guix.texi:25469
45344 #, no-wrap
45345 msgid "{Scheme Variable} hpcguix-web-service-type"
45346 msgstr ""
45347
45348 #. type: defvr
45349 #: guix-git/doc/guix.texi:25471
45350 msgid "The service type for @code{hpcguix-web}."
45351 msgstr ""
45352
45353 #. type: deftp
45354 #: guix-git/doc/guix.texi:25473
45355 #, no-wrap
45356 msgid "{Data Type} hpcguix-web-configuration"
45357 msgstr ""
45358
45359 #. type: deftp
45360 #: guix-git/doc/guix.texi:25475
45361 msgid "Data type for the hpcguix-web service configuration."
45362 msgstr ""
45363
45364 #. type: code{#1}
45365 #: guix-git/doc/guix.texi:25477
45366 #, no-wrap
45367 msgid "specs"
45368 msgstr ""
45369
45370 #. type: table
45371 #: guix-git/doc/guix.texi:25480
45372 msgid "A gexp (@pxref{G-Expressions}) specifying the hpcguix-web service configuration. The main items available in this spec are:"
45373 msgstr ""
45374
45375 #. type: item
45376 #: guix-git/doc/guix.texi:25482
45377 #, no-wrap
45378 msgid "@code{title-prefix} (default: @code{\"hpcguix | \"})"
45379 msgstr ""
45380
45381 #. type: table
45382 #: guix-git/doc/guix.texi:25484
45383 msgid "The page title prefix."
45384 msgstr ""
45385
45386 #. type: item
45387 #: guix-git/doc/guix.texi:25485
45388 #, no-wrap
45389 msgid "@code{guix-command} (default: @code{\"guix\"})"
45390 msgstr ""
45391
45392 #. type: table
45393 #: guix-git/doc/guix.texi:25487
45394 msgid "The @command{guix} command."
45395 msgstr ""
45396
45397 #. type: item
45398 #: guix-git/doc/guix.texi:25488
45399 #, no-wrap
45400 msgid "@code{package-filter-proc} (default: @code{(const #t)})"
45401 msgstr ""
45402
45403 #. type: table
45404 #: guix-git/doc/guix.texi:25490
45405 msgid "A procedure specifying how to filter packages that are displayed."
45406 msgstr ""
45407
45408 #. type: item
45409 #: guix-git/doc/guix.texi:25491
45410 #, no-wrap
45411 msgid "@code{package-page-extension-proc} (default: @code{(const '())})"
45412 msgstr ""
45413
45414 #. type: table
45415 #: guix-git/doc/guix.texi:25493
45416 msgid "Extension package for @code{hpcguix-web}."
45417 msgstr ""
45418
45419 #. type: item
45420 #: guix-git/doc/guix.texi:25494
45421 #, no-wrap
45422 msgid "@code{menu} (default: @code{'()})"
45423 msgstr ""
45424
45425 #. type: table
45426 #: guix-git/doc/guix.texi:25496
45427 msgid "Additional entry in page @code{menu}."
45428 msgstr ""
45429
45430 #. type: item
45431 #: guix-git/doc/guix.texi:25497
45432 #, no-wrap
45433 msgid "@code{channels} (default: @code{%default-channels})"
45434 msgstr ""
45435
45436 #. type: table
45437 #: guix-git/doc/guix.texi:25499
45438 msgid "List of channels from which the package list is built (@pxref{Channels})."
45439 msgstr ""
45440
45441 #. type: item
45442 #: guix-git/doc/guix.texi:25500
45443 #, no-wrap
45444 msgid "@code{package-list-expiration} (default: @code{(* 12 3600)})"
45445 msgstr ""
45446
45447 #. type: table
45448 #: guix-git/doc/guix.texi:25503
45449 msgid "The expiration time, in seconds, after which the package list is rebuilt from the latest instances of the given channels."
45450 msgstr ""
45451
45452 #. type: table
45453 #: guix-git/doc/guix.texi:25508
45454 msgid "See the hpcguix-web repository for a @uref{https://github.com/UMCUGenetics/hpcguix-web/blob/master/hpcweb-configuration.scm, complete example}."
45455 msgstr ""
45456
45457 #. type: item
45458 #: guix-git/doc/guix.texi:25509
45459 #, no-wrap
45460 msgid "@code{package} (default: @code{hpcguix-web})"
45461 msgstr ""
45462
45463 #. type: table
45464 #: guix-git/doc/guix.texi:25511
45465 msgid "The hpcguix-web package to use."
45466 msgstr ""
45467
45468 #. type: Plain text
45469 #: guix-git/doc/guix.texi:25515
45470 msgid "A typical hpcguix-web service declaration looks like this:"
45471 msgstr ""
45472
45473 #. type: lisp
45474 #: guix-git/doc/guix.texi:25524
45475 #, no-wrap
45476 msgid ""
45477 "(service hpcguix-web-service-type\n"
45478 " (hpcguix-web-configuration\n"
45479 " (specs\n"
45480 " #~(define site-config\n"
45481 " (hpcweb-configuration\n"
45482 " (title-prefix \"Guix-HPC - \")\n"
45483 " (menu '((\"/about\" \"ABOUT\"))))))))\n"
45484 msgstr ""
45485
45486 #. type: quotation
45487 #: guix-git/doc/guix.texi:25531
45488 msgid "The hpcguix-web service periodically updates the package list it publishes by pulling channels from Git. To that end, it needs to access X.509 certificates so that it can authenticate Git servers when communicating over HTTPS, and it assumes that @file{/etc/ssl/certs} contains those certificates."
45489 msgstr ""
45490
45491 #. type: quotation
45492 #: guix-git/doc/guix.texi:25535
45493 msgid "Thus, make sure to add @code{nss-certs} or another certificate package to the @code{packages} field of your configuration. @ref{X.509 Certificates}, for more information on X.509 certificates."
45494 msgstr ""
45495
45496 #. type: cindex
45497 #: guix-git/doc/guix.texi:25537 guix-git/doc/guix.texi:25539
45498 #, no-wrap
45499 msgid "gmnisrv"
45500 msgstr ""
45501
45502 #. type: Plain text
45503 #: guix-git/doc/guix.texi:25542
45504 msgid "The @uref{https://git.sr.ht/~sircmpwn/gmnisrv, gmnisrv} program is a simple @uref{https://gemini.circumlunar.space/, Gemini} protocol server."
45505 msgstr ""
45506
45507 #. type: deffn
45508 #: guix-git/doc/guix.texi:25543
45509 #, no-wrap
45510 msgid "{Scheme Variable} gmnisrv-service-type"
45511 msgstr ""
45512
45513 #. type: deffn
45514 #: guix-git/doc/guix.texi:25546
45515 msgid "This is the type of the gmnisrv service, whose value should be a @code{gmnisrv-configuration} object, as in this example:"
45516 msgstr ""
45517
45518 #. type: lisp
45519 #: guix-git/doc/guix.texi:25551
45520 #, no-wrap
45521 msgid ""
45522 "(service gmnisrv-service-type\n"
45523 " (gmnisrv-configuration\n"
45524 " (config-file (local-file \"./my-gmnisrv.ini\"))))\n"
45525 msgstr ""
45526
45527 #. type: deftp
45528 #: guix-git/doc/guix.texi:25554
45529 #, no-wrap
45530 msgid "{Data Type} gmnisrv-configuration"
45531 msgstr ""
45532
45533 #. type: deftp
45534 #: guix-git/doc/guix.texi:25556
45535 msgid "Data type representing the configuration of gmnisrv."
45536 msgstr ""
45537
45538 #. type: item
45539 #: guix-git/doc/guix.texi:25558
45540 #, no-wrap
45541 msgid "@code{package} (default: @var{gmnisrv})"
45542 msgstr ""
45543
45544 #. type: table
45545 #: guix-git/doc/guix.texi:25560
45546 msgid "Package object of the gmnisrv server."
45547 msgstr ""
45548
45549 #. type: item
45550 #: guix-git/doc/guix.texi:25561
45551 #, no-wrap
45552 msgid "@code{config-file} (default: @code{%default-gmnisrv-config-file})"
45553 msgstr ""
45554
45555 #. type: table
45556 #: guix-git/doc/guix.texi:25567
45557 msgid "File-like object of the gmnisrv configuration file to use. The default configuration listens on port 1965 and serves files from @file{/srv/gemini}. Certificates are stored in @file{/var/lib/gemini/certs}. For more information, run @command{man gmnisrv} and @command{man gmnisrv.ini}."
45558 msgstr ""
45559
45560 #. type: subsubheading
45561 #: guix-git/doc/guix.texi:25571
45562 #, no-wrap
45563 msgid "Agate"
45564 msgstr ""
45565
45566 #. type: cindex
45567 #: guix-git/doc/guix.texi:25573
45568 #, no-wrap
45569 msgid "agate"
45570 msgstr ""
45571
45572 #. type: Plain text
45573 #: guix-git/doc/guix.texi:25578
45574 msgid "The @uref{gemini://qwertqwefsday.eu/agate.gmi, Agate} (@uref{https://github.com/mbrubeck/agate, GitHub page over HTTPS}) program is a simple @uref{https://gemini.circumlunar.space/, Gemini} protocol server written in Rust."
45575 msgstr ""
45576
45577 #. type: deffn
45578 #: guix-git/doc/guix.texi:25579
45579 #, no-wrap
45580 msgid "{Scheme Variable} agate-service-type"
45581 msgstr ""
45582
45583 #. type: deffn
45584 #: guix-git/doc/guix.texi:25582
45585 msgid "This is the type of the agate service, whose value should be an @code{agate-service-type} object, as in this example:"
45586 msgstr ""
45587
45588 #. type: lisp
45589 #: guix-git/doc/guix.texi:25589
45590 #, no-wrap
45591 msgid ""
45592 "(service agate-service-type\n"
45593 "\t (agate-configuration\n"
45594 "\t (content \"/srv/gemini\")\n"
45595 "\t (cert \"/srv/cert.pem\")\n"
45596 "\t (key \"/srv/key.rsa\")))\n"
45597 msgstr ""
45598
45599 #. type: deffn
45600 #: guix-git/doc/guix.texi:25594
45601 msgid "The example above represents the minimal tweaking necessary to get Agate up and running. Specifying the path to the certificate and key is always necessary, as the Gemini protocol requires TLS by default."
45602 msgstr ""
45603
45604 #. type: deffn
45605 #: guix-git/doc/guix.texi:25597
45606 msgid "To obtain a certificate and a key, you could, for example, use OpenSSL, running a command similar to the following example:"
45607 msgstr ""
45608
45609 #. type: example
45610 #: guix-git/doc/guix.texi:25601
45611 #, no-wrap
45612 msgid ""
45613 "openssl req -x509 -newkey rsa:4096 -keyout key.rsa -out cert.pem \\\n"
45614 " -days 3650 -nodes -subj \"/CN=example.com\"\n"
45615 msgstr ""
45616
45617 #. type: deffn
45618 #: guix-git/doc/guix.texi:25606
45619 msgid "Of course, you'll have to replace @i{example.com} with your own domain name, and then point the Agate configuration towards the path of the generated key and certificate."
45620 msgstr ""
45621
45622 #. type: deftp
45623 #: guix-git/doc/guix.texi:25609
45624 #, no-wrap
45625 msgid "{Data Type} agate-configuration"
45626 msgstr ""
45627
45628 #. type: deftp
45629 #: guix-git/doc/guix.texi:25611
45630 msgid "Data type representing the configuration of Agate."
45631 msgstr ""
45632
45633 #. type: item
45634 #: guix-git/doc/guix.texi:25613
45635 #, no-wrap
45636 msgid "@code{package} (default: @code{agate})"
45637 msgstr ""
45638
45639 #. type: table
45640 #: guix-git/doc/guix.texi:25615
45641 msgid "The package object of the Agate server."
45642 msgstr ""
45643
45644 #. type: item
45645 #: guix-git/doc/guix.texi:25616
45646 #, no-wrap
45647 msgid "@code{content} (default: @file{\"/srv/gemini\"})"
45648 msgstr ""
45649
45650 #. type: table
45651 #: guix-git/doc/guix.texi:25618
45652 msgid "The directory from which Agate will serve files."
45653 msgstr ""
45654
45655 #. type: item
45656 #: guix-git/doc/guix.texi:25619
45657 #, no-wrap
45658 msgid "@code{cert} (default: @code{#f})"
45659 msgstr ""
45660
45661 #. type: table
45662 #: guix-git/doc/guix.texi:25622
45663 msgid "The path to the TLS certificate PEM file to be used for encrypted connections. Must be filled in with a value from the user."
45664 msgstr ""
45665
45666 #. type: item
45667 #: guix-git/doc/guix.texi:25623 guix-git/doc/guix.texi:26051
45668 #, no-wrap
45669 msgid "@code{key} (default: @code{#f})"
45670 msgstr ""
45671
45672 #. type: table
45673 #: guix-git/doc/guix.texi:25626
45674 msgid "The path to the PKCS8 private key file to be used for encrypted connections. Must be filled in with a value from the user."
45675 msgstr ""
45676
45677 #. type: item
45678 #: guix-git/doc/guix.texi:25627
45679 #, no-wrap
45680 msgid "@code{addr} (default: @code{'(\"0.0.0.0:1965\" \"[::]:1965\")})"
45681 msgstr ""
45682
45683 #. type: table
45684 #: guix-git/doc/guix.texi:25629
45685 msgid "A list of the addresses to listen on."
45686 msgstr ""
45687
45688 #. type: table
45689 #: guix-git/doc/guix.texi:25632
45690 msgid "The domain name of this Gemini server. Optional."
45691 msgstr ""
45692
45693 #. type: item
45694 #: guix-git/doc/guix.texi:25633
45695 #, no-wrap
45696 msgid "@code{lang} (default: @code{#f})"
45697 msgstr ""
45698
45699 #. type: table
45700 #: guix-git/doc/guix.texi:25635
45701 msgid "RFC 4646 language code(s) for text/gemini documents. Optional."
45702 msgstr ""
45703
45704 #. type: item
45705 #: guix-git/doc/guix.texi:25636
45706 #, no-wrap
45707 msgid "@code{silent?} (default: @code{#f})"
45708 msgstr ""
45709
45710 #. type: table
45711 #: guix-git/doc/guix.texi:25638
45712 msgid "Set to @code{#t} to disable logging output."
45713 msgstr ""
45714
45715 #. type: item
45716 #: guix-git/doc/guix.texi:25639
45717 #, no-wrap
45718 msgid "@code{serve-secret?} (default: @code{#f})"
45719 msgstr ""
45720
45721 #. type: table
45722 #: guix-git/doc/guix.texi:25642
45723 msgid "Set to @code{#t} to serve secret files (files/directories starting with a dot)."
45724 msgstr ""
45725
45726 #. type: item
45727 #: guix-git/doc/guix.texi:25643
45728 #, no-wrap
45729 msgid "@code{log-ip?} (default: @code{#t})"
45730 msgstr ""
45731
45732 #. type: table
45733 #: guix-git/doc/guix.texi:25645
45734 msgid "Whether or not to output IP addresses when logging."
45735 msgstr ""
45736
45737 #. type: item
45738 #: guix-git/doc/guix.texi:25646
45739 #, no-wrap
45740 msgid "@code{user} (default: @code{\"agate\"})"
45741 msgstr ""
45742
45743 #. type: table
45744 #: guix-git/doc/guix.texi:25648
45745 msgid "Owner of the @code{agate} process."
45746 msgstr ""
45747
45748 #. type: item
45749 #: guix-git/doc/guix.texi:25649
45750 #, no-wrap
45751 msgid "@code{group} (default: @code{\"agate\"})"
45752 msgstr ""
45753
45754 #. type: table
45755 #: guix-git/doc/guix.texi:25651
45756 msgid "Owner's group of the @code{agate} process."
45757 msgstr ""
45758
45759 #. type: item
45760 #: guix-git/doc/guix.texi:25652
45761 #, no-wrap
45762 msgid "@code{log-file} (default: @file{\"/var/log/agate.log\"})"
45763 msgstr ""
45764
45765 #. type: table
45766 #: guix-git/doc/guix.texi:25654
45767 msgid "The file which should store the logging output of Agate."
45768 msgstr ""
45769
45770 #. type: cindex
45771 #: guix-git/doc/guix.texi:25661
45772 #, no-wrap
45773 msgid "Web"
45774 msgstr ""
45775
45776 #. type: cindex
45777 #: guix-git/doc/guix.texi:25662
45778 #, no-wrap
45779 msgid "HTTP, HTTPS"
45780 msgstr ""
45781
45782 #. type: cindex
45783 #: guix-git/doc/guix.texi:25663
45784 #, no-wrap
45785 msgid "Let's Encrypt"
45786 msgstr ""
45787
45788 #. type: cindex
45789 #: guix-git/doc/guix.texi:25664
45790 #, no-wrap
45791 msgid "TLS certificates"
45792 msgstr ""
45793
45794 #. type: Plain text
45795 #: guix-git/doc/guix.texi:25671
45796 msgid "The @code{(gnu services certbot)} module provides a service to automatically obtain a valid TLS certificate from the Let's Encrypt certificate authority. These certificates can then be used to serve content securely over HTTPS or other TLS-based protocols, with the knowledge that the client will be able to verify the server's authenticity."
45797 msgstr ""
45798
45799 #. type: Plain text
45800 #: guix-git/doc/guix.texi:25683
45801 msgid "@url{https://letsencrypt.org/, Let's Encrypt} provides the @code{certbot} tool to automate the certification process. This tool first securely generates a key on the server. It then makes a request to the Let's Encrypt certificate authority (CA) to sign the key. The CA checks that the request originates from the host in question by using a challenge-response protocol, requiring the server to provide its response over HTTP@. If that protocol completes successfully, the CA signs the key, resulting in a certificate. That certificate is valid for a limited period of time, and therefore to continue to provide TLS services, the server needs to periodically ask the CA to renew its signature."
45802 msgstr ""
45803
45804 #. type: Plain text
45805 #: guix-git/doc/guix.texi:25690
45806 msgid "The certbot service automates this process: the initial key generation, the initial certification request to the Let's Encrypt service, the web server challenge/response integration, writing the certificate to disk, the automated periodic renewals, and the deployment tasks associated with the renewal (e.g.@: reloading services, copying keys with different permissions)."
45807 msgstr ""
45808
45809 #. type: Plain text
45810 #: guix-git/doc/guix.texi:25696
45811 msgid "Certbot is run twice a day, at a random minute within the hour. It won't do anything until your certificates are due for renewal or revoked, but running it regularly would give your service a chance of staying online in case a Let's Encrypt-initiated revocation happened for some reason."
45812 msgstr ""
45813
45814 #. type: Plain text
45815 #: guix-git/doc/guix.texi:25700
45816 msgid "By using this service, you agree to the ACME Subscriber Agreement, which can be found there: @url{https://acme-v01.api.letsencrypt.org/directory}."
45817 msgstr ""
45818
45819 #. type: defvr
45820 #: guix-git/doc/guix.texi:25701
45821 #, no-wrap
45822 msgid "{Scheme Variable} certbot-service-type"
45823 msgstr ""
45824
45825 #. type: defvr
45826 #: guix-git/doc/guix.texi:25704
45827 msgid "A service type for the @code{certbot} Let's Encrypt client. Its value must be a @code{certbot-configuration} record as in this example:"
45828 msgstr ""
45829
45830 #. type: lisp
45831 #: guix-git/doc/guix.texi:25711
45832 #, no-wrap
45833 msgid ""
45834 "(define %nginx-deploy-hook\n"
45835 " (program-file\n"
45836 " \"nginx-deploy-hook\"\n"
45837 " #~(let ((pid (call-with-input-file \"/var/run/nginx/pid\" read)))\n"
45838 " (kill pid SIGHUP))))\n"
45839 "\n"
45840 msgstr ""
45841
45842 #. type: lisp
45843 #: guix-git/doc/guix.texi:25722
45844 #, no-wrap
45845 msgid ""
45846 "(service certbot-service-type\n"
45847 " (certbot-configuration\n"
45848 " (email \"foo@@example.net\")\n"
45849 " (certificates\n"
45850 " (list\n"
45851 " (certificate-configuration\n"
45852 " (domains '(\"example.net\" \"www.example.net\"))\n"
45853 " (deploy-hook %nginx-deploy-hook))\n"
45854 " (certificate-configuration\n"
45855 " (domains '(\"bar.example.net\")))))))\n"
45856 msgstr ""
45857
45858 #. type: defvr
45859 #: guix-git/doc/guix.texi:25725
45860 msgid "See below for details about @code{certbot-configuration}."
45861 msgstr ""
45862
45863 #. type: deftp
45864 #: guix-git/doc/guix.texi:25727
45865 #, no-wrap
45866 msgid "{Data Type} certbot-configuration"
45867 msgstr ""
45868
45869 #. type: deftp
45870 #: guix-git/doc/guix.texi:25730
45871 msgid "Data type representing the configuration of the @code{certbot} service. This type has the following parameters:"
45872 msgstr ""
45873
45874 #. type: item
45875 #: guix-git/doc/guix.texi:25732
45876 #, no-wrap
45877 msgid "@code{package} (default: @code{certbot})"
45878 msgstr ""
45879
45880 #. type: table
45881 #: guix-git/doc/guix.texi:25734
45882 msgid "The certbot package to use."
45883 msgstr ""
45884
45885 #. type: item
45886 #: guix-git/doc/guix.texi:25735
45887 #, no-wrap
45888 msgid "@code{webroot} (default: @code{/var/www})"
45889 msgstr ""
45890
45891 #. type: table
45892 #: guix-git/doc/guix.texi:25738
45893 msgid "The directory from which to serve the Let's Encrypt challenge/response files."
45894 msgstr ""
45895
45896 #. type: item
45897 #: guix-git/doc/guix.texi:25739
45898 #, no-wrap
45899 msgid "@code{certificates} (default: @code{()})"
45900 msgstr ""
45901
45902 #. type: table
45903 #: guix-git/doc/guix.texi:25743
45904 msgid "A list of @code{certificates-configuration}s for which to generate certificates and request signatures. Each certificate has a @code{name} and several @code{domains}."
45905 msgstr ""
45906
45907 #. type: item
45908 #: guix-git/doc/guix.texi:25744
45909 #, no-wrap
45910 msgid "@code{email} (default: @code{#f})"
45911 msgstr ""
45912
45913 #. type: table
45914 #: guix-git/doc/guix.texi:25748
45915 msgid "Optional email address used for registration and recovery contact. Setting this is encouraged as it allows you to receive important notifications about the account and issued certificates."
45916 msgstr ""
45917
45918 #. type: item
45919 #: guix-git/doc/guix.texi:25749 guix-git/doc/guix.texi:27429
45920 #, no-wrap
45921 msgid "@code{server} (default: @code{#f})"
45922 msgstr ""
45923
45924 #. type: table
45925 #: guix-git/doc/guix.texi:25752
45926 msgid "Optional URL of ACME server. Setting this overrides certbot's default, which is the Let's Encrypt server."
45927 msgstr ""
45928
45929 #. type: item
45930 #: guix-git/doc/guix.texi:25753
45931 #, no-wrap
45932 msgid "@code{rsa-key-size} (default: @code{2048})"
45933 msgstr ""
45934
45935 #. type: table
45936 #: guix-git/doc/guix.texi:25755
45937 msgid "Size of the RSA key."
45938 msgstr ""
45939
45940 #. type: item
45941 #: guix-git/doc/guix.texi:25756
45942 #, no-wrap
45943 msgid "@code{default-location} (default: @i{see below})"
45944 msgstr ""
45945
45946 #. type: table
45947 #: guix-git/doc/guix.texi:25765
45948 msgid "The default @code{nginx-location-configuration}. Because @code{certbot} needs to be able to serve challenges and responses, it needs to be able to run a web server. It does so by extending the @code{nginx} web service with an @code{nginx-server-configuration} listening on the @var{domains} on port 80, and which has a @code{nginx-location-configuration} for the @code{/.well-known/} URI path subspace used by Let's Encrypt. @xref{Web Services}, for more on these nginx configuration data types."
45949 msgstr ""
45950
45951 #. type: table
45952 #: guix-git/doc/guix.texi:25769
45953 msgid "Requests to other URL paths will be matched by the @code{default-location}, which if present is added to all @code{nginx-server-configuration}s."
45954 msgstr ""
45955
45956 #. type: table
45957 #: guix-git/doc/guix.texi:25773
45958 msgid "By default, the @code{default-location} will issue a redirect from @code{http://@var{domain}/...} to @code{https://@var{domain}/...}, leaving you to define what to serve on your site via @code{https}."
45959 msgstr ""
45960
45961 #. type: table
45962 #: guix-git/doc/guix.texi:25775
45963 msgid "Pass @code{#f} to not issue a default location."
45964 msgstr ""
45965
45966 #. type: deftp
45967 #: guix-git/doc/guix.texi:25778
45968 #, no-wrap
45969 msgid "{Data Type} certificate-configuration"
45970 msgstr ""
45971
45972 #. type: deftp
45973 #: guix-git/doc/guix.texi:25781
45974 msgid "Data type representing the configuration of a certificate. This type has the following parameters:"
45975 msgstr ""
45976
45977 #. type: item
45978 #: guix-git/doc/guix.texi:25783
45979 #, no-wrap
45980 msgid "@code{name} (default: @i{see below})"
45981 msgstr ""
45982
45983 #. type: table
45984 #: guix-git/doc/guix.texi:25787
45985 msgid "This name is used by Certbot for housekeeping and in file paths; it doesn't affect the content of the certificate itself. To see certificate names, run @code{certbot certificates}."
45986 msgstr ""
45987
45988 #. type: table
45989 #: guix-git/doc/guix.texi:25789
45990 msgid "Its default is the first provided domain."
45991 msgstr ""
45992
45993 #. type: item
45994 #: guix-git/doc/guix.texi:25790
45995 #, no-wrap
45996 msgid "@code{domains} (default: @code{()})"
45997 msgstr ""
45998
45999 #. type: table
46000 #: guix-git/doc/guix.texi:25793
46001 msgid "The first domain provided will be the subject CN of the certificate, and all domains will be Subject Alternative Names on the certificate."
46002 msgstr ""
46003
46004 #. type: item
46005 #: guix-git/doc/guix.texi:25794
46006 #, no-wrap
46007 msgid "@code{challenge} (default: @code{#f})"
46008 msgstr ""
46009
46010 #. type: table
46011 #: guix-git/doc/guix.texi:25801
46012 msgid "The challenge type that has to be run by certbot. If @code{#f} is specified, default to the HTTP challenge. If a value is specified, defaults to the manual plugin (see @code{authentication-hook}, @code{cleanup-hook} and the documentation at @url{https://certbot.eff.org/docs/using.html#hooks}), and gives Let's Encrypt permission to log the public IP address of the requesting machine."
46013 msgstr ""
46014
46015 #. type: item
46016 #: guix-git/doc/guix.texi:25802
46017 #, no-wrap
46018 msgid "@code{authentication-hook} (default: @code{#f})"
46019 msgstr ""
46020
46021 #. type: table
46022 #: guix-git/doc/guix.texi:25808
46023 msgid "Command to be run in a shell once for each certificate challenge to be answered. For this command, the shell variable @code{$CERTBOT_DOMAIN} will contain the domain being authenticated, @code{$CERTBOT_VALIDATION} contains the validation string and @code{$CERTBOT_TOKEN} contains the file name of the resource requested when performing an HTTP-01 challenge."
46024 msgstr ""
46025
46026 #. type: item
46027 #: guix-git/doc/guix.texi:25809
46028 #, no-wrap
46029 msgid "@code{cleanup-hook} (default: @code{#f})"
46030 msgstr ""
46031
46032 #. type: table
46033 #: guix-git/doc/guix.texi:25815
46034 msgid "Command to be run in a shell once for each certificate challenge that have been answered by the @code{auth-hook}. For this command, the shell variables available in the @code{auth-hook} script are still available, and additionally @code{$CERTBOT_AUTH_OUTPUT} will contain the standard output of the @code{auth-hook} script."
46035 msgstr ""
46036
46037 #. type: item
46038 #: guix-git/doc/guix.texi:25816
46039 #, no-wrap
46040 msgid "@code{deploy-hook} (default: @code{#f})"
46041 msgstr ""
46042
46043 #. type: table
46044 #: guix-git/doc/guix.texi:25824
46045 msgid "Command to be run in a shell once for each successfully issued certificate. For this command, the shell variable @code{$RENEWED_LINEAGE} will point to the config live subdirectory (for example, @samp{\"/etc/letsencrypt/live/example.com\"}) containing the new certificates and keys; the shell variable @code{$RENEWED_DOMAINS} will contain a space-delimited list of renewed certificate domains (for example, @samp{\"example.com www.example.com\"}."
46046 msgstr ""
46047
46048 #. type: Plain text
46049 #: guix-git/doc/guix.texi:25831
46050 msgid "For each @code{certificate-configuration}, the certificate is saved to @code{/etc/letsencrypt/live/@var{name}/fullchain.pem} and the key is saved to @code{/etc/letsencrypt/live/@var{name}/privkey.pem}."
46051 msgstr ""
46052
46053 #. type: cindex
46054 #: guix-git/doc/guix.texi:25833
46055 #, no-wrap
46056 msgid "DNS (domain name system)"
46057 msgstr ""
46058
46059 #. type: cindex
46060 #: guix-git/doc/guix.texi:25834
46061 #, no-wrap
46062 msgid "domain name system (DNS)"
46063 msgstr ""
46064
46065 #. type: Plain text
46066 #: guix-git/doc/guix.texi:25842
46067 msgid "The @code{(gnu services dns)} module provides services related to the @dfn{domain name system} (DNS). It provides a server service for hosting an @emph{authoritative} DNS server for multiple zones, slave or master. This service uses @uref{https://www.knot-dns.cz/, Knot DNS}. And also a caching and forwarding DNS server for the LAN, which uses @uref{http://www.thekelleys.org.uk/dnsmasq/doc.html, dnsmasq}."
46068 msgstr ""
46069
46070 #. type: subsubheading
46071 #: guix-git/doc/guix.texi:25843
46072 #, no-wrap
46073 msgid "Knot Service"
46074 msgstr ""
46075
46076 #. type: Plain text
46077 #: guix-git/doc/guix.texi:25847
46078 msgid "An example configuration of an authoritative server for two zones, one master and one slave, is:"
46079 msgstr ""
46080
46081 #. type: lisp
46082 #: guix-git/doc/guix.texi:25854
46083 #, no-wrap
46084 msgid ""
46085 "(define-zone-entries example.org.zone\n"
46086 ";; Name TTL Class Type Data\n"
46087 " (\"@@\" \"\" \"IN\" \"A\" \"127.0.0.1\")\n"
46088 " (\"@@\" \"\" \"IN\" \"NS\" \"ns\")\n"
46089 " (\"ns\" \"\" \"IN\" \"A\" \"127.0.0.1\"))\n"
46090 "\n"
46091 msgstr ""
46092
46093 #. type: lisp
46094 #: guix-git/doc/guix.texi:25861
46095 #, no-wrap
46096 msgid ""
46097 "(define master-zone\n"
46098 " (knot-zone-configuration\n"
46099 " (domain \"example.org\")\n"
46100 " (zone (zone-file\n"
46101 " (origin \"example.org\")\n"
46102 " (entries example.org.zone)))))\n"
46103 "\n"
46104 msgstr ""
46105
46106 #. type: lisp
46107 #: guix-git/doc/guix.texi:25867
46108 #, no-wrap
46109 msgid ""
46110 "(define slave-zone\n"
46111 " (knot-zone-configuration\n"
46112 " (domain \"plop.org\")\n"
46113 " (dnssec-policy \"default\")\n"
46114 " (master (list \"plop-master\"))))\n"
46115 "\n"
46116 msgstr ""
46117
46118 #. type: lisp
46119 #: guix-git/doc/guix.texi:25872
46120 #, no-wrap
46121 msgid ""
46122 "(define plop-master\n"
46123 " (knot-remote-configuration\n"
46124 " (id \"plop-master\")\n"
46125 " (address (list \"208.76.58.171\"))))\n"
46126 "\n"
46127 msgstr ""
46128
46129 #. type: lisp
46130 #: guix-git/doc/guix.texi:25881
46131 #, no-wrap
46132 msgid ""
46133 "(operating-system\n"
46134 " ;; ...\n"
46135 " (services (cons* (service knot-service-type\n"
46136 " (knot-configuration\n"
46137 " (remotes (list plop-master))\n"
46138 " (zones (list master-zone slave-zone))))\n"
46139 " ;; ...\n"
46140 " %base-services)))\n"
46141 msgstr ""
46142
46143 #. type: deffn
46144 #: guix-git/doc/guix.texi:25883
46145 #, no-wrap
46146 msgid "{Scheme Variable} knot-service-type"
46147 msgstr ""
46148
46149 #. type: deffn
46150 #: guix-git/doc/guix.texi:25885
46151 msgid "This is the type for the Knot DNS server."
46152 msgstr ""
46153
46154 #. type: deffn
46155 #: guix-git/doc/guix.texi:25893
46156 msgid "Knot DNS is an authoritative DNS server, meaning that it can serve multiple zones, that is to say domain names you would buy from a registrar. This server is not a resolver, meaning that it can only resolve names for which it is authoritative. This server can be configured to serve zones as a master server or a slave server as a per-zone basis. Slave zones will get their data from masters, and will serve it as an authoritative server. From the point of view of a resolver, there is no difference between master and slave."
46157 msgstr ""
46158
46159 #. type: deffn
46160 #: guix-git/doc/guix.texi:25895
46161 msgid "The following data types are used to configure the Knot DNS server:"
46162 msgstr ""
46163
46164 #. type: deftp
46165 #: guix-git/doc/guix.texi:25897
46166 #, no-wrap
46167 msgid "{Data Type} knot-key-configuration"
46168 msgstr ""
46169
46170 #. type: deftp
46171 #: guix-git/doc/guix.texi:25900
46172 msgid "Data type representing a key. This type has the following parameters:"
46173 msgstr ""
46174
46175 #. type: item
46176 #: guix-git/doc/guix.texi:25902 guix-git/doc/guix.texi:25922
46177 #: guix-git/doc/guix.texi:26037 guix-git/doc/guix.texi:26063
46178 #: guix-git/doc/guix.texi:26098
46179 #, no-wrap
46180 msgid "@code{id} (default: @code{\"\"})"
46181 msgstr ""
46182
46183 #. type: table
46184 #: guix-git/doc/guix.texi:25905 guix-git/doc/guix.texi:25925
46185 msgid "An identifier for other configuration fields to refer to this key. IDs must be unique and must not be empty."
46186 msgstr ""
46187
46188 #. type: item
46189 #: guix-git/doc/guix.texi:25906
46190 #, no-wrap
46191 msgid "@code{algorithm} (default: @code{#f})"
46192 msgstr ""
46193
46194 #. type: table
46195 #: guix-git/doc/guix.texi:25910
46196 msgid "The algorithm to use. Choose between @code{#f}, @code{'hmac-md5}, @code{'hmac-sha1}, @code{'hmac-sha224}, @code{'hmac-sha256}, @code{'hmac-sha384} and @code{'hmac-sha512}."
46197 msgstr ""
46198
46199 #. type: item
46200 #: guix-git/doc/guix.texi:25911
46201 #, no-wrap
46202 msgid "@code{secret} (default: @code{\"\"})"
46203 msgstr ""
46204
46205 #. type: table
46206 #: guix-git/doc/guix.texi:25913
46207 msgid "The secret key itself."
46208 msgstr ""
46209
46210 #. type: deftp
46211 #: guix-git/doc/guix.texi:25917
46212 #, no-wrap
46213 msgid "{Data Type} knot-acl-configuration"
46214 msgstr ""
46215
46216 #. type: deftp
46217 #: guix-git/doc/guix.texi:25920
46218 msgid "Data type representing an Access Control List (ACL) configuration. This type has the following parameters:"
46219 msgstr ""
46220
46221 #. type: item
46222 #: guix-git/doc/guix.texi:25926 guix-git/doc/guix.texi:26041
46223 #, no-wrap
46224 msgid "@code{address} (default: @code{'()})"
46225 msgstr ""
46226
46227 #. type: table
46228 #: guix-git/doc/guix.texi:25930
46229 msgid "An ordered list of IP addresses, network subnets, or network ranges represented with strings. The query must match one of them. Empty value means that address match is not required."
46230 msgstr ""
46231
46232 #. type: item
46233 #: guix-git/doc/guix.texi:25931
46234 #, no-wrap
46235 msgid "@code{key} (default: @code{'()})"
46236 msgstr ""
46237
46238 #. type: table
46239 #: guix-git/doc/guix.texi:25935
46240 msgid "An ordered list of references to keys represented with strings. The string must match a key ID defined in a @code{knot-key-configuration}. No key means that a key is not require to match that ACL."
46241 msgstr ""
46242
46243 #. type: item
46244 #: guix-git/doc/guix.texi:25936
46245 #, no-wrap
46246 msgid "@code{action} (default: @code{'()})"
46247 msgstr ""
46248
46249 #. type: table
46250 #: guix-git/doc/guix.texi:25940
46251 msgid "An ordered list of actions that are permitted or forbidden by this ACL@. Possible values are lists of zero or more elements from @code{'transfer}, @code{'notify} and @code{'update}."
46252 msgstr ""
46253
46254 #. type: item
46255 #: guix-git/doc/guix.texi:25941
46256 #, no-wrap
46257 msgid "@code{deny?} (default: @code{#f})"
46258 msgstr ""
46259
46260 #. type: table
46261 #: guix-git/doc/guix.texi:25944
46262 msgid "When true, the ACL defines restrictions. Listed actions are forbidden. When false, listed actions are allowed."
46263 msgstr ""
46264
46265 #. type: deftp
46266 #: guix-git/doc/guix.texi:25948
46267 #, no-wrap
46268 msgid "{Data Type} zone-entry"
46269 msgstr ""
46270
46271 #. type: deftp
46272 #: guix-git/doc/guix.texi:25951
46273 msgid "Data type representing a record entry in a zone file. This type has the following parameters:"
46274 msgstr ""
46275
46276 #. type: item
46277 #: guix-git/doc/guix.texi:25953
46278 #, no-wrap
46279 msgid "@code{name} (default: @code{\"@@\"})"
46280 msgstr ""
46281
46282 #. type: table
46283 #: guix-git/doc/guix.texi:25959
46284 msgid "The name of the record. @code{\"@@\"} refers to the origin of the zone. Names are relative to the origin of the zone. For example, in the @code{example.org} zone, @code{\"ns.example.org\"} actually refers to @code{ns.example.org.example.org}. Names ending with a dot are absolute, which means that @code{\"ns.example.org.\"} refers to @code{ns.example.org}."
46285 msgstr ""
46286
46287 #. type: item
46288 #: guix-git/doc/guix.texi:25960
46289 #, no-wrap
46290 msgid "@code{ttl} (default: @code{\"\"})"
46291 msgstr ""
46292
46293 #. type: table
46294 #: guix-git/doc/guix.texi:25962
46295 msgid "The Time-To-Live (TTL) of this record. If not set, the default TTL is used."
46296 msgstr ""
46297
46298 #. type: item
46299 #: guix-git/doc/guix.texi:25963
46300 #, no-wrap
46301 msgid "@code{class} (default: @code{\"IN\"})"
46302 msgstr ""
46303
46304 #. type: table
46305 #: guix-git/doc/guix.texi:25966
46306 msgid "The class of the record. Knot currently supports only @code{\"IN\"} and partially @code{\"CH\"}."
46307 msgstr ""
46308
46309 #. type: item
46310 #: guix-git/doc/guix.texi:25967
46311 #, no-wrap
46312 msgid "@code{type} (default: @code{\"A\"})"
46313 msgstr ""
46314
46315 #. type: table
46316 #: guix-git/doc/guix.texi:25971
46317 msgid "The type of the record. Common types include A (IPv4 address), AAAA (IPv6 address), NS (Name Server) and MX (Mail eXchange). Many other types are defined."
46318 msgstr ""
46319
46320 #. type: item
46321 #: guix-git/doc/guix.texi:25972
46322 #, no-wrap
46323 msgid "@code{data} (default: @code{\"\"})"
46324 msgstr ""
46325
46326 #. type: table
46327 #: guix-git/doc/guix.texi:25976
46328 msgid "The data contained in the record. For instance an IP address associated with an A record, or a domain name associated with an NS record. Remember that domain names are relative to the origin unless they end with a dot."
46329 msgstr ""
46330
46331 #. type: deftp
46332 #: guix-git/doc/guix.texi:25980
46333 #, no-wrap
46334 msgid "{Data Type} zone-file"
46335 msgstr ""
46336
46337 #. type: deftp
46338 #: guix-git/doc/guix.texi:25983
46339 msgid "Data type representing the content of a zone file. This type has the following parameters:"
46340 msgstr ""
46341
46342 #. type: table
46343 #: guix-git/doc/guix.texi:25992
46344 msgid "The list of entries. The SOA record is taken care of, so you don't need to put it in the list of entries. This list should probably contain an entry for your primary authoritative DNS server. Other than using a list of entries directly, you can use @code{define-zone-entries} to define a object containing the list of entries more easily, that you can later pass to the @code{entries} field of the @code{zone-file}."
46345 msgstr ""
46346
46347 #. type: item
46348 #: guix-git/doc/guix.texi:25993
46349 #, no-wrap
46350 msgid "@code{origin} (default: @code{\"\"})"
46351 msgstr ""
46352
46353 #. type: table
46354 #: guix-git/doc/guix.texi:25995
46355 msgid "The name of your zone. This parameter cannot be empty."
46356 msgstr ""
46357
46358 #. type: item
46359 #: guix-git/doc/guix.texi:25996
46360 #, no-wrap
46361 msgid "@code{ns} (default: @code{\"ns\"})"
46362 msgstr ""
46363
46364 #. type: table
46365 #: guix-git/doc/guix.texi:26001
46366 msgid "The domain of your primary authoritative DNS server. The name is relative to the origin, unless it ends with a dot. It is mandatory that this primary DNS server corresponds to an NS record in the zone and that it is associated to an IP address in the list of entries."
46367 msgstr ""
46368
46369 #. type: item
46370 #: guix-git/doc/guix.texi:26002
46371 #, no-wrap
46372 msgid "@code{mail} (default: @code{\"hostmaster\"})"
46373 msgstr ""
46374
46375 #. type: table
46376 #: guix-git/doc/guix.texi:26005
46377 msgid "An email address people can contact you at, as the owner of the zone. This is translated as @code{<mail>@@<origin>}."
46378 msgstr ""
46379
46380 #. type: item
46381 #: guix-git/doc/guix.texi:26006
46382 #, no-wrap
46383 msgid "@code{serial} (default: @code{1})"
46384 msgstr ""
46385
46386 #. type: table
46387 #: guix-git/doc/guix.texi:26010
46388 msgid "The serial number of the zone. As this is used to keep track of changes by both slaves and resolvers, it is mandatory that it @emph{never} decreases. Always increment it when you make a change in your zone."
46389 msgstr ""
46390
46391 #. type: item
46392 #: guix-git/doc/guix.texi:26011
46393 #, no-wrap
46394 msgid "@code{refresh} (default: @code{(* 2 24 3600)})"
46395 msgstr ""
46396
46397 #. type: table
46398 #: guix-git/doc/guix.texi:26015
46399 msgid "The frequency at which slaves will do a zone transfer. This value is a number of seconds. It can be computed by multiplications or with @code{(string->duration)}."
46400 msgstr ""
46401
46402 #. type: item
46403 #: guix-git/doc/guix.texi:26016
46404 #, no-wrap
46405 msgid "@code{retry} (default: @code{(* 15 60)})"
46406 msgstr ""
46407
46408 #. type: table
46409 #: guix-git/doc/guix.texi:26019
46410 msgid "The period after which a slave will retry to contact its master when it fails to do so a first time."
46411 msgstr ""
46412
46413 #. type: item
46414 #: guix-git/doc/guix.texi:26020
46415 #, no-wrap
46416 msgid "@code{expiry} (default: @code{(* 14 24 3600)})"
46417 msgstr ""
46418
46419 #. type: table
46420 #: guix-git/doc/guix.texi:26024
46421 msgid "Default TTL of records. Existing records are considered correct for at most this amount of time. After this period, resolvers will invalidate their cache and check again that it still exists."
46422 msgstr ""
46423
46424 #. type: item
46425 #: guix-git/doc/guix.texi:26025
46426 #, no-wrap
46427 msgid "@code{nx} (default: @code{3600})"
46428 msgstr ""
46429
46430 #. type: table
46431 #: guix-git/doc/guix.texi:26028
46432 msgid "Default TTL of inexistent records. This delay is usually short because you want your new domains to reach everyone quickly."
46433 msgstr ""
46434
46435 #. type: deftp
46436 #: guix-git/doc/guix.texi:26032
46437 #, no-wrap
46438 msgid "{Data Type} knot-remote-configuration"
46439 msgstr ""
46440
46441 #. type: deftp
46442 #: guix-git/doc/guix.texi:26035
46443 msgid "Data type representing a remote configuration. This type has the following parameters:"
46444 msgstr ""
46445
46446 #. type: table
46447 #: guix-git/doc/guix.texi:26040
46448 msgid "An identifier for other configuration fields to refer to this remote. IDs must be unique and must not be empty."
46449 msgstr ""
46450
46451 #. type: table
46452 #: guix-git/doc/guix.texi:26045
46453 msgid "An ordered list of destination IP addresses. Addresses are tried in sequence. An optional port can be given with the @@ separator. For instance: @code{(list \"1.2.3.4\" \"2.3.4.5@@53\")}. Default port is 53."
46454 msgstr ""
46455
46456 #. type: item
46457 #: guix-git/doc/guix.texi:26046
46458 #, no-wrap
46459 msgid "@code{via} (default: @code{'()})"
46460 msgstr ""
46461
46462 #. type: table
46463 #: guix-git/doc/guix.texi:26050
46464 msgid "An ordered list of source IP addresses. An empty list will have Knot choose an appropriate source IP@. An optional port can be given with the @@ separator. The default is to choose at random."
46465 msgstr ""
46466
46467 #. type: table
46468 #: guix-git/doc/guix.texi:26054
46469 msgid "A reference to a key, that is a string containing the identifier of a key defined in a @code{knot-key-configuration} field."
46470 msgstr ""
46471
46472 #. type: deftp
46473 #: guix-git/doc/guix.texi:26058
46474 #, no-wrap
46475 msgid "{Data Type} knot-keystore-configuration"
46476 msgstr ""
46477
46478 #. type: deftp
46479 #: guix-git/doc/guix.texi:26061
46480 msgid "Data type representing a keystore to hold dnssec keys. This type has the following parameters:"
46481 msgstr ""
46482
46483 #. type: table
46484 #: guix-git/doc/guix.texi:26065
46485 msgid "The id of the keystore. It must not be empty."
46486 msgstr ""
46487
46488 #. type: item
46489 #: guix-git/doc/guix.texi:26066
46490 #, no-wrap
46491 msgid "@code{backend} (default: @code{'pem})"
46492 msgstr ""
46493
46494 #. type: table
46495 #: guix-git/doc/guix.texi:26068
46496 msgid "The backend to store the keys in. Can be @code{'pem} or @code{'pkcs11}."
46497 msgstr ""
46498
46499 #. type: item
46500 #: guix-git/doc/guix.texi:26069
46501 #, no-wrap
46502 msgid "@code{config} (default: @code{\"/var/lib/knot/keys/keys\"})"
46503 msgstr ""
46504
46505 #. type: table
46506 #: guix-git/doc/guix.texi:26073
46507 msgid "The configuration string of the backend. An example for the PKCS#11 is: @code{\"pkcs11:token=knot;pin-value=1234 /gnu/store/.../lib/pkcs11/libsofthsm2.so\"}. For the pem backend, the string represents a path in the file system."
46508 msgstr ""
46509
46510 #. type: deftp
46511 #: guix-git/doc/guix.texi:26077
46512 #, no-wrap
46513 msgid "{Data Type} knot-policy-configuration"
46514 msgstr ""
46515
46516 #. type: deftp
46517 #: guix-git/doc/guix.texi:26081
46518 msgid "Data type representing a dnssec policy. Knot DNS is able to automatically sign your zones. It can either generate and manage your keys automatically or use keys that you generate."
46519 msgstr ""
46520
46521 #. type: deftp
46522 #: guix-git/doc/guix.texi:26088
46523 msgid "Dnssec is usually implemented using two keys: a Key Signing Key (KSK) that is used to sign the second, and a Zone Signing Key (ZSK) that is used to sign the zone. In order to be trusted, the KSK needs to be present in the parent zone (usually a top-level domain). If your registrar supports dnssec, you will have to send them your KSK's hash so they can add a DS record in their zone. This is not automated and need to be done each time you change your KSK."
46524 msgstr ""
46525
46526 #. type: deftp
46527 #: guix-git/doc/guix.texi:26094
46528 msgid "The policy also defines the lifetime of keys. Usually, ZSK can be changed easily and use weaker cryptographic functions (they use lower parameters) in order to sign records quickly, so they are changed often. The KSK however requires manual interaction with the registrar, so they are changed less often and use stronger parameters because they sign only one record."
46529 msgstr ""
46530
46531 #. type: deftp
46532 #: guix-git/doc/guix.texi:26096
46533 msgid "This type has the following parameters:"
46534 msgstr ""
46535
46536 #. type: table
46537 #: guix-git/doc/guix.texi:26100
46538 msgid "The id of the policy. It must not be empty."
46539 msgstr ""
46540
46541 #. type: item
46542 #: guix-git/doc/guix.texi:26101
46543 #, no-wrap
46544 msgid "@code{keystore} (default: @code{\"default\"})"
46545 msgstr ""
46546
46547 #. type: table
46548 #: guix-git/doc/guix.texi:26106
46549 msgid "A reference to a keystore, that is a string containing the identifier of a keystore defined in a @code{knot-keystore-configuration} field. The @code{\"default\"} identifier means the default keystore (a kasp database that was setup by this service)."
46550 msgstr ""
46551
46552 #. type: item
46553 #: guix-git/doc/guix.texi:26107
46554 #, no-wrap
46555 msgid "@code{manual?} (default: @code{#f})"
46556 msgstr ""
46557
46558 #. type: table
46559 #: guix-git/doc/guix.texi:26109
46560 msgid "Whether the key management is manual or automatic."
46561 msgstr ""
46562
46563 #. type: item
46564 #: guix-git/doc/guix.texi:26110
46565 #, no-wrap
46566 msgid "@code{single-type-signing?} (default: @code{#f})"
46567 msgstr ""
46568
46569 #. type: table
46570 #: guix-git/doc/guix.texi:26112
46571 msgid "When @code{#t}, use the Single-Type Signing Scheme."
46572 msgstr ""
46573
46574 #. type: item
46575 #: guix-git/doc/guix.texi:26113
46576 #, no-wrap
46577 msgid "@code{algorithm} (default: @code{\"ecdsap256sha256\"})"
46578 msgstr ""
46579
46580 #. type: table
46581 #: guix-git/doc/guix.texi:26115
46582 msgid "An algorithm of signing keys and issued signatures."
46583 msgstr ""
46584
46585 #. type: item
46586 #: guix-git/doc/guix.texi:26116
46587 #, no-wrap
46588 msgid "@code{ksk-size} (default: @code{256})"
46589 msgstr ""
46590
46591 #. type: table
46592 #: guix-git/doc/guix.texi:26119
46593 msgid "The length of the KSK@. Note that this value is correct for the default algorithm, but would be unsecure for other algorithms."
46594 msgstr ""
46595
46596 #. type: item
46597 #: guix-git/doc/guix.texi:26120
46598 #, no-wrap
46599 msgid "@code{zsk-size} (default: @code{256})"
46600 msgstr ""
46601
46602 #. type: table
46603 #: guix-git/doc/guix.texi:26123
46604 msgid "The length of the ZSK@. Note that this value is correct for the default algorithm, but would be unsecure for other algorithms."
46605 msgstr ""
46606
46607 #. type: item
46608 #: guix-git/doc/guix.texi:26124
46609 #, no-wrap
46610 msgid "@code{dnskey-ttl} (default: @code{'default})"
46611 msgstr ""
46612
46613 #. type: table
46614 #: guix-git/doc/guix.texi:26127
46615 msgid "The TTL value for DNSKEY records added into zone apex. The special @code{'default} value means same as the zone SOA TTL."
46616 msgstr ""
46617
46618 #. type: item
46619 #: guix-git/doc/guix.texi:26128
46620 #, no-wrap
46621 msgid "@code{zsk-lifetime} (default: @code{(* 30 24 3600)})"
46622 msgstr ""
46623
46624 #. type: table
46625 #: guix-git/doc/guix.texi:26130
46626 msgid "The period between ZSK publication and the next rollover initiation."
46627 msgstr ""
46628
46629 #. type: item
46630 #: guix-git/doc/guix.texi:26131
46631 #, no-wrap
46632 msgid "@code{propagation-delay} (default: @code{(* 24 3600)})"
46633 msgstr ""
46634
46635 #. type: table
46636 #: guix-git/doc/guix.texi:26134
46637 msgid "An extra delay added for each key rollover step. This value should be high enough to cover propagation of data from the master server to all slaves."
46638 msgstr ""
46639
46640 #. type: item
46641 #: guix-git/doc/guix.texi:26135
46642 #, no-wrap
46643 msgid "@code{rrsig-lifetime} (default: @code{(* 14 24 3600)})"
46644 msgstr ""
46645
46646 #. type: table
46647 #: guix-git/doc/guix.texi:26137
46648 msgid "A validity period of newly issued signatures."
46649 msgstr ""
46650
46651 #. type: item
46652 #: guix-git/doc/guix.texi:26138
46653 #, no-wrap
46654 msgid "@code{rrsig-refresh} (default: @code{(* 7 24 3600)})"
46655 msgstr ""
46656
46657 #. type: table
46658 #: guix-git/doc/guix.texi:26140
46659 msgid "A period how long before a signature expiration the signature will be refreshed."
46660 msgstr ""
46661
46662 #. type: item
46663 #: guix-git/doc/guix.texi:26141
46664 #, no-wrap
46665 msgid "@code{nsec3?} (default: @code{#f})"
46666 msgstr ""
46667
46668 #. type: table
46669 #: guix-git/doc/guix.texi:26143
46670 msgid "When @code{#t}, NSEC3 will be used instead of NSEC."
46671 msgstr ""
46672
46673 #. type: item
46674 #: guix-git/doc/guix.texi:26144
46675 #, no-wrap
46676 msgid "@code{nsec3-iterations} (default: @code{5})"
46677 msgstr ""
46678
46679 #. type: table
46680 #: guix-git/doc/guix.texi:26146
46681 msgid "The number of additional times the hashing is performed."
46682 msgstr ""
46683
46684 #. type: item
46685 #: guix-git/doc/guix.texi:26147
46686 #, no-wrap
46687 msgid "@code{nsec3-salt-length} (default: @code{8})"
46688 msgstr ""
46689
46690 #. type: table
46691 #: guix-git/doc/guix.texi:26150
46692 msgid "The length of a salt field in octets, which is appended to the original owner name before hashing."
46693 msgstr ""
46694
46695 #. type: item
46696 #: guix-git/doc/guix.texi:26151
46697 #, no-wrap
46698 msgid "@code{nsec3-salt-lifetime} (default: @code{(* 30 24 3600)})"
46699 msgstr ""
46700
46701 #. type: table
46702 #: guix-git/doc/guix.texi:26153
46703 msgid "The validity period of newly issued salt field."
46704 msgstr ""
46705
46706 #. type: deftp
46707 #: guix-git/doc/guix.texi:26157
46708 #, no-wrap
46709 msgid "{Data Type} knot-zone-configuration"
46710 msgstr ""
46711
46712 #. type: deftp
46713 #: guix-git/doc/guix.texi:26160
46714 msgid "Data type representing a zone served by Knot. This type has the following parameters:"
46715 msgstr ""
46716
46717 #. type: item
46718 #: guix-git/doc/guix.texi:26162
46719 #, no-wrap
46720 msgid "@code{domain} (default: @code{\"\"})"
46721 msgstr ""
46722
46723 #. type: table
46724 #: guix-git/doc/guix.texi:26164
46725 msgid "The domain served by this configuration. It must not be empty."
46726 msgstr ""
46727
46728 #. type: item
46729 #: guix-git/doc/guix.texi:26165
46730 #, no-wrap
46731 msgid "@code{file} (default: @code{\"\"})"
46732 msgstr ""
46733
46734 #. type: table
46735 #: guix-git/doc/guix.texi:26168
46736 msgid "The file where this zone is saved. This parameter is ignored by master zones. Empty means default location that depends on the domain name."
46737 msgstr ""
46738
46739 #. type: item
46740 #: guix-git/doc/guix.texi:26169
46741 #, no-wrap
46742 msgid "@code{zone} (default: @code{(zone-file)})"
46743 msgstr ""
46744
46745 #. type: table
46746 #: guix-git/doc/guix.texi:26172
46747 msgid "The content of the zone file. This parameter is ignored by slave zones. It must contain a zone-file record."
46748 msgstr ""
46749
46750 #. type: item
46751 #: guix-git/doc/guix.texi:26173
46752 #, no-wrap
46753 msgid "@code{master} (default: @code{'()})"
46754 msgstr ""
46755
46756 #. type: table
46757 #: guix-git/doc/guix.texi:26176
46758 msgid "A list of master remotes. When empty, this zone is a master. When set, this zone is a slave. This is a list of remotes identifiers."
46759 msgstr ""
46760
46761 #. type: item
46762 #: guix-git/doc/guix.texi:26177
46763 #, no-wrap
46764 msgid "@code{ddns-master} (default: @code{#f})"
46765 msgstr ""
46766
46767 #. type: table
46768 #: guix-git/doc/guix.texi:26180
46769 msgid "The main master. When empty, it defaults to the first master in the list of masters."
46770 msgstr ""
46771
46772 #. type: item
46773 #: guix-git/doc/guix.texi:26181
46774 #, no-wrap
46775 msgid "@code{notify} (default: @code{'()})"
46776 msgstr ""
46777
46778 #. type: table
46779 #: guix-git/doc/guix.texi:26183
46780 msgid "A list of slave remote identifiers."
46781 msgstr ""
46782
46783 #. type: item
46784 #: guix-git/doc/guix.texi:26184
46785 #, no-wrap
46786 msgid "@code{acl} (default: @code{'()})"
46787 msgstr ""
46788
46789 #. type: table
46790 #: guix-git/doc/guix.texi:26186
46791 msgid "A list of acl identifiers."
46792 msgstr ""
46793
46794 #. type: item
46795 #: guix-git/doc/guix.texi:26187
46796 #, no-wrap
46797 msgid "@code{semantic-checks?} (default: @code{#f})"
46798 msgstr ""
46799
46800 #. type: table
46801 #: guix-git/doc/guix.texi:26189
46802 msgid "When set, this adds more semantic checks to the zone."
46803 msgstr ""
46804
46805 #. type: item
46806 #: guix-git/doc/guix.texi:26190
46807 #, no-wrap
46808 msgid "@code{disable-any?} (default: @code{#f})"
46809 msgstr ""
46810
46811 #. type: table
46812 #: guix-git/doc/guix.texi:26192
46813 msgid "When set, this forbids queries of the ANY type."
46814 msgstr ""
46815
46816 #. type: item
46817 #: guix-git/doc/guix.texi:26193
46818 #, no-wrap
46819 msgid "@code{zonefile-sync} (default: @code{0})"
46820 msgstr ""
46821
46822 #. type: table
46823 #: guix-git/doc/guix.texi:26196
46824 msgid "The delay between a modification in memory and on disk. 0 means immediate synchronization."
46825 msgstr ""
46826
46827 #. type: item
46828 #: guix-git/doc/guix.texi:26197
46829 #, no-wrap
46830 msgid "@code{zonefile-load} (default: @code{#f})"
46831 msgstr ""
46832
46833 #. type: table
46834 #: guix-git/doc/guix.texi:26200
46835 msgid "The way the zone file contents are applied during zone load. Possible values are:"
46836 msgstr ""
46837
46838 #. type: item
46839 #: guix-git/doc/guix.texi:26202
46840 #, no-wrap
46841 msgid "@code{#f} for using the default value from Knot,"
46842 msgstr ""
46843
46844 #. type: item
46845 #: guix-git/doc/guix.texi:26203
46846 #, no-wrap
46847 msgid "@code{'none} for not using the zone file at all,"
46848 msgstr ""
46849
46850 #. type: item
46851 #: guix-git/doc/guix.texi:26204
46852 #, no-wrap
46853 msgid "@code{'difference} for computing the difference between already available"
46854 msgstr ""
46855
46856 #. type: itemize
46857 #: guix-git/doc/guix.texi:26206
46858 msgid "contents and zone contents and applying it to the current zone contents,"
46859 msgstr ""
46860
46861 #. type: item
46862 #: guix-git/doc/guix.texi:26206
46863 #, no-wrap
46864 msgid "@code{'difference-no-serial} for the same as @code{'difference}, but"
46865 msgstr ""
46866
46867 #. type: itemize
46868 #: guix-git/doc/guix.texi:26209
46869 msgid "ignoring the SOA serial in the zone file, while the server takes care of it automatically."
46870 msgstr ""
46871
46872 #. type: item
46873 #: guix-git/doc/guix.texi:26209
46874 #, no-wrap
46875 msgid "@code{'whole} for loading zone contents from the zone file."
46876 msgstr ""
46877
46878 #. type: item
46879 #: guix-git/doc/guix.texi:26212
46880 #, no-wrap
46881 msgid "@code{journal-content} (default: @code{#f})"
46882 msgstr ""
46883
46884 #. type: table
46885 #: guix-git/doc/guix.texi:26217
46886 msgid "The way the journal is used to store zone and its changes. Possible values are @code{'none} to not use it at all, @code{'changes} to store changes and @code{'all} to store contents. @code{#f} does not set this option, so the default value from Knot is used."
46887 msgstr ""
46888
46889 #. type: item
46890 #: guix-git/doc/guix.texi:26218
46891 #, no-wrap
46892 msgid "@code{max-journal-usage} (default: @code{#f})"
46893 msgstr ""
46894
46895 #. type: table
46896 #: guix-git/doc/guix.texi:26221
46897 msgid "The maximum size for the journal on disk. @code{#f} does not set this option, so the default value from Knot is used."
46898 msgstr ""
46899
46900 #. type: item
46901 #: guix-git/doc/guix.texi:26222
46902 #, no-wrap
46903 msgid "@code{max-journal-depth} (default: @code{#f})"
46904 msgstr ""
46905
46906 #. type: table
46907 #: guix-git/doc/guix.texi:26225
46908 msgid "The maximum size of the history. @code{#f} does not set this option, so the default value from Knot is used."
46909 msgstr ""
46910
46911 #. type: item
46912 #: guix-git/doc/guix.texi:26226
46913 #, no-wrap
46914 msgid "@code{max-zone-size} (default: @code{#f})"
46915 msgstr ""
46916
46917 #. type: table
46918 #: guix-git/doc/guix.texi:26230
46919 msgid "The maximum size of the zone file. This limit is enforced for incoming transfer and updates. @code{#f} does not set this option, so the default value from Knot is used."
46920 msgstr ""
46921
46922 #. type: item
46923 #: guix-git/doc/guix.texi:26231
46924 #, no-wrap
46925 msgid "@code{dnssec-policy} (default: @code{#f})"
46926 msgstr ""
46927
46928 #. type: table
46929 #: guix-git/doc/guix.texi:26235
46930 msgid "A reference to a @code{knot-policy-configuration} record, or the special name @code{\"default\"}. If the value is @code{#f}, there is no dnssec signing on this zone."
46931 msgstr ""
46932
46933 #. type: item
46934 #: guix-git/doc/guix.texi:26236
46935 #, no-wrap
46936 msgid "@code{serial-policy} (default: @code{'increment})"
46937 msgstr ""
46938
46939 #. type: table
46940 #: guix-git/doc/guix.texi:26238
46941 msgid "A policy between @code{'increment} and @code{'unixtime}."
46942 msgstr ""
46943
46944 #. type: deftp
46945 #: guix-git/doc/guix.texi:26242
46946 #, no-wrap
46947 msgid "{Data Type} knot-configuration"
46948 msgstr ""
46949
46950 #. type: deftp
46951 #: guix-git/doc/guix.texi:26245
46952 msgid "Data type representing the Knot configuration. This type has the following parameters:"
46953 msgstr ""
46954
46955 #. type: item
46956 #: guix-git/doc/guix.texi:26247
46957 #, no-wrap
46958 msgid "@code{knot} (default: @code{knot})"
46959 msgstr ""
46960
46961 #. type: table
46962 #: guix-git/doc/guix.texi:26249
46963 msgid "The Knot package."
46964 msgstr ""
46965
46966 #. type: item
46967 #: guix-git/doc/guix.texi:26250
46968 #, no-wrap
46969 msgid "@code{run-directory} (default: @code{\"/var/run/knot\"})"
46970 msgstr ""
46971
46972 #. type: table
46973 #: guix-git/doc/guix.texi:26252
46974 msgid "The run directory. This directory will be used for pid file and sockets."
46975 msgstr ""
46976
46977 #. type: item
46978 #: guix-git/doc/guix.texi:26253
46979 #, no-wrap
46980 msgid "@code{includes} (default: @code{'()})"
46981 msgstr ""
46982
46983 #. type: table
46984 #: guix-git/doc/guix.texi:26256
46985 msgid "A list of strings or file-like objects denoting other files that must be included at the top of the configuration file."
46986 msgstr ""
46987
46988 #. type: cindex
46989 #: guix-git/doc/guix.texi:26257
46990 #, no-wrap
46991 msgid "secrets, Knot service"
46992 msgstr ""
46993
46994 #. type: table
46995 #: guix-git/doc/guix.texi:26263
46996 msgid "This can be used to manage secrets out-of-band. For example, secret keys may be stored in an out-of-band file not managed by Guix, and thus not visible in @file{/gnu/store}---e.g., you could store secret key configuration in @file{/etc/knot/secrets.conf} and add this file to the @code{includes} list."
46997 msgstr ""
46998
46999 #. type: table
47000 #: guix-git/doc/guix.texi:26268
47001 msgid "One can generate a secret tsig key (for nsupdate and zone transfers with the keymgr command from the knot package. Note that the package is not automatically installed by the service. The following example shows how to generate a new tsig key:"
47002 msgstr ""
47003
47004 #. type: example
47005 #: guix-git/doc/guix.texi:26272
47006 #, no-wrap
47007 msgid ""
47008 "keymgr -t mysecret > /etc/knot/secrets.conf\n"
47009 "chmod 600 /etc/knot/secrets.conf\n"
47010 msgstr ""
47011
47012 #. type: table
47013 #: guix-git/doc/guix.texi:26278
47014 msgid "Also note that the generated key will be named @var{mysecret}, so it is the name that needs to be used in the @var{key} field of the @code{knot-acl-configuration} record and in other places that need to refer to that key."
47015 msgstr ""
47016
47017 #. type: table
47018 #: guix-git/doc/guix.texi:26280
47019 msgid "It can also be used to add configuration not supported by this interface."
47020 msgstr ""
47021
47022 #. type: item
47023 #: guix-git/doc/guix.texi:26281
47024 #, no-wrap
47025 msgid "@code{listen-v4} (default: @code{\"0.0.0.0\"})"
47026 msgstr ""
47027
47028 #. type: table
47029 #: guix-git/doc/guix.texi:26283 guix-git/doc/guix.texi:26286
47030 msgid "An ip address on which to listen."
47031 msgstr ""
47032
47033 #. type: item
47034 #: guix-git/doc/guix.texi:26284
47035 #, no-wrap
47036 msgid "@code{listen-v6} (default: @code{\"::\"})"
47037 msgstr ""
47038
47039 #. type: item
47040 #: guix-git/doc/guix.texi:26287
47041 #, no-wrap
47042 msgid "@code{listen-port} (default: @code{53})"
47043 msgstr ""
47044
47045 #. type: table
47046 #: guix-git/doc/guix.texi:26289
47047 msgid "A port on which to listen."
47048 msgstr ""
47049
47050 #. type: item
47051 #: guix-git/doc/guix.texi:26290
47052 #, no-wrap
47053 msgid "@code{keys} (default: @code{'()})"
47054 msgstr ""
47055
47056 #. type: table
47057 #: guix-git/doc/guix.texi:26292
47058 msgid "The list of knot-key-configuration used by this configuration."
47059 msgstr ""
47060
47061 #. type: item
47062 #: guix-git/doc/guix.texi:26293
47063 #, no-wrap
47064 msgid "@code{acls} (default: @code{'()})"
47065 msgstr ""
47066
47067 #. type: table
47068 #: guix-git/doc/guix.texi:26295
47069 msgid "The list of knot-acl-configuration used by this configuration."
47070 msgstr ""
47071
47072 #. type: item
47073 #: guix-git/doc/guix.texi:26296
47074 #, no-wrap
47075 msgid "@code{remotes} (default: @code{'()})"
47076 msgstr ""
47077
47078 #. type: table
47079 #: guix-git/doc/guix.texi:26298
47080 msgid "The list of knot-remote-configuration used by this configuration."
47081 msgstr ""
47082
47083 #. type: item
47084 #: guix-git/doc/guix.texi:26299
47085 #, no-wrap
47086 msgid "@code{zones} (default: @code{'()})"
47087 msgstr ""
47088
47089 #. type: table
47090 #: guix-git/doc/guix.texi:26301
47091 msgid "The list of knot-zone-configuration used by this configuration."
47092 msgstr ""
47093
47094 #. type: subsubheading
47095 #: guix-git/doc/guix.texi:26305
47096 #, no-wrap
47097 msgid "Knot Resolver Service"
47098 msgstr ""
47099
47100 #. type: deffn
47101 #: guix-git/doc/guix.texi:26307
47102 #, no-wrap
47103 msgid "{Scheme Variable} knot-resolver-service-type"
47104 msgstr ""
47105
47106 #. type: deffn
47107 #: guix-git/doc/guix.texi:26310
47108 msgid "This is the type of the knot resolver service, whose value should be an @code{knot-resolver-configuration} object as in this example:"
47109 msgstr ""
47110
47111 #. type: lisp
47112 #: guix-git/doc/guix.texi:26320
47113 #, no-wrap
47114 msgid ""
47115 "(service knot-resolver-service-type\n"
47116 " (knot-resolver-configuration\n"
47117 " (kresd-config-file (plain-file \"kresd.conf\" \"\n"
47118 "net.listen('192.168.0.1', 5353)\n"
47119 "user('knot-resolver', 'knot-resolver')\n"
47120 "modules = @{ 'hints > iterate', 'stats', 'predict' @}\n"
47121 "cache.size = 100 * MB\n"
47122 "\"))))\n"
47123 msgstr ""
47124
47125 #. type: deffn
47126 #: guix-git/doc/guix.texi:26323
47127 msgid "For more information, refer its @url{https://knot-resolver.readthedocs.org/en/stable/daemon.html#configuration, manual}."
47128 msgstr ""
47129
47130 #. type: deftp
47131 #: guix-git/doc/guix.texi:26325
47132 #, no-wrap
47133 msgid "{Data Type} knot-resolver-configuration"
47134 msgstr ""
47135
47136 #. type: deftp
47137 #: guix-git/doc/guix.texi:26327
47138 msgid "Data type representing the configuration of knot-resolver."
47139 msgstr ""
47140
47141 #. type: item
47142 #: guix-git/doc/guix.texi:26329
47143 #, no-wrap
47144 msgid "@code{package} (default: @var{knot-resolver})"
47145 msgstr ""
47146
47147 #. type: table
47148 #: guix-git/doc/guix.texi:26331
47149 msgid "Package object of the knot DNS resolver."
47150 msgstr ""
47151
47152 #. type: item
47153 #: guix-git/doc/guix.texi:26332
47154 #, no-wrap
47155 msgid "@code{kresd-config-file} (default: %kresd.conf)"
47156 msgstr ""
47157
47158 #. type: table
47159 #: guix-git/doc/guix.texi:26335
47160 msgid "File-like object of the kresd configuration file to use, by default it will listen on @code{127.0.0.1} and @code{::1}."
47161 msgstr ""
47162
47163 #. type: item
47164 #: guix-git/doc/guix.texi:26336
47165 #, no-wrap
47166 msgid "@code{garbage-collection-interval} (default: 1000)"
47167 msgstr ""
47168
47169 #. type: table
47170 #: guix-git/doc/guix.texi:26338
47171 msgid "Number of milliseconds for @code{kres-cache-gc} to periodically trim the cache."
47172 msgstr ""
47173
47174 #. type: subsubheading
47175 #: guix-git/doc/guix.texi:26343
47176 #, no-wrap
47177 msgid "Dnsmasq Service"
47178 msgstr ""
47179
47180 #. type: deffn
47181 #: guix-git/doc/guix.texi:26345
47182 #, no-wrap
47183 msgid "{Scheme Variable} dnsmasq-service-type"
47184 msgstr ""
47185
47186 #. type: deffn
47187 #: guix-git/doc/guix.texi:26348
47188 msgid "This is the type of the dnsmasq service, whose value should be an @code{dnsmasq-configuration} object as in this example:"
47189 msgstr ""
47190
47191 #. type: lisp
47192 #: guix-git/doc/guix.texi:26354
47193 #, no-wrap
47194 msgid ""
47195 "(service dnsmasq-service-type\n"
47196 " (dnsmasq-configuration\n"
47197 " (no-resolv? #t)\n"
47198 " (servers '(\"192.168.1.1\"))))\n"
47199 msgstr ""
47200
47201 #. type: deftp
47202 #: guix-git/doc/guix.texi:26357
47203 #, no-wrap
47204 msgid "{Data Type} dnsmasq-configuration"
47205 msgstr ""
47206
47207 #. type: deftp
47208 #: guix-git/doc/guix.texi:26359
47209 msgid "Data type representing the configuration of dnsmasq."
47210 msgstr ""
47211
47212 #. type: item
47213 #: guix-git/doc/guix.texi:26361
47214 #, no-wrap
47215 msgid "@code{package} (default: @var{dnsmasq})"
47216 msgstr ""
47217
47218 #. type: table
47219 #: guix-git/doc/guix.texi:26363
47220 msgid "Package object of the dnsmasq server."
47221 msgstr ""
47222
47223 #. type: item
47224 #: guix-git/doc/guix.texi:26364
47225 #, no-wrap
47226 msgid "@code{no-hosts?} (default: @code{#f})"
47227 msgstr ""
47228
47229 #. type: table
47230 #: guix-git/doc/guix.texi:26366
47231 msgid "When true, don't read the hostnames in /etc/hosts."
47232 msgstr ""
47233
47234 #. type: item
47235 #: guix-git/doc/guix.texi:26367
47236 #, no-wrap
47237 msgid "@code{port} (default: @code{53})"
47238 msgstr ""
47239
47240 #. type: table
47241 #: guix-git/doc/guix.texi:26370
47242 msgid "The port to listen on. Setting this to zero completely disables DNS responses, leaving only DHCP and/or TFTP functions."
47243 msgstr ""
47244
47245 #. type: item
47246 #: guix-git/doc/guix.texi:26371
47247 #, no-wrap
47248 msgid "@code{local-service?} (default: @code{#t})"
47249 msgstr ""
47250
47251 #. type: table
47252 #: guix-git/doc/guix.texi:26374
47253 msgid "Accept DNS queries only from hosts whose address is on a local subnet, ie a subnet for which an interface exists on the server."
47254 msgstr ""
47255
47256 #. type: item
47257 #: guix-git/doc/guix.texi:26375
47258 #, no-wrap
47259 msgid "@code{listen-addresses} (default: @code{'()})"
47260 msgstr ""
47261
47262 #. type: table
47263 #: guix-git/doc/guix.texi:26377
47264 msgid "Listen on the given IP addresses."
47265 msgstr ""
47266
47267 #. type: item
47268 #: guix-git/doc/guix.texi:26378
47269 #, no-wrap
47270 msgid "@code{resolv-file} (default: @code{\"/etc/resolv.conf\"})"
47271 msgstr ""
47272
47273 #. type: table
47274 #: guix-git/doc/guix.texi:26380
47275 msgid "The file to read the IP address of the upstream nameservers from."
47276 msgstr ""
47277
47278 #. type: item
47279 #: guix-git/doc/guix.texi:26381
47280 #, no-wrap
47281 msgid "@code{no-resolv?} (default: @code{#f})"
47282 msgstr ""
47283
47284 #. type: table
47285 #: guix-git/doc/guix.texi:26383
47286 msgid "When true, don't read @var{resolv-file}."
47287 msgstr ""
47288
47289 #. type: item
47290 #: guix-git/doc/guix.texi:26384
47291 #, no-wrap
47292 msgid "@code{servers} (default: @code{'()})"
47293 msgstr ""
47294
47295 #. type: table
47296 #: guix-git/doc/guix.texi:26386
47297 msgid "Specify IP address of upstream servers directly."
47298 msgstr ""
47299
47300 #. type: item
47301 #: guix-git/doc/guix.texi:26387
47302 #, no-wrap
47303 msgid "@code{addresses} (default: @code{'()})"
47304 msgstr ""
47305
47306 #. type: table
47307 #: guix-git/doc/guix.texi:26391
47308 msgid "For each entry, specify an IP address to return for any host in the given domains. Queries in the domains are never forwarded and always replied to with the specified IP address."
47309 msgstr ""
47310
47311 #. type: table
47312 #: guix-git/doc/guix.texi:26393
47313 msgid "This is useful for redirecting hosts locally, for example:"
47314 msgstr ""
47315
47316 #. type: lisp
47317 #: guix-git/doc/guix.texi:26402
47318 #, no-wrap
47319 msgid ""
47320 "(service dnsmasq-service-type\n"
47321 " (dnsmasq-configuration\n"
47322 " (addresses\n"
47323 " '(; Redirect to a local web-server.\n"
47324 " \"/example.org/127.0.0.1\"\n"
47325 " ; Redirect subdomain to a specific IP.\n"
47326 " \"/subdomain.example.org/192.168.1.42\"))))\n"
47327 msgstr ""
47328
47329 #. type: table
47330 #: guix-git/doc/guix.texi:26405
47331 msgid "Note that rules in @file{/etc/hosts} take precedence over this."
47332 msgstr ""
47333
47334 #. type: item
47335 #: guix-git/doc/guix.texi:26406
47336 #, no-wrap
47337 msgid "@code{cache-size} (default: @code{150})"
47338 msgstr ""
47339
47340 #. type: table
47341 #: guix-git/doc/guix.texi:26409
47342 msgid "Set the size of dnsmasq's cache. Setting the cache size to zero disables caching."
47343 msgstr ""
47344
47345 #. type: item
47346 #: guix-git/doc/guix.texi:26410
47347 #, no-wrap
47348 msgid "@code{negative-cache?} (default: @code{#t})"
47349 msgstr ""
47350
47351 #. type: table
47352 #: guix-git/doc/guix.texi:26412
47353 msgid "When false, disable negative caching."
47354 msgstr ""
47355
47356 #. type: item
47357 #: guix-git/doc/guix.texi:26413
47358 #, no-wrap
47359 msgid "@code{tftp-enable?} (default: @code{#f})"
47360 msgstr ""
47361
47362 #. type: table
47363 #: guix-git/doc/guix.texi:26415
47364 msgid "Whether to enable the built-in TFTP server."
47365 msgstr ""
47366
47367 #. type: item
47368 #: guix-git/doc/guix.texi:26416
47369 #, no-wrap
47370 msgid "@code{tftp-no-fail?} (default: @code{#f})"
47371 msgstr ""
47372
47373 #. type: table
47374 #: guix-git/doc/guix.texi:26418
47375 msgid "If true, does not fail dnsmasq if the TFTP server could not start up."
47376 msgstr ""
47377
47378 #. type: item
47379 #: guix-git/doc/guix.texi:26419
47380 #, no-wrap
47381 msgid "@code{tftp-single-port?} (default: @code{#f})"
47382 msgstr ""
47383
47384 #. type: table
47385 #: guix-git/doc/guix.texi:26421
47386 msgid "Whether to use only one single port for TFTP."
47387 msgstr ""
47388
47389 #. type: item
47390 #: guix-git/doc/guix.texi:26422
47391 #, no-wrap
47392 msgid "@code{tftp-secure?} (default: @code{#f})"
47393 msgstr ""
47394
47395 #. type: table
47396 #: guix-git/doc/guix.texi:26424
47397 msgid "If true, only files owned by the user running the dnsmasq process are accessible."
47398 msgstr ""
47399
47400 #. type: table
47401 #: guix-git/doc/guix.texi:26428
47402 msgid "If dnsmasq is being run as root, different rules apply: @code{tftp-secure?} has no effect, but only files which have the world-readable bit set are accessible."
47403 msgstr ""
47404
47405 #. type: item
47406 #: guix-git/doc/guix.texi:26429
47407 #, no-wrap
47408 msgid "@code{tftp-max} (default: @code{#f})"
47409 msgstr ""
47410
47411 #. type: table
47412 #: guix-git/doc/guix.texi:26431
47413 msgid "If set, sets the maximal number of concurrent connections allowed."
47414 msgstr ""
47415
47416 #. type: item
47417 #: guix-git/doc/guix.texi:26432
47418 #, no-wrap
47419 msgid "@code{tftp-mtu} (default: @code{#f})"
47420 msgstr ""
47421
47422 #. type: table
47423 #: guix-git/doc/guix.texi:26434
47424 msgid "If set, sets the MTU for TFTP packets to that value."
47425 msgstr ""
47426
47427 #. type: item
47428 #: guix-git/doc/guix.texi:26435
47429 #, no-wrap
47430 msgid "@code{tftp-no-blocksize?} (default: @code{#f})"
47431 msgstr ""
47432
47433 #. type: table
47434 #: guix-git/doc/guix.texi:26437
47435 msgid "If true, stops the TFTP server from negotiating the blocksize with a client."
47436 msgstr ""
47437
47438 #. type: item
47439 #: guix-git/doc/guix.texi:26438
47440 #, no-wrap
47441 msgid "@code{tftp-lowercase?} (default: @code{#f})"
47442 msgstr ""
47443
47444 #. type: table
47445 #: guix-git/doc/guix.texi:26440
47446 msgid "Whether to convert all filenames in TFTP requests to lowercase."
47447 msgstr ""
47448
47449 #. type: item
47450 #: guix-git/doc/guix.texi:26441
47451 #, no-wrap
47452 msgid "@code{tftp-port-range} (default: @code{#f})"
47453 msgstr ""
47454
47455 #. type: table
47456 #: guix-git/doc/guix.texi:26444
47457 msgid "If set, fixes the dynamical ports (one per client) to the given range (@code{\"<start>,<end>\"})."
47458 msgstr ""
47459
47460 #. type: item
47461 #: guix-git/doc/guix.texi:26445
47462 #, no-wrap
47463 msgid "@code{tftp-root} (default: @code{/var/empty,lo})"
47464 msgstr ""
47465
47466 #. type: table
47467 #: guix-git/doc/guix.texi:26452
47468 msgid "Look for files to transfer using TFTP relative to the given directory. When this is set, TFTP paths which include @samp{..} are rejected, to stop clients getting outside the specified root. Absolute paths (starting with @samp{/}) are allowed, but they must be within the TFTP-root. If the optional interface argument is given, the directory is only used for TFTP requests via that interface."
47469 msgstr ""
47470
47471 #. type: item
47472 #: guix-git/doc/guix.texi:26453
47473 #, no-wrap
47474 msgid "@code{tftp-unique-root} (default: @code{#f})"
47475 msgstr ""
47476
47477 #. type: table
47478 #: guix-git/doc/guix.texi:26458
47479 msgid "If set, add the IP or hardware address of the TFTP client as a path component on the end of the TFTP-root. Only valid if a TFTP root is set and the directory exists. Defaults to adding IP address (in standard dotted-quad format)."
47480 msgstr ""
47481
47482 #. type: table
47483 #: guix-git/doc/guix.texi:26467
47484 msgid "For instance, if @option{--tftp-root} is @samp{/tftp} and client @samp{1.2.3.4} requests file @file{myfile} then the effective path will be @file{/tftp/1.2.3.4/myfile} if @file{/tftp/1.2.3.4} exists or @file{/tftp/myfile} otherwise. When @samp{=mac} is specified it will append the MAC address instead, using lowercase zero padded digits separated by dashes, e.g.: @samp{01-02-03-04-aa-bb}. Note that resolving MAC addresses is only possible if the client is in the local network or obtained a DHCP lease from dnsmasq."
47485 msgstr ""
47486
47487 #. type: subsubheading
47488 #: guix-git/doc/guix.texi:26471
47489 #, no-wrap
47490 msgid "ddclient Service"
47491 msgstr ""
47492
47493 #. type: cindex
47494 #: guix-git/doc/guix.texi:26473
47495 #, no-wrap
47496 msgid "ddclient"
47497 msgstr ""
47498
47499 #. type: Plain text
47500 #: guix-git/doc/guix.texi:26477
47501 msgid "The ddclient service described below runs the ddclient daemon, which takes care of automatically updating DNS entries for service providers such as @uref{https://dyn.com/dns/, Dyn}."
47502 msgstr ""
47503
47504 #. type: Plain text
47505 #: guix-git/doc/guix.texi:26480
47506 msgid "The following example show instantiates the service with its default configuration:"
47507 msgstr ""
47508
47509 #. type: lisp
47510 #: guix-git/doc/guix.texi:26483
47511 #, no-wrap
47512 msgid "(service ddclient-service-type)\n"
47513 msgstr ""
47514
47515 #. type: Plain text
47516 #: guix-git/doc/guix.texi:26492
47517 msgid "Note that ddclient needs to access credentials that are stored in a @dfn{secret file}, by default @file{/etc/ddclient/secrets} (see @code{secret-file} below). You are expected to create this file manually, in an ``out-of-band'' fashion (you @emph{could} make this file part of the service configuration, for instance by using @code{plain-file}, but it will be world-readable @i{via} @file{/gnu/store}). See the examples in the @file{share/ddclient} directory of the @code{ddclient} package."
47518 msgstr ""
47519
47520 #. type: Plain text
47521 #: guix-git/doc/guix.texi:26496
47522 msgid "Available @code{ddclient-configuration} fields are:"
47523 msgstr ""
47524
47525 #. type: deftypevr
47526 #: guix-git/doc/guix.texi:26497
47527 #, no-wrap
47528 msgid "{@code{ddclient-configuration} parameter} package ddclient"
47529 msgstr ""
47530
47531 #. type: deftypevr
47532 #: guix-git/doc/guix.texi:26499
47533 msgid "The ddclient package."
47534 msgstr ""
47535
47536 #. type: deftypevr
47537 #: guix-git/doc/guix.texi:26502
47538 #, no-wrap
47539 msgid "{@code{ddclient-configuration} parameter} integer daemon"
47540 msgstr ""
47541
47542 #. type: deftypevr
47543 #: guix-git/doc/guix.texi:26504
47544 msgid "The period after which ddclient will retry to check IP and domain name."
47545 msgstr ""
47546
47547 #. type: deftypevr
47548 #: guix-git/doc/guix.texi:26509
47549 #, no-wrap
47550 msgid "{@code{ddclient-configuration} parameter} boolean syslog"
47551 msgstr ""
47552
47553 #. type: deftypevr
47554 #: guix-git/doc/guix.texi:26511
47555 msgid "Use syslog for the output."
47556 msgstr ""
47557
47558 #. type: deftypevr
47559 #: guix-git/doc/guix.texi:26516
47560 #, no-wrap
47561 msgid "{@code{ddclient-configuration} parameter} string mail"
47562 msgstr ""
47563
47564 #. type: deftypevr
47565 #: guix-git/doc/guix.texi:26518
47566 msgid "Mail to user."
47567 msgstr ""
47568
47569 #. type: deftypevr
47570 #: guix-git/doc/guix.texi:26520 guix-git/doc/guix.texi:26527
47571 #: guix-git/doc/guix.texi:28264
47572 msgid "Defaults to @samp{\"root\"}."
47573 msgstr ""
47574
47575 #. type: deftypevr
47576 #: guix-git/doc/guix.texi:26523
47577 #, no-wrap
47578 msgid "{@code{ddclient-configuration} parameter} string mail-failure"
47579 msgstr ""
47580
47581 #. type: deftypevr
47582 #: guix-git/doc/guix.texi:26525
47583 msgid "Mail failed update to user."
47584 msgstr ""
47585
47586 #. type: deftypevr
47587 #: guix-git/doc/guix.texi:26530
47588 #, no-wrap
47589 msgid "{@code{ddclient-configuration} parameter} string pid"
47590 msgstr ""
47591
47592 #. type: deftypevr
47593 #: guix-git/doc/guix.texi:26532
47594 msgid "The ddclient PID file."
47595 msgstr ""
47596
47597 #. type: deftypevr
47598 #: guix-git/doc/guix.texi:26534
47599 msgid "Defaults to @samp{\"/var/run/ddclient/ddclient.pid\"}."
47600 msgstr ""
47601
47602 #. type: deftypevr
47603 #: guix-git/doc/guix.texi:26537
47604 #, no-wrap
47605 msgid "{@code{ddclient-configuration} parameter} boolean ssl"
47606 msgstr ""
47607
47608 #. type: deftypevr
47609 #: guix-git/doc/guix.texi:26539
47610 msgid "Enable SSL support."
47611 msgstr ""
47612
47613 #. type: deftypevr
47614 #: guix-git/doc/guix.texi:26544
47615 #, no-wrap
47616 msgid "{@code{ddclient-configuration} parameter} string user"
47617 msgstr ""
47618
47619 #. type: deftypevr
47620 #: guix-git/doc/guix.texi:26547
47621 msgid "Specifies the user name or ID that is used when running ddclient program."
47622 msgstr ""
47623
47624 #. type: deftypevr
47625 #: guix-git/doc/guix.texi:26549 guix-git/doc/guix.texi:26556
47626 msgid "Defaults to @samp{\"ddclient\"}."
47627 msgstr ""
47628
47629 #. type: deftypevr
47630 #: guix-git/doc/guix.texi:26552
47631 #, no-wrap
47632 msgid "{@code{ddclient-configuration} parameter} string group"
47633 msgstr ""
47634
47635 #. type: deftypevr
47636 #: guix-git/doc/guix.texi:26554
47637 msgid "Group of the user who will run the ddclient program."
47638 msgstr ""
47639
47640 #. type: deftypevr
47641 #: guix-git/doc/guix.texi:26559
47642 #, no-wrap
47643 msgid "{@code{ddclient-configuration} parameter} string secret-file"
47644 msgstr ""
47645
47646 #. type: deftypevr
47647 #: guix-git/doc/guix.texi:26563
47648 msgid "Secret file which will be appended to @file{ddclient.conf} file. This file contains credentials for use by ddclient. You are expected to create it manually."
47649 msgstr ""
47650
47651 #. type: deftypevr
47652 #: guix-git/doc/guix.texi:26565
47653 msgid "Defaults to @samp{\"/etc/ddclient/secrets.conf\"}."
47654 msgstr ""
47655
47656 #. type: deftypevr
47657 #: guix-git/doc/guix.texi:26568
47658 #, no-wrap
47659 msgid "{@code{ddclient-configuration} parameter} list extra-options"
47660 msgstr ""
47661
47662 #. type: deftypevr
47663 #: guix-git/doc/guix.texi:26570
47664 msgid "Extra options will be appended to @file{ddclient.conf} file."
47665 msgstr ""
47666
47667 #. type: cindex
47668 #: guix-git/doc/guix.texi:26581
47669 #, no-wrap
47670 msgid "VPN (virtual private network)"
47671 msgstr ""
47672
47673 #. type: cindex
47674 #: guix-git/doc/guix.texi:26582
47675 #, no-wrap
47676 msgid "virtual private network (VPN)"
47677 msgstr ""
47678
47679 #. type: Plain text
47680 #: guix-git/doc/guix.texi:26586
47681 msgid "The @code{(gnu services vpn)} module provides services related to @dfn{virtual private networks} (VPNs)."
47682 msgstr ""
47683
47684 #. type: subsubheading
47685 #: guix-git/doc/guix.texi:26587
47686 #, no-wrap
47687 msgid "OpenVPN"
47688 msgstr ""
47689
47690 #. type: Plain text
47691 #: guix-git/doc/guix.texi:26591
47692 msgid "It provides a @emph{client} service for your machine to connect to a VPN, and a @emph{server} service for your machine to host a VPN@."
47693 msgstr ""
47694
47695 #. type: deffn
47696 #: guix-git/doc/guix.texi:26592
47697 #, no-wrap
47698 msgid "{Scheme Procedure} openvpn-client-service @"
47699 msgstr ""
47700
47701 #. type: deffn
47702 #: guix-git/doc/guix.texi:26594
47703 msgid "[#:config (openvpn-client-configuration)]"
47704 msgstr ""
47705
47706 #. type: deffn
47707 #: guix-git/doc/guix.texi:26596
47708 msgid "Return a service that runs @command{openvpn}, a VPN daemon, as a client."
47709 msgstr ""
47710
47711 #. type: deffn
47712 #: guix-git/doc/guix.texi:26598
47713 #, no-wrap
47714 msgid "{Scheme Procedure} openvpn-server-service @"
47715 msgstr ""
47716
47717 #. type: deffn
47718 #: guix-git/doc/guix.texi:26600
47719 msgid "[#:config (openvpn-server-configuration)]"
47720 msgstr ""
47721
47722 #. type: deffn
47723 #: guix-git/doc/guix.texi:26602
47724 msgid "Return a service that runs @command{openvpn}, a VPN daemon, as a server."
47725 msgstr ""
47726
47727 #. type: deffn
47728 #: guix-git/doc/guix.texi:26604
47729 msgid "Both can be run simultaneously."
47730 msgstr ""
47731
47732 #. type: Plain text
47733 #: guix-git/doc/guix.texi:26609
47734 msgid "Available @code{openvpn-client-configuration} fields are:"
47735 msgstr ""
47736
47737 #. type: deftypevr
47738 #: guix-git/doc/guix.texi:26610
47739 #, no-wrap
47740 msgid "{@code{openvpn-client-configuration} parameter} package openvpn"
47741 msgstr ""
47742
47743 #. type: deftypevr
47744 #: guix-git/doc/guix.texi:26612 guix-git/doc/guix.texi:26767
47745 msgid "The OpenVPN package."
47746 msgstr ""
47747
47748 #. type: deftypevr
47749 #: guix-git/doc/guix.texi:26615
47750 #, no-wrap
47751 msgid "{@code{openvpn-client-configuration} parameter} string pid-file"
47752 msgstr ""
47753
47754 #. type: deftypevr
47755 #: guix-git/doc/guix.texi:26617 guix-git/doc/guix.texi:26772
47756 msgid "The OpenVPN pid file."
47757 msgstr ""
47758
47759 #. type: deftypevr
47760 #: guix-git/doc/guix.texi:26619 guix-git/doc/guix.texi:26774
47761 msgid "Defaults to @samp{\"/var/run/openvpn/openvpn.pid\"}."
47762 msgstr ""
47763
47764 #. type: deftypevr
47765 #: guix-git/doc/guix.texi:26622
47766 #, no-wrap
47767 msgid "{@code{openvpn-client-configuration} parameter} proto proto"
47768 msgstr ""
47769
47770 #. type: deftypevr
47771 #: guix-git/doc/guix.texi:26625 guix-git/doc/guix.texi:26780
47772 msgid "The protocol (UDP or TCP) used to open a channel between clients and servers."
47773 msgstr ""
47774
47775 #. type: deftypevr
47776 #: guix-git/doc/guix.texi:26627 guix-git/doc/guix.texi:26782
47777 msgid "Defaults to @samp{udp}."
47778 msgstr ""
47779
47780 #. type: deftypevr
47781 #: guix-git/doc/guix.texi:26630
47782 #, no-wrap
47783 msgid "{@code{openvpn-client-configuration} parameter} dev dev"
47784 msgstr ""
47785
47786 #. type: deftypevr
47787 #: guix-git/doc/guix.texi:26632 guix-git/doc/guix.texi:26787
47788 msgid "The device type used to represent the VPN connection."
47789 msgstr ""
47790
47791 #. type: deftypevr
47792 #: guix-git/doc/guix.texi:26634 guix-git/doc/guix.texi:26789
47793 msgid "Defaults to @samp{tun}."
47794 msgstr ""
47795
47796 #. type: Plain text
47797 #: guix-git/doc/guix.texi:26640 guix-git/doc/guix.texi:26795
47798 msgid "If you do not have some of these files (eg.@: you use a username and password), you can disable any of the following three fields by setting it to @code{'disabled}."
47799 msgstr ""
47800
47801 #. type: deftypevr
47802 #: guix-git/doc/guix.texi:26641
47803 #, no-wrap
47804 msgid "{@code{openvpn-client-configuration} parameter} maybe-string ca"
47805 msgstr ""
47806
47807 #. type: deftypevr
47808 #: guix-git/doc/guix.texi:26643 guix-git/doc/guix.texi:26798
47809 msgid "The certificate authority to check connections against."
47810 msgstr ""
47811
47812 #. type: deftypevr
47813 #: guix-git/doc/guix.texi:26645 guix-git/doc/guix.texi:26800
47814 msgid "Defaults to @samp{\"/etc/openvpn/ca.crt\"}."
47815 msgstr ""
47816
47817 #. type: deftypevr
47818 #: guix-git/doc/guix.texi:26648
47819 #, no-wrap
47820 msgid "{@code{openvpn-client-configuration} parameter} maybe-string cert"
47821 msgstr ""
47822
47823 #. type: deftypevr
47824 #: guix-git/doc/guix.texi:26651 guix-git/doc/guix.texi:26806
47825 msgid "The certificate of the machine the daemon is running on. It should be signed by the authority given in @code{ca}."
47826 msgstr ""
47827
47828 #. type: deftypevr
47829 #: guix-git/doc/guix.texi:26653 guix-git/doc/guix.texi:26808
47830 msgid "Defaults to @samp{\"/etc/openvpn/client.crt\"}."
47831 msgstr ""
47832
47833 #. type: deftypevr
47834 #: guix-git/doc/guix.texi:26656
47835 #, no-wrap
47836 msgid "{@code{openvpn-client-configuration} parameter} maybe-string key"
47837 msgstr ""
47838
47839 #. type: deftypevr
47840 #: guix-git/doc/guix.texi:26659 guix-git/doc/guix.texi:26814
47841 msgid "The key of the machine the daemon is running on. It must be the key whose certificate is @code{cert}."
47842 msgstr ""
47843
47844 #. type: deftypevr
47845 #: guix-git/doc/guix.texi:26661 guix-git/doc/guix.texi:26816
47846 msgid "Defaults to @samp{\"/etc/openvpn/client.key\"}."
47847 msgstr ""
47848
47849 #. type: deftypevr
47850 #: guix-git/doc/guix.texi:26664
47851 #, no-wrap
47852 msgid "{@code{openvpn-client-configuration} parameter} boolean comp-lzo?"
47853 msgstr ""
47854
47855 #. type: deftypevr
47856 #: guix-git/doc/guix.texi:26666 guix-git/doc/guix.texi:26821
47857 msgid "Whether to use the lzo compression algorithm."
47858 msgstr ""
47859
47860 #. type: deftypevr
47861 #: guix-git/doc/guix.texi:26671
47862 #, no-wrap
47863 msgid "{@code{openvpn-client-configuration} parameter} boolean persist-key?"
47864 msgstr ""
47865
47866 #. type: deftypevr
47867 #: guix-git/doc/guix.texi:26673 guix-git/doc/guix.texi:26828
47868 msgid "Don't re-read key files across SIGUSR1 or --ping-restart."
47869 msgstr ""
47870
47871 #. type: deftypevr
47872 #: guix-git/doc/guix.texi:26678
47873 #, no-wrap
47874 msgid "{@code{openvpn-client-configuration} parameter} boolean persist-tun?"
47875 msgstr ""
47876
47877 #. type: deftypevr
47878 #: guix-git/doc/guix.texi:26681 guix-git/doc/guix.texi:26836
47879 msgid "Don't close and reopen TUN/TAP device or run up/down scripts across SIGUSR1 or --ping-restart restarts."
47880 msgstr ""
47881
47882 #. type: deftypevr
47883 #: guix-git/doc/guix.texi:26686
47884 #, no-wrap
47885 msgid "{@code{openvpn-client-configuration} parameter} boolean fast-io?"
47886 msgstr ""
47887
47888 #. type: deftypevr
47889 #: guix-git/doc/guix.texi:26689 guix-git/doc/guix.texi:26844
47890 msgid "(Experimental) Optimize TUN/TAP/UDP I/O writes by avoiding a call to poll/epoll/select prior to the write operation."
47891 msgstr ""
47892
47893 #. type: deftypevr
47894 #: guix-git/doc/guix.texi:26693
47895 #, no-wrap
47896 msgid "{@code{openvpn-client-configuration} parameter} number verbosity"
47897 msgstr ""
47898
47899 #. type: deftypevr
47900 #: guix-git/doc/guix.texi:26695 guix-git/doc/guix.texi:26850
47901 msgid "Verbosity level."
47902 msgstr ""
47903
47904 #. type: deftypevr
47905 #: guix-git/doc/guix.texi:26697 guix-git/doc/guix.texi:26852
47906 #: guix-git/doc/guix.texi:28532 guix-git/doc/guix.texi:28756
47907 msgid "Defaults to @samp{3}."
47908 msgstr ""
47909
47910 #. type: deftypevr
47911 #: guix-git/doc/guix.texi:26700
47912 #, no-wrap
47913 msgid "{@code{openvpn-client-configuration} parameter} tls-auth-client tls-auth"
47914 msgstr ""
47915
47916 #. type: deftypevr
47917 #: guix-git/doc/guix.texi:26703 guix-git/doc/guix.texi:26858
47918 msgid "Add an additional layer of HMAC authentication on top of the TLS control channel to protect against DoS attacks."
47919 msgstr ""
47920
47921 #. type: deftypevr
47922 #: guix-git/doc/guix.texi:26708
47923 #, no-wrap
47924 msgid "{@code{openvpn-client-configuration} parameter} maybe-string auth-user-pass"
47925 msgstr ""
47926
47927 #. type: deftypevr
47928 #: guix-git/doc/guix.texi:26712
47929 msgid "Authenticate with server using username/password. The option is a file containing username/password on 2 lines. Do not use a file-like object as it would be added to the store and readable by any user."
47930 msgstr ""
47931
47932 #. type: deftypevr
47933 #: guix-git/doc/guix.texi:26714
47934 msgid "Defaults to @samp{'disabled}."
47935 msgstr ""
47936
47937 #. type: deftypevr
47938 #: guix-git/doc/guix.texi:26716
47939 #, no-wrap
47940 msgid "{@code{openvpn-client-configuration} parameter} key-usage verify-key-usage?"
47941 msgstr ""
47942
47943 #. type: deftypevr
47944 #: guix-git/doc/guix.texi:26718
47945 msgid "Whether to check the server certificate has server usage extension."
47946 msgstr ""
47947
47948 #. type: deftypevr
47949 #: guix-git/doc/guix.texi:26723
47950 #, no-wrap
47951 msgid "{@code{openvpn-client-configuration} parameter} bind bind?"
47952 msgstr ""
47953
47954 #. type: deftypevr
47955 #: guix-git/doc/guix.texi:26725
47956 msgid "Bind to a specific local port number."
47957 msgstr ""
47958
47959 #. type: deftypevr
47960 #: guix-git/doc/guix.texi:26730
47961 #, no-wrap
47962 msgid "{@code{openvpn-client-configuration} parameter} resolv-retry resolv-retry?"
47963 msgstr ""
47964
47965 #. type: deftypevr
47966 #: guix-git/doc/guix.texi:26732
47967 msgid "Retry resolving server address."
47968 msgstr ""
47969
47970 #. type: deftypevr
47971 #: guix-git/doc/guix.texi:26737
47972 #, no-wrap
47973 msgid "{@code{openvpn-client-configuration} parameter} openvpn-remote-list remote"
47974 msgstr ""
47975
47976 #. type: deftypevr
47977 #: guix-git/doc/guix.texi:26739
47978 msgid "A list of remote servers to connect to."
47979 msgstr ""
47980
47981 #. type: deftypevr
47982 #: guix-git/doc/guix.texi:26743
47983 msgid "Available @code{openvpn-remote-configuration} fields are:"
47984 msgstr ""
47985
47986 #. type: deftypevr
47987 #: guix-git/doc/guix.texi:26744
47988 #, no-wrap
47989 msgid "{@code{openvpn-remote-configuration} parameter} string name"
47990 msgstr ""
47991
47992 #. type: deftypevr
47993 #: guix-git/doc/guix.texi:26746
47994 msgid "Server name."
47995 msgstr ""
47996
47997 #. type: deftypevr
47998 #: guix-git/doc/guix.texi:26748
47999 msgid "Defaults to @samp{\"my-server\"}."
48000 msgstr ""
48001
48002 #. type: deftypevr
48003 #: guix-git/doc/guix.texi:26751
48004 #, no-wrap
48005 msgid "{@code{openvpn-remote-configuration} parameter} number port"
48006 msgstr ""
48007
48008 #. type: deftypevr
48009 #: guix-git/doc/guix.texi:26753
48010 msgid "Port number the server listens to."
48011 msgstr ""
48012
48013 #. type: deftypevr
48014 #: guix-git/doc/guix.texi:26755 guix-git/doc/guix.texi:26867
48015 msgid "Defaults to @samp{1194}."
48016 msgstr ""
48017
48018 #. type: Plain text
48019 #: guix-git/doc/guix.texi:26764
48020 msgid "Available @code{openvpn-server-configuration} fields are:"
48021 msgstr ""
48022
48023 #. type: deftypevr
48024 #: guix-git/doc/guix.texi:26765
48025 #, no-wrap
48026 msgid "{@code{openvpn-server-configuration} parameter} package openvpn"
48027 msgstr ""
48028
48029 #. type: deftypevr
48030 #: guix-git/doc/guix.texi:26770
48031 #, no-wrap
48032 msgid "{@code{openvpn-server-configuration} parameter} string pid-file"
48033 msgstr ""
48034
48035 #. type: deftypevr
48036 #: guix-git/doc/guix.texi:26777
48037 #, no-wrap
48038 msgid "{@code{openvpn-server-configuration} parameter} proto proto"
48039 msgstr ""
48040
48041 #. type: deftypevr
48042 #: guix-git/doc/guix.texi:26785
48043 #, no-wrap
48044 msgid "{@code{openvpn-server-configuration} parameter} dev dev"
48045 msgstr ""
48046
48047 #. type: deftypevr
48048 #: guix-git/doc/guix.texi:26796
48049 #, no-wrap
48050 msgid "{@code{openvpn-server-configuration} parameter} maybe-string ca"
48051 msgstr ""
48052
48053 #. type: deftypevr
48054 #: guix-git/doc/guix.texi:26803
48055 #, no-wrap
48056 msgid "{@code{openvpn-server-configuration} parameter} maybe-string cert"
48057 msgstr ""
48058
48059 #. type: deftypevr
48060 #: guix-git/doc/guix.texi:26811
48061 #, no-wrap
48062 msgid "{@code{openvpn-server-configuration} parameter} maybe-string key"
48063 msgstr ""
48064
48065 #. type: deftypevr
48066 #: guix-git/doc/guix.texi:26819
48067 #, no-wrap
48068 msgid "{@code{openvpn-server-configuration} parameter} boolean comp-lzo?"
48069 msgstr ""
48070
48071 #. type: deftypevr
48072 #: guix-git/doc/guix.texi:26826
48073 #, no-wrap
48074 msgid "{@code{openvpn-server-configuration} parameter} boolean persist-key?"
48075 msgstr ""
48076
48077 #. type: deftypevr
48078 #: guix-git/doc/guix.texi:26833
48079 #, no-wrap
48080 msgid "{@code{openvpn-server-configuration} parameter} boolean persist-tun?"
48081 msgstr ""
48082
48083 #. type: deftypevr
48084 #: guix-git/doc/guix.texi:26841
48085 #, no-wrap
48086 msgid "{@code{openvpn-server-configuration} parameter} boolean fast-io?"
48087 msgstr ""
48088
48089 #. type: deftypevr
48090 #: guix-git/doc/guix.texi:26848
48091 #, no-wrap
48092 msgid "{@code{openvpn-server-configuration} parameter} number verbosity"
48093 msgstr ""
48094
48095 #. type: deftypevr
48096 #: guix-git/doc/guix.texi:26855
48097 #, no-wrap
48098 msgid "{@code{openvpn-server-configuration} parameter} tls-auth-server tls-auth"
48099 msgstr ""
48100
48101 #. type: deftypevr
48102 #: guix-git/doc/guix.texi:26863
48103 #, no-wrap
48104 msgid "{@code{openvpn-server-configuration} parameter} number port"
48105 msgstr ""
48106
48107 #. type: deftypevr
48108 #: guix-git/doc/guix.texi:26865
48109 msgid "Specifies the port number on which the server listens."
48110 msgstr ""
48111
48112 #. type: deftypevr
48113 #: guix-git/doc/guix.texi:26870
48114 #, no-wrap
48115 msgid "{@code{openvpn-server-configuration} parameter} ip-mask server"
48116 msgstr ""
48117
48118 #. type: deftypevr
48119 #: guix-git/doc/guix.texi:26872
48120 msgid "An ip and mask specifying the subnet inside the virtual network."
48121 msgstr ""
48122
48123 #. type: deftypevr
48124 #: guix-git/doc/guix.texi:26874
48125 msgid "Defaults to @samp{\"10.8.0.0 255.255.255.0\"}."
48126 msgstr ""
48127
48128 #. type: deftypevr
48129 #: guix-git/doc/guix.texi:26877
48130 #, no-wrap
48131 msgid "{@code{openvpn-server-configuration} parameter} cidr6 server-ipv6"
48132 msgstr ""
48133
48134 #. type: deftypevr
48135 #: guix-git/doc/guix.texi:26879
48136 msgid "A CIDR notation specifying the IPv6 subnet inside the virtual network."
48137 msgstr ""
48138
48139 #. type: deftypevr
48140 #: guix-git/doc/guix.texi:26884
48141 #, no-wrap
48142 msgid "{@code{openvpn-server-configuration} parameter} string dh"
48143 msgstr ""
48144
48145 #. type: deftypevr
48146 #: guix-git/doc/guix.texi:26886
48147 msgid "The Diffie-Hellman parameters file."
48148 msgstr ""
48149
48150 #. type: deftypevr
48151 #: guix-git/doc/guix.texi:26888
48152 msgid "Defaults to @samp{\"/etc/openvpn/dh2048.pem\"}."
48153 msgstr ""
48154
48155 #. type: deftypevr
48156 #: guix-git/doc/guix.texi:26891
48157 #, no-wrap
48158 msgid "{@code{openvpn-server-configuration} parameter} string ifconfig-pool-persist"
48159 msgstr ""
48160
48161 #. type: deftypevr
48162 #: guix-git/doc/guix.texi:26893
48163 msgid "The file that records client IPs."
48164 msgstr ""
48165
48166 #. type: deftypevr
48167 #: guix-git/doc/guix.texi:26895
48168 msgid "Defaults to @samp{\"/etc/openvpn/ipp.txt\"}."
48169 msgstr ""
48170
48171 #. type: deftypevr
48172 #: guix-git/doc/guix.texi:26898
48173 #, no-wrap
48174 msgid "{@code{openvpn-server-configuration} parameter} gateway redirect-gateway?"
48175 msgstr ""
48176
48177 #. type: deftypevr
48178 #: guix-git/doc/guix.texi:26900
48179 msgid "When true, the server will act as a gateway for its clients."
48180 msgstr ""
48181
48182 #. type: deftypevr
48183 #: guix-git/doc/guix.texi:26905
48184 #, no-wrap
48185 msgid "{@code{openvpn-server-configuration} parameter} boolean client-to-client?"
48186 msgstr ""
48187
48188 #. type: deftypevr
48189 #: guix-git/doc/guix.texi:26907
48190 msgid "When true, clients are allowed to talk to each other inside the VPN."
48191 msgstr ""
48192
48193 #. type: deftypevr
48194 #: guix-git/doc/guix.texi:26912
48195 #, no-wrap
48196 msgid "{@code{openvpn-server-configuration} parameter} keepalive keepalive"
48197 msgstr ""
48198
48199 #. type: deftypevr
48200 #: guix-git/doc/guix.texi:26918
48201 msgid "Causes ping-like messages to be sent back and forth over the link so that each side knows when the other side has gone down. @code{keepalive} requires a pair. The first element is the period of the ping sending, and the second element is the timeout before considering the other side down."
48202 msgstr ""
48203
48204 #. type: deftypevr
48205 #: guix-git/doc/guix.texi:26921
48206 #, no-wrap
48207 msgid "{@code{openvpn-server-configuration} parameter} number max-clients"
48208 msgstr ""
48209
48210 #. type: deftypevr
48211 #: guix-git/doc/guix.texi:26923
48212 msgid "The maximum number of clients."
48213 msgstr ""
48214
48215 #. type: deftypevr
48216 #: guix-git/doc/guix.texi:26928
48217 #, no-wrap
48218 msgid "{@code{openvpn-server-configuration} parameter} string status"
48219 msgstr ""
48220
48221 #. type: deftypevr
48222 #: guix-git/doc/guix.texi:26931
48223 msgid "The status file. This file shows a small report on current connection. It is truncated and rewritten every minute."
48224 msgstr ""
48225
48226 #. type: deftypevr
48227 #: guix-git/doc/guix.texi:26933
48228 msgid "Defaults to @samp{\"/var/run/openvpn/status\"}."
48229 msgstr ""
48230
48231 #. type: deftypevr
48232 #: guix-git/doc/guix.texi:26936
48233 #, no-wrap
48234 msgid "{@code{openvpn-server-configuration} parameter} openvpn-ccd-list client-config-dir"
48235 msgstr ""
48236
48237 #. type: deftypevr
48238 #: guix-git/doc/guix.texi:26938
48239 msgid "The list of configuration for some clients."
48240 msgstr ""
48241
48242 #. type: deftypevr
48243 #: guix-git/doc/guix.texi:26942
48244 msgid "Available @code{openvpn-ccd-configuration} fields are:"
48245 msgstr ""
48246
48247 #. type: deftypevr
48248 #: guix-git/doc/guix.texi:26943
48249 #, no-wrap
48250 msgid "{@code{openvpn-ccd-configuration} parameter} string name"
48251 msgstr ""
48252
48253 #. type: deftypevr
48254 #: guix-git/doc/guix.texi:26945
48255 msgid "Client name."
48256 msgstr ""
48257
48258 #. type: deftypevr
48259 #: guix-git/doc/guix.texi:26947
48260 msgid "Defaults to @samp{\"client\"}."
48261 msgstr ""
48262
48263 #. type: deftypevr
48264 #: guix-git/doc/guix.texi:26950
48265 #, no-wrap
48266 msgid "{@code{openvpn-ccd-configuration} parameter} ip-mask iroute"
48267 msgstr ""
48268
48269 #. type: deftypevr
48270 #: guix-git/doc/guix.texi:26952
48271 msgid "Client own network"
48272 msgstr ""
48273
48274 #. type: deftypevr
48275 #: guix-git/doc/guix.texi:26957
48276 #, no-wrap
48277 msgid "{@code{openvpn-ccd-configuration} parameter} ip-mask ifconfig-push"
48278 msgstr ""
48279
48280 #. type: deftypevr
48281 #: guix-git/doc/guix.texi:26959
48282 msgid "Client VPN IP."
48283 msgstr ""
48284
48285 #. type: subsubheading
48286 #: guix-git/doc/guix.texi:26969
48287 #, no-wrap
48288 msgid "Wireguard"
48289 msgstr ""
48290
48291 #. type: defvr
48292 #: guix-git/doc/guix.texi:26971
48293 #, no-wrap
48294 msgid "{Scheme Variable} wireguard-service-type"
48295 msgstr ""
48296
48297 #. type: defvr
48298 #: guix-git/doc/guix.texi:26974
48299 msgid "A service type for a Wireguard tunnel interface. Its value must be a @code{wireguard-configuration} record as in this example:"
48300 msgstr ""
48301
48302 #. type: lisp
48303 #: guix-git/doc/guix.texi:26985
48304 #, no-wrap
48305 msgid ""
48306 "(service wireguard-service-type\n"
48307 " (wireguard-configuration\n"
48308 " (peers\n"
48309 " (list\n"
48310 " (wireguard-peer\n"
48311 " (name \"my-peer\")\n"
48312 " (endpoint \"my.wireguard.com:51820\")\n"
48313 " (public-key \"hzpKg9X1yqu1axN6iJp0mWf6BZGo8m1wteKwtTmDGF4=\")\n"
48314 " (allowed-ips '(\"10.0.0.2/32\")))))))\n"
48315 msgstr ""
48316
48317 #. type: deftp
48318 #: guix-git/doc/guix.texi:26989
48319 #, no-wrap
48320 msgid "{Data Type} wireguard-configuration"
48321 msgstr ""
48322
48323 #. type: deftp
48324 #: guix-git/doc/guix.texi:26991
48325 msgid "Data type representing the configuration of the Wireguard service."
48326 msgstr ""
48327
48328 #. type: code{#1}
48329 #: guix-git/doc/guix.texi:26993
48330 #, no-wrap
48331 msgid "wireguard"
48332 msgstr ""
48333
48334 #. type: table
48335 #: guix-git/doc/guix.texi:26995
48336 msgid "The wireguard package to use for this service."
48337 msgstr ""
48338
48339 #. type: item
48340 #: guix-git/doc/guix.texi:26996
48341 #, no-wrap
48342 msgid "@code{interface} (default: @code{\"wg0\"})"
48343 msgstr ""
48344
48345 #. type: table
48346 #: guix-git/doc/guix.texi:26998
48347 msgid "The interface name for the VPN."
48348 msgstr ""
48349
48350 #. type: item
48351 #: guix-git/doc/guix.texi:26999
48352 #, no-wrap
48353 msgid "@code{addresses} (default: @code{'(\"10.0.0.1/32\")})"
48354 msgstr ""
48355
48356 #. type: table
48357 #: guix-git/doc/guix.texi:27001
48358 msgid "The IP addresses to be assigned to the above interface."
48359 msgstr ""
48360
48361 #. type: item
48362 #: guix-git/doc/guix.texi:27002
48363 #, no-wrap
48364 msgid "@code{private-key} (default: @code{\"/etc/wireguard/private.key\"})"
48365 msgstr ""
48366
48367 #. type: table
48368 #: guix-git/doc/guix.texi:27005
48369 msgid "The private key file for the interface. It is automatically generated if the file does not exist."
48370 msgstr ""
48371
48372 #. type: item
48373 #: guix-git/doc/guix.texi:27006
48374 #, no-wrap
48375 msgid "@code{peers} (default: @code{'()})"
48376 msgstr ""
48377
48378 #. type: table
48379 #: guix-git/doc/guix.texi:27009
48380 msgid "The authorized peers on this interface. This is a list of @var{wireguard-peer} records."
48381 msgstr ""
48382
48383 #. type: deftp
48384 #: guix-git/doc/guix.texi:27013
48385 #, no-wrap
48386 msgid "{Data Type} wireguard-peer"
48387 msgstr ""
48388
48389 #. type: deftp
48390 #: guix-git/doc/guix.texi:27015
48391 msgid "Data type representing a Wireguard peer attached to a given interface."
48392 msgstr ""
48393
48394 #. type: table
48395 #: guix-git/doc/guix.texi:27019
48396 msgid "The peer name."
48397 msgstr ""
48398
48399 #. type: item
48400 #: guix-git/doc/guix.texi:27020
48401 #, no-wrap
48402 msgid "@code{endpoint} (default: @code{#f})"
48403 msgstr ""
48404
48405 #. type: table
48406 #: guix-git/doc/guix.texi:27023
48407 msgid "The optional endpoint for the peer, such as @code{\"demo.wireguard.com:51820\"}."
48408 msgstr ""
48409
48410 #. type: itemx
48411 #: guix-git/doc/guix.texi:27024 guix-git/doc/guix.texi:27408
48412 #: guix-git/doc/guix.texi:27442 guix-git/doc/guix.texi:32244
48413 #, no-wrap
48414 msgid "public-key"
48415 msgstr ""
48416
48417 #. type: table
48418 #: guix-git/doc/guix.texi:27026
48419 msgid "The peer public-key represented as a base64 string."
48420 msgstr ""
48421
48422 #. type: code{#1}
48423 #: guix-git/doc/guix.texi:27027
48424 #, no-wrap
48425 msgid "allowed-ips"
48426 msgstr ""
48427
48428 #. type: table
48429 #: guix-git/doc/guix.texi:27030
48430 msgid "A list of IP addresses from which incoming traffic for this peer is allowed and to which incoming traffic for this peer is directed."
48431 msgstr ""
48432
48433 #. type: cindex
48434 #: guix-git/doc/guix.texi:27036
48435 #, no-wrap
48436 msgid "NFS"
48437 msgstr ""
48438
48439 #. type: Plain text
48440 #: guix-git/doc/guix.texi:27041
48441 msgid "The @code{(gnu services nfs)} module provides the following services, which are most commonly used in relation to mounting or exporting directory trees as @dfn{network file systems} (NFS)."
48442 msgstr ""
48443
48444 #. type: Plain text
48445 #: guix-git/doc/guix.texi:27045
48446 msgid "While it is possible to use the individual components that together make up a Network File System service, we recommended to configure an NFS server with the @code{nfs-service-type}."
48447 msgstr ""
48448
48449 #. type: subsubheading
48450 #: guix-git/doc/guix.texi:27046
48451 #, no-wrap
48452 msgid "NFS Service"
48453 msgstr ""
48454
48455 #. type: cindex
48456 #: guix-git/doc/guix.texi:27047
48457 #, no-wrap
48458 msgid "NFS, server"
48459 msgstr ""
48460
48461 #. type: Plain text
48462 #: guix-git/doc/guix.texi:27052
48463 msgid "The NFS service takes care of setting up all NFS component services, kernel configuration file systems, and installs configuration files in the locations that NFS expects."
48464 msgstr ""
48465
48466 #. type: defvr
48467 #: guix-git/doc/guix.texi:27053
48468 #, no-wrap
48469 msgid "{Scheme Variable} nfs-service-type"
48470 msgstr ""
48471
48472 #. type: defvr
48473 #: guix-git/doc/guix.texi:27055
48474 msgid "A service type for a complete NFS server."
48475 msgstr ""
48476
48477 #. type: deftp
48478 #: guix-git/doc/guix.texi:27057
48479 #, no-wrap
48480 msgid "{Data Type} nfs-configuration"
48481 msgstr ""
48482
48483 #. type: deftp
48484 #: guix-git/doc/guix.texi:27060
48485 msgid "This data type represents the configuration of the NFS service and all of its subsystems."
48486 msgstr ""
48487
48488 #. type: deftp
48489 #: guix-git/doc/guix.texi:27062
48490 msgid "It has the following parameters:"
48491 msgstr ""
48492
48493 #. type: item
48494 #: guix-git/doc/guix.texi:27063 guix-git/doc/guix.texi:27188
48495 #: guix-git/doc/guix.texi:27213
48496 #, no-wrap
48497 msgid "@code{nfs-utils} (default: @code{nfs-utils})"
48498 msgstr ""
48499
48500 #. type: table
48501 #: guix-git/doc/guix.texi:27065
48502 msgid "The nfs-utils package to use."
48503 msgstr ""
48504
48505 #. type: item
48506 #: guix-git/doc/guix.texi:27066
48507 #, no-wrap
48508 msgid "@code{nfs-versions} (default: @code{'(\"4.2\" \"4.1\" \"4.0\")})"
48509 msgstr ""
48510
48511 #. type: table
48512 #: guix-git/doc/guix.texi:27069
48513 msgid "If a list of string values is provided, the @command{rpc.nfsd} daemon will be limited to supporting the given versions of the NFS protocol."
48514 msgstr ""
48515
48516 #. type: item
48517 #: guix-git/doc/guix.texi:27070
48518 #, no-wrap
48519 msgid "@code{exports} (default: @code{'()})"
48520 msgstr ""
48521
48522 #. type: table
48523 #: guix-git/doc/guix.texi:27075
48524 msgid "This is a list of directories the NFS server should export. Each entry is a list consisting of two elements: a directory name and a string containing all options. This is an example in which the directory @file{/export} is served to all NFS clients as a read-only share:"
48525 msgstr ""
48526
48527 #. type: lisp
48528 #: guix-git/doc/guix.texi:27081
48529 #, no-wrap
48530 msgid ""
48531 "(nfs-configuration\n"
48532 " (exports\n"
48533 " '((\"/export\"\n"
48534 " \"*(ro,insecure,no_subtree_check,crossmnt,fsid=0)\"))))\n"
48535 msgstr ""
48536
48537 #. type: item
48538 #: guix-git/doc/guix.texi:27083
48539 #, no-wrap
48540 msgid "@code{rpcmountd-port} (default: @code{#f})"
48541 msgstr ""
48542
48543 #. type: table
48544 #: guix-git/doc/guix.texi:27085
48545 msgid "The network port that the @command{rpc.mountd} daemon should use."
48546 msgstr ""
48547
48548 #. type: item
48549 #: guix-git/doc/guix.texi:27086
48550 #, no-wrap
48551 msgid "@code{rpcstatd-port} (default: @code{#f})"
48552 msgstr ""
48553
48554 #. type: table
48555 #: guix-git/doc/guix.texi:27088
48556 msgid "The network port that the @command{rpc.statd} daemon should use."
48557 msgstr ""
48558
48559 #. type: item
48560 #: guix-git/doc/guix.texi:27089 guix-git/doc/guix.texi:27137
48561 #, no-wrap
48562 msgid "@code{rpcbind} (default: @code{rpcbind})"
48563 msgstr ""
48564
48565 #. type: table
48566 #: guix-git/doc/guix.texi:27091 guix-git/doc/guix.texi:27139
48567 msgid "The rpcbind package to use."
48568 msgstr ""
48569
48570 #. type: item
48571 #: guix-git/doc/guix.texi:27092
48572 #, no-wrap
48573 msgid "@code{idmap-domain} (default: @code{\"localdomain\"})"
48574 msgstr ""
48575
48576 #. type: table
48577 #: guix-git/doc/guix.texi:27094
48578 msgid "The local NFSv4 domain name."
48579 msgstr ""
48580
48581 #. type: item
48582 #: guix-git/doc/guix.texi:27095
48583 #, no-wrap
48584 msgid "@code{nfsd-port} (default: @code{2049})"
48585 msgstr ""
48586
48587 #. type: table
48588 #: guix-git/doc/guix.texi:27097
48589 msgid "The network port that the @command{nfsd} daemon should use."
48590 msgstr ""
48591
48592 #. type: item
48593 #: guix-git/doc/guix.texi:27098
48594 #, no-wrap
48595 msgid "@code{nfsd-threads} (default: @code{8})"
48596 msgstr ""
48597
48598 #. type: table
48599 #: guix-git/doc/guix.texi:27100
48600 msgid "The number of threads used by the @command{nfsd} daemon."
48601 msgstr ""
48602
48603 #. type: item
48604 #: guix-git/doc/guix.texi:27101
48605 #, no-wrap
48606 msgid "@code{nfsd-tcp?} (default: @code{#t})"
48607 msgstr ""
48608
48609 #. type: table
48610 #: guix-git/doc/guix.texi:27103
48611 msgid "Whether the @command{nfsd} daemon should listen on a TCP socket."
48612 msgstr ""
48613
48614 #. type: item
48615 #: guix-git/doc/guix.texi:27104
48616 #, no-wrap
48617 msgid "@code{nfsd-udp?} (default: @code{#f})"
48618 msgstr ""
48619
48620 #. type: table
48621 #: guix-git/doc/guix.texi:27106
48622 msgid "Whether the @command{nfsd} daemon should listen on a UDP socket."
48623 msgstr ""
48624
48625 #. type: item
48626 #: guix-git/doc/guix.texi:27107 guix-git/doc/guix.texi:27191
48627 #: guix-git/doc/guix.texi:27216
48628 #, no-wrap
48629 msgid "@code{pipefs-directory} (default: @code{\"/var/lib/nfs/rpc_pipefs\"})"
48630 msgstr ""
48631
48632 #. type: table
48633 #: guix-git/doc/guix.texi:27109 guix-git/doc/guix.texi:27193
48634 #: guix-git/doc/guix.texi:27218
48635 msgid "The directory where the pipefs file system is mounted."
48636 msgstr ""
48637
48638 #. type: item
48639 #: guix-git/doc/guix.texi:27110
48640 #, no-wrap
48641 msgid "@code{debug} (default: @code{'()\"})"
48642 msgstr ""
48643
48644 #. type: table
48645 #: guix-git/doc/guix.texi:27114
48646 msgid "A list of subsystems for which debugging output should be enabled. This is a list of symbols. Any of these symbols are valid: @code{nfsd}, @code{nfs}, @code{rpc}, @code{idmap}, @code{statd}, or @code{mountd}."
48647 msgstr ""
48648
48649 #. type: Plain text
48650 #: guix-git/doc/guix.texi:27119
48651 msgid "If you don't need a complete NFS service or prefer to build it yourself you can use the individual component services that are documented below."
48652 msgstr ""
48653
48654 #. type: subsubheading
48655 #: guix-git/doc/guix.texi:27120
48656 #, no-wrap
48657 msgid "RPC Bind Service"
48658 msgstr ""
48659
48660 #. type: cindex
48661 #: guix-git/doc/guix.texi:27121
48662 #, no-wrap
48663 msgid "rpcbind"
48664 msgstr ""
48665
48666 #. type: Plain text
48667 #: guix-git/doc/guix.texi:27127
48668 msgid "The RPC Bind service provides a facility to map program numbers into universal addresses. Many NFS related services use this facility. Hence it is automatically started when a dependent service starts."
48669 msgstr ""
48670
48671 #. type: defvr
48672 #: guix-git/doc/guix.texi:27128
48673 #, no-wrap
48674 msgid "{Scheme Variable} rpcbind-service-type"
48675 msgstr ""
48676
48677 #. type: defvr
48678 #: guix-git/doc/guix.texi:27130
48679 msgid "A service type for the RPC portmapper daemon."
48680 msgstr ""
48681
48682 #. type: deftp
48683 #: guix-git/doc/guix.texi:27133
48684 #, no-wrap
48685 msgid "{Data Type} rpcbind-configuration"
48686 msgstr ""
48687
48688 #. type: deftp
48689 #: guix-git/doc/guix.texi:27136
48690 msgid "Data type representing the configuration of the RPC Bind Service. This type has the following parameters:"
48691 msgstr ""
48692
48693 #. type: item
48694 #: guix-git/doc/guix.texi:27140
48695 #, no-wrap
48696 msgid "@code{warm-start?} (default: @code{#t})"
48697 msgstr ""
48698
48699 #. type: table
48700 #: guix-git/doc/guix.texi:27144
48701 msgid "If this parameter is @code{#t}, then the daemon will read a state file on startup thus reloading state information saved by a previous instance."
48702 msgstr ""
48703
48704 #. type: subsubheading
48705 #: guix-git/doc/guix.texi:27148
48706 #, no-wrap
48707 msgid "Pipefs Pseudo File System"
48708 msgstr ""
48709
48710 #. type: cindex
48711 #: guix-git/doc/guix.texi:27149
48712 #, no-wrap
48713 msgid "pipefs"
48714 msgstr ""
48715
48716 #. type: cindex
48717 #: guix-git/doc/guix.texi:27150
48718 #, no-wrap
48719 msgid "rpc_pipefs"
48720 msgstr ""
48721
48722 #. type: Plain text
48723 #: guix-git/doc/guix.texi:27154
48724 msgid "The pipefs file system is used to transfer NFS related data between the kernel and user space programs."
48725 msgstr ""
48726
48727 #. type: defvr
48728 #: guix-git/doc/guix.texi:27155
48729 #, no-wrap
48730 msgid "{Scheme Variable} pipefs-service-type"
48731 msgstr ""
48732
48733 #. type: defvr
48734 #: guix-git/doc/guix.texi:27157
48735 msgid "A service type for the pipefs pseudo file system."
48736 msgstr ""
48737
48738 #. type: deftp
48739 #: guix-git/doc/guix.texi:27159
48740 #, no-wrap
48741 msgid "{Data Type} pipefs-configuration"
48742 msgstr ""
48743
48744 #. type: deftp
48745 #: guix-git/doc/guix.texi:27162
48746 msgid "Data type representing the configuration of the pipefs pseudo file system service. This type has the following parameters:"
48747 msgstr ""
48748
48749 #. type: item
48750 #: guix-git/doc/guix.texi:27163
48751 #, no-wrap
48752 msgid "@code{mount-point} (default: @code{\"/var/lib/nfs/rpc_pipefs\"})"
48753 msgstr ""
48754
48755 #. type: table
48756 #: guix-git/doc/guix.texi:27165
48757 msgid "The directory to which the file system is to be attached."
48758 msgstr ""
48759
48760 #. type: subsubheading
48761 #: guix-git/doc/guix.texi:27169
48762 #, no-wrap
48763 msgid "GSS Daemon Service"
48764 msgstr ""
48765
48766 #. type: cindex
48767 #: guix-git/doc/guix.texi:27170
48768 #, no-wrap
48769 msgid "GSSD"
48770 msgstr ""
48771
48772 #. type: cindex
48773 #: guix-git/doc/guix.texi:27171
48774 #, no-wrap
48775 msgid "GSS"
48776 msgstr ""
48777
48778 #. type: cindex
48779 #: guix-git/doc/guix.texi:27172
48780 #, no-wrap
48781 msgid "global security system"
48782 msgstr ""
48783
48784 #. type: Plain text
48785 #: guix-git/doc/guix.texi:27179
48786 msgid "The @dfn{global security system} (GSS) daemon provides strong security for RPC based protocols. Before exchanging RPC requests an RPC client must establish a security context. Typically this is done using the Kerberos command @command{kinit} or automatically at login time using PAM services (@pxref{Kerberos Services})."
48787 msgstr ""
48788
48789 #. type: defvr
48790 #: guix-git/doc/guix.texi:27180
48791 #, no-wrap
48792 msgid "{Scheme Variable} gss-service-type"
48793 msgstr ""
48794
48795 #. type: defvr
48796 #: guix-git/doc/guix.texi:27182
48797 msgid "A service type for the Global Security System (GSS) daemon."
48798 msgstr ""
48799
48800 #. type: deftp
48801 #: guix-git/doc/guix.texi:27184
48802 #, no-wrap
48803 msgid "{Data Type} gss-configuration"
48804 msgstr ""
48805
48806 #. type: deftp
48807 #: guix-git/doc/guix.texi:27187
48808 msgid "Data type representing the configuration of the GSS daemon service. This type has the following parameters:"
48809 msgstr ""
48810
48811 #. type: table
48812 #: guix-git/doc/guix.texi:27190
48813 msgid "The package in which the @command{rpc.gssd} command is to be found."
48814 msgstr ""
48815
48816 #. type: subsubheading
48817 #: guix-git/doc/guix.texi:27198
48818 #, no-wrap
48819 msgid "IDMAP Daemon Service"
48820 msgstr ""
48821
48822 #. type: cindex
48823 #: guix-git/doc/guix.texi:27199
48824 #, no-wrap
48825 msgid "idmapd"
48826 msgstr ""
48827
48828 #. type: cindex
48829 #: guix-git/doc/guix.texi:27200
48830 #, no-wrap
48831 msgid "name mapper"
48832 msgstr ""
48833
48834 #. type: Plain text
48835 #: guix-git/doc/guix.texi:27204
48836 msgid "The idmap daemon service provides mapping between user IDs and user names. Typically it is required in order to access file systems mounted via NFSv4."
48837 msgstr ""
48838
48839 #. type: defvr
48840 #: guix-git/doc/guix.texi:27205
48841 #, no-wrap
48842 msgid "{Scheme Variable} idmap-service-type"
48843 msgstr ""
48844
48845 #. type: defvr
48846 #: guix-git/doc/guix.texi:27207
48847 msgid "A service type for the Identity Mapper (IDMAP) daemon."
48848 msgstr ""
48849
48850 #. type: deftp
48851 #: guix-git/doc/guix.texi:27209
48852 #, no-wrap
48853 msgid "{Data Type} idmap-configuration"
48854 msgstr ""
48855
48856 #. type: deftp
48857 #: guix-git/doc/guix.texi:27212
48858 msgid "Data type representing the configuration of the IDMAP daemon service. This type has the following parameters:"
48859 msgstr ""
48860
48861 #. type: table
48862 #: guix-git/doc/guix.texi:27215
48863 msgid "The package in which the @command{rpc.idmapd} command is to be found."
48864 msgstr ""
48865
48866 #. type: item
48867 #: guix-git/doc/guix.texi:27219
48868 #, no-wrap
48869 msgid "@code{domain} (default: @code{#f})"
48870 msgstr ""
48871
48872 #. type: table
48873 #: guix-git/doc/guix.texi:27223
48874 msgid "The local NFSv4 domain name. This must be a string or @code{#f}. If it is @code{#f} then the daemon will use the host's fully qualified domain name."
48875 msgstr ""
48876
48877 #. type: item
48878 #: guix-git/doc/guix.texi:27224
48879 #, no-wrap
48880 msgid "@code{verbosity} (default: @code{0})"
48881 msgstr ""
48882
48883 #. type: table
48884 #: guix-git/doc/guix.texi:27226
48885 msgid "The verbosity level of the daemon."
48886 msgstr ""
48887
48888 #. type: Plain text
48889 #: guix-git/doc/guix.texi:27237
48890 msgid "@uref{https://guix.gnu.org/cuirass/, Cuirass} is a continuous integration tool for Guix. It can be used both for development and for providing substitutes to others (@pxref{Substitutes})."
48891 msgstr ""
48892
48893 #. type: Plain text
48894 #: guix-git/doc/guix.texi:27239
48895 msgid "The @code{(gnu services cuirass)} module provides the following service."
48896 msgstr ""
48897
48898 #. type: defvr
48899 #: guix-git/doc/guix.texi:27240
48900 #, no-wrap
48901 msgid "{Scheme Procedure} cuirass-service-type"
48902 msgstr ""
48903
48904 #. type: defvr
48905 #: guix-git/doc/guix.texi:27243
48906 msgid "The type of the Cuirass service. Its value must be a @code{cuirass-configuration} object, as described below."
48907 msgstr ""
48908
48909 #. type: Plain text
48910 #: guix-git/doc/guix.texi:27248
48911 msgid "To add build jobs, you have to set the @code{specifications} field of the configuration. For instance, the following example will build all the packages provided by the @code{my-channel} channel."
48912 msgstr ""
48913
48914 #. type: lisp
48915 #: guix-git/doc/guix.texi:27259
48916 #, no-wrap
48917 msgid ""
48918 "(define %cuirass-specs\n"
48919 " #~(list (specification\n"
48920 " (name \"my-channel\")\n"
48921 " (build '(channels my-channel))\n"
48922 " (channels\n"
48923 " (cons (channel\n"
48924 " (name 'my-channel)\n"
48925 " (url \"https://my-channel.git\"))\n"
48926 " %default-channels)))))\n"
48927 "\n"
48928 msgstr ""
48929
48930 #. type: lisp
48931 #: guix-git/doc/guix.texi:27263 guix-git/doc/guix.texi:27277
48932 #, no-wrap
48933 msgid ""
48934 "(service cuirass-service-type\n"
48935 " (cuirass-configuration\n"
48936 " (specifications %cuirass-specs)))\n"
48937 msgstr ""
48938
48939 #. type: Plain text
48940 #: guix-git/doc/guix.texi:27267
48941 msgid "To build the @code{linux-libre} package defined by the default Guix channel, one can use the following configuration."
48942 msgstr ""
48943
48944 #. type: lisp
48945 #: guix-git/doc/guix.texi:27273
48946 #, no-wrap
48947 msgid ""
48948 "(define %cuirass-specs\n"
48949 " #~(list (specification\n"
48950 " (name \"my-linux\")\n"
48951 " (build '(packages \"linux-libre\")))))\n"
48952 "\n"
48953 msgstr ""
48954
48955 #. type: Plain text
48956 #: guix-git/doc/guix.texi:27282
48957 msgid "The other configuration possibilities, as well as the specification record itself are described in the Cuirass manual (@pxref{Specifications,,, cuirass, Cuirass})."
48958 msgstr ""
48959
48960 #. type: Plain text
48961 #: guix-git/doc/guix.texi:27286
48962 msgid "While information related to build jobs is located directly in the specifications, global settings for the @command{cuirass} process are accessible in other @code{cuirass-configuration} fields."
48963 msgstr ""
48964
48965 #. type: deftp
48966 #: guix-git/doc/guix.texi:27287
48967 #, no-wrap
48968 msgid "{Data Type} cuirass-configuration"
48969 msgstr ""
48970
48971 #. type: deftp
48972 #: guix-git/doc/guix.texi:27289
48973 msgid "Data type representing the configuration of Cuirass."
48974 msgstr ""
48975
48976 #. type: item
48977 #: guix-git/doc/guix.texi:27291 guix-git/doc/guix.texi:27423
48978 #, no-wrap
48979 msgid "@code{cuirass} (default: @code{cuirass})"
48980 msgstr ""
48981
48982 #. type: table
48983 #: guix-git/doc/guix.texi:27293 guix-git/doc/guix.texi:27425
48984 msgid "The Cuirass package to use."
48985 msgstr ""
48986
48987 #. type: item
48988 #: guix-git/doc/guix.texi:27294
48989 #, no-wrap
48990 msgid "@code{log-file} (default: @code{\"/var/log/cuirass.log\"})"
48991 msgstr ""
48992
48993 #. type: table
48994 #: guix-git/doc/guix.texi:27296 guix-git/doc/guix.texi:27400
48995 #: guix-git/doc/guix.texi:27438
48996 msgid "Location of the log file."
48997 msgstr ""
48998
48999 #. type: item
49000 #: guix-git/doc/guix.texi:27297
49001 #, no-wrap
49002 msgid "@code{web-log-file} (default: @code{\"/var/log/cuirass-web.log\"})"
49003 msgstr ""
49004
49005 #. type: table
49006 #: guix-git/doc/guix.texi:27299
49007 msgid "Location of the log file used by the web interface."
49008 msgstr ""
49009
49010 #. type: item
49011 #: guix-git/doc/guix.texi:27300
49012 #, no-wrap
49013 msgid "@code{cache-directory} (default: @code{\"/var/cache/cuirass\"})"
49014 msgstr ""
49015
49016 #. type: table
49017 #: guix-git/doc/guix.texi:27302
49018 msgid "Location of the repository cache."
49019 msgstr ""
49020
49021 #. type: item
49022 #: guix-git/doc/guix.texi:27303
49023 #, no-wrap
49024 msgid "@code{user} (default: @code{\"cuirass\"})"
49025 msgstr ""
49026
49027 #. type: table
49028 #: guix-git/doc/guix.texi:27305
49029 msgid "Owner of the @code{cuirass} process."
49030 msgstr ""
49031
49032 #. type: item
49033 #: guix-git/doc/guix.texi:27306
49034 #, no-wrap
49035 msgid "@code{group} (default: @code{\"cuirass\"})"
49036 msgstr ""
49037
49038 #. type: table
49039 #: guix-git/doc/guix.texi:27308
49040 msgid "Owner's group of the @code{cuirass} process."
49041 msgstr ""
49042
49043 #. type: item
49044 #: guix-git/doc/guix.texi:27309
49045 #, no-wrap
49046 msgid "@code{interval} (default: @code{60})"
49047 msgstr ""
49048
49049 #. type: table
49050 #: guix-git/doc/guix.texi:27312
49051 msgid "Number of seconds between the poll of the repositories followed by the Cuirass jobs."
49052 msgstr ""
49053
49054 #. type: item
49055 #: guix-git/doc/guix.texi:27313
49056 #, no-wrap
49057 msgid "@code{parameters} (default: @code{#f})"
49058 msgstr ""
49059
49060 #. type: table
49061 #: guix-git/doc/guix.texi:27316
49062 msgid "Read parameters from the given @var{parameters} file. The supported parameters are described here (@pxref{Parameters,,, cuirass, Cuirass})."
49063 msgstr ""
49064
49065 #. type: item
49066 #: guix-git/doc/guix.texi:27317
49067 #, no-wrap
49068 msgid "@code{remote-server} (default: @code{#f})"
49069 msgstr ""
49070
49071 #. type: table
49072 #: guix-git/doc/guix.texi:27320
49073 msgid "A @code{cuirass-remote-server-configuration} record to use the build remote mechanism or @code{#f} to use the default build mechanism."
49074 msgstr ""
49075
49076 #. type: item
49077 #: guix-git/doc/guix.texi:27321
49078 #, no-wrap
49079 msgid "@code{database} (default: @code{\"dbname=cuirass host=/var/run/postgresql\"})"
49080 msgstr ""
49081
49082 #. type: table
49083 #: guix-git/doc/guix.texi:27326
49084 msgid "Use @var{database} as the database containing the jobs and the past build results. Since Cuirass uses PostgreSQL as a database engine, @var{database} must be a string such as @code{\"dbname=cuirass host=localhost\"}."
49085 msgstr ""
49086
49087 #. type: item
49088 #: guix-git/doc/guix.texi:27327
49089 #, no-wrap
49090 msgid "@code{port} (default: @code{8081})"
49091 msgstr ""
49092
49093 #. type: table
49094 #: guix-git/doc/guix.texi:27329
49095 msgid "Port number used by the HTTP server."
49096 msgstr ""
49097
49098 #. type: table
49099 #: guix-git/doc/guix.texi:27333
49100 msgid "Listen on the network interface for @var{host}. The default is to accept connections from localhost."
49101 msgstr ""
49102
49103 #. type: item
49104 #: guix-git/doc/guix.texi:27334
49105 #, no-wrap
49106 msgid "@code{specifications} (default: @code{#~'()})"
49107 msgstr ""
49108
49109 #. type: table
49110 #: guix-git/doc/guix.texi:27338
49111 msgid "A gexp (@pxref{G-Expressions}) that evaluates to a list of specifications records. The specification record is described in the Cuirass manual (@pxref{Specifications,,, cuirass, Cuirass})."
49112 msgstr ""
49113
49114 #. type: item
49115 #: guix-git/doc/guix.texi:27339
49116 #, no-wrap
49117 msgid "@code{use-substitutes?} (default: @code{#f})"
49118 msgstr ""
49119
49120 #. type: table
49121 #: guix-git/doc/guix.texi:27342
49122 msgid "This allows using substitutes to avoid building every dependencies of a job from source."
49123 msgstr ""
49124
49125 #. type: item
49126 #: guix-git/doc/guix.texi:27343 guix-git/doc/guix.texi:34213
49127 #, no-wrap
49128 msgid "@code{one-shot?} (default: @code{#f})"
49129 msgstr ""
49130
49131 #. type: table
49132 #: guix-git/doc/guix.texi:27345
49133 msgid "Only evaluate specifications and build derivations once."
49134 msgstr ""
49135
49136 #. type: item
49137 #: guix-git/doc/guix.texi:27346
49138 #, no-wrap
49139 msgid "@code{fallback?} (default: @code{#f})"
49140 msgstr ""
49141
49142 #. type: table
49143 #: guix-git/doc/guix.texi:27349
49144 msgid "When substituting a pre-built binary fails, fall back to building packages locally."
49145 msgstr ""
49146
49147 #. type: table
49148 #: guix-git/doc/guix.texi:27352
49149 msgid "Extra options to pass when running the Cuirass processes."
49150 msgstr ""
49151
49152 #. type: cindex
49153 #: guix-git/doc/guix.texi:27356
49154 #, no-wrap
49155 msgid "remote build"
49156 msgstr ""
49157
49158 #. type: subsubheading
49159 #: guix-git/doc/guix.texi:27357
49160 #, no-wrap
49161 msgid "Cuirass remote building"
49162 msgstr ""
49163
49164 #. type: Plain text
49165 #: guix-git/doc/guix.texi:27360
49166 msgid "Cuirass supports two mechanisms to build derivations."
49167 msgstr ""
49168
49169 #. type: item
49170 #: guix-git/doc/guix.texi:27362
49171 #, no-wrap
49172 msgid "Using the local Guix daemon."
49173 msgstr ""
49174
49175 #. type: itemize
49176 #: guix-git/doc/guix.texi:27366
49177 msgid "This is the default build mechanism. Once the build jobs are evaluated, they are sent to the local Guix daemon. Cuirass then listens to the Guix daemon output to detect the various build events."
49178 msgstr ""
49179
49180 #. type: item
49181 #: guix-git/doc/guix.texi:27367
49182 #, no-wrap
49183 msgid "Using the remote build mechanism."
49184 msgstr ""
49185
49186 #. type: itemize
49187 #: guix-git/doc/guix.texi:27371
49188 msgid "The build jobs are not submitted to the local Guix daemon. Instead, a remote server dispatches build requests to the connect remote workers, according to the build priorities."
49189 msgstr ""
49190
49191 #. type: Plain text
49192 #: guix-git/doc/guix.texi:27378
49193 msgid "To enable this build mode a @code{cuirass-remote-server-configuration} record must be passed as @code{remote-server} argument of the @code{cuirass-configuration} record. The @code{cuirass-remote-server-configuration} record is described below."
49194 msgstr ""
49195
49196 #. type: Plain text
49197 #: guix-git/doc/guix.texi:27383
49198 msgid "This build mode scales way better than the default build mode. This is the build mode that is used on the GNU Guix build farm at @url{https://ci.guix.gnu.org}. It should be preferred when using Cuirass to build large amount of packages."
49199 msgstr ""
49200
49201 #. type: deftp
49202 #: guix-git/doc/guix.texi:27384
49203 #, no-wrap
49204 msgid "{Data Type} cuirass-remote-server-configuration"
49205 msgstr ""
49206
49207 #. type: deftp
49208 #: guix-git/doc/guix.texi:27386
49209 msgid "Data type representing the configuration of the Cuirass remote-server."
49210 msgstr ""
49211
49212 #. type: item
49213 #: guix-git/doc/guix.texi:27388
49214 #, no-wrap
49215 msgid "@code{backend-port} (default: @code{5555})"
49216 msgstr ""
49217
49218 #. type: table
49219 #: guix-git/doc/guix.texi:27391
49220 msgid "The TCP port for communicating with @code{remote-worker} processes using ZMQ. It defaults to @code{5555}."
49221 msgstr ""
49222
49223 #. type: item
49224 #: guix-git/doc/guix.texi:27392
49225 #, no-wrap
49226 msgid "@code{log-port} (default: @code{5556})"
49227 msgstr ""
49228
49229 #. type: table
49230 #: guix-git/doc/guix.texi:27394
49231 msgid "The TCP port of the log server. It defaults to @code{5556}."
49232 msgstr ""
49233
49234 #. type: item
49235 #: guix-git/doc/guix.texi:27395
49236 #, no-wrap
49237 msgid "@code{publish-port} (default: @code{5557})"
49238 msgstr ""
49239
49240 #. type: table
49241 #: guix-git/doc/guix.texi:27397
49242 msgid "The TCP port of the publish server. It defaults to @code{5557}."
49243 msgstr ""
49244
49245 #. type: item
49246 #: guix-git/doc/guix.texi:27398
49247 #, no-wrap
49248 msgid "@code{log-file} (default: @code{\"/var/log/cuirass-remote-server.log\"})"
49249 msgstr ""
49250
49251 #. type: item
49252 #: guix-git/doc/guix.texi:27401
49253 #, no-wrap
49254 msgid "@code{cache} (default: @code{\"/var/cache/cuirass/remote\"})"
49255 msgstr ""
49256
49257 #. type: table
49258 #: guix-git/doc/guix.texi:27403
49259 msgid "Use @var{cache} directory to cache build log files."
49260 msgstr ""
49261
49262 #. type: item
49263 #: guix-git/doc/guix.texi:27404
49264 #, no-wrap
49265 msgid "@code{trigger-url} (default: @code{#f})"
49266 msgstr ""
49267
49268 #. type: table
49269 #: guix-git/doc/guix.texi:27407
49270 msgid "Once a substitute is successfully fetched, trigger substitute baking at @var{trigger-url}."
49271 msgstr ""
49272
49273 #. type: code{#1}
49274 #: guix-git/doc/guix.texi:27409 guix-git/doc/guix.texi:27443
49275 #, no-wrap
49276 msgid "private-key"
49277 msgstr ""
49278
49279 #. type: Plain text
49280 #: guix-git/doc/guix.texi:27418
49281 msgid "At least one remote worker must also be started on any machine of the local network to actually perform the builds and report their status."
49282 msgstr ""
49283
49284 #. type: deftp
49285 #: guix-git/doc/guix.texi:27419
49286 #, no-wrap
49287 msgid "{Data Type} cuirass-remote-worker-configuration"
49288 msgstr ""
49289
49290 #. type: deftp
49291 #: guix-git/doc/guix.texi:27421
49292 msgid "Data type representing the configuration of the Cuirass remote-worker."
49293 msgstr ""
49294
49295 #. type: item
49296 #: guix-git/doc/guix.texi:27426
49297 #, no-wrap
49298 msgid "@code{workers} (default: @code{1})"
49299 msgstr ""
49300
49301 #. type: table
49302 #: guix-git/doc/guix.texi:27428
49303 msgid "Start @var{workers} parallel workers."
49304 msgstr ""
49305
49306 #. type: table
49307 #: guix-git/doc/guix.texi:27432
49308 msgid "Do not use Avahi discovery and connect to the given @code{server} IP address instead."
49309 msgstr ""
49310
49311 #. type: item
49312 #: guix-git/doc/guix.texi:27433
49313 #, no-wrap
49314 msgid "@code{systems} (default: @code{(list (%current-system))})"
49315 msgstr ""
49316
49317 #. type: table
49318 #: guix-git/doc/guix.texi:27435
49319 msgid "Only request builds for the given @var{systems}."
49320 msgstr ""
49321
49322 #. type: item
49323 #: guix-git/doc/guix.texi:27436
49324 #, no-wrap
49325 msgid "@code{log-file} (default: @code{\"/var/log/cuirass-remote-worker.log\"})"
49326 msgstr ""
49327
49328 #. type: item
49329 #: guix-git/doc/guix.texi:27439
49330 #, no-wrap
49331 msgid "@code{publish-port} (default: @code{5558})"
49332 msgstr ""
49333
49334 #. type: table
49335 #: guix-git/doc/guix.texi:27441
49336 msgid "The TCP port of the publish server. It defaults to @code{5558}."
49337 msgstr ""
49338
49339 #. type: subsubheading
49340 #: guix-git/doc/guix.texi:27450
49341 #, no-wrap
49342 msgid "Laminar"
49343 msgstr ""
49344
49345 #. type: Plain text
49346 #: guix-git/doc/guix.texi:27455
49347 msgid "@uref{https://laminar.ohwg.net/, Laminar} is a lightweight and modular Continuous Integration service. It doesn't have a configuration web UI instead uses version-controllable configuration files and scripts."
49348 msgstr ""
49349
49350 #. type: Plain text
49351 #: guix-git/doc/guix.texi:27458
49352 msgid "Laminar encourages the use of existing tools such as bash and cron instead of reinventing them."
49353 msgstr ""
49354
49355 #. type: defvr
49356 #: guix-git/doc/guix.texi:27459
49357 #, no-wrap
49358 msgid "{Scheme Procedure} laminar-service-type"
49359 msgstr ""
49360
49361 #. type: defvr
49362 #: guix-git/doc/guix.texi:27462
49363 msgid "The type of the Laminar service. Its value must be a @code{laminar-configuration} object, as described below."
49364 msgstr ""
49365
49366 #. type: defvr
49367 #: guix-git/doc/guix.texi:27466
49368 msgid "All configuration values have defaults, a minimal configuration to get Laminar running is shown below. By default, the web interface is available on port 8080."
49369 msgstr ""
49370
49371 #. type: lisp
49372 #: guix-git/doc/guix.texi:27469
49373 #, no-wrap
49374 msgid "(service laminar-service-type)\n"
49375 msgstr ""
49376
49377 #. type: deftp
49378 #: guix-git/doc/guix.texi:27472
49379 #, no-wrap
49380 msgid "{Data Type} laminar-configuration"
49381 msgstr ""
49382
49383 #. type: deftp
49384 #: guix-git/doc/guix.texi:27474
49385 msgid "Data type representing the configuration of Laminar."
49386 msgstr ""
49387
49388 #. type: item
49389 #: guix-git/doc/guix.texi:27476
49390 #, no-wrap
49391 msgid "@code{laminar} (default: @code{laminar})"
49392 msgstr ""
49393
49394 #. type: table
49395 #: guix-git/doc/guix.texi:27478
49396 msgid "The Laminar package to use."
49397 msgstr ""
49398
49399 #. type: item
49400 #: guix-git/doc/guix.texi:27479
49401 #, no-wrap
49402 msgid "@code{home-directory} (default: @code{\"/var/lib/laminar\"})"
49403 msgstr ""
49404
49405 #. type: table
49406 #: guix-git/doc/guix.texi:27481
49407 msgid "The directory for job configurations and run directories."
49408 msgstr ""
49409
49410 #. type: item
49411 #: guix-git/doc/guix.texi:27482
49412 #, no-wrap
49413 msgid "@code{bind-http} (default: @code{\"*:8080\"})"
49414 msgstr ""
49415
49416 #. type: table
49417 #: guix-git/doc/guix.texi:27485
49418 msgid "The interface/port or unix socket on which laminard should listen for incoming connections to the web frontend."
49419 msgstr ""
49420
49421 #. type: item
49422 #: guix-git/doc/guix.texi:27486
49423 #, no-wrap
49424 msgid "@code{bind-rpc} (default: @code{\"unix-abstract:laminar\"})"
49425 msgstr ""
49426
49427 #. type: table
49428 #: guix-git/doc/guix.texi:27489
49429 msgid "The interface/port or unix socket on which laminard should listen for incoming commands such as build triggers."
49430 msgstr ""
49431
49432 #. type: item
49433 #: guix-git/doc/guix.texi:27490
49434 #, no-wrap
49435 msgid "@code{title} (default: @code{\"Laminar\"})"
49436 msgstr ""
49437
49438 #. type: table
49439 #: guix-git/doc/guix.texi:27492
49440 msgid "The page title to show in the web frontend."
49441 msgstr ""
49442
49443 #. type: item
49444 #: guix-git/doc/guix.texi:27493
49445 #, no-wrap
49446 msgid "@code{keep-rundirs} (default: @code{0})"
49447 msgstr ""
49448
49449 #. type: table
49450 #: guix-git/doc/guix.texi:27497
49451 msgid "Set to an integer defining how many rundirs to keep per job. The lowest-numbered ones will be deleted. The default is 0, meaning all run dirs will be immediately deleted."
49452 msgstr ""
49453
49454 #. type: item
49455 #: guix-git/doc/guix.texi:27498
49456 #, no-wrap
49457 msgid "@code{archive-url} (default: @code{#f})"
49458 msgstr ""
49459
49460 #. type: table
49461 #: guix-git/doc/guix.texi:27501
49462 msgid "The web frontend served by laminard will use this URL to form links to artefacts archived jobs."
49463 msgstr ""
49464
49465 #. type: item
49466 #: guix-git/doc/guix.texi:27502
49467 #, no-wrap
49468 msgid "@code{base-url} (default: @code{#f})"
49469 msgstr ""
49470
49471 #. type: table
49472 #: guix-git/doc/guix.texi:27504
49473 msgid "Base URL to use for links to laminar itself."
49474 msgstr ""
49475
49476 #. type: cindex
49477 #: guix-git/doc/guix.texi:27511
49478 #, no-wrap
49479 msgid "tlp"
49480 msgstr ""
49481
49482 #. type: cindex
49483 #: guix-git/doc/guix.texi:27512
49484 #, no-wrap
49485 msgid "power management with TLP"
49486 msgstr ""
49487
49488 #. type: subsubheading
49489 #: guix-git/doc/guix.texi:27513
49490 #, no-wrap
49491 msgid "TLP daemon"
49492 msgstr ""
49493
49494 #. type: Plain text
49495 #: guix-git/doc/guix.texi:27517
49496 msgid "The @code{(gnu services pm)} module provides a Guix service definition for the Linux power management tool TLP."
49497 msgstr ""
49498
49499 #. type: Plain text
49500 #: guix-git/doc/guix.texi:27523
49501 msgid "TLP enables various powersaving modes in userspace and kernel. Contrary to @code{upower-service}, it is not a passive, monitoring tool, as it will apply custom settings each time a new power source is detected. More information can be found at @uref{https://linrunner.de/en/tlp/tlp.html, TLP home page}."
49502 msgstr ""
49503
49504 #. type: deffn
49505 #: guix-git/doc/guix.texi:27524
49506 #, no-wrap
49507 msgid "{Scheme Variable} tlp-service-type"
49508 msgstr ""
49509
49510 #. type: deffn
49511 #: guix-git/doc/guix.texi:27528
49512 msgid "The service type for the TLP tool. The default settings are optimised for battery life on most systems, but you can tweak them to your heart's content by adding a valid @code{tlp-configuration}:"
49513 msgstr ""
49514
49515 #. type: lisp
49516 #: guix-git/doc/guix.texi:27533
49517 #, no-wrap
49518 msgid ""
49519 "(service tlp-service-type\n"
49520 " (tlp-configuration\n"
49521 " (cpu-scaling-governor-on-ac (list \"performance\"))\n"
49522 " (sched-powersave-on-bat? #t)))\n"
49523 msgstr ""
49524
49525 #. type: Plain text
49526 #: guix-git/doc/guix.texi:27541
49527 msgid "Each parameter definition is preceded by its type; for example, @samp{boolean foo} indicates that the @code{foo} parameter should be specified as a boolean. Types starting with @code{maybe-} denote parameters that won't show up in TLP config file when their value is @code{'disabled}."
49528 msgstr ""
49529
49530 #. type: Plain text
49531 #: guix-git/doc/guix.texi:27551
49532 msgid "Available @code{tlp-configuration} fields are:"
49533 msgstr ""
49534
49535 #. type: deftypevr
49536 #: guix-git/doc/guix.texi:27552
49537 #, no-wrap
49538 msgid "{@code{tlp-configuration} parameter} package tlp"
49539 msgstr ""
49540
49541 #. type: deftypevr
49542 #: guix-git/doc/guix.texi:27554
49543 msgid "The TLP package."
49544 msgstr ""
49545
49546 #. type: deftypevr
49547 #: guix-git/doc/guix.texi:27557
49548 #, no-wrap
49549 msgid "{@code{tlp-configuration} parameter} boolean tlp-enable?"
49550 msgstr ""
49551
49552 #. type: deftypevr
49553 #: guix-git/doc/guix.texi:27559
49554 msgid "Set to true if you wish to enable TLP."
49555 msgstr ""
49556
49557 #. type: deftypevr
49558 #: guix-git/doc/guix.texi:27564
49559 #, no-wrap
49560 msgid "{@code{tlp-configuration} parameter} string tlp-default-mode"
49561 msgstr ""
49562
49563 #. type: deftypevr
49564 #: guix-git/doc/guix.texi:27567
49565 msgid "Default mode when no power supply can be detected. Alternatives are AC and BAT."
49566 msgstr ""
49567
49568 #. type: deftypevr
49569 #: guix-git/doc/guix.texi:27569
49570 msgid "Defaults to @samp{\"AC\"}."
49571 msgstr ""
49572
49573 #. type: deftypevr
49574 #: guix-git/doc/guix.texi:27572
49575 #, no-wrap
49576 msgid "{@code{tlp-configuration} parameter} non-negative-integer disk-idle-secs-on-ac"
49577 msgstr ""
49578
49579 #. type: deftypevr
49580 #: guix-git/doc/guix.texi:27575
49581 msgid "Number of seconds Linux kernel has to wait after the disk goes idle, before syncing on AC."
49582 msgstr ""
49583
49584 #. type: deftypevr
49585 #: guix-git/doc/guix.texi:27580
49586 #, no-wrap
49587 msgid "{@code{tlp-configuration} parameter} non-negative-integer disk-idle-secs-on-bat"
49588 msgstr ""
49589
49590 #. type: deftypevr
49591 #: guix-git/doc/guix.texi:27582
49592 msgid "Same as @code{disk-idle-ac} but on BAT mode."
49593 msgstr ""
49594
49595 #. type: deftypevr
49596 #: guix-git/doc/guix.texi:27584
49597 msgid "Defaults to @samp{2}."
49598 msgstr ""
49599
49600 #. type: deftypevr
49601 #: guix-git/doc/guix.texi:27587
49602 #, no-wrap
49603 msgid "{@code{tlp-configuration} parameter} non-negative-integer max-lost-work-secs-on-ac"
49604 msgstr ""
49605
49606 #. type: deftypevr
49607 #: guix-git/doc/guix.texi:27589
49608 msgid "Dirty pages flushing periodicity, expressed in seconds."
49609 msgstr ""
49610
49611 #. type: deftypevr
49612 #: guix-git/doc/guix.texi:27591 guix-git/doc/guix.texi:27814
49613 #: guix-git/doc/guix.texi:30028 guix-git/doc/guix.texi:30036
49614 msgid "Defaults to @samp{15}."
49615 msgstr ""
49616
49617 #. type: deftypevr
49618 #: guix-git/doc/guix.texi:27594
49619 #, no-wrap
49620 msgid "{@code{tlp-configuration} parameter} non-negative-integer max-lost-work-secs-on-bat"
49621 msgstr ""
49622
49623 #. type: deftypevr
49624 #: guix-git/doc/guix.texi:27596
49625 msgid "Same as @code{max-lost-work-secs-on-ac} but on BAT mode."
49626 msgstr ""
49627
49628 #. type: deftypevr
49629 #: guix-git/doc/guix.texi:27598
49630 msgid "Defaults to @samp{60}."
49631 msgstr ""
49632
49633 #. type: deftypevr
49634 #: guix-git/doc/guix.texi:27601
49635 #, no-wrap
49636 msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list cpu-scaling-governor-on-ac"
49637 msgstr ""
49638
49639 #. type: deftypevr
49640 #: guix-git/doc/guix.texi:27605
49641 msgid "CPU frequency scaling governor on AC mode. With intel_pstate driver, alternatives are powersave and performance. With acpi-cpufreq driver, alternatives are ondemand, powersave, performance and conservative."
49642 msgstr ""
49643
49644 #. type: deftypevr
49645 #: guix-git/doc/guix.texi:27610
49646 #, no-wrap
49647 msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list cpu-scaling-governor-on-bat"
49648 msgstr ""
49649
49650 #. type: deftypevr
49651 #: guix-git/doc/guix.texi:27612
49652 msgid "Same as @code{cpu-scaling-governor-on-ac} but on BAT mode."
49653 msgstr ""
49654
49655 #. type: deftypevr
49656 #: guix-git/doc/guix.texi:27617
49657 #, no-wrap
49658 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-min-freq-on-ac"
49659 msgstr ""
49660
49661 #. type: deftypevr
49662 #: guix-git/doc/guix.texi:27619
49663 msgid "Set the min available frequency for the scaling governor on AC."
49664 msgstr ""
49665
49666 #. type: deftypevr
49667 #: guix-git/doc/guix.texi:27624
49668 #, no-wrap
49669 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-max-freq-on-ac"
49670 msgstr ""
49671
49672 #. type: deftypevr
49673 #: guix-git/doc/guix.texi:27626
49674 msgid "Set the max available frequency for the scaling governor on AC."
49675 msgstr ""
49676
49677 #. type: deftypevr
49678 #: guix-git/doc/guix.texi:27631
49679 #, no-wrap
49680 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-min-freq-on-bat"
49681 msgstr ""
49682
49683 #. type: deftypevr
49684 #: guix-git/doc/guix.texi:27633
49685 msgid "Set the min available frequency for the scaling governor on BAT."
49686 msgstr ""
49687
49688 #. type: deftypevr
49689 #: guix-git/doc/guix.texi:27638
49690 #, no-wrap
49691 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-max-freq-on-bat"
49692 msgstr ""
49693
49694 #. type: deftypevr
49695 #: guix-git/doc/guix.texi:27640
49696 msgid "Set the max available frequency for the scaling governor on BAT."
49697 msgstr ""
49698
49699 #. type: deftypevr
49700 #: guix-git/doc/guix.texi:27645
49701 #, no-wrap
49702 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-min-perf-on-ac"
49703 msgstr ""
49704
49705 #. type: deftypevr
49706 #: guix-git/doc/guix.texi:27648
49707 msgid "Limit the min P-state to control the power dissipation of the CPU, in AC mode. Values are stated as a percentage of the available performance."
49708 msgstr ""
49709
49710 #. type: deftypevr
49711 #: guix-git/doc/guix.texi:27653
49712 #, no-wrap
49713 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-max-perf-on-ac"
49714 msgstr ""
49715
49716 #. type: deftypevr
49717 #: guix-git/doc/guix.texi:27656
49718 msgid "Limit the max P-state to control the power dissipation of the CPU, in AC mode. Values are stated as a percentage of the available performance."
49719 msgstr ""
49720
49721 #. type: deftypevr
49722 #: guix-git/doc/guix.texi:27661
49723 #, no-wrap
49724 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-min-perf-on-bat"
49725 msgstr ""
49726
49727 #. type: deftypevr
49728 #: guix-git/doc/guix.texi:27663
49729 msgid "Same as @code{cpu-min-perf-on-ac} on BAT mode."
49730 msgstr ""
49731
49732 #. type: deftypevr
49733 #: guix-git/doc/guix.texi:27668
49734 #, no-wrap
49735 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-max-perf-on-bat"
49736 msgstr ""
49737
49738 #. type: deftypevr
49739 #: guix-git/doc/guix.texi:27670
49740 msgid "Same as @code{cpu-max-perf-on-ac} on BAT mode."
49741 msgstr ""
49742
49743 #. type: deftypevr
49744 #: guix-git/doc/guix.texi:27675
49745 #, no-wrap
49746 msgid "{@code{tlp-configuration} parameter} maybe-boolean cpu-boost-on-ac?"
49747 msgstr ""
49748
49749 #. type: deftypevr
49750 #: guix-git/doc/guix.texi:27677
49751 msgid "Enable CPU turbo boost feature on AC mode."
49752 msgstr ""
49753
49754 #. type: deftypevr
49755 #: guix-git/doc/guix.texi:27682
49756 #, no-wrap
49757 msgid "{@code{tlp-configuration} parameter} maybe-boolean cpu-boost-on-bat?"
49758 msgstr ""
49759
49760 #. type: deftypevr
49761 #: guix-git/doc/guix.texi:27684
49762 msgid "Same as @code{cpu-boost-on-ac?} on BAT mode."
49763 msgstr ""
49764
49765 #. type: deftypevr
49766 #: guix-git/doc/guix.texi:27689
49767 #, no-wrap
49768 msgid "{@code{tlp-configuration} parameter} boolean sched-powersave-on-ac?"
49769 msgstr ""
49770
49771 #. type: deftypevr
49772 #: guix-git/doc/guix.texi:27692
49773 msgid "Allow Linux kernel to minimize the number of CPU cores/hyper-threads used under light load conditions."
49774 msgstr ""
49775
49776 #. type: deftypevr
49777 #: guix-git/doc/guix.texi:27697
49778 #, no-wrap
49779 msgid "{@code{tlp-configuration} parameter} boolean sched-powersave-on-bat?"
49780 msgstr ""
49781
49782 #. type: deftypevr
49783 #: guix-git/doc/guix.texi:27699
49784 msgid "Same as @code{sched-powersave-on-ac?} but on BAT mode."
49785 msgstr ""
49786
49787 #. type: deftypevr
49788 #: guix-git/doc/guix.texi:27704
49789 #, no-wrap
49790 msgid "{@code{tlp-configuration} parameter} boolean nmi-watchdog?"
49791 msgstr ""
49792
49793 #. type: deftypevr
49794 #: guix-git/doc/guix.texi:27706
49795 msgid "Enable Linux kernel NMI watchdog."
49796 msgstr ""
49797
49798 #. type: deftypevr
49799 #: guix-git/doc/guix.texi:27711
49800 #, no-wrap
49801 msgid "{@code{tlp-configuration} parameter} maybe-string phc-controls"
49802 msgstr ""
49803
49804 #. type: deftypevr
49805 #: guix-git/doc/guix.texi:27714
49806 msgid "For Linux kernels with PHC patch applied, change CPU voltages. An example value would be @samp{\"F:V F:V F:V F:V\"}."
49807 msgstr ""
49808
49809 #. type: deftypevr
49810 #: guix-git/doc/guix.texi:27719
49811 #, no-wrap
49812 msgid "{@code{tlp-configuration} parameter} string energy-perf-policy-on-ac"
49813 msgstr ""
49814
49815 #. type: deftypevr
49816 #: guix-git/doc/guix.texi:27722
49817 msgid "Set CPU performance versus energy saving policy on AC@. Alternatives are performance, normal, powersave."
49818 msgstr ""
49819
49820 #. type: deftypevr
49821 #: guix-git/doc/guix.texi:27724 guix-git/doc/guix.texi:27822
49822 #: guix-git/doc/guix.texi:27852
49823 msgid "Defaults to @samp{\"performance\"}."
49824 msgstr ""
49825
49826 #. type: deftypevr
49827 #: guix-git/doc/guix.texi:27727
49828 #, no-wrap
49829 msgid "{@code{tlp-configuration} parameter} string energy-perf-policy-on-bat"
49830 msgstr ""
49831
49832 #. type: deftypevr
49833 #: guix-git/doc/guix.texi:27729
49834 msgid "Same as @code{energy-perf-policy-ac} but on BAT mode."
49835 msgstr ""
49836
49837 #. type: deftypevr
49838 #: guix-git/doc/guix.texi:27731 guix-git/doc/guix.texi:27829
49839 msgid "Defaults to @samp{\"powersave\"}."
49840 msgstr ""
49841
49842 #. type: deftypevr
49843 #: guix-git/doc/guix.texi:27734
49844 #, no-wrap
49845 msgid "{@code{tlp-configuration} parameter} space-separated-string-list disks-devices"
49846 msgstr ""
49847
49848 #. type: deftypevr
49849 #: guix-git/doc/guix.texi:27736
49850 msgid "Hard disk devices."
49851 msgstr ""
49852
49853 #. type: deftypevr
49854 #: guix-git/doc/guix.texi:27739
49855 #, no-wrap
49856 msgid "{@code{tlp-configuration} parameter} space-separated-string-list disk-apm-level-on-ac"
49857 msgstr ""
49858
49859 #. type: deftypevr
49860 #: guix-git/doc/guix.texi:27741
49861 msgid "Hard disk advanced power management level."
49862 msgstr ""
49863
49864 #. type: deftypevr
49865 #: guix-git/doc/guix.texi:27744
49866 #, no-wrap
49867 msgid "{@code{tlp-configuration} parameter} space-separated-string-list disk-apm-level-on-bat"
49868 msgstr ""
49869
49870 #. type: deftypevr
49871 #: guix-git/doc/guix.texi:27746
49872 msgid "Same as @code{disk-apm-bat} but on BAT mode."
49873 msgstr ""
49874
49875 #. type: deftypevr
49876 #: guix-git/doc/guix.texi:27749
49877 #, no-wrap
49878 msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list disk-spindown-timeout-on-ac"
49879 msgstr ""
49880
49881 #. type: deftypevr
49882 #: guix-git/doc/guix.texi:27752
49883 msgid "Hard disk spin down timeout. One value has to be specified for each declared hard disk."
49884 msgstr ""
49885
49886 #. type: deftypevr
49887 #: guix-git/doc/guix.texi:27757
49888 #, no-wrap
49889 msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list disk-spindown-timeout-on-bat"
49890 msgstr ""
49891
49892 #. type: deftypevr
49893 #: guix-git/doc/guix.texi:27759
49894 msgid "Same as @code{disk-spindown-timeout-on-ac} but on BAT mode."
49895 msgstr ""
49896
49897 #. type: deftypevr
49898 #: guix-git/doc/guix.texi:27764
49899 #, no-wrap
49900 msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list disk-iosched"
49901 msgstr ""
49902
49903 #. type: deftypevr
49904 #: guix-git/doc/guix.texi:27768
49905 msgid "Select IO scheduler for disk devices. One value has to be specified for each declared hard disk. Example alternatives are cfq, deadline and noop."
49906 msgstr ""
49907
49908 #. type: deftypevr
49909 #: guix-git/doc/guix.texi:27773
49910 #, no-wrap
49911 msgid "{@code{tlp-configuration} parameter} string sata-linkpwr-on-ac"
49912 msgstr ""
49913
49914 #. type: deftypevr
49915 #: guix-git/doc/guix.texi:27776
49916 msgid "SATA aggressive link power management (ALPM) level. Alternatives are min_power, medium_power, max_performance."
49917 msgstr ""
49918
49919 #. type: deftypevr
49920 #: guix-git/doc/guix.texi:27778
49921 msgid "Defaults to @samp{\"max_performance\"}."
49922 msgstr ""
49923
49924 #. type: deftypevr
49925 #: guix-git/doc/guix.texi:27781
49926 #, no-wrap
49927 msgid "{@code{tlp-configuration} parameter} string sata-linkpwr-on-bat"
49928 msgstr ""
49929
49930 #. type: deftypevr
49931 #: guix-git/doc/guix.texi:27783
49932 msgid "Same as @code{sata-linkpwr-ac} but on BAT mode."
49933 msgstr ""
49934
49935 #. type: deftypevr
49936 #: guix-git/doc/guix.texi:27785
49937 msgid "Defaults to @samp{\"min_power\"}."
49938 msgstr ""
49939
49940 #. type: deftypevr
49941 #: guix-git/doc/guix.texi:27788
49942 #, no-wrap
49943 msgid "{@code{tlp-configuration} parameter} maybe-string sata-linkpwr-blacklist"
49944 msgstr ""
49945
49946 #. type: deftypevr
49947 #: guix-git/doc/guix.texi:27790
49948 msgid "Exclude specified SATA host devices for link power management."
49949 msgstr ""
49950
49951 #. type: deftypevr
49952 #: guix-git/doc/guix.texi:27795
49953 #, no-wrap
49954 msgid "{@code{tlp-configuration} parameter} maybe-on-off-boolean ahci-runtime-pm-on-ac?"
49955 msgstr ""
49956
49957 #. type: deftypevr
49958 #: guix-git/doc/guix.texi:27798
49959 msgid "Enable Runtime Power Management for AHCI controller and disks on AC mode."
49960 msgstr ""
49961
49962 #. type: deftypevr
49963 #: guix-git/doc/guix.texi:27803
49964 #, no-wrap
49965 msgid "{@code{tlp-configuration} parameter} maybe-on-off-boolean ahci-runtime-pm-on-bat?"
49966 msgstr ""
49967
49968 #. type: deftypevr
49969 #: guix-git/doc/guix.texi:27805
49970 msgid "Same as @code{ahci-runtime-pm-on-ac} on BAT mode."
49971 msgstr ""
49972
49973 #. type: deftypevr
49974 #: guix-git/doc/guix.texi:27810
49975 #, no-wrap
49976 msgid "{@code{tlp-configuration} parameter} non-negative-integer ahci-runtime-pm-timeout"
49977 msgstr ""
49978
49979 #. type: deftypevr
49980 #: guix-git/doc/guix.texi:27812
49981 msgid "Seconds of inactivity before disk is suspended."
49982 msgstr ""
49983
49984 #. type: deftypevr
49985 #: guix-git/doc/guix.texi:27817
49986 #, no-wrap
49987 msgid "{@code{tlp-configuration} parameter} string pcie-aspm-on-ac"
49988 msgstr ""
49989
49990 #. type: deftypevr
49991 #: guix-git/doc/guix.texi:27820
49992 msgid "PCI Express Active State Power Management level. Alternatives are default, performance, powersave."
49993 msgstr ""
49994
49995 #. type: deftypevr
49996 #: guix-git/doc/guix.texi:27825
49997 #, no-wrap
49998 msgid "{@code{tlp-configuration} parameter} string pcie-aspm-on-bat"
49999 msgstr ""
50000
50001 #. type: deftypevr
50002 #: guix-git/doc/guix.texi:27827
50003 msgid "Same as @code{pcie-aspm-ac} but on BAT mode."
50004 msgstr ""
50005
50006 #. type: deftypevr
50007 #: guix-git/doc/guix.texi:27832
50008 #, no-wrap
50009 msgid "{@code{tlp-configuration} parameter} string radeon-power-profile-on-ac"
50010 msgstr ""
50011
50012 #. type: deftypevr
50013 #: guix-git/doc/guix.texi:27835
50014 msgid "Radeon graphics clock speed level. Alternatives are low, mid, high, auto, default."
50015 msgstr ""
50016
50017 #. type: deftypevr
50018 #: guix-git/doc/guix.texi:27837
50019 msgid "Defaults to @samp{\"high\"}."
50020 msgstr ""
50021
50022 #. type: deftypevr
50023 #: guix-git/doc/guix.texi:27840
50024 #, no-wrap
50025 msgid "{@code{tlp-configuration} parameter} string radeon-power-profile-on-bat"
50026 msgstr ""
50027
50028 #. type: deftypevr
50029 #: guix-git/doc/guix.texi:27842
50030 msgid "Same as @code{radeon-power-ac} but on BAT mode."
50031 msgstr ""
50032
50033 #. type: deftypevr
50034 #: guix-git/doc/guix.texi:27844
50035 msgid "Defaults to @samp{\"low\"}."
50036 msgstr ""
50037
50038 #. type: deftypevr
50039 #: guix-git/doc/guix.texi:27847
50040 #, no-wrap
50041 msgid "{@code{tlp-configuration} parameter} string radeon-dpm-state-on-ac"
50042 msgstr ""
50043
50044 #. type: deftypevr
50045 #: guix-git/doc/guix.texi:27850
50046 msgid "Radeon dynamic power management method (DPM). Alternatives are battery, performance."
50047 msgstr ""
50048
50049 #. type: deftypevr
50050 #: guix-git/doc/guix.texi:27855
50051 #, no-wrap
50052 msgid "{@code{tlp-configuration} parameter} string radeon-dpm-state-on-bat"
50053 msgstr ""
50054
50055 #. type: deftypevr
50056 #: guix-git/doc/guix.texi:27857
50057 msgid "Same as @code{radeon-dpm-state-ac} but on BAT mode."
50058 msgstr ""
50059
50060 #. type: deftypevr
50061 #: guix-git/doc/guix.texi:27859
50062 msgid "Defaults to @samp{\"battery\"}."
50063 msgstr ""
50064
50065 #. type: deftypevr
50066 #: guix-git/doc/guix.texi:27862
50067 #, no-wrap
50068 msgid "{@code{tlp-configuration} parameter} string radeon-dpm-perf-level-on-ac"
50069 msgstr ""
50070
50071 #. type: deftypevr
50072 #: guix-git/doc/guix.texi:27864
50073 msgid "Radeon DPM performance level. Alternatives are auto, low, high."
50074 msgstr ""
50075
50076 #. type: deftypevr
50077 #: guix-git/doc/guix.texi:27866 guix-git/doc/guix.texi:27873
50078 #: guix-git/doc/guix.texi:27947
50079 msgid "Defaults to @samp{\"auto\"}."
50080 msgstr ""
50081
50082 #. type: deftypevr
50083 #: guix-git/doc/guix.texi:27869
50084 #, no-wrap
50085 msgid "{@code{tlp-configuration} parameter} string radeon-dpm-perf-level-on-bat"
50086 msgstr ""
50087
50088 #. type: deftypevr
50089 #: guix-git/doc/guix.texi:27871
50090 msgid "Same as @code{radeon-dpm-perf-ac} but on BAT mode."
50091 msgstr ""
50092
50093 #. type: deftypevr
50094 #: guix-git/doc/guix.texi:27876
50095 #, no-wrap
50096 msgid "{@code{tlp-configuration} parameter} on-off-boolean wifi-pwr-on-ac?"
50097 msgstr ""
50098
50099 #. type: deftypevr
50100 #: guix-git/doc/guix.texi:27878
50101 msgid "Wifi power saving mode."
50102 msgstr ""
50103
50104 #. type: deftypevr
50105 #: guix-git/doc/guix.texi:27883
50106 #, no-wrap
50107 msgid "{@code{tlp-configuration} parameter} on-off-boolean wifi-pwr-on-bat?"
50108 msgstr ""
50109
50110 #. type: deftypevr
50111 #: guix-git/doc/guix.texi:27885
50112 msgid "Same as @code{wifi-power-ac?} but on BAT mode."
50113 msgstr ""
50114
50115 #. type: deftypevr
50116 #: guix-git/doc/guix.texi:27890
50117 #, no-wrap
50118 msgid "{@code{tlp-configuration} parameter} y-n-boolean wol-disable?"
50119 msgstr ""
50120
50121 #. type: deftypevr
50122 #: guix-git/doc/guix.texi:27892
50123 msgid "Disable wake on LAN."
50124 msgstr ""
50125
50126 #. type: deftypevr
50127 #: guix-git/doc/guix.texi:27897
50128 #, no-wrap
50129 msgid "{@code{tlp-configuration} parameter} non-negative-integer sound-power-save-on-ac"
50130 msgstr ""
50131
50132 #. type: deftypevr
50133 #: guix-git/doc/guix.texi:27900
50134 msgid "Timeout duration in seconds before activating audio power saving on Intel HDA and AC97 devices. A value of 0 disables power saving."
50135 msgstr ""
50136
50137 #. type: deftypevr
50138 #: guix-git/doc/guix.texi:27905
50139 #, no-wrap
50140 msgid "{@code{tlp-configuration} parameter} non-negative-integer sound-power-save-on-bat"
50141 msgstr ""
50142
50143 #. type: deftypevr
50144 #: guix-git/doc/guix.texi:27907
50145 msgid "Same as @code{sound-powersave-ac} but on BAT mode."
50146 msgstr ""
50147
50148 #. type: deftypevr
50149 #: guix-git/doc/guix.texi:27912
50150 #, no-wrap
50151 msgid "{@code{tlp-configuration} parameter} y-n-boolean sound-power-save-controller?"
50152 msgstr ""
50153
50154 #. type: deftypevr
50155 #: guix-git/doc/guix.texi:27914
50156 msgid "Disable controller in powersaving mode on Intel HDA devices."
50157 msgstr ""
50158
50159 #. type: deftypevr
50160 #: guix-git/doc/guix.texi:27919
50161 #, no-wrap
50162 msgid "{@code{tlp-configuration} parameter} boolean bay-poweroff-on-bat?"
50163 msgstr ""
50164
50165 #. type: deftypevr
50166 #: guix-git/doc/guix.texi:27923
50167 msgid "Enable optical drive in UltraBay/MediaBay on BAT mode. Drive can be powered on again by releasing (and reinserting) the eject lever or by pressing the disc eject button on newer models."
50168 msgstr ""
50169
50170 #. type: deftypevr
50171 #: guix-git/doc/guix.texi:27928
50172 #, no-wrap
50173 msgid "{@code{tlp-configuration} parameter} string bay-device"
50174 msgstr ""
50175
50176 #. type: deftypevr
50177 #: guix-git/doc/guix.texi:27930
50178 msgid "Name of the optical drive device to power off."
50179 msgstr ""
50180
50181 #. type: deftypevr
50182 #: guix-git/doc/guix.texi:27932
50183 msgid "Defaults to @samp{\"sr0\"}."
50184 msgstr ""
50185
50186 #. type: deftypevr
50187 #: guix-git/doc/guix.texi:27935
50188 #, no-wrap
50189 msgid "{@code{tlp-configuration} parameter} string runtime-pm-on-ac"
50190 msgstr ""
50191
50192 #. type: deftypevr
50193 #: guix-git/doc/guix.texi:27938
50194 msgid "Runtime Power Management for PCI(e) bus devices. Alternatives are on and auto."
50195 msgstr ""
50196
50197 #. type: deftypevr
50198 #: guix-git/doc/guix.texi:27940
50199 msgid "Defaults to @samp{\"on\"}."
50200 msgstr ""
50201
50202 #. type: deftypevr
50203 #: guix-git/doc/guix.texi:27943
50204 #, no-wrap
50205 msgid "{@code{tlp-configuration} parameter} string runtime-pm-on-bat"
50206 msgstr ""
50207
50208 #. type: deftypevr
50209 #: guix-git/doc/guix.texi:27945
50210 msgid "Same as @code{runtime-pm-ac} but on BAT mode."
50211 msgstr ""
50212
50213 #. type: deftypevr
50214 #: guix-git/doc/guix.texi:27950
50215 #, no-wrap
50216 msgid "{@code{tlp-configuration} parameter} boolean runtime-pm-all?"
50217 msgstr ""
50218
50219 #. type: deftypevr
50220 #: guix-git/doc/guix.texi:27953
50221 msgid "Runtime Power Management for all PCI(e) bus devices, except blacklisted ones."
50222 msgstr ""
50223
50224 #. type: deftypevr
50225 #: guix-git/doc/guix.texi:27958
50226 #, no-wrap
50227 msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list runtime-pm-blacklist"
50228 msgstr ""
50229
50230 #. type: deftypevr
50231 #: guix-git/doc/guix.texi:27960
50232 msgid "Exclude specified PCI(e) device addresses from Runtime Power Management."
50233 msgstr ""
50234
50235 #. type: deftypevr
50236 #: guix-git/doc/guix.texi:27965
50237 #, no-wrap
50238 msgid "{@code{tlp-configuration} parameter} space-separated-string-list runtime-pm-driver-blacklist"
50239 msgstr ""
50240
50241 #. type: deftypevr
50242 #: guix-git/doc/guix.texi:27968
50243 msgid "Exclude PCI(e) devices assigned to the specified drivers from Runtime Power Management."
50244 msgstr ""
50245
50246 #. type: deftypevr
50247 #: guix-git/doc/guix.texi:27971
50248 #, no-wrap
50249 msgid "{@code{tlp-configuration} parameter} boolean usb-autosuspend?"
50250 msgstr ""
50251
50252 #. type: deftypevr
50253 #: guix-git/doc/guix.texi:27973
50254 msgid "Enable USB autosuspend feature."
50255 msgstr ""
50256
50257 #. type: deftypevr
50258 #: guix-git/doc/guix.texi:27978
50259 #, no-wrap
50260 msgid "{@code{tlp-configuration} parameter} maybe-string usb-blacklist"
50261 msgstr ""
50262
50263 #. type: deftypevr
50264 #: guix-git/doc/guix.texi:27980
50265 msgid "Exclude specified devices from USB autosuspend."
50266 msgstr ""
50267
50268 #. type: deftypevr
50269 #: guix-git/doc/guix.texi:27985
50270 #, no-wrap
50271 msgid "{@code{tlp-configuration} parameter} boolean usb-blacklist-wwan?"
50272 msgstr ""
50273
50274 #. type: deftypevr
50275 #: guix-git/doc/guix.texi:27987
50276 msgid "Exclude WWAN devices from USB autosuspend."
50277 msgstr ""
50278
50279 #. type: deftypevr
50280 #: guix-git/doc/guix.texi:27992
50281 #, no-wrap
50282 msgid "{@code{tlp-configuration} parameter} maybe-string usb-whitelist"
50283 msgstr ""
50284
50285 #. type: deftypevr
50286 #: guix-git/doc/guix.texi:27995
50287 msgid "Include specified devices into USB autosuspend, even if they are already excluded by the driver or via @code{usb-blacklist-wwan?}."
50288 msgstr ""
50289
50290 #. type: deftypevr
50291 #: guix-git/doc/guix.texi:28000
50292 #, no-wrap
50293 msgid "{@code{tlp-configuration} parameter} maybe-boolean usb-autosuspend-disable-on-shutdown?"
50294 msgstr ""
50295
50296 #. type: deftypevr
50297 #: guix-git/doc/guix.texi:28002
50298 msgid "Enable USB autosuspend before shutdown."
50299 msgstr ""
50300
50301 #. type: deftypevr
50302 #: guix-git/doc/guix.texi:28007
50303 #, no-wrap
50304 msgid "{@code{tlp-configuration} parameter} boolean restore-device-state-on-startup?"
50305 msgstr ""
50306
50307 #. type: deftypevr
50308 #: guix-git/doc/guix.texi:28010
50309 msgid "Restore radio device state (bluetooth, wifi, wwan) from previous shutdown on system startup."
50310 msgstr ""
50311
50312 #. type: cindex
50313 #: guix-git/doc/guix.texi:28015
50314 #, no-wrap
50315 msgid "thermald"
50316 msgstr ""
50317
50318 #. type: cindex
50319 #: guix-git/doc/guix.texi:28016
50320 #, no-wrap
50321 msgid "CPU frequency scaling with thermald"
50322 msgstr ""
50323
50324 #. type: subsubheading
50325 #: guix-git/doc/guix.texi:28017
50326 #, no-wrap
50327 msgid "Thermald daemon"
50328 msgstr ""
50329
50330 #. type: Plain text
50331 #: guix-git/doc/guix.texi:28021
50332 msgid "The @code{(gnu services pm)} module provides an interface to thermald, a CPU frequency scaling service which helps prevent overheating."
50333 msgstr ""
50334
50335 #. type: defvr
50336 #: guix-git/doc/guix.texi:28022
50337 #, no-wrap
50338 msgid "{Scheme Variable} thermald-service-type"
50339 msgstr ""
50340
50341 #. type: defvr
50342 #: guix-git/doc/guix.texi:28027
50343 msgid "This is the service type for @uref{https://01.org/linux-thermal-daemon/, thermald}, the Linux Thermal Daemon, which is responsible for controlling the thermal state of processors and preventing overheating."
50344 msgstr ""
50345
50346 #. type: deftp
50347 #: guix-git/doc/guix.texi:28029
50348 #, no-wrap
50349 msgid "{Data Type} thermald-configuration"
50350 msgstr ""
50351
50352 #. type: deftp
50353 #: guix-git/doc/guix.texi:28031
50354 msgid "Data type representing the configuration of @code{thermald-service-type}."
50355 msgstr ""
50356
50357 #. type: item
50358 #: guix-git/doc/guix.texi:28033
50359 #, no-wrap
50360 msgid "@code{ignore-cpuid-check?} (default: @code{#f})"
50361 msgstr ""
50362
50363 #. type: table
50364 #: guix-git/doc/guix.texi:28035
50365 msgid "Ignore cpuid check for supported CPU models."
50366 msgstr ""
50367
50368 #. type: item
50369 #: guix-git/doc/guix.texi:28036
50370 #, no-wrap
50371 msgid "@code{thermald} (default: @var{thermald})"
50372 msgstr ""
50373
50374 #. type: table
50375 #: guix-git/doc/guix.texi:28038
50376 msgid "Package object of thermald."
50377 msgstr ""
50378
50379 #. type: Plain text
50380 #: guix-git/doc/guix.texi:28047
50381 msgid "The @code{(gnu services audio)} module provides a service to start MPD (the Music Player Daemon)."
50382 msgstr ""
50383
50384 #. type: cindex
50385 #: guix-git/doc/guix.texi:28048
50386 #, no-wrap
50387 msgid "mpd"
50388 msgstr ""
50389
50390 #. type: subsubheading
50391 #: guix-git/doc/guix.texi:28049
50392 #, no-wrap
50393 msgid "Music Player Daemon"
50394 msgstr ""
50395
50396 #. type: Plain text
50397 #: guix-git/doc/guix.texi:28054
50398 msgid "The Music Player Daemon (MPD) is a service that can play music while being controlled from the local machine or over the network by a variety of clients."
50399 msgstr ""
50400
50401 #. type: Plain text
50402 #: guix-git/doc/guix.texi:28057
50403 msgid "The following example shows how one might run @code{mpd} as user @code{\"bob\"} on port @code{6666}. It uses pulseaudio for output."
50404 msgstr ""
50405
50406 #. type: lisp
50407 #: guix-git/doc/guix.texi:28063
50408 #, no-wrap
50409 msgid ""
50410 "(service mpd-service-type\n"
50411 " (mpd-configuration\n"
50412 " (user \"bob\")\n"
50413 " (port \"6666\")))\n"
50414 msgstr ""
50415
50416 #. type: defvr
50417 #: guix-git/doc/guix.texi:28065
50418 #, no-wrap
50419 msgid "{Scheme Variable} mpd-service-type"
50420 msgstr ""
50421
50422 #. type: defvr
50423 #: guix-git/doc/guix.texi:28067
50424 msgid "The service type for @command{mpd}"
50425 msgstr ""
50426
50427 #. type: deftp
50428 #: guix-git/doc/guix.texi:28069
50429 #, no-wrap
50430 msgid "{Data Type} mpd-configuration"
50431 msgstr ""
50432
50433 #. type: deftp
50434 #: guix-git/doc/guix.texi:28071
50435 msgid "Data type representing the configuration of @command{mpd}."
50436 msgstr ""
50437
50438 #. type: item
50439 #: guix-git/doc/guix.texi:28073
50440 #, no-wrap
50441 msgid "@code{user} (default: @code{\"mpd\"})"
50442 msgstr ""
50443
50444 #. type: table
50445 #: guix-git/doc/guix.texi:28075
50446 msgid "The user to run mpd as."
50447 msgstr ""
50448
50449 #. type: item
50450 #: guix-git/doc/guix.texi:28076
50451 #, no-wrap
50452 msgid "@code{music-dir} (default: @code{\"~/Music\"})"
50453 msgstr ""
50454
50455 #. type: table
50456 #: guix-git/doc/guix.texi:28078
50457 msgid "The directory to scan for music files."
50458 msgstr ""
50459
50460 #. type: item
50461 #: guix-git/doc/guix.texi:28079
50462 #, no-wrap
50463 msgid "@code{playlist-dir} (default: @code{\"~/.mpd/playlists\"})"
50464 msgstr ""
50465
50466 #. type: table
50467 #: guix-git/doc/guix.texi:28081
50468 msgid "The directory to store playlists."
50469 msgstr ""
50470
50471 #. type: item
50472 #: guix-git/doc/guix.texi:28082
50473 #, no-wrap
50474 msgid "@code{db-file} (default: @code{\"~/.mpd/tag_cache\"})"
50475 msgstr ""
50476
50477 #. type: table
50478 #: guix-git/doc/guix.texi:28084
50479 msgid "The location of the music database."
50480 msgstr ""
50481
50482 #. type: item
50483 #: guix-git/doc/guix.texi:28085
50484 #, no-wrap
50485 msgid "@code{state-file} (default: @code{\"~/.mpd/state\"})"
50486 msgstr ""
50487
50488 #. type: table
50489 #: guix-git/doc/guix.texi:28087
50490 msgid "The location of the file that stores current MPD's state."
50491 msgstr ""
50492
50493 #. type: item
50494 #: guix-git/doc/guix.texi:28088
50495 #, no-wrap
50496 msgid "@code{sticker-file} (default: @code{\"~/.mpd/sticker.sql\"})"
50497 msgstr ""
50498
50499 #. type: table
50500 #: guix-git/doc/guix.texi:28090
50501 msgid "The location of the sticker database."
50502 msgstr ""
50503
50504 #. type: item
50505 #: guix-git/doc/guix.texi:28091
50506 #, no-wrap
50507 msgid "@code{port} (default: @code{\"6600\"})"
50508 msgstr ""
50509
50510 #. type: table
50511 #: guix-git/doc/guix.texi:28093
50512 msgid "The port to run mpd on."
50513 msgstr ""
50514
50515 #. type: item
50516 #: guix-git/doc/guix.texi:28094
50517 #, no-wrap
50518 msgid "@code{address} (default: @code{\"any\"})"
50519 msgstr ""
50520
50521 #. type: table
50522 #: guix-git/doc/guix.texi:28097
50523 msgid "The address that mpd will bind to. To use a Unix domain socket, an absolute path can be specified here."
50524 msgstr ""
50525
50526 #. type: item
50527 #: guix-git/doc/guix.texi:28098
50528 #, no-wrap
50529 msgid "@code{outputs} (default: @code{\"(list (mpd-output))\"})"
50530 msgstr ""
50531
50532 #. type: table
50533 #: guix-git/doc/guix.texi:28100
50534 msgid "The audio outputs that MPD can use. By default this is a single output using pulseaudio."
50535 msgstr ""
50536
50537 #. type: deftp
50538 #: guix-git/doc/guix.texi:28104
50539 #, no-wrap
50540 msgid "{Data Type} mpd-output"
50541 msgstr ""
50542
50543 #. type: deftp
50544 #: guix-git/doc/guix.texi:28106
50545 msgid "Data type representing an @command{mpd} audio output."
50546 msgstr ""
50547
50548 #. type: item
50549 #: guix-git/doc/guix.texi:28108
50550 #, no-wrap
50551 msgid "@code{name} (default: @code{\"MPD\"})"
50552 msgstr ""
50553
50554 #. type: table
50555 #: guix-git/doc/guix.texi:28110
50556 msgid "The name of the audio output."
50557 msgstr ""
50558
50559 #. type: item
50560 #: guix-git/doc/guix.texi:28111
50561 #, no-wrap
50562 msgid "@code{type} (default: @code{\"pulse\"})"
50563 msgstr ""
50564
50565 #. type: table
50566 #: guix-git/doc/guix.texi:28113
50567 msgid "The type of audio output."
50568 msgstr ""
50569
50570 #. type: item
50571 #: guix-git/doc/guix.texi:28114
50572 #, no-wrap
50573 msgid "@code{enabled?} (default: @code{#t})"
50574 msgstr ""
50575
50576 #. type: table
50577 #: guix-git/doc/guix.texi:28119
50578 msgid "Specifies whether this audio output is enabled when MPD is started. By default, all audio outputs are enabled. This is just the default setting when there is no state file; with a state file, the previous state is restored."
50579 msgstr ""
50580
50581 #. type: item
50582 #: guix-git/doc/guix.texi:28120
50583 #, no-wrap
50584 msgid "@code{tags?} (default: @code{#t})"
50585 msgstr ""
50586
50587 #. type: table
50588 #: guix-git/doc/guix.texi:28124
50589 msgid "If set to @code{#f}, then MPD will not send tags to this output. This is only useful for output plugins that can receive tags, for example the @code{httpd} output plugin."
50590 msgstr ""
50591
50592 #. type: item
50593 #: guix-git/doc/guix.texi:28125
50594 #, no-wrap
50595 msgid "@code{always-on?} (default: @code{#f})"
50596 msgstr ""
50597
50598 #. type: table
50599 #: guix-git/doc/guix.texi:28129
50600 msgid "If set to @code{#t}, then MPD attempts to keep this audio output always open. This may be useful for streaming servers, when you don’t want to disconnect all listeners even when playback is accidentally stopped."
50601 msgstr ""
50602
50603 #. type: code{#1}
50604 #: guix-git/doc/guix.texi:28130
50605 #, no-wrap
50606 msgid "mixer-type"
50607 msgstr ""
50608
50609 #. type: table
50610 #: guix-git/doc/guix.texi:28136
50611 msgid "This field accepts a symbol that specifies which mixer should be used for this audio output: the @code{hardware} mixer, the @code{software} mixer, the @code{null} mixer (allows setting the volume, but with no effect; this can be used as a trick to implement an external mixer External Mixer) or no mixer (@code{none})."
50612 msgstr ""
50613
50614 #. type: table
50615 #: guix-git/doc/guix.texi:28140
50616 msgid "An association list of option symbols to string values to be appended to the audio output configuration."
50617 msgstr ""
50618
50619 #. type: Plain text
50620 #: guix-git/doc/guix.texi:28146
50621 msgid "The following example shows a configuration of @code{mpd} that provides an HTTP audio streaming output."
50622 msgstr ""
50623
50624 #. type: lisp
50625 #: guix-git/doc/guix.texi:28158
50626 #, no-wrap
50627 msgid ""
50628 "(service mpd-service-type\n"
50629 " (mpd-configuration\n"
50630 " (outputs\n"
50631 " (list (mpd-output\n"
50632 " (name \"streaming\")\n"
50633 " (type \"httpd\")\n"
50634 " (mixer-type 'null)\n"
50635 " (extra-options\n"
50636 " `((encoder . \"vorbis\")\n"
50637 " (port . \"8080\"))))))))\n"
50638 msgstr ""
50639
50640 #. type: Plain text
50641 #: guix-git/doc/guix.texi:28167
50642 msgid "The @code{(gnu services virtualization)} module provides services for the libvirt and virtlog daemons, as well as other virtualization-related services."
50643 msgstr ""
50644
50645 #. type: subsubheading
50646 #: guix-git/doc/guix.texi:28168
50647 #, no-wrap
50648 msgid "Libvirt daemon"
50649 msgstr ""
50650
50651 #. type: Plain text
50652 #: guix-git/doc/guix.texi:28173
50653 msgid "@code{libvirtd} is the server side daemon component of the libvirt virtualization management system. This daemon runs on host servers and performs required management tasks for virtualized guests."
50654 msgstr ""
50655
50656 #. type: deffn
50657 #: guix-git/doc/guix.texi:28174
50658 #, no-wrap
50659 msgid "{Scheme Variable} libvirt-service-type"
50660 msgstr ""
50661
50662 #. type: deffn
50663 #: guix-git/doc/guix.texi:28177
50664 msgid "This is the type of the @uref{https://libvirt.org, libvirt daemon}. Its value must be a @code{libvirt-configuration}."
50665 msgstr ""
50666
50667 #. type: lisp
50668 #: guix-git/doc/guix.texi:28183
50669 #, no-wrap
50670 msgid ""
50671 "(service libvirt-service-type\n"
50672 " (libvirt-configuration\n"
50673 " (unix-sock-group \"libvirt\")\n"
50674 " (tls-port \"16555\")))\n"
50675 msgstr ""
50676
50677 #. type: Plain text
50678 #: guix-git/doc/guix.texi:28188
50679 msgid "Available @code{libvirt-configuration} fields are:"
50680 msgstr ""
50681
50682 #. type: deftypevr
50683 #: guix-git/doc/guix.texi:28189
50684 #, no-wrap
50685 msgid "{@code{libvirt-configuration} parameter} package libvirt"
50686 msgstr ""
50687
50688 #. type: deftypevr
50689 #: guix-git/doc/guix.texi:28191
50690 msgid "Libvirt package."
50691 msgstr ""
50692
50693 #. type: deftypevr
50694 #: guix-git/doc/guix.texi:28194
50695 #, no-wrap
50696 msgid "{@code{libvirt-configuration} parameter} boolean listen-tls?"
50697 msgstr ""
50698
50699 #. type: deftypevr
50700 #: guix-git/doc/guix.texi:28197
50701 msgid "Flag listening for secure TLS connections on the public TCP/IP port. You must set @code{listen} for this to have any effect."
50702 msgstr ""
50703
50704 #. type: deftypevr
50705 #: guix-git/doc/guix.texi:28200
50706 msgid "It is necessary to setup a CA and issue server certificates before using this capability."
50707 msgstr ""
50708
50709 #. type: deftypevr
50710 #: guix-git/doc/guix.texi:28205
50711 #, no-wrap
50712 msgid "{@code{libvirt-configuration} parameter} boolean listen-tcp?"
50713 msgstr ""
50714
50715 #. type: deftypevr
50716 #: guix-git/doc/guix.texi:28208
50717 msgid "Listen for unencrypted TCP connections on the public TCP/IP port. You must set @code{listen} for this to have any effect."
50718 msgstr ""
50719
50720 #. type: deftypevr
50721 #: guix-git/doc/guix.texi:28212
50722 msgid "Using the TCP socket requires SASL authentication by default. Only SASL mechanisms which support data encryption are allowed. This is DIGEST_MD5 and GSSAPI (Kerberos5)."
50723 msgstr ""
50724
50725 #. type: deftypevr
50726 #: guix-git/doc/guix.texi:28217
50727 #, no-wrap
50728 msgid "{@code{libvirt-configuration} parameter} string tls-port"
50729 msgstr ""
50730
50731 #. type: deftypevr
50732 #: guix-git/doc/guix.texi:28220
50733 msgid "Port for accepting secure TLS connections. This can be a port number, or service name."
50734 msgstr ""
50735
50736 #. type: deftypevr
50737 #: guix-git/doc/guix.texi:28222
50738 msgid "Defaults to @samp{\"16514\"}."
50739 msgstr ""
50740
50741 #. type: deftypevr
50742 #: guix-git/doc/guix.texi:28225
50743 #, no-wrap
50744 msgid "{@code{libvirt-configuration} parameter} string tcp-port"
50745 msgstr ""
50746
50747 #. type: deftypevr
50748 #: guix-git/doc/guix.texi:28228
50749 msgid "Port for accepting insecure TCP connections. This can be a port number, or service name."
50750 msgstr ""
50751
50752 #. type: deftypevr
50753 #: guix-git/doc/guix.texi:28230
50754 msgid "Defaults to @samp{\"16509\"}."
50755 msgstr ""
50756
50757 #. type: deftypevr
50758 #: guix-git/doc/guix.texi:28233
50759 #, no-wrap
50760 msgid "{@code{libvirt-configuration} parameter} string listen-addr"
50761 msgstr ""
50762
50763 #. type: deftypevr
50764 #: guix-git/doc/guix.texi:28235
50765 msgid "IP address or hostname used for client connections."
50766 msgstr ""
50767
50768 #. type: deftypevr
50769 #: guix-git/doc/guix.texi:28240
50770 #, no-wrap
50771 msgid "{@code{libvirt-configuration} parameter} boolean mdns-adv?"
50772 msgstr ""
50773
50774 #. type: deftypevr
50775 #: guix-git/doc/guix.texi:28242
50776 msgid "Flag toggling mDNS advertisement of the libvirt service."
50777 msgstr ""
50778
50779 #. type: deftypevr
50780 #: guix-git/doc/guix.texi:28245
50781 msgid "Alternatively can disable for all services on a host by stopping the Avahi daemon."
50782 msgstr ""
50783
50784 #. type: deftypevr
50785 #: guix-git/doc/guix.texi:28250
50786 #, no-wrap
50787 msgid "{@code{libvirt-configuration} parameter} string mdns-name"
50788 msgstr ""
50789
50790 #. type: deftypevr
50791 #: guix-git/doc/guix.texi:28253
50792 msgid "Default mDNS advertisement name. This must be unique on the immediate broadcast network."
50793 msgstr ""
50794
50795 #. type: deftypevr
50796 #: guix-git/doc/guix.texi:28255
50797 msgid "Defaults to @samp{\"Virtualization Host <hostname>\"}."
50798 msgstr ""
50799
50800 #. type: deftypevr
50801 #: guix-git/doc/guix.texi:28258
50802 #, no-wrap
50803 msgid "{@code{libvirt-configuration} parameter} string unix-sock-group"
50804 msgstr ""
50805
50806 #. type: deftypevr
50807 #: guix-git/doc/guix.texi:28262
50808 msgid "UNIX domain socket group ownership. This can be used to allow a 'trusted' set of users access to management capabilities without becoming root."
50809 msgstr ""
50810
50811 #. type: deftypevr
50812 #: guix-git/doc/guix.texi:28267
50813 #, no-wrap
50814 msgid "{@code{libvirt-configuration} parameter} string unix-sock-ro-perms"
50815 msgstr ""
50816
50817 #. type: deftypevr
50818 #: guix-git/doc/guix.texi:28270
50819 msgid "UNIX socket permissions for the R/O socket. This is used for monitoring VM status only."
50820 msgstr ""
50821
50822 #. type: deftypevr
50823 #: guix-git/doc/guix.texi:28272 guix-git/doc/guix.texi:28290
50824 msgid "Defaults to @samp{\"0777\"}."
50825 msgstr ""
50826
50827 #. type: deftypevr
50828 #: guix-git/doc/guix.texi:28275
50829 #, no-wrap
50830 msgid "{@code{libvirt-configuration} parameter} string unix-sock-rw-perms"
50831 msgstr ""
50832
50833 #. type: deftypevr
50834 #: guix-git/doc/guix.texi:28279
50835 msgid "UNIX socket permissions for the R/W socket. Default allows only root. If PolicyKit is enabled on the socket, the default will change to allow everyone (eg, 0777)"
50836 msgstr ""
50837
50838 #. type: deftypevr
50839 #: guix-git/doc/guix.texi:28281
50840 msgid "Defaults to @samp{\"0770\"}."
50841 msgstr ""
50842
50843 #. type: deftypevr
50844 #: guix-git/doc/guix.texi:28284
50845 #, no-wrap
50846 msgid "{@code{libvirt-configuration} parameter} string unix-sock-admin-perms"
50847 msgstr ""
50848
50849 #. type: deftypevr
50850 #: guix-git/doc/guix.texi:28288
50851 msgid "UNIX socket permissions for the admin socket. Default allows only owner (root), do not change it unless you are sure to whom you are exposing the access to."
50852 msgstr ""
50853
50854 #. type: deftypevr
50855 #: guix-git/doc/guix.texi:28293
50856 #, no-wrap
50857 msgid "{@code{libvirt-configuration} parameter} string unix-sock-dir"
50858 msgstr ""
50859
50860 #. type: deftypevr
50861 #: guix-git/doc/guix.texi:28295
50862 msgid "The directory in which sockets will be found/created."
50863 msgstr ""
50864
50865 #. type: deftypevr
50866 #: guix-git/doc/guix.texi:28297
50867 msgid "Defaults to @samp{\"/var/run/libvirt\"}."
50868 msgstr ""
50869
50870 #. type: deftypevr
50871 #: guix-git/doc/guix.texi:28300
50872 #, no-wrap
50873 msgid "{@code{libvirt-configuration} parameter} string auth-unix-ro"
50874 msgstr ""
50875
50876 #. type: deftypevr
50877 #: guix-git/doc/guix.texi:28303
50878 msgid "Authentication scheme for UNIX read-only sockets. By default socket permissions allow anyone to connect"
50879 msgstr ""
50880
50881 #. type: deftypevr
50882 #: guix-git/doc/guix.texi:28305 guix-git/doc/guix.texi:28314
50883 msgid "Defaults to @samp{\"polkit\"}."
50884 msgstr ""
50885
50886 #. type: deftypevr
50887 #: guix-git/doc/guix.texi:28308
50888 #, no-wrap
50889 msgid "{@code{libvirt-configuration} parameter} string auth-unix-rw"
50890 msgstr ""
50891
50892 #. type: deftypevr
50893 #: guix-git/doc/guix.texi:28312
50894 msgid "Authentication scheme for UNIX read-write sockets. By default socket permissions only allow root. If PolicyKit support was compiled into libvirt, the default will be to use 'polkit' auth."
50895 msgstr ""
50896
50897 #. type: deftypevr
50898 #: guix-git/doc/guix.texi:28317
50899 #, no-wrap
50900 msgid "{@code{libvirt-configuration} parameter} string auth-tcp"
50901 msgstr ""
50902
50903 #. type: deftypevr
50904 #: guix-git/doc/guix.texi:28321
50905 msgid "Authentication scheme for TCP sockets. If you don't enable SASL, then all TCP traffic is cleartext. Don't do this outside of a dev/test scenario."
50906 msgstr ""
50907
50908 #. type: deftypevr
50909 #: guix-git/doc/guix.texi:28323
50910 msgid "Defaults to @samp{\"sasl\"}."
50911 msgstr ""
50912
50913 #. type: deftypevr
50914 #: guix-git/doc/guix.texi:28326
50915 #, no-wrap
50916 msgid "{@code{libvirt-configuration} parameter} string auth-tls"
50917 msgstr ""
50918
50919 #. type: deftypevr
50920 #: guix-git/doc/guix.texi:28330
50921 msgid "Authentication scheme for TLS sockets. TLS sockets already have encryption provided by the TLS layer, and limited authentication is done by certificates."
50922 msgstr ""
50923
50924 #. type: deftypevr
50925 #: guix-git/doc/guix.texi:28333
50926 msgid "It is possible to make use of any SASL authentication mechanism as well, by using 'sasl' for this option"
50927 msgstr ""
50928
50929 #. type: deftypevr
50930 #: guix-git/doc/guix.texi:28335
50931 msgid "Defaults to @samp{\"none\"}."
50932 msgstr ""
50933
50934 #. type: deftypevr
50935 #: guix-git/doc/guix.texi:28338
50936 #, no-wrap
50937 msgid "{@code{libvirt-configuration} parameter} optional-list access-drivers"
50938 msgstr ""
50939
50940 #. type: deftypevr
50941 #: guix-git/doc/guix.texi:28340
50942 msgid "API access control scheme."
50943 msgstr ""
50944
50945 #. type: deftypevr
50946 #: guix-git/doc/guix.texi:28343
50947 msgid "By default an authenticated user is allowed access to all APIs. Access drivers can place restrictions on this."
50948 msgstr ""
50949
50950 #. type: deftypevr
50951 #: guix-git/doc/guix.texi:28348
50952 #, no-wrap
50953 msgid "{@code{libvirt-configuration} parameter} string key-file"
50954 msgstr ""
50955
50956 #. type: deftypevr
50957 #: guix-git/doc/guix.texi:28351
50958 msgid "Server key file path. If set to an empty string, then no private key is loaded."
50959 msgstr ""
50960
50961 #. type: deftypevr
50962 #: guix-git/doc/guix.texi:28356
50963 #, no-wrap
50964 msgid "{@code{libvirt-configuration} parameter} string cert-file"
50965 msgstr ""
50966
50967 #. type: deftypevr
50968 #: guix-git/doc/guix.texi:28359
50969 msgid "Server key file path. If set to an empty string, then no certificate is loaded."
50970 msgstr ""
50971
50972 #. type: deftypevr
50973 #: guix-git/doc/guix.texi:28364
50974 #, no-wrap
50975 msgid "{@code{libvirt-configuration} parameter} string ca-file"
50976 msgstr ""
50977
50978 #. type: deftypevr
50979 #: guix-git/doc/guix.texi:28367
50980 msgid "Server key file path. If set to an empty string, then no CA certificate is loaded."
50981 msgstr ""
50982
50983 #. type: deftypevr
50984 #: guix-git/doc/guix.texi:28372
50985 #, no-wrap
50986 msgid "{@code{libvirt-configuration} parameter} string crl-file"
50987 msgstr ""
50988
50989 #. type: deftypevr
50990 #: guix-git/doc/guix.texi:28375
50991 msgid "Certificate revocation list path. If set to an empty string, then no CRL is loaded."
50992 msgstr ""
50993
50994 #. type: deftypevr
50995 #: guix-git/doc/guix.texi:28380
50996 #, no-wrap
50997 msgid "{@code{libvirt-configuration} parameter} boolean tls-no-sanity-cert"
50998 msgstr ""
50999
51000 #. type: deftypevr
51001 #: guix-git/doc/guix.texi:28382
51002 msgid "Disable verification of our own server certificates."
51003 msgstr ""
51004
51005 #. type: deftypevr
51006 #: guix-git/doc/guix.texi:28385
51007 msgid "When libvirtd starts it performs some sanity checks against its own certificates."
51008 msgstr ""
51009
51010 #. type: deftypevr
51011 #: guix-git/doc/guix.texi:28390
51012 #, no-wrap
51013 msgid "{@code{libvirt-configuration} parameter} boolean tls-no-verify-cert"
51014 msgstr ""
51015
51016 #. type: deftypevr
51017 #: guix-git/doc/guix.texi:28392
51018 msgid "Disable verification of client certificates."
51019 msgstr ""
51020
51021 #. type: deftypevr
51022 #: guix-git/doc/guix.texi:28396
51023 msgid "Client certificate verification is the primary authentication mechanism. Any client which does not present a certificate signed by the CA will be rejected."
51024 msgstr ""
51025
51026 #. type: deftypevr
51027 #: guix-git/doc/guix.texi:28401
51028 #, no-wrap
51029 msgid "{@code{libvirt-configuration} parameter} optional-list tls-allowed-dn-list"
51030 msgstr ""
51031
51032 #. type: deftypevr
51033 #: guix-git/doc/guix.texi:28403
51034 msgid "Whitelist of allowed x509 Distinguished Name."
51035 msgstr ""
51036
51037 #. type: deftypevr
51038 #: guix-git/doc/guix.texi:28408
51039 #, no-wrap
51040 msgid "{@code{libvirt-configuration} parameter} optional-list sasl-allowed-usernames"
51041 msgstr ""
51042
51043 #. type: deftypevr
51044 #: guix-git/doc/guix.texi:28411
51045 msgid "Whitelist of allowed SASL usernames. The format for username depends on the SASL authentication mechanism."
51046 msgstr ""
51047
51048 #. type: deftypevr
51049 #: guix-git/doc/guix.texi:28416
51050 #, no-wrap
51051 msgid "{@code{libvirt-configuration} parameter} string tls-priority"
51052 msgstr ""
51053
51054 #. type: deftypevr
51055 #: guix-git/doc/guix.texi:28420
51056 msgid "Override the compile time default TLS priority string. The default is usually @samp{\"NORMAL\"} unless overridden at build time. Only set this is it is desired for libvirt to deviate from the global default settings."
51057 msgstr ""
51058
51059 #. type: deftypevr
51060 #: guix-git/doc/guix.texi:28422
51061 msgid "Defaults to @samp{\"NORMAL\"}."
51062 msgstr ""
51063
51064 #. type: deftypevr
51065 #: guix-git/doc/guix.texi:28425
51066 #, no-wrap
51067 msgid "{@code{libvirt-configuration} parameter} integer max-clients"
51068 msgstr ""
51069
51070 #. type: deftypevr
51071 #: guix-git/doc/guix.texi:28428 guix-git/doc/guix.texi:28852
51072 msgid "Maximum number of concurrent client connections to allow over all sockets combined."
51073 msgstr ""
51074
51075 #. type: deftypevr
51076 #: guix-git/doc/guix.texi:28430
51077 msgid "Defaults to @samp{5000}."
51078 msgstr ""
51079
51080 #. type: deftypevr
51081 #: guix-git/doc/guix.texi:28433
51082 #, no-wrap
51083 msgid "{@code{libvirt-configuration} parameter} integer max-queued-clients"
51084 msgstr ""
51085
51086 #. type: deftypevr
51087 #: guix-git/doc/guix.texi:28437
51088 msgid "Maximum length of queue of connections waiting to be accepted by the daemon. Note, that some protocols supporting retransmission may obey this so that a later reattempt at connection succeeds."
51089 msgstr ""
51090
51091 #. type: deftypevr
51092 #: guix-git/doc/guix.texi:28442
51093 #, no-wrap
51094 msgid "{@code{libvirt-configuration} parameter} integer max-anonymous-clients"
51095 msgstr ""
51096
51097 #. type: deftypevr
51098 #: guix-git/doc/guix.texi:28445
51099 msgid "Maximum length of queue of accepted but not yet authenticated clients. Set this to zero to turn this feature off"
51100 msgstr ""
51101
51102 #. type: deftypevr
51103 #: guix-git/doc/guix.texi:28447 guix-git/doc/guix.texi:28465
51104 #: guix-git/doc/guix.texi:28481
51105 msgid "Defaults to @samp{20}."
51106 msgstr ""
51107
51108 #. type: deftypevr
51109 #: guix-git/doc/guix.texi:28450
51110 #, no-wrap
51111 msgid "{@code{libvirt-configuration} parameter} integer min-workers"
51112 msgstr ""
51113
51114 #. type: deftypevr
51115 #: guix-git/doc/guix.texi:28452
51116 msgid "Number of workers to start up initially."
51117 msgstr ""
51118
51119 #. type: deftypevr
51120 #: guix-git/doc/guix.texi:28457
51121 #, no-wrap
51122 msgid "{@code{libvirt-configuration} parameter} integer max-workers"
51123 msgstr ""
51124
51125 #. type: deftypevr
51126 #: guix-git/doc/guix.texi:28459
51127 msgid "Maximum number of worker threads."
51128 msgstr ""
51129
51130 #. type: deftypevr
51131 #: guix-git/doc/guix.texi:28463
51132 msgid "If the number of active clients exceeds @code{min-workers}, then more threads are spawned, up to max_workers limit. Typically you'd want max_workers to equal maximum number of clients allowed."
51133 msgstr ""
51134
51135 #. type: deftypevr
51136 #: guix-git/doc/guix.texi:28468
51137 #, no-wrap
51138 msgid "{@code{libvirt-configuration} parameter} integer prio-workers"
51139 msgstr ""
51140
51141 #. type: deftypevr
51142 #: guix-git/doc/guix.texi:28472
51143 msgid "Number of priority workers. If all workers from above pool are stuck, some calls marked as high priority (notably domainDestroy) can be executed in this pool."
51144 msgstr ""
51145
51146 #. type: deftypevr
51147 #: guix-git/doc/guix.texi:28477
51148 #, no-wrap
51149 msgid "{@code{libvirt-configuration} parameter} integer max-requests"
51150 msgstr ""
51151
51152 #. type: deftypevr
51153 #: guix-git/doc/guix.texi:28479
51154 msgid "Total global limit on concurrent RPC calls."
51155 msgstr ""
51156
51157 #. type: deftypevr
51158 #: guix-git/doc/guix.texi:28484
51159 #, no-wrap
51160 msgid "{@code{libvirt-configuration} parameter} integer max-client-requests"
51161 msgstr ""
51162
51163 #. type: deftypevr
51164 #: guix-git/doc/guix.texi:28488
51165 msgid "Limit on concurrent requests from a single client connection. To avoid one client monopolizing the server this should be a small fraction of the global max_requests and max_workers parameter."
51166 msgstr ""
51167
51168 #. type: deftypevr
51169 #: guix-git/doc/guix.texi:28493
51170 #, no-wrap
51171 msgid "{@code{libvirt-configuration} parameter} integer admin-min-workers"
51172 msgstr ""
51173
51174 #. type: deftypevr
51175 #: guix-git/doc/guix.texi:28495
51176 msgid "Same as @code{min-workers} but for the admin interface."
51177 msgstr ""
51178
51179 #. type: deftypevr
51180 #: guix-git/doc/guix.texi:28500
51181 #, no-wrap
51182 msgid "{@code{libvirt-configuration} parameter} integer admin-max-workers"
51183 msgstr ""
51184
51185 #. type: deftypevr
51186 #: guix-git/doc/guix.texi:28502
51187 msgid "Same as @code{max-workers} but for the admin interface."
51188 msgstr ""
51189
51190 #. type: deftypevr
51191 #: guix-git/doc/guix.texi:28507
51192 #, no-wrap
51193 msgid "{@code{libvirt-configuration} parameter} integer admin-max-clients"
51194 msgstr ""
51195
51196 #. type: deftypevr
51197 #: guix-git/doc/guix.texi:28509
51198 msgid "Same as @code{max-clients} but for the admin interface."
51199 msgstr ""
51200
51201 #. type: deftypevr
51202 #: guix-git/doc/guix.texi:28514
51203 #, no-wrap
51204 msgid "{@code{libvirt-configuration} parameter} integer admin-max-queued-clients"
51205 msgstr ""
51206
51207 #. type: deftypevr
51208 #: guix-git/doc/guix.texi:28516
51209 msgid "Same as @code{max-queued-clients} but for the admin interface."
51210 msgstr ""
51211
51212 #. type: deftypevr
51213 #: guix-git/doc/guix.texi:28521
51214 #, no-wrap
51215 msgid "{@code{libvirt-configuration} parameter} integer admin-max-client-requests"
51216 msgstr ""
51217
51218 #. type: deftypevr
51219 #: guix-git/doc/guix.texi:28523
51220 msgid "Same as @code{max-client-requests} but for the admin interface."
51221 msgstr ""
51222
51223 #. type: deftypevr
51224 #: guix-git/doc/guix.texi:28528
51225 #, no-wrap
51226 msgid "{@code{libvirt-configuration} parameter} integer log-level"
51227 msgstr ""
51228
51229 #. type: deftypevr
51230 #: guix-git/doc/guix.texi:28530 guix-git/doc/guix.texi:28754
51231 msgid "Logging level. 4 errors, 3 warnings, 2 information, 1 debug."
51232 msgstr ""
51233
51234 #. type: deftypevr
51235 #: guix-git/doc/guix.texi:28535
51236 #, no-wrap
51237 msgid "{@code{libvirt-configuration} parameter} string log-filters"
51238 msgstr ""
51239
51240 #. type: deftypevr
51241 #: guix-git/doc/guix.texi:28537 guix-git/doc/guix.texi:28761
51242 msgid "Logging filters."
51243 msgstr ""
51244
51245 #. type: deftypevr
51246 #: guix-git/doc/guix.texi:28540
51247 msgid "A filter allows to select a different logging level for a given category of logs. The format for a filter is one of:"
51248 msgstr ""
51249
51250 #. type: itemize
51251 #: guix-git/doc/guix.texi:28544 guix-git/doc/guix.texi:28768
51252 msgid "x:name"
51253 msgstr ""
51254
51255 #. type: itemize
51256 #: guix-git/doc/guix.texi:28547 guix-git/doc/guix.texi:28771
51257 msgid "x:+name"
51258 msgstr ""
51259
51260 #. type: deftypevr
51261 #: guix-git/doc/guix.texi:28558
51262 msgid "where @code{name} is a string which is matched against the category given in the @code{VIR_LOG_INIT()} at the top of each libvirt source file, e.g., @samp{\"remote\"}, @samp{\"qemu\"}, or @samp{\"util.json\"} (the name in the filter can be a substring of the full category name, in order to match multiple similar categories), the optional @samp{\"+\"} prefix tells libvirt to log stack trace for each message matching name, and @code{x} is the minimal level where matching messages should be logged:"
51263 msgstr ""
51264
51265 #. type: itemize
51266 #: guix-git/doc/guix.texi:28562 guix-git/doc/guix.texi:28607
51267 #: guix-git/doc/guix.texi:28785 guix-git/doc/guix.texi:28830
51268 msgid "1: DEBUG"
51269 msgstr ""
51270
51271 #. type: itemize
51272 #: guix-git/doc/guix.texi:28565 guix-git/doc/guix.texi:28610
51273 #: guix-git/doc/guix.texi:28788 guix-git/doc/guix.texi:28833
51274 msgid "2: INFO"
51275 msgstr ""
51276
51277 #. type: itemize
51278 #: guix-git/doc/guix.texi:28568 guix-git/doc/guix.texi:28613
51279 #: guix-git/doc/guix.texi:28791 guix-git/doc/guix.texi:28836
51280 msgid "3: WARNING"
51281 msgstr ""
51282
51283 #. type: itemize
51284 #: guix-git/doc/guix.texi:28571 guix-git/doc/guix.texi:28616
51285 #: guix-git/doc/guix.texi:28794 guix-git/doc/guix.texi:28839
51286 msgid "4: ERROR"
51287 msgstr ""
51288
51289 #. type: deftypevr
51290 #: guix-git/doc/guix.texi:28576 guix-git/doc/guix.texi:28799
51291 msgid "Multiple filters can be defined in a single filters statement, they just need to be separated by spaces."
51292 msgstr ""
51293
51294 #. type: deftypevr
51295 #: guix-git/doc/guix.texi:28578 guix-git/doc/guix.texi:28801
51296 msgid "Defaults to @samp{\"3:remote 4:event\"}."
51297 msgstr ""
51298
51299 #. type: deftypevr
51300 #: guix-git/doc/guix.texi:28581
51301 #, no-wrap
51302 msgid "{@code{libvirt-configuration} parameter} string log-outputs"
51303 msgstr ""
51304
51305 #. type: deftypevr
51306 #: guix-git/doc/guix.texi:28583 guix-git/doc/guix.texi:28806
51307 msgid "Logging outputs."
51308 msgstr ""
51309
51310 #. type: deftypevr
51311 #: guix-git/doc/guix.texi:28586
51312 msgid "An output is one of the places to save logging information. The format for an output can be:"
51313 msgstr ""
51314
51315 #. type: item
51316 #: guix-git/doc/guix.texi:28588 guix-git/doc/guix.texi:28811
51317 #, no-wrap
51318 msgid "x:stderr"
51319 msgstr ""
51320
51321 #. type: table
51322 #: guix-git/doc/guix.texi:28590 guix-git/doc/guix.texi:28813
51323 msgid "output goes to stderr"
51324 msgstr ""
51325
51326 #. type: item
51327 #: guix-git/doc/guix.texi:28591 guix-git/doc/guix.texi:28814
51328 #, no-wrap
51329 msgid "x:syslog:name"
51330 msgstr ""
51331
51332 #. type: table
51333 #: guix-git/doc/guix.texi:28593 guix-git/doc/guix.texi:28816
51334 msgid "use syslog for the output and use the given name as the ident"
51335 msgstr ""
51336
51337 #. type: item
51338 #: guix-git/doc/guix.texi:28594 guix-git/doc/guix.texi:28817
51339 #, no-wrap
51340 msgid "x:file:file_path"
51341 msgstr ""
51342
51343 #. type: table
51344 #: guix-git/doc/guix.texi:28596 guix-git/doc/guix.texi:28819
51345 msgid "output to a file, with the given filepath"
51346 msgstr ""
51347
51348 #. type: item
51349 #: guix-git/doc/guix.texi:28597 guix-git/doc/guix.texi:28820
51350 #, no-wrap
51351 msgid "x:journald"
51352 msgstr ""
51353
51354 #. type: table
51355 #: guix-git/doc/guix.texi:28599 guix-git/doc/guix.texi:28822
51356 msgid "output to journald logging system"
51357 msgstr ""
51358
51359 #. type: deftypevr
51360 #: guix-git/doc/guix.texi:28603 guix-git/doc/guix.texi:28826
51361 msgid "In all case the x prefix is the minimal level, acting as a filter"
51362 msgstr ""
51363
51364 #. type: deftypevr
51365 #: guix-git/doc/guix.texi:28621 guix-git/doc/guix.texi:28844
51366 msgid "Multiple outputs can be defined, they just need to be separated by spaces."
51367 msgstr ""
51368
51369 #. type: deftypevr
51370 #: guix-git/doc/guix.texi:28623 guix-git/doc/guix.texi:28846
51371 msgid "Defaults to @samp{\"3:stderr\"}."
51372 msgstr ""
51373
51374 #. type: deftypevr
51375 #: guix-git/doc/guix.texi:28626
51376 #, no-wrap
51377 msgid "{@code{libvirt-configuration} parameter} integer audit-level"
51378 msgstr ""
51379
51380 #. type: deftypevr
51381 #: guix-git/doc/guix.texi:28628
51382 msgid "Allows usage of the auditing subsystem to be altered"
51383 msgstr ""
51384
51385 #. type: itemize
51386 #: guix-git/doc/guix.texi:28632
51387 msgid "0: disable all auditing"
51388 msgstr ""
51389
51390 #. type: itemize
51391 #: guix-git/doc/guix.texi:28635
51392 msgid "1: enable auditing, only if enabled on host"
51393 msgstr ""
51394
51395 #. type: itemize
51396 #: guix-git/doc/guix.texi:28638
51397 msgid "2: enable auditing, and exit if disabled on host."
51398 msgstr ""
51399
51400 #. type: deftypevr
51401 #: guix-git/doc/guix.texi:28645
51402 #, no-wrap
51403 msgid "{@code{libvirt-configuration} parameter} boolean audit-logging"
51404 msgstr ""
51405
51406 #. type: deftypevr
51407 #: guix-git/doc/guix.texi:28647
51408 msgid "Send audit messages via libvirt logging infrastructure."
51409 msgstr ""
51410
51411 #. type: deftypevr
51412 #: guix-git/doc/guix.texi:28652
51413 #, no-wrap
51414 msgid "{@code{libvirt-configuration} parameter} optional-string host-uuid"
51415 msgstr ""
51416
51417 #. type: deftypevr
51418 #: guix-git/doc/guix.texi:28654
51419 msgid "Host UUID@. UUID must not have all digits be the same."
51420 msgstr ""
51421
51422 #. type: deftypevr
51423 #: guix-git/doc/guix.texi:28659
51424 #, no-wrap
51425 msgid "{@code{libvirt-configuration} parameter} string host-uuid-source"
51426 msgstr ""
51427
51428 #. type: deftypevr
51429 #: guix-git/doc/guix.texi:28661
51430 msgid "Source to read host UUID."
51431 msgstr ""
51432
51433 #. type: itemize
51434 #: guix-git/doc/guix.texi:28665
51435 msgid "@code{smbios}: fetch the UUID from @code{dmidecode -s system-uuid}"
51436 msgstr ""
51437
51438 #. type: itemize
51439 #: guix-git/doc/guix.texi:28668
51440 msgid "@code{machine-id}: fetch the UUID from @code{/etc/machine-id}"
51441 msgstr ""
51442
51443 #. type: deftypevr
51444 #: guix-git/doc/guix.texi:28673
51445 msgid "If @code{dmidecode} does not provide a valid UUID a temporary UUID will be generated."
51446 msgstr ""
51447
51448 #. type: deftypevr
51449 #: guix-git/doc/guix.texi:28675
51450 msgid "Defaults to @samp{\"smbios\"}."
51451 msgstr ""
51452
51453 #. type: deftypevr
51454 #: guix-git/doc/guix.texi:28678
51455 #, no-wrap
51456 msgid "{@code{libvirt-configuration} parameter} integer keepalive-interval"
51457 msgstr ""
51458
51459 #. type: deftypevr
51460 #: guix-git/doc/guix.texi:28683
51461 msgid "A keepalive message is sent to a client after @code{keepalive_interval} seconds of inactivity to check if the client is still responding. If set to -1, libvirtd will never send keepalive requests; however clients can still send them and the daemon will send responses."
51462 msgstr ""
51463
51464 #. type: deftypevr
51465 #: guix-git/doc/guix.texi:28688
51466 #, no-wrap
51467 msgid "{@code{libvirt-configuration} parameter} integer keepalive-count"
51468 msgstr ""
51469
51470 #. type: deftypevr
51471 #: guix-git/doc/guix.texi:28692
51472 msgid "Maximum number of keepalive messages that are allowed to be sent to the client without getting any response before the connection is considered broken."
51473 msgstr ""
51474
51475 #. type: deftypevr
51476 #: guix-git/doc/guix.texi:28699
51477 msgid "In other words, the connection is automatically closed approximately after @code{keepalive_interval * (keepalive_count + 1)} seconds since the last message received from the client. When @code{keepalive-count} is set to 0, connections will be automatically closed after @code{keepalive-interval} seconds of inactivity without sending any keepalive messages."
51478 msgstr ""
51479
51480 #. type: deftypevr
51481 #: guix-git/doc/guix.texi:28704
51482 #, no-wrap
51483 msgid "{@code{libvirt-configuration} parameter} integer admin-keepalive-interval"
51484 msgstr ""
51485
51486 #. type: deftypevr
51487 #: guix-git/doc/guix.texi:28706 guix-git/doc/guix.texi:28713
51488 msgid "Same as above but for admin interface."
51489 msgstr ""
51490
51491 #. type: deftypevr
51492 #: guix-git/doc/guix.texi:28711
51493 #, no-wrap
51494 msgid "{@code{libvirt-configuration} parameter} integer admin-keepalive-count"
51495 msgstr ""
51496
51497 #. type: deftypevr
51498 #: guix-git/doc/guix.texi:28718
51499 #, no-wrap
51500 msgid "{@code{libvirt-configuration} parameter} integer ovs-timeout"
51501 msgstr ""
51502
51503 #. type: deftypevr
51504 #: guix-git/doc/guix.texi:28720
51505 msgid "Timeout for Open vSwitch calls."
51506 msgstr ""
51507
51508 #. type: deftypevr
51509 #: guix-git/doc/guix.texi:28724
51510 msgid "The @code{ovs-vsctl} utility is used for the configuration and its timeout option is set by default to 5 seconds to avoid potential infinite waits blocking libvirt."
51511 msgstr ""
51512
51513 #. type: subsubheading
51514 #: guix-git/doc/guix.texi:28731
51515 #, no-wrap
51516 msgid "Virtlog daemon"
51517 msgstr ""
51518
51519 #. type: Plain text
51520 #: guix-git/doc/guix.texi:28734
51521 msgid "The virtlogd service is a server side daemon component of libvirt that is used to manage logs from virtual machine consoles."
51522 msgstr ""
51523
51524 #. type: Plain text
51525 #: guix-git/doc/guix.texi:28740
51526 msgid "This daemon is not used directly by libvirt client applications, rather it is called on their behalf by @code{libvirtd}. By maintaining the logs in a standalone daemon, the main @code{libvirtd} daemon can be restarted without risk of losing logs. The @code{virtlogd} daemon has the ability to re-exec() itself upon receiving @code{SIGUSR1}, to allow live upgrades without downtime."
51527 msgstr ""
51528
51529 #. type: deffn
51530 #: guix-git/doc/guix.texi:28741
51531 #, no-wrap
51532 msgid "{Scheme Variable} virtlog-service-type"
51533 msgstr ""
51534
51535 #. type: deffn
51536 #: guix-git/doc/guix.texi:28744
51537 msgid "This is the type of the virtlog daemon. Its value must be a @code{virtlog-configuration}."
51538 msgstr ""
51539
51540 #. type: lisp
51541 #: guix-git/doc/guix.texi:28749
51542 #, no-wrap
51543 msgid ""
51544 "(service virtlog-service-type\n"
51545 " (virtlog-configuration\n"
51546 " (max-clients 1000)))\n"
51547 msgstr ""
51548
51549 #. type: deftypevr
51550 #: guix-git/doc/guix.texi:28752
51551 #, no-wrap
51552 msgid "{@code{virtlog-configuration} parameter} integer log-level"
51553 msgstr ""
51554
51555 #. type: deftypevr
51556 #: guix-git/doc/guix.texi:28759
51557 #, no-wrap
51558 msgid "{@code{virtlog-configuration} parameter} string log-filters"
51559 msgstr ""
51560
51561 #. type: deftypevr
51562 #: guix-git/doc/guix.texi:28764
51563 msgid "A filter allows to select a different logging level for a given category of logs The format for a filter is one of:"
51564 msgstr ""
51565
51566 #. type: deftypevr
51567 #: guix-git/doc/guix.texi:28781
51568 msgid "where @code{name} is a string which is matched against the category given in the @code{VIR_LOG_INIT()} at the top of each libvirt source file, e.g., \"remote\", \"qemu\", or \"util.json\" (the name in the filter can be a substring of the full category name, in order to match multiple similar categories), the optional \"+\" prefix tells libvirt to log stack trace for each message matching name, and @code{x} is the minimal level where matching messages should be logged:"
51569 msgstr ""
51570
51571 #. type: deftypevr
51572 #: guix-git/doc/guix.texi:28804
51573 #, no-wrap
51574 msgid "{@code{virtlog-configuration} parameter} string log-outputs"
51575 msgstr ""
51576
51577 #. type: deftypevr
51578 #: guix-git/doc/guix.texi:28809
51579 msgid "An output is one of the places to save logging information The format for an output can be:"
51580 msgstr ""
51581
51582 #. type: deftypevr
51583 #: guix-git/doc/guix.texi:28849
51584 #, no-wrap
51585 msgid "{@code{virtlog-configuration} parameter} integer max-clients"
51586 msgstr ""
51587
51588 #. type: deftypevr
51589 #: guix-git/doc/guix.texi:28854
51590 msgid "Defaults to @samp{1024}."
51591 msgstr ""
51592
51593 #. type: deftypevr
51594 #: guix-git/doc/guix.texi:28857
51595 #, no-wrap
51596 msgid "{@code{virtlog-configuration} parameter} integer max-size"
51597 msgstr ""
51598
51599 #. type: deftypevr
51600 #: guix-git/doc/guix.texi:28859
51601 msgid "Maximum file size before rolling over."
51602 msgstr ""
51603
51604 #. type: deftypevr
51605 #: guix-git/doc/guix.texi:28861
51606 msgid "Defaults to @samp{2MB}"
51607 msgstr ""
51608
51609 #. type: deftypevr
51610 #: guix-git/doc/guix.texi:28864
51611 #, no-wrap
51612 msgid "{@code{virtlog-configuration} parameter} integer max-backups"
51613 msgstr ""
51614
51615 #. type: deftypevr
51616 #: guix-git/doc/guix.texi:28866
51617 msgid "Maximum number of backup files to keep."
51618 msgstr ""
51619
51620 #. type: deftypevr
51621 #: guix-git/doc/guix.texi:28868
51622 msgid "Defaults to @samp{3}"
51623 msgstr ""
51624
51625 #. type: anchor{#1}
51626 #: guix-git/doc/guix.texi:28872
51627 msgid "transparent-emulation-qemu"
51628 msgstr ""
51629
51630 #. type: subsubheading
51631 #: guix-git/doc/guix.texi:28872
51632 #, no-wrap
51633 msgid "Transparent Emulation with QEMU"
51634 msgstr ""
51635
51636 #. type: cindex
51637 #: guix-git/doc/guix.texi:28874
51638 #, no-wrap
51639 msgid "emulation"
51640 msgstr ""
51641
51642 #. type: code{#1}
51643 #: guix-git/doc/guix.texi:28875
51644 #, no-wrap
51645 msgid "binfmt_misc"
51646 msgstr ""
51647
51648 #. type: Plain text
51649 #: guix-git/doc/guix.texi:28883
51650 msgid "@code{qemu-binfmt-service-type} provides support for transparent emulation of program binaries built for different architectures---e.g., it allows you to transparently execute an ARMv7 program on an x86_64 machine. It achieves this by combining the @uref{https://www.qemu.org, QEMU} emulator and the @code{binfmt_misc} feature of the kernel Linux. This feature only allows you to emulate GNU/Linux on a different architecture, but see below for GNU/Hurd support."
51651 msgstr ""
51652
51653 #. type: defvr
51654 #: guix-git/doc/guix.texi:28884
51655 #, no-wrap
51656 msgid "{Scheme Variable} qemu-binfmt-service-type"
51657 msgstr ""
51658
51659 #. type: defvr
51660 #: guix-git/doc/guix.texi:28889
51661 msgid "This is the type of the QEMU/binfmt service for transparent emulation. Its value must be a @code{qemu-binfmt-configuration} object, which specifies the QEMU package to use as well as the architecture we want to emulated:"
51662 msgstr ""
51663
51664 #. type: lisp
51665 #: guix-git/doc/guix.texi:28894
51666 #, no-wrap
51667 msgid ""
51668 "(service qemu-binfmt-service-type\n"
51669 " (qemu-binfmt-configuration\n"
51670 " (platforms (lookup-qemu-platforms \"arm\" \"aarch64\"))))\n"
51671 msgstr ""
51672
51673 #. type: defvr
51674 #: guix-git/doc/guix.texi:28900
51675 msgid "In this example, we enable transparent emulation for the ARM and aarch64 platforms. Running @code{herd stop qemu-binfmt} turns it off, and running @code{herd start qemu-binfmt} turns it back on (@pxref{Invoking herd, the @command{herd} command,, shepherd, The GNU Shepherd Manual})."
51676 msgstr ""
51677
51678 #. type: deftp
51679 #: guix-git/doc/guix.texi:28902
51680 #, no-wrap
51681 msgid "{Data Type} qemu-binfmt-configuration"
51682 msgstr ""
51683
51684 #. type: deftp
51685 #: guix-git/doc/guix.texi:28904
51686 msgid "This is the configuration for the @code{qemu-binfmt} service."
51687 msgstr ""
51688
51689 #. type: item
51690 #: guix-git/doc/guix.texi:28906
51691 #, no-wrap
51692 msgid "@code{platforms} (default: @code{'()})"
51693 msgstr ""
51694
51695 #. type: table
51696 #: guix-git/doc/guix.texi:28909
51697 msgid "The list of emulated QEMU platforms. Each item must be a @dfn{platform object} as returned by @code{lookup-qemu-platforms} (see below)."
51698 msgstr ""
51699
51700 #. type: table
51701 #: guix-git/doc/guix.texi:28912
51702 msgid "For example, let's suppose you're on an x86_64 machine and you have this service:"
51703 msgstr ""
51704
51705 #. type: lisp
51706 #: guix-git/doc/guix.texi:28917
51707 #, no-wrap
51708 msgid ""
51709 "(service qemu-binfmt-service-type\n"
51710 " (qemu-binfmt-configuration\n"
51711 " (platforms (lookup-qemu-platforms \"arm\"))))\n"
51712 msgstr ""
51713
51714 #. type: table
51715 #: guix-git/doc/guix.texi:28920
51716 msgid "You can run:"
51717 msgstr ""
51718
51719 #. type: example
51720 #: guix-git/doc/guix.texi:28923
51721 #, no-wrap
51722 msgid "guix build -s armhf-linux inkscape\n"
51723 msgstr ""
51724
51725 #. type: table
51726 #: guix-git/doc/guix.texi:28930
51727 msgid "and it will build Inkscape for ARMv7 @emph{as if it were a native build}, transparently using QEMU to emulate the ARMv7 CPU@. Pretty handy if you'd like to test a package build for an architecture you don't have access to!"
51728 msgstr ""
51729
51730 #. type: item
51731 #: guix-git/doc/guix.texi:28931
51732 #, no-wrap
51733 msgid "@code{qemu} (default: @code{qemu})"
51734 msgstr ""
51735
51736 #. type: table
51737 #: guix-git/doc/guix.texi:28933 guix-git/doc/guix.texi:29027
51738 msgid "The QEMU package to use."
51739 msgstr ""
51740
51741 #. type: deffn
51742 #: guix-git/doc/guix.texi:28936
51743 #, no-wrap
51744 msgid "{Scheme Procedure} lookup-qemu-platforms @var{platforms}@dots{}"
51745 msgstr ""
51746
51747 #. type: deffn
51748 #: guix-git/doc/guix.texi:28941
51749 msgid "Return the list of QEMU platform objects corresponding to @var{platforms}@dots{}. @var{platforms} must be a list of strings corresponding to platform names, such as @code{\"arm\"}, @code{\"sparc\"}, @code{\"mips64el\"}, and so on."
51750 msgstr ""
51751
51752 #. type: deffn
51753 #: guix-git/doc/guix.texi:28943
51754 #, no-wrap
51755 msgid "{Scheme Procedure} qemu-platform? @var{obj}"
51756 msgstr ""
51757
51758 #. type: deffn
51759 #: guix-git/doc/guix.texi:28945
51760 msgid "Return true if @var{obj} is a platform object."
51761 msgstr ""
51762
51763 #. type: deffn
51764 #: guix-git/doc/guix.texi:28947
51765 #, no-wrap
51766 msgid "{Scheme Procedure} qemu-platform-name @var{platform}"
51767 msgstr ""
51768
51769 #. type: deffn
51770 #: guix-git/doc/guix.texi:28949
51771 msgid "Return the name of @var{platform}---a string such as @code{\"arm\"}."
51772 msgstr ""
51773
51774 #. type: subsubheading
51775 #: guix-git/doc/guix.texi:28952
51776 #, no-wrap
51777 msgid "The Hurd in a Virtual Machine"
51778 msgstr ""
51779
51780 #. type: cindex
51781 #: guix-git/doc/guix.texi:28955
51782 #, no-wrap
51783 msgid "the Hurd"
51784 msgstr ""
51785
51786 #. type: cindex
51787 #: guix-git/doc/guix.texi:28956
51788 #, no-wrap
51789 msgid "childhurd"
51790 msgstr ""
51791
51792 #. type: Plain text
51793 #: guix-git/doc/guix.texi:28964
51794 msgid "Service @code{hurd-vm} provides support for running GNU/Hurd in a virtual machine (VM), a so-called @dfn{childhurd}. This service is meant to be used on GNU/Linux and the given GNU/Hurd operating system configuration is cross-compiled. The virtual machine is a Shepherd service that can be referred to by the names @code{hurd-vm} and @code{childhurd} and be controlled with commands such as:"
51795 msgstr ""
51796
51797 #. type: example
51798 #: guix-git/doc/guix.texi:28968
51799 #, no-wrap
51800 msgid ""
51801 "herd start hurd-vm\n"
51802 "herd stop childhurd\n"
51803 msgstr ""
51804
51805 #. type: Plain text
51806 #: guix-git/doc/guix.texi:28972
51807 msgid "When the service is running, you can view its console by connecting to it with a VNC client, for example with:"
51808 msgstr ""
51809
51810 #. type: example
51811 #: guix-git/doc/guix.texi:28976
51812 #, no-wrap
51813 msgid ""
51814 "guix environment --ad-hoc tigervnc-client -- \\\n"
51815 " vncviewer localhost:5900\n"
51816 msgstr ""
51817
51818 #. type: Plain text
51819 #: guix-git/doc/guix.texi:28982
51820 msgid "The default configuration (see @code{hurd-vm-configuration} below) spawns a secure shell (SSH) server in your GNU/Hurd system, which QEMU (the virtual machine emulator) redirects to port 10222 on the host. Thus, you can connect over SSH to the childhurd with:"
51821 msgstr ""
51822
51823 #. type: example
51824 #: guix-git/doc/guix.texi:28985
51825 #, no-wrap
51826 msgid "ssh root@@localhost -p 10022\n"
51827 msgstr ""
51828
51829 #. type: Plain text
51830 #: guix-git/doc/guix.texi:28994
51831 msgid "The childhurd is volatile and stateless: it starts with a fresh root file system every time you restart it. By default though, all the files under @file{/etc/childhurd} on the host are copied as is to the root file system of the childhurd when it boots. This allows you to initialize ``secrets'' inside the VM: SSH host keys, authorized substitute keys, and so on---see the explanation of @code{secret-root} below."
51832 msgstr ""
51833
51834 #. type: defvr
51835 #: guix-git/doc/guix.texi:28995
51836 #, no-wrap
51837 msgid "{Scheme Variable} hurd-vm-service-type"
51838 msgstr ""
51839
51840 #. type: defvr
51841 #: guix-git/doc/guix.texi:29001
51842 msgid "This is the type of the Hurd in a Virtual Machine service. Its value must be a @code{hurd-vm-configuration} object, which specifies the operating system (@pxref{operating-system Reference}) and the disk size for the Hurd Virtual Machine, the QEMU package to use as well as the options for running it."
51843 msgstr ""
51844
51845 #. type: lisp
51846 #: guix-git/doc/guix.texi:29009
51847 #, no-wrap
51848 msgid ""
51849 "(service hurd-vm-service-type\n"
51850 " (hurd-vm-configuration\n"
51851 " (disk-size (* 5000 (expt 2 20))) ;5G\n"
51852 " (memory-size 1024))) ;1024MiB\n"
51853 msgstr ""
51854
51855 #. type: defvr
51856 #: guix-git/doc/guix.texi:29013
51857 msgid "would create a disk image big enough to build GNU@tie{}Hello, with some extra memory."
51858 msgstr ""
51859
51860 #. type: deftp
51861 #: guix-git/doc/guix.texi:29015
51862 #, no-wrap
51863 msgid "{Data Type} hurd-vm-configuration"
51864 msgstr ""
51865
51866 #. type: deftp
51867 #: guix-git/doc/guix.texi:29018
51868 msgid "The data type representing the configuration for @code{hurd-vm-service-type}."
51869 msgstr ""
51870
51871 #. type: item
51872 #: guix-git/doc/guix.texi:29020
51873 #, no-wrap
51874 msgid "@code{os} (default: @var{%hurd-vm-operating-system})"
51875 msgstr ""
51876
51877 #. type: table
51878 #: guix-git/doc/guix.texi:29024
51879 msgid "The operating system to instantiate. This default is bare-bones with a permissive OpenSSH secure shell daemon listening on port 2222 (@pxref{Networking Services, @code{openssh-service-type}})."
51880 msgstr ""
51881
51882 #. type: item
51883 #: guix-git/doc/guix.texi:29025
51884 #, no-wrap
51885 msgid "@code{qemu} (default: @code{qemu-minimal})"
51886 msgstr ""
51887
51888 #. type: item
51889 #: guix-git/doc/guix.texi:29028
51890 #, no-wrap
51891 msgid "@code{image} (default: @var{hurd-vm-disk-image})"
51892 msgstr ""
51893
51894 #. type: table
51895 #: guix-git/doc/guix.texi:29031
51896 msgid "The procedure used to build the disk-image built from this configuration."
51897 msgstr ""
51898
51899 #. type: item
51900 #: guix-git/doc/guix.texi:29032
51901 #, no-wrap
51902 msgid "@code{disk-size} (default: @code{'guess})"
51903 msgstr ""
51904
51905 #. type: table
51906 #: guix-git/doc/guix.texi:29034
51907 msgid "The size of the disk image."
51908 msgstr ""
51909
51910 #. type: item
51911 #: guix-git/doc/guix.texi:29035
51912 #, no-wrap
51913 msgid "@code{memory-size} (default: @code{512})"
51914 msgstr ""
51915
51916 #. type: table
51917 #: guix-git/doc/guix.texi:29037
51918 msgid "The memory size of the Virtual Machine in mebibytes."
51919 msgstr ""
51920
51921 #. type: item
51922 #: guix-git/doc/guix.texi:29038
51923 #, no-wrap
51924 msgid "@code{options} (default: @code{'(\"--snapshot\")})"
51925 msgstr ""
51926
51927 #. type: table
51928 #: guix-git/doc/guix.texi:29040
51929 msgid "The extra options for running QEMU."
51930 msgstr ""
51931
51932 #. type: table
51933 #: guix-git/doc/guix.texi:29045
51934 msgid "If set, a non-zero positive integer used to parameterize Childhurd instances. It is appended to the service's name, e.g. @code{childhurd1}."
51935 msgstr ""
51936
51937 #. type: item
51938 #: guix-git/doc/guix.texi:29046
51939 #, no-wrap
51940 msgid "@code{net-options} (default: @var{hurd-vm-net-options})"
51941 msgstr ""
51942
51943 #. type: table
51944 #: guix-git/doc/guix.texi:29048
51945 msgid "The procedure used to produce the list of QEMU networking options."
51946 msgstr ""
51947
51948 #. type: table
51949 #: guix-git/doc/guix.texi:29050
51950 msgid "By default, it produces"
51951 msgstr ""
51952
51953 #. type: lisp
51954 #: guix-git/doc/guix.texi:29057
51955 #, no-wrap
51956 msgid ""
51957 "'(\"--device\" \"rtl8139,netdev=net0\"\n"
51958 " \"--netdev\" \"user,id=net0\\\n"
51959 " ,hostfwd=tcp:127.0.0.1:@var{secrets-port}-:1004\\\n"
51960 " ,hostfwd=tcp:127.0.0.1:@var{ssh-port}-:2222\\\n"
51961 " ,hostfwd=tcp:127.0.0.1:@var{vnc-port}-:5900\")\n"
51962 msgstr ""
51963
51964 #. type: table
51965 #: guix-git/doc/guix.texi:29060
51966 msgid "with forwarded ports:"
51967 msgstr ""
51968
51969 #. type: example
51970 #: guix-git/doc/guix.texi:29065
51971 #, no-wrap
51972 msgid ""
51973 "@var{secrets-port}: @code{(+ 11004 (* 1000 @var{ID}))}\n"
51974 "@var{ssh-port}: @code{(+ 10022 (* 1000 @var{ID}))}\n"
51975 "@var{vnc-port}: @code{(+ 15900 (* 1000 @var{ID}))}\n"
51976 msgstr ""
51977
51978 #. type: item
51979 #: guix-git/doc/guix.texi:29067
51980 #, no-wrap
51981 msgid "@code{secret-root} (default: @file{/etc/childhurd})"
51982 msgstr ""
51983
51984 #. type: table
51985 #: guix-git/doc/guix.texi:29072
51986 msgid "The root directory with out-of-band secrets to be installed into the childhurd once it runs. Childhurds are volatile which means that on every startup, secrets such as the SSH host keys and Guix signing key are recreated."
51987 msgstr ""
51988
51989 #. type: table
51990 #: guix-git/doc/guix.texi:29076
51991 msgid "If the @file{/etc/childhurd} directory does not exist, the @code{secret-service} running in the Childhurd will be sent an empty list of secrets."
51992 msgstr ""
51993
51994 #. type: table
51995 #: guix-git/doc/guix.texi:29079
51996 msgid "By default, the service automatically populates @file{/etc/childhurd} with the following non-volatile secrets, unless they already exist:"
51997 msgstr ""
51998
51999 #. type: example
52000 #: guix-git/doc/guix.texi:29088
52001 #, no-wrap
52002 msgid ""
52003 "/etc/childhurd/etc/guix/acl\n"
52004 "/etc/childhurd/etc/guix/signing-key.pub\n"
52005 "/etc/childhurd/etc/guix/signing-key.sec\n"
52006 "/etc/childhurd/etc/ssh/ssh_host_ed25519_key\n"
52007 "/etc/childhurd/etc/ssh/ssh_host_ecdsa_key\n"
52008 "/etc/childhurd/etc/ssh/ssh_host_ed25519_key.pub\n"
52009 "/etc/childhurd/etc/ssh/ssh_host_ecdsa_key.pub\n"
52010 msgstr ""
52011
52012 #. type: table
52013 #: guix-git/doc/guix.texi:29092
52014 msgid "These files are automatically sent to the guest Hurd VM when it boots, including permissions."
52015 msgstr ""
52016
52017 #. type: cindex
52018 #: guix-git/doc/guix.texi:29093
52019 #, no-wrap
52020 msgid "childhurd, offloading"
52021 msgstr ""
52022
52023 #. type: cindex
52024 #: guix-git/doc/guix.texi:29094
52025 #, no-wrap
52026 msgid "Hurd, offloading"
52027 msgstr ""
52028
52029 #. type: table
52030 #: guix-git/doc/guix.texi:29098
52031 msgid "Having these files in place means that only a couple of things are missing to allow the host to offload @code{i586-gnu} builds to the childhurd:"
52032 msgstr ""
52033
52034 #. type: enumerate
52035 #: guix-git/doc/guix.texi:29103
52036 msgid "Authorizing the childhurd's key on the host so that the host accepts build results coming from the childhurd, which can be done like so:"
52037 msgstr ""
52038
52039 #. type: example
52040 #: guix-git/doc/guix.texi:29107
52041 #, no-wrap
52042 msgid ""
52043 "guix archive --authorize < \\\n"
52044 " /etc/childhurd/etc/guix/signing-key.pub\n"
52045 msgstr ""
52046
52047 #. type: enumerate
52048 #: guix-git/doc/guix.texi:29112
52049 msgid "Adding the childhurd to @file{/etc/guix/machines.scm} (@pxref{Daemon Offload Setup})."
52050 msgstr ""
52051
52052 #. type: table
52053 #: guix-git/doc/guix.texi:29116
52054 msgid "We're working towards making that happen automatically---get in touch with us at @email{guix-devel@@gnu.org} to discuss it!"
52055 msgstr ""
52056
52057 #. type: Plain text
52058 #: guix-git/doc/guix.texi:29123
52059 msgid "Note that by default the VM image is volatile, i.e., once stopped the contents are lost. If you want a stateful image instead, override the configuration's @code{image} and @code{options} without the @code{--snapshot} flag using something along these lines:"
52060 msgstr ""
52061
52062 #. type: lisp
52063 #: guix-git/doc/guix.texi:29129
52064 #, no-wrap
52065 msgid ""
52066 "(service hurd-vm-service-type\n"
52067 " (hurd-vm-configuration\n"
52068 " (image (const \"/out/of/store/writable/hurd.img\"))\n"
52069 " (options '())))\n"
52070 msgstr ""
52071
52072 #. type: subsubheading
52073 #: guix-git/doc/guix.texi:29131
52074 #, no-wrap
52075 msgid "Ganeti"
52076 msgstr ""
52077
52078 #. type: cindex
52079 #: guix-git/doc/guix.texi:29133
52080 #, no-wrap
52081 msgid "ganeti"
52082 msgstr ""
52083
52084 #. type: quotation
52085 #: guix-git/doc/guix.texi:29140
52086 msgid "This service is considered experimental. Configuration options may be changed in a backwards-incompatible manner, and not all features have been thorougly tested. Users of this service are encouraged to share their experience at @email{guix-devel@@gnu.org}."
52087 msgstr ""
52088
52089 #. type: Plain text
52090 #: guix-git/doc/guix.texi:29150
52091 msgid "Ganeti is a virtual machine management system. It is designed to keep virtual machines running on a cluster of servers even in the event of hardware failures, and to make maintenance and recovery tasks easy. It consists of multiple services which are described later in this section. In addition to the Ganeti service, you will need the OpenSSH service (@pxref{Networking Services, @code{openssh-service-type}}), and update the @file{/etc/hosts} file (@pxref{operating-system Reference, @code{hosts-file}}) with the cluster name and address (or use a DNS server)."
52092 msgstr ""
52093
52094 #. type: Plain text
52095 #: guix-git/doc/guix.texi:29155
52096 msgid "All nodes participating in a Ganeti cluster should have the same Ganeti and @file{/etc/hosts} configuration. Here is an example configuration for a Ganeti cluster node that supports multiple storage backends, and installs the @code{debootstrap} and @code{guix} @dfn{OS providers}:"
52097 msgstr ""
52098
52099 #. type: lisp
52100 #: guix-git/doc/guix.texi:29165
52101 #, no-wrap
52102 msgid ""
52103 "(use-package-modules virtualization)\n"
52104 "(use-service-modules base ganeti networking ssh)\n"
52105 "(operating-system\n"
52106 " ;; @dots{}\n"
52107 " (host-name \"node1\")\n"
52108 " (hosts-file (plain-file \"hosts\" (format #f \"\n"
52109 "127.0.0.1 localhost\n"
52110 "::1 localhost\n"
52111 "\n"
52112 msgstr ""
52113
52114 #. type: lisp
52115 #: guix-git/doc/guix.texi:29170
52116 #, no-wrap
52117 msgid ""
52118 "192.168.1.200 ganeti.example.com\n"
52119 "192.168.1.201 node1.example.com node1\n"
52120 "192.168.1.202 node2.example.com node2\n"
52121 "\")))\n"
52122 "\n"
52123 msgstr ""
52124
52125 #. type: lisp
52126 #: guix-git/doc/guix.texi:29184
52127 #, no-wrap
52128 msgid ""
52129 " ;; Install QEMU so we can use KVM-based instances, and LVM, DRBD and Ceph\n"
52130 " ;; in order to use the \"plain\", \"drbd\" and \"rbd\" storage backends.\n"
52131 " (packages (append (map specification->package\n"
52132 " '(\"qemu\" \"lvm2\" \"drbd-utils\" \"ceph\"\n"
52133 " ;; Add the debootstrap and guix OS providers.\n"
52134 " \"ganeti-instance-guix\" \"ganeti-instance-debootstrap\"))\n"
52135 " %base-packages))\n"
52136 " (services\n"
52137 " (append (list (static-networking-service \"eth0\" \"192.168.1.201\"\n"
52138 " #:netmask \"255.255.255.0\"\n"
52139 " #:gateway \"192.168.1.254\"\n"
52140 " #:name-servers '(\"192.168.1.252\"\n"
52141 " \"192.168.1.253\"))\n"
52142 "\n"
52143 msgstr ""
52144
52145 #. type: lisp
52146 #: guix-git/doc/guix.texi:29189
52147 #, no-wrap
52148 msgid ""
52149 " ;; Ganeti uses SSH to communicate between nodes.\n"
52150 " (service openssh-service-type\n"
52151 " (openssh-configuration\n"
52152 " (permit-root-login 'without-password)))\n"
52153 "\n"
52154 msgstr ""
52155
52156 #. type: lisp
52157 #: guix-git/doc/guix.texi:29199
52158 #, no-wrap
52159 msgid ""
52160 " (service ganeti-service-type\n"
52161 " (ganeti-configuration\n"
52162 " ;; This list specifies allowed file system paths\n"
52163 " ;; for storing virtual machine images.\n"
52164 " (file-storage-paths '(\"/srv/ganeti/file-storage\"))\n"
52165 " ;; This variable configures a single \"variant\" for\n"
52166 " ;; both Debootstrap and Guix that works with KVM.\n"
52167 " (os %default-ganeti-os))))\n"
52168 " %base-services)))\n"
52169 msgstr ""
52170
52171 #. type: Plain text
52172 #: guix-git/doc/guix.texi:29207
52173 msgid "Users are advised to read the @url{http://docs.ganeti.org/ganeti/master/html/admin.html,Ganeti administrators guide} to learn about the various cluster options and day-to-day operations. There is also a @url{https://guix.gnu.org/blog/2020/running-a-ganeti-cluster-on-guix/,blog post} describing how to configure and initialize a small cluster."
52174 msgstr ""
52175
52176 #. type: defvr
52177 #: guix-git/doc/guix.texi:29208
52178 #, no-wrap
52179 msgid "{Scheme Variable} ganeti-service-type"
52180 msgstr ""
52181
52182 #. type: defvr
52183 #: guix-git/doc/guix.texi:29211
52184 msgid "This is a service type that includes all the various services that Ganeti nodes should run."
52185 msgstr ""
52186
52187 #. type: defvr
52188 #: guix-git/doc/guix.texi:29216
52189 msgid "Its value is a @code{ganeti-configuration} object that defines the package to use for CLI operations, as well as configuration for the various daemons. Allowed file storage paths and available guest operating systems are also configured through this data type."
52190 msgstr ""
52191
52192 #. type: deftp
52193 #: guix-git/doc/guix.texi:29218
52194 #, no-wrap
52195 msgid "{Data Type} ganeti-configuration"
52196 msgstr ""
52197
52198 #. type: deftp
52199 #: guix-git/doc/guix.texi:29220
52200 msgid "The @code{ganeti} service takes the following configuration options:"
52201 msgstr ""
52202
52203 #. type: item
52204 #: guix-git/doc/guix.texi:29222 guix-git/doc/guix.texi:29450
52205 #: guix-git/doc/guix.texi:29500 guix-git/doc/guix.texi:29530
52206 #: guix-git/doc/guix.texi:29557 guix-git/doc/guix.texi:29589
52207 #: guix-git/doc/guix.texi:29642 guix-git/doc/guix.texi:29662
52208 #: guix-git/doc/guix.texi:29688 guix-git/doc/guix.texi:29721
52209 #: guix-git/doc/guix.texi:29761
52210 #, no-wrap
52211 msgid "@code{ganeti} (default: @code{ganeti})"
52212 msgstr ""
52213
52214 #. type: table
52215 #: guix-git/doc/guix.texi:29227
52216 msgid "The @code{ganeti} package to use. It will be installed to the system profile and make @command{gnt-cluster}, @command{gnt-instance}, etc available. Note that the value specified here does not affect the other services as each refer to a specific @code{ganeti} package (see below)."
52217 msgstr ""
52218
52219 #. type: item
52220 #: guix-git/doc/guix.texi:29228
52221 #, no-wrap
52222 msgid "@code{noded-configuration} (default: @code{(ganeti-noded-configuration)})"
52223 msgstr ""
52224
52225 #. type: itemx
52226 #: guix-git/doc/guix.texi:29229
52227 #, no-wrap
52228 msgid "@code{confd-configuration} (default: @code{(ganeti-confd-configuration)})"
52229 msgstr ""
52230
52231 #. type: itemx
52232 #: guix-git/doc/guix.texi:29230
52233 #, no-wrap
52234 msgid "@code{wconfd-configuration} (default: @code{(ganeti-wconfd-configuration)})"
52235 msgstr ""
52236
52237 #. type: itemx
52238 #: guix-git/doc/guix.texi:29231
52239 #, no-wrap
52240 msgid "@code{luxid-configuration} (default: @code{(ganeti-luxid-configuration)})"
52241 msgstr ""
52242
52243 #. type: itemx
52244 #: guix-git/doc/guix.texi:29232
52245 #, no-wrap
52246 msgid "@code{rapi-configuration} (default: @code{(ganeti-rapi-configuration)})"
52247 msgstr ""
52248
52249 #. type: itemx
52250 #: guix-git/doc/guix.texi:29233
52251 #, no-wrap
52252 msgid "@code{kvmd-configuration} (default: @code{(ganeti-kvmd-configuration)})"
52253 msgstr ""
52254
52255 #. type: itemx
52256 #: guix-git/doc/guix.texi:29234
52257 #, no-wrap
52258 msgid "@code{mond-configuration} (default: @code{(ganeti-mond-configuration)})"
52259 msgstr ""
52260
52261 #. type: itemx
52262 #: guix-git/doc/guix.texi:29235
52263 #, no-wrap
52264 msgid "@code{metad-configuration} (default: @code{(ganeti-metad-configuration)})"
52265 msgstr ""
52266
52267 #. type: itemx
52268 #: guix-git/doc/guix.texi:29236
52269 #, no-wrap
52270 msgid "@code{watcher-configuration} (default: @code{(ganeti-watcher-configuration)})"
52271 msgstr ""
52272
52273 #. type: itemx
52274 #: guix-git/doc/guix.texi:29237
52275 #, no-wrap
52276 msgid "@code{cleaner-configuration} (default: @code{(ganeti-cleaner-configuration)})"
52277 msgstr ""
52278
52279 #. type: table
52280 #: guix-git/doc/guix.texi:29242
52281 msgid "These options control the various daemons and cron jobs that are distributed with Ganeti. The possible values for these are described in detail below. To override a setting, you must use the configuration type for that service:"
52282 msgstr ""
52283
52284 #. type: lisp
52285 #: guix-git/doc/guix.texi:29252
52286 #, no-wrap
52287 msgid ""
52288 "(service ganeti-service-type\n"
52289 " (ganeti-configuration\n"
52290 " (rapi-configuration\n"
52291 " (ganeti-rapi-configuration\n"
52292 " (interface \"eth1\"))))\n"
52293 " (watcher-configuration\n"
52294 " (ganeti-watcher-configuration\n"
52295 " (rapi-ip \"10.0.0.1\"))))\n"
52296 msgstr ""
52297
52298 #. type: item
52299 #: guix-git/doc/guix.texi:29254
52300 #, no-wrap
52301 msgid "@code{file-storage-paths} (default: @code{'()})"
52302 msgstr ""
52303
52304 #. type: table
52305 #: guix-git/doc/guix.texi:29256
52306 msgid "List of allowed directories for file storage backend."
52307 msgstr ""
52308
52309 #. type: item
52310 #: guix-git/doc/guix.texi:29257
52311 #, no-wrap
52312 msgid "@code{os} (default: @code{%default-ganeti-os})"
52313 msgstr ""
52314
52315 #. type: table
52316 #: guix-git/doc/guix.texi:29259
52317 msgid "List of @code{<ganeti-os>} records."
52318 msgstr ""
52319
52320 #. type: deftp
52321 #: guix-git/doc/guix.texi:29263
52322 msgid "In essence @code{ganeti-service-type} is shorthand for declaring each service individually:"
52323 msgstr ""
52324
52325 #. type: lisp
52326 #: guix-git/doc/guix.texi:29274
52327 #, no-wrap
52328 msgid ""
52329 "(service ganeti-noded-service-type)\n"
52330 "(service ganeti-confd-service-type)\n"
52331 "(service ganeti-wconfd-service-type)\n"
52332 "(service ganeti-luxid-service-type)\n"
52333 "(service ganeti-kvmd-service-type)\n"
52334 "(service ganeti-mond-service-type)\n"
52335 "(service ganeti-metad-service-type)\n"
52336 "(service ganeti-watcher-service-type)\n"
52337 "(service ganeti-cleaner-service-type)\n"
52338 msgstr ""
52339
52340 #. type: deftp
52341 #: guix-git/doc/guix.texi:29278
52342 msgid "Plus a service extension for @code{etc-service-type} that configures the file storage backend and OS variants."
52343 msgstr ""
52344
52345 #. type: deftp
52346 #: guix-git/doc/guix.texi:29281
52347 #, no-wrap
52348 msgid "{Data Type} ganeti-os"
52349 msgstr ""
52350
52351 #. type: deftp
52352 #: guix-git/doc/guix.texi:29284
52353 msgid "This data type is suitable for passing to the @code{os} parameter of @code{ganeti-configuration}. It takes the following parameters:"
52354 msgstr ""
52355
52356 #. type: table
52357 #: guix-git/doc/guix.texi:29290
52358 msgid "The name for this OS provider. It is only used to specify where the configuration ends up. Setting it to ``debootstrap'' will create @file{/etc/ganeti/instance-debootstrap}."
52359 msgstr ""
52360
52361 #. type: code{#1}
52362 #: guix-git/doc/guix.texi:29291
52363 #, no-wrap
52364 msgid "extension"
52365 msgstr ""
52366
52367 #. type: table
52368 #: guix-git/doc/guix.texi:29294
52369 msgid "The file extension for variants of this OS type. For example @file{.conf} or @file{.scm}."
52370 msgstr ""
52371
52372 #. type: item
52373 #: guix-git/doc/guix.texi:29295
52374 #, no-wrap
52375 msgid "@code{variants} (default: @code{'()})"
52376 msgstr ""
52377
52378 #. type: table
52379 #: guix-git/doc/guix.texi:29297
52380 msgid "List of @code{ganeti-os-variant} objects for this OS."
52381 msgstr ""
52382
52383 #. type: deftp
52384 #: guix-git/doc/guix.texi:29301
52385 #, no-wrap
52386 msgid "{Data Type} ganeti-os-variant"
52387 msgstr ""
52388
52389 #. type: deftp
52390 #: guix-git/doc/guix.texi:29304
52391 msgid "This is the data type for a Ganeti OS variant. It takes the following parameters:"
52392 msgstr ""
52393
52394 #. type: table
52395 #: guix-git/doc/guix.texi:29308
52396 msgid "The name of this variant."
52397 msgstr ""
52398
52399 #. type: code{#1}
52400 #: guix-git/doc/guix.texi:29309
52401 #, no-wrap
52402 msgid "configuration"
52403 msgstr ""
52404
52405 #. type: table
52406 #: guix-git/doc/guix.texi:29311
52407 msgid "A configuration file for this variant."
52408 msgstr ""
52409
52410 #. type: defvr
52411 #: guix-git/doc/guix.texi:29314
52412 #, no-wrap
52413 msgid "{Scheme Variable} %default-debootstrap-hooks"
52414 msgstr ""
52415
52416 #. type: defvr
52417 #: guix-git/doc/guix.texi:29316
52418 msgid "This variable contains hooks to configure networking and the GRUB bootloader."
52419 msgstr ""
52420
52421 #. type: defvr
52422 #: guix-git/doc/guix.texi:29318
52423 #, no-wrap
52424 msgid "{Scheme Variable} %default-debootstrap-extra-pkgs"
52425 msgstr ""
52426
52427 #. type: defvr
52428 #: guix-git/doc/guix.texi:29320
52429 msgid "This variable contains a list of packages suitable for a fully-virtualized guest."
52430 msgstr ""
52431
52432 #. type: deftp
52433 #: guix-git/doc/guix.texi:29322
52434 #, no-wrap
52435 msgid "{Data Type} debootstrap-configuration"
52436 msgstr ""
52437
52438 #. type: deftp
52439 #: guix-git/doc/guix.texi:29325
52440 msgid "This data type creates configuration files suitable for the debootstrap OS provider."
52441 msgstr ""
52442
52443 #. type: item
52444 #: guix-git/doc/guix.texi:29327
52445 #, no-wrap
52446 msgid "@code{hooks} (default: @code{%default-debootstrap-hooks})"
52447 msgstr ""
52448
52449 #. type: table
52450 #: guix-git/doc/guix.texi:29331
52451 msgid "When not @code{#f}, this must be a G-expression that specifies a directory with scripts that will run when the OS is installed. It can also be a list of @code{(name . file-like)} pairs. For example:"
52452 msgstr ""
52453
52454 #. type: lisp
52455 #: guix-git/doc/guix.texi:29334
52456 #, no-wrap
52457 msgid "`((99-hello-world . ,(plain-file \"#!/bin/sh\\necho Hello, World\")))\n"
52458 msgstr ""
52459
52460 #. type: table
52461 #: guix-git/doc/guix.texi:29339
52462 msgid "That will create a directory with one executable named @code{99-hello-world} and run it every time this variant is installed. If set to @code{#f}, hooks in @file{/etc/ganeti/instance-debootstrap/hooks} will be used, if any."
52463 msgstr ""
52464
52465 #. type: item
52466 #: guix-git/doc/guix.texi:29339
52467 #, no-wrap
52468 msgid "@code{proxy} (default: @code{#f})"
52469 msgstr ""
52470
52471 #. type: table
52472 #: guix-git/doc/guix.texi:29341
52473 msgid "Optional HTTP proxy to use."
52474 msgstr ""
52475
52476 #. type: item
52477 #: guix-git/doc/guix.texi:29341
52478 #, no-wrap
52479 msgid "@code{mirror} (default: @code{#f})"
52480 msgstr ""
52481
52482 #. type: table
52483 #: guix-git/doc/guix.texi:29344
52484 msgid "The Debian mirror. Typically something like @code{http://ftp.no.debian.org/debian}. The default varies depending on the distribution."
52485 msgstr ""
52486
52487 #. type: item
52488 #: guix-git/doc/guix.texi:29344
52489 #, no-wrap
52490 msgid "@code{arch} (default: @code{#f})"
52491 msgstr ""
52492
52493 #. type: table
52494 #: guix-git/doc/guix.texi:29347
52495 msgid "The dpkg architecture. Set to @code{armhf} to debootstrap an ARMv7 instance on an AArch64 host. Default is to use the current system architecture."
52496 msgstr ""
52497
52498 #. type: item
52499 #: guix-git/doc/guix.texi:29347
52500 #, no-wrap
52501 msgid "@code{suite} (default: @code{\"stable\"})"
52502 msgstr ""
52503
52504 #. type: table
52505 #: guix-git/doc/guix.texi:29350
52506 msgid "When set, this must be a Debian distribution ``suite'' such as @code{buster} or @code{focal}. If set to @code{#f}, the default for the OS provider is used."
52507 msgstr ""
52508
52509 #. type: item
52510 #: guix-git/doc/guix.texi:29350
52511 #, no-wrap
52512 msgid "@code{extra-pkgs} (default: @code{%default-debootstrap-extra-pkgs})"
52513 msgstr ""
52514
52515 #. type: table
52516 #: guix-git/doc/guix.texi:29353
52517 msgid "List of extra packages that will get installed by dpkg in addition to the minimal system."
52518 msgstr ""
52519
52520 #. type: item
52521 #: guix-git/doc/guix.texi:29353
52522 #, no-wrap
52523 msgid "@code{components} (default: @code{#f})"
52524 msgstr ""
52525
52526 #. type: table
52527 #: guix-git/doc/guix.texi:29356
52528 msgid "When set, must be a list of Debian repository ``components''. For example @code{'(\"main\" \"contrib\")}."
52529 msgstr ""
52530
52531 #. type: item
52532 #: guix-git/doc/guix.texi:29356
52533 #, no-wrap
52534 msgid "@code{generate-cache?} (default: @code{#t})"
52535 msgstr ""
52536
52537 #. type: table
52538 #: guix-git/doc/guix.texi:29358
52539 msgid "Whether to automatically cache the generated debootstrap archive."
52540 msgstr ""
52541
52542 #. type: item
52543 #: guix-git/doc/guix.texi:29358
52544 #, no-wrap
52545 msgid "@code{clean-cache} (default: @code{14})"
52546 msgstr ""
52547
52548 #. type: table
52549 #: guix-git/doc/guix.texi:29361
52550 msgid "Discard the cache after this amount of days. Use @code{#f} to never clear the cache."
52551 msgstr ""
52552
52553 #. type: item
52554 #: guix-git/doc/guix.texi:29361
52555 #, no-wrap
52556 msgid "@code{partition-style} (default: @code{'msdos})"
52557 msgstr ""
52558
52559 #. type: table
52560 #: guix-git/doc/guix.texi:29364
52561 msgid "The type of partition to create. When set, it must be one of @code{'msdos}, @code{'none} or a string."
52562 msgstr ""
52563
52564 #. type: item
52565 #: guix-git/doc/guix.texi:29364
52566 #, no-wrap
52567 msgid "@code{partition-alignment} (default: @code{2048})"
52568 msgstr ""
52569
52570 #. type: table
52571 #: guix-git/doc/guix.texi:29366
52572 msgid "Alignment of the partition in sectors."
52573 msgstr ""
52574
52575 #. type: deffn
52576 #: guix-git/doc/guix.texi:29369
52577 #, no-wrap
52578 msgid "{Scheme Procedure} debootstrap-variant @var{name} @var{configuration}"
52579 msgstr ""
52580
52581 #. type: deffn
52582 #: guix-git/doc/guix.texi:29372
52583 msgid "This is a helper procedure that creates a @code{ganeti-os-variant} record. It takes two parameters: a name and a @code{debootstrap-configuration} object."
52584 msgstr ""
52585
52586 #. type: deffn
52587 #: guix-git/doc/guix.texi:29374
52588 #, no-wrap
52589 msgid "{Scheme Procedure} debootstrap-os @var{variants}@dots{}"
52590 msgstr ""
52591
52592 #. type: deffn
52593 #: guix-git/doc/guix.texi:29377
52594 msgid "This is a helper procedure that creates a @code{ganeti-os} record. It takes a list of variants created with @code{debootstrap-variant}."
52595 msgstr ""
52596
52597 #. type: deffn
52598 #: guix-git/doc/guix.texi:29379
52599 #, no-wrap
52600 msgid "{Scheme Procedure} guix-variant @var{name} @var{configuration}"
52601 msgstr ""
52602
52603 #. type: deffn
52604 #: guix-git/doc/guix.texi:29384
52605 msgid "This is a helper procedure that creates a @code{ganeti-os-variant} record for use with the Guix OS provider. It takes a name and a G-expression that returns a ``file-like'' (@pxref{G-Expressions, file-like objects}) object containing a Guix System configuration."
52606 msgstr ""
52607
52608 #. type: deffn
52609 #: guix-git/doc/guix.texi:29386
52610 #, no-wrap
52611 msgid "{Scheme Procedure} guix-os @var{variants}@dots{}"
52612 msgstr ""
52613
52614 #. type: deffn
52615 #: guix-git/doc/guix.texi:29389
52616 msgid "This is a helper procedure that creates a @code{ganeti-os} record. It takes a list of variants produced by @code{guix-variant}."
52617 msgstr ""
52618
52619 #. type: defvr
52620 #: guix-git/doc/guix.texi:29391
52621 #, no-wrap
52622 msgid "{Scheme Variable} %default-debootstrap-variants"
52623 msgstr ""
52624
52625 #. type: defvr
52626 #: guix-git/doc/guix.texi:29395
52627 msgid "This is a convenience variable to make the debootstrap provider work ``out of the box'' without users having to declare variants manually. It contains a single debootstrap variant with the default configuration:"
52628 msgstr ""
52629
52630 #. type: lisp
52631 #: guix-git/doc/guix.texi:29400
52632 #, no-wrap
52633 msgid ""
52634 "(list (debootstrap-variant\n"
52635 " \"default\"\n"
52636 " (debootstrap-configuration)))\n"
52637 msgstr ""
52638
52639 #. type: defvr
52640 #: guix-git/doc/guix.texi:29403
52641 #, no-wrap
52642 msgid "{Scheme Variable} %default-guix-variants"
52643 msgstr ""
52644
52645 #. type: defvr
52646 #: guix-git/doc/guix.texi:29407
52647 msgid "This is a convenience variable to make the Guix OS provider work without additional configuration. It creates a virtual machine that has an SSH server, a serial console, and authorizes the Ganeti hosts SSH keys."
52648 msgstr ""
52649
52650 #. type: lisp
52651 #: guix-git/doc/guix.texi:29413
52652 #, no-wrap
52653 msgid ""
52654 "(list (guix-variant\n"
52655 " \"default\"\n"
52656 " (file-append ganeti-instance-guix\n"
52657 " \"/share/doc/ganeti-instance-guix/examples/dynamic.scm\")))\n"
52658 msgstr ""
52659
52660 #. type: Plain text
52661 #: guix-git/doc/guix.texi:29419
52662 msgid "Users can implement support for OS providers unbeknownst to Guix by extending the @code{ganeti-os} and @code{ganeti-os-variant} records appropriately. For example:"
52663 msgstr ""
52664
52665 #. type: lisp
52666 #: guix-git/doc/guix.texi:29428
52667 #, no-wrap
52668 msgid ""
52669 "(ganeti-os\n"
52670 " (name \"custom\")\n"
52671 " (extension \".conf\")\n"
52672 " (variants\n"
52673 " (list (ganeti-os-variant\n"
52674 " (name \"foo\")\n"
52675 " (configuration (plain-file \"bar\" \"this is fine\"))))))\n"
52676 msgstr ""
52677
52678 #. type: Plain text
52679 #: guix-git/doc/guix.texi:29433
52680 msgid "That creates @file{/etc/ganeti/instance-custom/variants/foo.conf} which points to a file in the store with contents @code{this is fine}. It also creates @file{/etc/ganeti/instance-custom/variants/variants.list} with contents @code{foo}."
52681 msgstr ""
52682
52683 #. type: Plain text
52684 #: guix-git/doc/guix.texi:29436
52685 msgid "Obviously this may not work for all OS providers out there. If you find the interface limiting, please reach out to @email{guix-devel@@gnu.org}."
52686 msgstr ""
52687
52688 #. type: Plain text
52689 #: guix-git/doc/guix.texi:29439
52690 msgid "The rest of this section documents the various services that are included by @code{ganeti-service-type}."
52691 msgstr ""
52692
52693 #. type: defvr
52694 #: guix-git/doc/guix.texi:29440
52695 #, no-wrap
52696 msgid "{Scheme Variable} ganeti-noded-service-type"
52697 msgstr ""
52698
52699 #. type: defvr
52700 #: guix-git/doc/guix.texi:29444
52701 msgid "@command{ganeti-noded} is the daemon responsible for node-specific functions within the Ganeti system. The value of this service must be a @code{ganeti-noded-configuration} object."
52702 msgstr ""
52703
52704 #. type: deftp
52705 #: guix-git/doc/guix.texi:29446
52706 #, no-wrap
52707 msgid "{Data Type} ganeti-noded-configuration"
52708 msgstr ""
52709
52710 #. type: deftp
52711 #: guix-git/doc/guix.texi:29448
52712 msgid "This is the configuration for the @code{ganeti-noded} service."
52713 msgstr ""
52714
52715 #. type: table
52716 #: guix-git/doc/guix.texi:29452 guix-git/doc/guix.texi:29502
52717 #: guix-git/doc/guix.texi:29532 guix-git/doc/guix.texi:29559
52718 #: guix-git/doc/guix.texi:29591 guix-git/doc/guix.texi:29644
52719 #: guix-git/doc/guix.texi:29664 guix-git/doc/guix.texi:29690
52720 #: guix-git/doc/guix.texi:29723
52721 msgid "The @code{ganeti} package to use for this service."
52722 msgstr ""
52723
52724 #. type: item
52725 #: guix-git/doc/guix.texi:29453
52726 #, no-wrap
52727 msgid "@code{port} (default: @code{1811})"
52728 msgstr ""
52729
52730 #. type: table
52731 #: guix-git/doc/guix.texi:29455
52732 msgid "The TCP port on which the node daemon listens for network requests."
52733 msgstr ""
52734
52735 #. type: item
52736 #: guix-git/doc/guix.texi:29456 guix-git/doc/guix.texi:29506
52737 #: guix-git/doc/guix.texi:29598 guix-git/doc/guix.texi:29668
52738 #, no-wrap
52739 msgid "@code{address} (default: @code{\"0.0.0.0\"})"
52740 msgstr ""
52741
52742 #. type: table
52743 #: guix-git/doc/guix.texi:29459
52744 msgid "The network address that the daemon will bind to. The default address means bind to all available addresses."
52745 msgstr ""
52746
52747 #. type: table
52748 #: guix-git/doc/guix.texi:29463
52749 msgid "When this is set, it must be a specific network interface (e.g.@: @code{eth0}) that the daemon will bind to."
52750 msgstr ""
52751
52752 #. type: item
52753 #: guix-git/doc/guix.texi:29464 guix-git/doc/guix.texi:29606
52754 #, no-wrap
52755 msgid "@code{max-clients} (default: @code{20})"
52756 msgstr ""
52757
52758 #. type: table
52759 #: guix-git/doc/guix.texi:29468
52760 msgid "This sets a limit on the maximum number of simultaneous client connections that the daemon will handle. Connections above this count are accepted, but no responses will be sent until enough connections have closed."
52761 msgstr ""
52762
52763 #. type: item
52764 #: guix-git/doc/guix.texi:29469 guix-git/doc/guix.texi:29611
52765 #, no-wrap
52766 msgid "@code{ssl?} (default: @code{#t})"
52767 msgstr ""
52768
52769 #. type: table
52770 #: guix-git/doc/guix.texi:29473
52771 msgid "Whether to use SSL/TLS to encrypt network communications. The certificate is automatically provisioned by the cluster and can be rotated with @command{gnt-cluster renew-crypto}."
52772 msgstr ""
52773
52774 #. type: item
52775 #: guix-git/doc/guix.texi:29474 guix-git/doc/guix.texi:29614
52776 #, no-wrap
52777 msgid "@code{ssl-key} (default: @file{\"/var/lib/ganeti/server.pem\"})"
52778 msgstr ""
52779
52780 #. type: table
52781 #: guix-git/doc/guix.texi:29476 guix-git/doc/guix.texi:29616
52782 msgid "This can be used to provide a specific encryption key for TLS communications."
52783 msgstr ""
52784
52785 #. type: item
52786 #: guix-git/doc/guix.texi:29477 guix-git/doc/guix.texi:29617
52787 #, no-wrap
52788 msgid "@code{ssl-cert} (default: @file{\"/var/lib/ganeti/server.pem\"})"
52789 msgstr ""
52790
52791 #. type: table
52792 #: guix-git/doc/guix.texi:29479 guix-git/doc/guix.texi:29619
52793 msgid "This can be used to provide a specific certificate for TLS communications."
52794 msgstr ""
52795
52796 #. type: table
52797 #: guix-git/doc/guix.texi:29483 guix-git/doc/guix.texi:29623
52798 msgid "When true, the daemon performs additional logging for debugging purposes. Note that this will leak encryption details to the log files, use with caution."
52799 msgstr ""
52800
52801 #. type: defvr
52802 #: guix-git/doc/guix.texi:29487
52803 #, no-wrap
52804 msgid "{Scheme Variable} ganeti-confd-service-type"
52805 msgstr ""
52806
52807 #. type: defvr
52808 #: guix-git/doc/guix.texi:29493
52809 msgid "@command{ganeti-confd} answers queries related to the configuration of a Ganeti cluster. The purpose of this daemon is to have a highly available and fast way to query cluster configuration values. It is automatically active on all @dfn{master candidates}. The value of this service must be a @code{ganeti-confd-configuration} object."
52810 msgstr ""
52811
52812 #. type: deftp
52813 #: guix-git/doc/guix.texi:29496
52814 #, no-wrap
52815 msgid "{Data Type} ganeti-confd-configuration"
52816 msgstr ""
52817
52818 #. type: deftp
52819 #: guix-git/doc/guix.texi:29498
52820 msgid "This is the configuration for the @code{ganeti-confd} service."
52821 msgstr ""
52822
52823 #. type: item
52824 #: guix-git/doc/guix.texi:29503
52825 #, no-wrap
52826 msgid "@code{port} (default: @code{1814})"
52827 msgstr ""
52828
52829 #. type: table
52830 #: guix-git/doc/guix.texi:29505
52831 msgid "The UDP port on which to listen for network requests."
52832 msgstr ""
52833
52834 #. type: table
52835 #: guix-git/doc/guix.texi:29508
52836 msgid "Network address that the daemon will bind to."
52837 msgstr ""
52838
52839 #. type: table
52840 #: guix-git/doc/guix.texi:29511 guix-git/doc/guix.texi:29540
52841 #: guix-git/doc/guix.texi:29567 guix-git/doc/guix.texi:29647
52842 #: guix-git/doc/guix.texi:29674 guix-git/doc/guix.texi:29700
52843 msgid "When true, the daemon performs additional logging for debugging purposes."
52844 msgstr ""
52845
52846 #. type: defvr
52847 #: guix-git/doc/guix.texi:29515
52848 #, no-wrap
52849 msgid "{Scheme Variable} ganeti-wconfd-service-type"
52850 msgstr ""
52851
52852 #. type: defvr
52853 #: guix-git/doc/guix.texi:29521
52854 msgid "@command{ganeti-wconfd} is the daemon that has authoritative knowledge about the cluster configuration and is the only entity that can accept changes to it. All jobs that need to modify the configuration will do so by sending appropriate requests to this daemon. It only runs on the @dfn{master node} and will automatically disable itself on other nodes."
52855 msgstr ""
52856
52857 #. type: defvr
52858 #: guix-git/doc/guix.texi:29524
52859 msgid "The value of this service must be a @code{ganeti-wconfd-configuration} object."
52860 msgstr ""
52861
52862 #. type: deftp
52863 #: guix-git/doc/guix.texi:29526
52864 #, no-wrap
52865 msgid "{Data Type} ganeti-wconfd-configuration"
52866 msgstr ""
52867
52868 #. type: deftp
52869 #: guix-git/doc/guix.texi:29528 guix-git/doc/guix.texi:29555
52870 msgid "This is the configuration for the @code{ganeti-wconfd} service."
52871 msgstr ""
52872
52873 #. type: item
52874 #: guix-git/doc/guix.texi:29533 guix-git/doc/guix.texi:29560
52875 #, no-wrap
52876 msgid "@code{no-voting?} (default: @code{#f})"
52877 msgstr ""
52878
52879 #. type: table
52880 #: guix-git/doc/guix.texi:29537
52881 msgid "The daemon will refuse to start if the majority of cluster nodes does not agree that it is running on the master node. Set to @code{#t} to start even if a quorum can not be reached (dangerous, use with caution)."
52882 msgstr ""
52883
52884 #. type: defvr
52885 #: guix-git/doc/guix.texi:29544
52886 #, no-wrap
52887 msgid "{Scheme Variable} ganeti-luxid-service-type"
52888 msgstr ""
52889
52890 #. type: defvr
52891 #: guix-git/doc/guix.texi:29549
52892 msgid "@command{ganeti-luxid} is a daemon used to answer queries related to the configuration and the current live state of a Ganeti cluster. Additionally, it is the authoritative daemon for the Ganeti job queue. Jobs can be submitted via this daemon and it schedules and starts them."
52893 msgstr ""
52894
52895 #. type: defvr
52896 #: guix-git/doc/guix.texi:29551
52897 msgid "It takes a @code{ganeti-luxid-configuration} object."
52898 msgstr ""
52899
52900 #. type: deftp
52901 #: guix-git/doc/guix.texi:29553
52902 #, no-wrap
52903 msgid "{Data Type} ganeti-luxid-configuration"
52904 msgstr ""
52905
52906 #. type: table
52907 #: guix-git/doc/guix.texi:29564
52908 msgid "The daemon will refuse to start if it cannot verify that the majority of cluster nodes believes that it is running on the master node. Set to @code{#t} to ignore such checks and start anyway (this can be dangerous)."
52909 msgstr ""
52910
52911 #. type: defvr
52912 #: guix-git/doc/guix.texi:29571
52913 #, no-wrap
52914 msgid "{Scheme Variable} ganeti-rapi-service-type"
52915 msgstr ""
52916
52917 #. type: defvr
52918 #: guix-git/doc/guix.texi:29575
52919 msgid "@command{ganeti-rapi} provides a remote API for Ganeti clusters. It runs on the master node and can be used to perform cluster actions programmatically via a JSON-based RPC protocol."
52920 msgstr ""
52921
52922 #. type: defvr
52923 #: guix-git/doc/guix.texi:29581
52924 msgid "Most query operations are allowed without authentication (unless @var{require-authentication?} is set), whereas write operations require explicit authorization via the @file{/var/lib/ganeti/rapi/users} file. See the @url{http://docs.ganeti.org/ganeti/master/html/rapi.html, Ganeti Remote API documentation} for more information."
52925 msgstr ""
52926
52927 #. type: defvr
52928 #: guix-git/doc/guix.texi:29583
52929 msgid "The value of this service must be a @code{ganeti-rapi-configuration} object."
52930 msgstr ""
52931
52932 #. type: deftp
52933 #: guix-git/doc/guix.texi:29585
52934 #, no-wrap
52935 msgid "{Data Type} ganeti-rapi-configuration"
52936 msgstr ""
52937
52938 #. type: deftp
52939 #: guix-git/doc/guix.texi:29587
52940 msgid "This is the configuration for the @code{ganeti-rapi} service."
52941 msgstr ""
52942
52943 #. type: item
52944 #: guix-git/doc/guix.texi:29592
52945 #, no-wrap
52946 msgid "@code{require-authentication?} (default: @code{#f})"
52947 msgstr ""
52948
52949 #. type: table
52950 #: guix-git/doc/guix.texi:29594
52951 msgid "Whether to require authentication even for read-only operations."
52952 msgstr ""
52953
52954 #. type: item
52955 #: guix-git/doc/guix.texi:29595
52956 #, no-wrap
52957 msgid "@code{port} (default: @code{5080})"
52958 msgstr ""
52959
52960 #. type: table
52961 #: guix-git/doc/guix.texi:29597
52962 msgid "The TCP port on which to listen to API requests."
52963 msgstr ""
52964
52965 #. type: table
52966 #: guix-git/doc/guix.texi:29601
52967 msgid "The network address that the service will bind to. By default it listens on all configured addresses."
52968 msgstr ""
52969
52970 #. type: table
52971 #: guix-git/doc/guix.texi:29605
52972 msgid "When set, it must specify a specific network interface such as @code{eth0} that the daemon will bind to."
52973 msgstr ""
52974
52975 #. type: table
52976 #: guix-git/doc/guix.texi:29610
52977 msgid "The maximum number of simultaneous client requests to handle. Further connections are allowed, but no responses are sent until enough connections have closed."
52978 msgstr ""
52979
52980 #. type: table
52981 #: guix-git/doc/guix.texi:29613
52982 msgid "Whether to use SSL/TLS encryption on the RAPI port."
52983 msgstr ""
52984
52985 #. type: defvr
52986 #: guix-git/doc/guix.texi:29627
52987 #, no-wrap
52988 msgid "{Scheme Variable} ganeti-kvmd-service-type"
52989 msgstr ""
52990
52991 #. type: defvr
52992 #: guix-git/doc/guix.texi:29635
52993 msgid "@command{ganeti-kvmd} is responsible for determining whether a given KVM instance was shut down by an administrator or a user. Normally Ganeti will restart an instance that was not stopped through Ganeti itself. If the cluster option @code{user_shutdown} is true, this daemon monitors the @code{QMP} socket provided by QEMU and listens for shutdown events, and marks the instance as @dfn{USER_down} instead of @dfn{ERROR_down} when it shuts down gracefully by itself."
52994 msgstr ""
52995
52996 #. type: defvr
52997 #: guix-git/doc/guix.texi:29637
52998 msgid "It takes a @code{ganeti-kvmd-configuration} object."
52999 msgstr ""
53000
53001 #. type: deftp
53002 #: guix-git/doc/guix.texi:29639
53003 #, no-wrap
53004 msgid "{Data Type} ganeti-kvmd-configuration"
53005 msgstr ""
53006
53007 #. type: defvr
53008 #: guix-git/doc/guix.texi:29651
53009 #, no-wrap
53010 msgid "{Scheme Variable} ganeti-mond-service-type"
53011 msgstr ""
53012
53013 #. type: defvr
53014 #: guix-git/doc/guix.texi:29655
53015 msgid "@command{ganeti-mond} is an optional daemon that provides Ganeti monitoring functionality. It is responsible for running data collectors and publish the collected information through a HTTP interface."
53016 msgstr ""
53017
53018 #. type: defvr
53019 #: guix-git/doc/guix.texi:29657
53020 msgid "It takes a @code{ganeti-mond-configuration} object."
53021 msgstr ""
53022
53023 #. type: deftp
53024 #: guix-git/doc/guix.texi:29659
53025 #, no-wrap
53026 msgid "{Data Type} ganeti-mond-configuration"
53027 msgstr ""
53028
53029 #. type: item
53030 #: guix-git/doc/guix.texi:29665
53031 #, no-wrap
53032 msgid "@code{port} (default: @code{1815})"
53033 msgstr ""
53034
53035 #. type: table
53036 #: guix-git/doc/guix.texi:29667 guix-git/doc/guix.texi:29693
53037 msgid "The port on which the daemon will listen."
53038 msgstr ""
53039
53040 #. type: table
53041 #: guix-git/doc/guix.texi:29671
53042 msgid "The network address that the daemon will bind to. By default it binds to all available interfaces."
53043 msgstr ""
53044
53045 #. type: defvr
53046 #: guix-git/doc/guix.texi:29678
53047 #, no-wrap
53048 msgid "{Scheme Variable} ganeti-metad-service-type"
53049 msgstr ""
53050
53051 #. type: defvr
53052 #: guix-git/doc/guix.texi:29681
53053 msgid "@command{ganeti-metad} is an optional daemon that can be used to provide information about the cluster to instances or OS install scripts."
53054 msgstr ""
53055
53056 #. type: defvr
53057 #: guix-git/doc/guix.texi:29683
53058 msgid "It takes a @code{ganeti-metad-configuration} object."
53059 msgstr ""
53060
53061 #. type: deftp
53062 #: guix-git/doc/guix.texi:29685
53063 #, no-wrap
53064 msgid "{Data Type} ganeti-metad-configuration"
53065 msgstr ""
53066
53067 #. type: item
53068 #: guix-git/doc/guix.texi:29694
53069 #, no-wrap
53070 msgid "@code{address} (default: @code{#f})"
53071 msgstr ""
53072
53073 #. type: table
53074 #: guix-git/doc/guix.texi:29697
53075 msgid "If set, the daemon will bind to this address only. If left unset, the behavior depends on the cluster configuration."
53076 msgstr ""
53077
53078 #. type: defvr
53079 #: guix-git/doc/guix.texi:29704
53080 #, no-wrap
53081 msgid "{Scheme Variable} ganeti-watcher-service-type"
53082 msgstr ""
53083
53084 #. type: defvr
53085 #: guix-git/doc/guix.texi:29712
53086 msgid "@command{ganeti-watcher} is a script designed to run periodically and ensure the health of a cluster. It will automatically restart instances that have stopped without Ganeti's consent, and repairs DRBD links in case a node has rebooted. It also archives old cluster jobs and restarts Ganeti daemons that are not running. If the cluster parameter @code{ensure_node_health} is set, the watcher will also shutdown instances and DRBD devices if the node it is running on is declared offline by known master candidates."
53087 msgstr ""
53088
53089 #. type: defvr
53090 #: guix-git/doc/guix.texi:29714
53091 msgid "It can be paused on all nodes with @command{gnt-cluster watcher pause}."
53092 msgstr ""
53093
53094 #. type: defvr
53095 #: guix-git/doc/guix.texi:29716
53096 msgid "The service takes a @code{ganeti-watcher-configuration} object."
53097 msgstr ""
53098
53099 #. type: deftp
53100 #: guix-git/doc/guix.texi:29718
53101 #, no-wrap
53102 msgid "{Data Type} ganeti-watcher-configuration"
53103 msgstr ""
53104
53105 #. type: item
53106 #: guix-git/doc/guix.texi:29724
53107 #, no-wrap
53108 msgid "@code{schedule} (default: @code{'(next-second-from (next-minute (range 0 60 5)))})"
53109 msgstr ""
53110
53111 #. type: table
53112 #: guix-git/doc/guix.texi:29726
53113 msgid "How often to run the script. The default is every five minutes."
53114 msgstr ""
53115
53116 #. type: item
53117 #: guix-git/doc/guix.texi:29727
53118 #, no-wrap
53119 msgid "@code{rapi-ip} (default: @code{#f})"
53120 msgstr ""
53121
53122 #. type: table
53123 #: guix-git/doc/guix.texi:29730
53124 msgid "This option needs to be specified only if the RAPI daemon is configured to use a particular interface or address. By default the cluster address is used."
53125 msgstr ""
53126
53127 #. type: item
53128 #: guix-git/doc/guix.texi:29731
53129 #, no-wrap
53130 msgid "@code{job-age} (default: @code{(* 6 3600)})"
53131 msgstr ""
53132
53133 #. type: table
53134 #: guix-git/doc/guix.texi:29734
53135 msgid "Archive cluster jobs older than this age, specified in seconds. The default is 6 hours. This keeps @command{gnt-job list} manageable."
53136 msgstr ""
53137
53138 #. type: item
53139 #: guix-git/doc/guix.texi:29735
53140 #, no-wrap
53141 msgid "@code{verify-disks?} (default: @code{#t})"
53142 msgstr ""
53143
53144 #. type: table
53145 #: guix-git/doc/guix.texi:29739
53146 msgid "If this is @code{#f}, the watcher will not try to repair broken DRBD links automatically. Administrators will need to use @command{gnt-cluster verify-disks} manually instead."
53147 msgstr ""
53148
53149 #. type: table
53150 #: guix-git/doc/guix.texi:29742
53151 msgid "When @code{#t}, the script performs additional logging for debugging purposes."
53152 msgstr ""
53153
53154 #. type: defvr
53155 #: guix-git/doc/guix.texi:29746
53156 #, no-wrap
53157 msgid "{Scheme Variable} ganeti-cleaner-service-type"
53158 msgstr ""
53159
53160 #. type: defvr
53161 #: guix-git/doc/guix.texi:29754
53162 msgid "@command{ganeti-cleaner} is a script designed to run periodically and remove old files from the cluster. This service type controls two @dfn{cron jobs}: one intended for the master node that permanently purges old cluster jobs, and one intended for every node that removes expired X509 certificates, keys, and outdated @command{ganeti-watcher} information. Like all Ganeti services, it is safe to include even on non-master nodes as it will disable itself as necessary."
53163 msgstr ""
53164
53165 #. type: defvr
53166 #: guix-git/doc/guix.texi:29756
53167 msgid "It takes a @code{ganeti-cleaner-configuration} object."
53168 msgstr ""
53169
53170 #. type: deftp
53171 #: guix-git/doc/guix.texi:29758
53172 #, no-wrap
53173 msgid "{Data Type} ganeti-cleaner-configuration"
53174 msgstr ""
53175
53176 #. type: table
53177 #: guix-git/doc/guix.texi:29763
53178 msgid "The @code{ganeti} package to use for the @command{gnt-cleaner} command."
53179 msgstr ""
53180
53181 #. type: item
53182 #: guix-git/doc/guix.texi:29764
53183 #, no-wrap
53184 msgid "@code{master-schedule} (default: @code{\"45 1 * * *\"})"
53185 msgstr ""
53186
53187 #. type: table
53188 #: guix-git/doc/guix.texi:29767
53189 msgid "How often to run the master cleaning job. The default is once per day, at 01:45:00."
53190 msgstr ""
53191
53192 #. type: item
53193 #: guix-git/doc/guix.texi:29768
53194 #, no-wrap
53195 msgid "@code{node-schedule} (default: @code{\"45 2 * * *\"})"
53196 msgstr ""
53197
53198 #. type: table
53199 #: guix-git/doc/guix.texi:29771
53200 msgid "How often to run the node cleaning job. The default is once per day, at 02:45:00."
53201 msgstr ""
53202
53203 #. type: Plain text
53204 #: guix-git/doc/guix.texi:29785
53205 msgid "The @code{(gnu services version-control)} module provides a service to allow remote access to local Git repositories. There are three options: the @code{git-daemon-service}, which provides access to repositories via the @code{git://} unsecured TCP-based protocol, extending the @code{nginx} web server to proxy some requests to @code{git-http-backend}, or providing a web interface with @code{cgit-service-type}."
53206 msgstr ""
53207
53208 #. type: deffn
53209 #: guix-git/doc/guix.texi:29786
53210 #, no-wrap
53211 msgid "{Scheme Procedure} git-daemon-service [#:config (git-daemon-configuration)]"
53212 msgstr ""
53213
53214 #. type: deffn
53215 #: guix-git/doc/guix.texi:29790
53216 msgid "Return a service that runs @command{git daemon}, a simple TCP server to expose repositories over the Git protocol for anonymous access."
53217 msgstr ""
53218
53219 #. type: deffn
53220 #: guix-git/doc/guix.texi:29796
53221 msgid "The optional @var{config} argument should be a @code{<git-daemon-configuration>} object, by default it allows read-only access to exported@footnote{By creating the magic file @file{git-daemon-export-ok} in the repository directory.} repositories under @file{/srv/git}."
53222 msgstr ""
53223
53224 #. type: deftp
53225 #: guix-git/doc/guix.texi:29799
53226 #, no-wrap
53227 msgid "{Data Type} git-daemon-configuration"
53228 msgstr ""
53229
53230 #. type: deftp
53231 #: guix-git/doc/guix.texi:29801
53232 msgid "Data type representing the configuration for @code{git-daemon-service}."
53233 msgstr ""
53234
53235 #. type: item
53236 #: guix-git/doc/guix.texi:29803
53237 #, no-wrap
53238 msgid "@code{package} (default: @code{git})"
53239 msgstr ""
53240
53241 #. type: table
53242 #: guix-git/doc/guix.texi:29805 guix-git/doc/guix.texi:29865
53243 msgid "Package object of the Git distributed version control system."
53244 msgstr ""
53245
53246 #. type: item
53247 #: guix-git/doc/guix.texi:29806 guix-git/doc/guix.texi:29869
53248 #, no-wrap
53249 msgid "@code{export-all?} (default: @code{#f})"
53250 msgstr ""
53251
53252 #. type: table
53253 #: guix-git/doc/guix.texi:29809
53254 msgid "Whether to allow access for all Git repositories, even if they do not have the @file{git-daemon-export-ok} file."
53255 msgstr ""
53256
53257 #. type: item
53258 #: guix-git/doc/guix.texi:29810
53259 #, no-wrap
53260 msgid "@code{base-path} (default: @file{/srv/git})"
53261 msgstr ""
53262
53263 #. type: table
53264 #: guix-git/doc/guix.texi:29816
53265 msgid "Whether to remap all the path requests as relative to the given path. If you run @command{git daemon} with @code{(base-path \"/srv/git\")} on @samp{example.com}, then if you later try to pull @indicateurl{git://example.com/hello.git}, git daemon will interpret the path as @file{/srv/git/hello.git}."
53266 msgstr ""
53267
53268 #. type: item
53269 #: guix-git/doc/guix.texi:29817
53270 #, no-wrap
53271 msgid "@code{user-path} (default: @code{#f})"
53272 msgstr ""
53273
53274 #. type: table
53275 #: guix-git/doc/guix.texi:29825
53276 msgid "Whether to allow @code{~user} notation to be used in requests. When specified with empty string, requests to @indicateurl{git://host/~alice/foo} is taken as a request to access @code{foo} repository in the home directory of user @code{alice}. If @code{(user-path \"@var{path}\")} is specified, the same request is taken as a request to access @file{@var{path}/foo} repository in the home directory of user @code{alice}."
53277 msgstr ""
53278
53279 #. type: item
53280 #: guix-git/doc/guix.texi:29826
53281 #, no-wrap
53282 msgid "@code{listen} (default: @code{'()})"
53283 msgstr ""
53284
53285 #. type: table
53286 #: guix-git/doc/guix.texi:29829
53287 msgid "Whether to listen on specific IP addresses or hostnames, defaults to all."
53288 msgstr ""
53289
53290 #. type: item
53291 #: guix-git/doc/guix.texi:29830
53292 #, no-wrap
53293 msgid "@code{port} (default: @code{#f})"
53294 msgstr ""
53295
53296 #. type: table
53297 #: guix-git/doc/guix.texi:29832
53298 msgid "Whether to listen on an alternative port, which defaults to 9418."
53299 msgstr ""
53300
53301 #. type: item
53302 #: guix-git/doc/guix.texi:29833
53303 #, no-wrap
53304 msgid "@code{whitelist} (default: @code{'()})"
53305 msgstr ""
53306
53307 #. type: table
53308 #: guix-git/doc/guix.texi:29835
53309 msgid "If not empty, only allow access to this list of directories."
53310 msgstr ""
53311
53312 #. type: table
53313 #: guix-git/doc/guix.texi:29839
53314 msgid "Extra options will be passed to @command{git daemon}, please run @command{man git-daemon} for more information."
53315 msgstr ""
53316
53317 #. type: Plain text
53318 #: guix-git/doc/guix.texi:29853
53319 msgid "The @code{git://} protocol lacks authentication. When you pull from a repository fetched via @code{git://}, you don't know whether the data you receive was modified or is even coming from the specified host, and your connection is subject to eavesdropping. It's better to use an authenticated and encrypted transport, such as @code{https}. Although Git allows you to serve repositories using unsophisticated file-based web servers, there is a faster protocol implemented by the @code{git-http-backend} program. This program is the back-end of a proper Git web service. It is designed to sit behind a FastCGI proxy. @xref{Web Services}, for more on running the necessary @code{fcgiwrap} daemon."
53320 msgstr ""
53321
53322 #. type: Plain text
53323 #: guix-git/doc/guix.texi:29856
53324 msgid "Guix has a separate configuration data type for serving Git repositories over HTTP."
53325 msgstr ""
53326
53327 #. type: deftp
53328 #: guix-git/doc/guix.texi:29857
53329 #, no-wrap
53330 msgid "{Data Type} git-http-configuration"
53331 msgstr ""
53332
53333 #. type: deftp
53334 #: guix-git/doc/guix.texi:29861
53335 msgid "Data type representing the configuration for a future @code{git-http-service-type}; can currently be used to configure Nginx through @code{git-http-nginx-location-configuration}."
53336 msgstr ""
53337
53338 #. type: item
53339 #: guix-git/doc/guix.texi:29863
53340 #, no-wrap
53341 msgid "@code{package} (default: @var{git})"
53342 msgstr ""
53343
53344 #. type: item
53345 #: guix-git/doc/guix.texi:29866
53346 #, no-wrap
53347 msgid "@code{git-root} (default: @file{/srv/git})"
53348 msgstr ""
53349
53350 #. type: table
53351 #: guix-git/doc/guix.texi:29868
53352 msgid "Directory containing the Git repositories to expose to the world."
53353 msgstr ""
53354
53355 #. type: table
53356 #: guix-git/doc/guix.texi:29872
53357 msgid "Whether to expose access for all Git repositories in @var{git-root}, even if they do not have the @file{git-daemon-export-ok} file."
53358 msgstr ""
53359
53360 #. type: item
53361 #: guix-git/doc/guix.texi:29873
53362 #, no-wrap
53363 msgid "@code{uri-path} (default: @samp{/git/})"
53364 msgstr ""
53365
53366 #. type: table
53367 #: guix-git/doc/guix.texi:29878
53368 msgid "Path prefix for Git access. With the default @samp{/git/} prefix, this will map @indicateurl{http://@var{server}/git/@var{repo}.git} to @file{/srv/git/@var{repo}.git}. Requests whose URI paths do not begin with this prefix are not passed on to this Git instance."
53369 msgstr ""
53370
53371 #. type: item
53372 #: guix-git/doc/guix.texi:29879
53373 #, no-wrap
53374 msgid "@code{fcgiwrap-socket} (default: @code{127.0.0.1:9000})"
53375 msgstr ""
53376
53377 #. type: table
53378 #: guix-git/doc/guix.texi:29882
53379 msgid "The socket on which the @code{fcgiwrap} daemon is listening. @xref{Web Services}."
53380 msgstr ""
53381
53382 #. type: Plain text
53383 #: guix-git/doc/guix.texi:29889
53384 msgid "There is no @code{git-http-service-type}, currently; instead you can create an @code{nginx-location-configuration} from a @code{git-http-configuration} and then add that location to a web server."
53385 msgstr ""
53386
53387 #. type: deffn
53388 #: guix-git/doc/guix.texi:29890
53389 #, no-wrap
53390 msgid "{Scheme Procedure} git-http-nginx-location-configuration @"
53391 msgstr ""
53392
53393 #. type: deffn
53394 #: guix-git/doc/guix.texi:29895
53395 msgid "[config=(git-http-configuration)] Compute an @code{nginx-location-configuration} that corresponds to the given Git http configuration. An example nginx service definition to serve the default @file{/srv/git} over HTTPS might be:"
53396 msgstr ""
53397
53398 #. type: lisp
53399 #: guix-git/doc/guix.texi:29912
53400 #, no-wrap
53401 msgid ""
53402 "(service nginx-service-type\n"
53403 " (nginx-configuration\n"
53404 " (server-blocks\n"
53405 " (list\n"
53406 " (nginx-server-configuration\n"
53407 " (listen '(\"443 ssl\"))\n"
53408 " (server-name \"git.my-host.org\")\n"
53409 " (ssl-certificate\n"
53410 " \"/etc/letsencrypt/live/git.my-host.org/fullchain.pem\")\n"
53411 " (ssl-certificate-key\n"
53412 " \"/etc/letsencrypt/live/git.my-host.org/privkey.pem\")\n"
53413 " (locations\n"
53414 " (list\n"
53415 " (git-http-nginx-location-configuration\n"
53416 " (git-http-configuration (uri-path \"/\"))))))))))\n"
53417 msgstr ""
53418
53419 #. type: deffn
53420 #: guix-git/doc/guix.texi:29919
53421 msgid "This example assumes that you are using Let's Encrypt to get your TLS certificate. @xref{Certificate Services}. The default @code{certbot} service will redirect all HTTP traffic on @code{git.my-host.org} to HTTPS@. You will also need to add an @code{fcgiwrap} proxy to your system services. @xref{Web Services}."
53422 msgstr ""
53423
53424 #. type: subsubheading
53425 #: guix-git/doc/guix.texi:29921
53426 #, no-wrap
53427 msgid "Cgit Service"
53428 msgstr ""
53429
53430 #. type: cindex
53431 #: guix-git/doc/guix.texi:29923
53432 #, no-wrap
53433 msgid "Cgit service"
53434 msgstr ""
53435
53436 #. type: cindex
53437 #: guix-git/doc/guix.texi:29924
53438 #, no-wrap
53439 msgid "Git, web interface"
53440 msgstr ""
53441
53442 #. type: Plain text
53443 #: guix-git/doc/guix.texi:29927
53444 msgid "@uref{https://git.zx2c4.com/cgit/, Cgit} is a web frontend for Git repositories written in C."
53445 msgstr ""
53446
53447 #. type: Plain text
53448 #: guix-git/doc/guix.texi:29930
53449 msgid "The following example will configure the service with default values. By default, Cgit can be accessed on port 80 (@code{http://localhost:80})."
53450 msgstr ""
53451
53452 #. type: lisp
53453 #: guix-git/doc/guix.texi:29933
53454 #, no-wrap
53455 msgid "(service cgit-service-type)\n"
53456 msgstr ""
53457
53458 #. type: Plain text
53459 #: guix-git/doc/guix.texi:29937
53460 msgid "The @code{file-object} type designates either a file-like object (@pxref{G-Expressions, file-like objects}) or a string."
53461 msgstr ""
53462
53463 #. type: Plain text
53464 #: guix-git/doc/guix.texi:29941
53465 msgid "Available @code{cgit-configuration} fields are:"
53466 msgstr ""
53467
53468 #. type: deftypevr
53469 #: guix-git/doc/guix.texi:29942
53470 #, no-wrap
53471 msgid "{@code{cgit-configuration} parameter} package package"
53472 msgstr ""
53473
53474 #. type: deftypevr
53475 #: guix-git/doc/guix.texi:29944
53476 msgid "The CGIT package."
53477 msgstr ""
53478
53479 #. type: deftypevr
53480 #: guix-git/doc/guix.texi:29947
53481 #, no-wrap
53482 msgid "{@code{cgit-configuration} parameter} nginx-server-configuration-list nginx"
53483 msgstr ""
53484
53485 #. type: deftypevr
53486 #: guix-git/doc/guix.texi:29952
53487 #, no-wrap
53488 msgid "{@code{cgit-configuration} parameter} file-object about-filter"
53489 msgstr ""
53490
53491 #. type: deftypevr
53492 #: guix-git/doc/guix.texi:29955
53493 msgid "Specifies a command which will be invoked to format the content of about pages (both top-level and for each repository)."
53494 msgstr ""
53495
53496 #. type: deftypevr
53497 #: guix-git/doc/guix.texi:29960
53498 #, no-wrap
53499 msgid "{@code{cgit-configuration} parameter} string agefile"
53500 msgstr ""
53501
53502 #. type: deftypevr
53503 #: guix-git/doc/guix.texi:29963
53504 msgid "Specifies a path, relative to each repository path, which can be used to specify the date and time of the youngest commit in the repository."
53505 msgstr ""
53506
53507 #. type: deftypevr
53508 #: guix-git/doc/guix.texi:29968
53509 #, no-wrap
53510 msgid "{@code{cgit-configuration} parameter} file-object auth-filter"
53511 msgstr ""
53512
53513 #. type: deftypevr
53514 #: guix-git/doc/guix.texi:29971
53515 msgid "Specifies a command that will be invoked for authenticating repository access."
53516 msgstr ""
53517
53518 #. type: deftypevr
53519 #: guix-git/doc/guix.texi:29976
53520 #, no-wrap
53521 msgid "{@code{cgit-configuration} parameter} string branch-sort"
53522 msgstr ""
53523
53524 #. type: deftypevr
53525 #: guix-git/doc/guix.texi:29979
53526 msgid "Flag which, when set to @samp{age}, enables date ordering in the branch ref list, and when set @samp{name} enables ordering by branch name."
53527 msgstr ""
53528
53529 #. type: deftypevr
53530 #: guix-git/doc/guix.texi:29981
53531 msgid "Defaults to @samp{\"name\"}."
53532 msgstr ""
53533
53534 #. type: deftypevr
53535 #: guix-git/doc/guix.texi:29984
53536 #, no-wrap
53537 msgid "{@code{cgit-configuration} parameter} string cache-root"
53538 msgstr ""
53539
53540 #. type: deftypevr
53541 #: guix-git/doc/guix.texi:29986
53542 msgid "Path used to store the cgit cache entries."
53543 msgstr ""
53544
53545 #. type: deftypevr
53546 #: guix-git/doc/guix.texi:29988
53547 msgid "Defaults to @samp{\"/var/cache/cgit\"}."
53548 msgstr ""
53549
53550 #. type: deftypevr
53551 #: guix-git/doc/guix.texi:29991
53552 #, no-wrap
53553 msgid "{@code{cgit-configuration} parameter} integer cache-static-ttl"
53554 msgstr ""
53555
53556 #. type: deftypevr
53557 #: guix-git/doc/guix.texi:29994
53558 msgid "Number which specifies the time-to-live, in minutes, for the cached version of repository pages accessed with a fixed SHA1."
53559 msgstr ""
53560
53561 #. type: deftypevr
53562 #: guix-git/doc/guix.texi:29996 guix-git/doc/guix.texi:30439
53563 msgid "Defaults to @samp{-1}."
53564 msgstr ""
53565
53566 #. type: deftypevr
53567 #: guix-git/doc/guix.texi:29999
53568 #, no-wrap
53569 msgid "{@code{cgit-configuration} parameter} integer cache-dynamic-ttl"
53570 msgstr ""
53571
53572 #. type: deftypevr
53573 #: guix-git/doc/guix.texi:30002
53574 msgid "Number which specifies the time-to-live, in minutes, for the cached version of repository pages accessed without a fixed SHA1."
53575 msgstr ""
53576
53577 #. type: deftypevr
53578 #: guix-git/doc/guix.texi:30007
53579 #, no-wrap
53580 msgid "{@code{cgit-configuration} parameter} integer cache-repo-ttl"
53581 msgstr ""
53582
53583 #. type: deftypevr
53584 #: guix-git/doc/guix.texi:30010
53585 msgid "Number which specifies the time-to-live, in minutes, for the cached version of the repository summary page."
53586 msgstr ""
53587
53588 #. type: deftypevr
53589 #: guix-git/doc/guix.texi:30015
53590 #, no-wrap
53591 msgid "{@code{cgit-configuration} parameter} integer cache-root-ttl"
53592 msgstr ""
53593
53594 #. type: deftypevr
53595 #: guix-git/doc/guix.texi:30018
53596 msgid "Number which specifies the time-to-live, in minutes, for the cached version of the repository index page."
53597 msgstr ""
53598
53599 #. type: deftypevr
53600 #: guix-git/doc/guix.texi:30023
53601 #, no-wrap
53602 msgid "{@code{cgit-configuration} parameter} integer cache-scanrc-ttl"
53603 msgstr ""
53604
53605 #. type: deftypevr
53606 #: guix-git/doc/guix.texi:30026
53607 msgid "Number which specifies the time-to-live, in minutes, for the result of scanning a path for Git repositories."
53608 msgstr ""
53609
53610 #. type: deftypevr
53611 #: guix-git/doc/guix.texi:30031
53612 #, no-wrap
53613 msgid "{@code{cgit-configuration} parameter} integer cache-about-ttl"
53614 msgstr ""
53615
53616 #. type: deftypevr
53617 #: guix-git/doc/guix.texi:30034
53618 msgid "Number which specifies the time-to-live, in minutes, for the cached version of the repository about page."
53619 msgstr ""
53620
53621 #. type: deftypevr
53622 #: guix-git/doc/guix.texi:30039
53623 #, no-wrap
53624 msgid "{@code{cgit-configuration} parameter} integer cache-snapshot-ttl"
53625 msgstr ""
53626
53627 #. type: deftypevr
53628 #: guix-git/doc/guix.texi:30042
53629 msgid "Number which specifies the time-to-live, in minutes, for the cached version of snapshots."
53630 msgstr ""
53631
53632 #. type: deftypevr
53633 #: guix-git/doc/guix.texi:30047
53634 #, no-wrap
53635 msgid "{@code{cgit-configuration} parameter} integer cache-size"
53636 msgstr ""
53637
53638 #. type: deftypevr
53639 #: guix-git/doc/guix.texi:30050
53640 msgid "The maximum number of entries in the cgit cache. When set to @samp{0}, caching is disabled."
53641 msgstr ""
53642
53643 #. type: deftypevr
53644 #: guix-git/doc/guix.texi:30055
53645 #, no-wrap
53646 msgid "{@code{cgit-configuration} parameter} boolean case-sensitive-sort?"
53647 msgstr ""
53648
53649 #. type: deftypevr
53650 #: guix-git/doc/guix.texi:30057
53651 msgid "Sort items in the repo list case sensitively."
53652 msgstr ""
53653
53654 #. type: deftypevr
53655 #: guix-git/doc/guix.texi:30062
53656 #, no-wrap
53657 msgid "{@code{cgit-configuration} parameter} list clone-prefix"
53658 msgstr ""
53659
53660 #. type: deftypevr
53661 #: guix-git/doc/guix.texi:30065
53662 msgid "List of common prefixes which, when combined with a repository URL, generates valid clone URLs for the repository."
53663 msgstr ""
53664
53665 #. type: deftypevr
53666 #: guix-git/doc/guix.texi:30070
53667 #, no-wrap
53668 msgid "{@code{cgit-configuration} parameter} list clone-url"
53669 msgstr ""
53670
53671 #. type: deftypevr
53672 #: guix-git/doc/guix.texi:30072
53673 msgid "List of @code{clone-url} templates."
53674 msgstr ""
53675
53676 #. type: deftypevr
53677 #: guix-git/doc/guix.texi:30077
53678 #, no-wrap
53679 msgid "{@code{cgit-configuration} parameter} file-object commit-filter"
53680 msgstr ""
53681
53682 #. type: deftypevr
53683 #: guix-git/doc/guix.texi:30079
53684 msgid "Command which will be invoked to format commit messages."
53685 msgstr ""
53686
53687 #. type: deftypevr
53688 #: guix-git/doc/guix.texi:30084
53689 #, no-wrap
53690 msgid "{@code{cgit-configuration} parameter} string commit-sort"
53691 msgstr ""
53692
53693 #. type: deftypevr
53694 #: guix-git/doc/guix.texi:30088 guix-git/doc/guix.texi:30646
53695 msgid "Flag which, when set to @samp{date}, enables strict date ordering in the commit log, and when set to @samp{topo} enables strict topological ordering."
53696 msgstr ""
53697
53698 #. type: deftypevr
53699 #: guix-git/doc/guix.texi:30090
53700 msgid "Defaults to @samp{\"git log\"}."
53701 msgstr ""
53702
53703 #. type: deftypevr
53704 #: guix-git/doc/guix.texi:30093
53705 #, no-wrap
53706 msgid "{@code{cgit-configuration} parameter} file-object css"
53707 msgstr ""
53708
53709 #. type: deftypevr
53710 #: guix-git/doc/guix.texi:30095
53711 msgid "URL which specifies the css document to include in all cgit pages."
53712 msgstr ""
53713
53714 #. type: deftypevr
53715 #: guix-git/doc/guix.texi:30097
53716 msgid "Defaults to @samp{\"/share/cgit/cgit.css\"}."
53717 msgstr ""
53718
53719 #. type: deftypevr
53720 #: guix-git/doc/guix.texi:30100
53721 #, no-wrap
53722 msgid "{@code{cgit-configuration} parameter} file-object email-filter"
53723 msgstr ""
53724
53725 #. type: deftypevr
53726 #: guix-git/doc/guix.texi:30104
53727 msgid "Specifies a command which will be invoked to format names and email address of committers, authors, and taggers, as represented in various places throughout the cgit interface."
53728 msgstr ""
53729
53730 #. type: deftypevr
53731 #: guix-git/doc/guix.texi:30109
53732 #, no-wrap
53733 msgid "{@code{cgit-configuration} parameter} boolean embedded?"
53734 msgstr ""
53735
53736 #. type: deftypevr
53737 #: guix-git/doc/guix.texi:30112
53738 msgid "Flag which, when set to @samp{#t}, will make cgit generate a HTML fragment suitable for embedding in other HTML pages."
53739 msgstr ""
53740
53741 #. type: deftypevr
53742 #: guix-git/doc/guix.texi:30117
53743 #, no-wrap
53744 msgid "{@code{cgit-configuration} parameter} boolean enable-commit-graph?"
53745 msgstr ""
53746
53747 #. type: deftypevr
53748 #: guix-git/doc/guix.texi:30121
53749 msgid "Flag which, when set to @samp{#t}, will make cgit print an ASCII-art commit history graph to the left of the commit messages in the repository log page."
53750 msgstr ""
53751
53752 #. type: deftypevr
53753 #: guix-git/doc/guix.texi:30126
53754 #, no-wrap
53755 msgid "{@code{cgit-configuration} parameter} boolean enable-filter-overrides?"
53756 msgstr ""
53757
53758 #. type: deftypevr
53759 #: guix-git/doc/guix.texi:30129
53760 msgid "Flag which, when set to @samp{#t}, allows all filter settings to be overridden in repository-specific cgitrc files."
53761 msgstr ""
53762
53763 #. type: deftypevr
53764 #: guix-git/doc/guix.texi:30134
53765 #, no-wrap
53766 msgid "{@code{cgit-configuration} parameter} boolean enable-follow-links?"
53767 msgstr ""
53768
53769 #. type: deftypevr
53770 #: guix-git/doc/guix.texi:30137
53771 msgid "Flag which, when set to @samp{#t}, allows users to follow a file in the log view."
53772 msgstr ""
53773
53774 #. type: deftypevr
53775 #: guix-git/doc/guix.texi:30142
53776 #, no-wrap
53777 msgid "{@code{cgit-configuration} parameter} boolean enable-http-clone?"
53778 msgstr ""
53779
53780 #. type: deftypevr
53781 #: guix-git/doc/guix.texi:30145
53782 msgid "If set to @samp{#t}, cgit will act as an dumb HTTP endpoint for Git clones."
53783 msgstr ""
53784
53785 #. type: deftypevr
53786 #: guix-git/doc/guix.texi:30150
53787 #, no-wrap
53788 msgid "{@code{cgit-configuration} parameter} boolean enable-index-links?"
53789 msgstr ""
53790
53791 #. type: deftypevr
53792 #: guix-git/doc/guix.texi:30153
53793 msgid "Flag which, when set to @samp{#t}, will make cgit generate extra links \"summary\", \"commit\", \"tree\" for each repo in the repository index."
53794 msgstr ""
53795
53796 #. type: deftypevr
53797 #: guix-git/doc/guix.texi:30158
53798 #, no-wrap
53799 msgid "{@code{cgit-configuration} parameter} boolean enable-index-owner?"
53800 msgstr ""
53801
53802 #. type: deftypevr
53803 #: guix-git/doc/guix.texi:30161
53804 msgid "Flag which, when set to @samp{#t}, will make cgit display the owner of each repo in the repository index."
53805 msgstr ""
53806
53807 #. type: deftypevr
53808 #: guix-git/doc/guix.texi:30166
53809 #, no-wrap
53810 msgid "{@code{cgit-configuration} parameter} boolean enable-log-filecount?"
53811 msgstr ""
53812
53813 #. type: deftypevr
53814 #: guix-git/doc/guix.texi:30169
53815 msgid "Flag which, when set to @samp{#t}, will make cgit print the number of modified files for each commit on the repository log page."
53816 msgstr ""
53817
53818 #. type: deftypevr
53819 #: guix-git/doc/guix.texi:30174
53820 #, no-wrap
53821 msgid "{@code{cgit-configuration} parameter} boolean enable-log-linecount?"
53822 msgstr ""
53823
53824 #. type: deftypevr
53825 #: guix-git/doc/guix.texi:30177
53826 msgid "Flag which, when set to @samp{#t}, will make cgit print the number of added and removed lines for each commit on the repository log page."
53827 msgstr ""
53828
53829 #. type: deftypevr
53830 #: guix-git/doc/guix.texi:30182
53831 #, no-wrap
53832 msgid "{@code{cgit-configuration} parameter} boolean enable-remote-branches?"
53833 msgstr ""
53834
53835 #. type: deftypevr
53836 #: guix-git/doc/guix.texi:30185 guix-git/doc/guix.texi:30709
53837 msgid "Flag which, when set to @code{#t}, will make cgit display remote branches in the summary and refs views."
53838 msgstr ""
53839
53840 #. type: deftypevr
53841 #: guix-git/doc/guix.texi:30190
53842 #, no-wrap
53843 msgid "{@code{cgit-configuration} parameter} boolean enable-subject-links?"
53844 msgstr ""
53845
53846 #. type: deftypevr
53847 #: guix-git/doc/guix.texi:30194
53848 msgid "Flag which, when set to @code{1}, will make cgit use the subject of the parent commit as link text when generating links to parent commits in commit view."
53849 msgstr ""
53850
53851 #. type: deftypevr
53852 #: guix-git/doc/guix.texi:30199
53853 #, no-wrap
53854 msgid "{@code{cgit-configuration} parameter} boolean enable-html-serving?"
53855 msgstr ""
53856
53857 #. type: deftypevr
53858 #: guix-git/doc/guix.texi:30203
53859 msgid "Flag which, when set to @samp{#t}, will make cgit use the subject of the parent commit as link text when generating links to parent commits in commit view."
53860 msgstr ""
53861
53862 #. type: deftypevr
53863 #: guix-git/doc/guix.texi:30208
53864 #, no-wrap
53865 msgid "{@code{cgit-configuration} parameter} boolean enable-tree-linenumbers?"
53866 msgstr ""
53867
53868 #. type: deftypevr
53869 #: guix-git/doc/guix.texi:30211
53870 msgid "Flag which, when set to @samp{#t}, will make cgit generate linenumber links for plaintext blobs printed in the tree view."
53871 msgstr ""
53872
53873 #. type: deftypevr
53874 #: guix-git/doc/guix.texi:30216
53875 #, no-wrap
53876 msgid "{@code{cgit-configuration} parameter} boolean enable-git-config?"
53877 msgstr ""
53878
53879 #. type: deftypevr
53880 #: guix-git/doc/guix.texi:30219
53881 msgid "Flag which, when set to @samp{#f}, will allow cgit to use Git config to set any repo specific settings."
53882 msgstr ""
53883
53884 #. type: deftypevr
53885 #: guix-git/doc/guix.texi:30224
53886 #, no-wrap
53887 msgid "{@code{cgit-configuration} parameter} file-object favicon"
53888 msgstr ""
53889
53890 #. type: deftypevr
53891 #: guix-git/doc/guix.texi:30226
53892 msgid "URL used as link to a shortcut icon for cgit."
53893 msgstr ""
53894
53895 #. type: deftypevr
53896 #: guix-git/doc/guix.texi:30228
53897 msgid "Defaults to @samp{\"/favicon.ico\"}."
53898 msgstr ""
53899
53900 #. type: deftypevr
53901 #: guix-git/doc/guix.texi:30231
53902 #, no-wrap
53903 msgid "{@code{cgit-configuration} parameter} string footer"
53904 msgstr ""
53905
53906 #. type: deftypevr
53907 #: guix-git/doc/guix.texi:30235
53908 msgid "The content of the file specified with this option will be included verbatim at the bottom of all pages (i.e.@: it replaces the standard \"generated by...\"@: message)."
53909 msgstr ""
53910
53911 #. type: deftypevr
53912 #: guix-git/doc/guix.texi:30240
53913 #, no-wrap
53914 msgid "{@code{cgit-configuration} parameter} string head-include"
53915 msgstr ""
53916
53917 #. type: deftypevr
53918 #: guix-git/doc/guix.texi:30243
53919 msgid "The content of the file specified with this option will be included verbatim in the HTML HEAD section on all pages."
53920 msgstr ""
53921
53922 #. type: deftypevr
53923 #: guix-git/doc/guix.texi:30248
53924 #, no-wrap
53925 msgid "{@code{cgit-configuration} parameter} string header"
53926 msgstr ""
53927
53928 #. type: deftypevr
53929 #: guix-git/doc/guix.texi:30251
53930 msgid "The content of the file specified with this option will be included verbatim at the top of all pages."
53931 msgstr ""
53932
53933 #. type: deftypevr
53934 #: guix-git/doc/guix.texi:30256
53935 #, no-wrap
53936 msgid "{@code{cgit-configuration} parameter} file-object include"
53937 msgstr ""
53938
53939 #. type: deftypevr
53940 #: guix-git/doc/guix.texi:30259
53941 msgid "Name of a configfile to include before the rest of the current config- file is parsed."
53942 msgstr ""
53943
53944 #. type: deftypevr
53945 #: guix-git/doc/guix.texi:30264
53946 #, no-wrap
53947 msgid "{@code{cgit-configuration} parameter} string index-header"
53948 msgstr ""
53949
53950 #. type: deftypevr
53951 #: guix-git/doc/guix.texi:30267
53952 msgid "The content of the file specified with this option will be included verbatim above the repository index."
53953 msgstr ""
53954
53955 #. type: deftypevr
53956 #: guix-git/doc/guix.texi:30272
53957 #, no-wrap
53958 msgid "{@code{cgit-configuration} parameter} string index-info"
53959 msgstr ""
53960
53961 #. type: deftypevr
53962 #: guix-git/doc/guix.texi:30275
53963 msgid "The content of the file specified with this option will be included verbatim below the heading on the repository index page."
53964 msgstr ""
53965
53966 #. type: deftypevr
53967 #: guix-git/doc/guix.texi:30280
53968 #, no-wrap
53969 msgid "{@code{cgit-configuration} parameter} boolean local-time?"
53970 msgstr ""
53971
53972 #. type: deftypevr
53973 #: guix-git/doc/guix.texi:30283
53974 msgid "Flag which, if set to @samp{#t}, makes cgit print commit and tag times in the servers timezone."
53975 msgstr ""
53976
53977 #. type: deftypevr
53978 #: guix-git/doc/guix.texi:30288
53979 #, no-wrap
53980 msgid "{@code{cgit-configuration} parameter} file-object logo"
53981 msgstr ""
53982
53983 #. type: deftypevr
53984 #: guix-git/doc/guix.texi:30291
53985 msgid "URL which specifies the source of an image which will be used as a logo on all cgit pages."
53986 msgstr ""
53987
53988 #. type: deftypevr
53989 #: guix-git/doc/guix.texi:30293
53990 msgid "Defaults to @samp{\"/share/cgit/cgit.png\"}."
53991 msgstr ""
53992
53993 #. type: deftypevr
53994 #: guix-git/doc/guix.texi:30296
53995 #, no-wrap
53996 msgid "{@code{cgit-configuration} parameter} string logo-link"
53997 msgstr ""
53998
53999 #. type: deftypevr
54000 #: guix-git/doc/guix.texi:30298 guix-git/doc/guix.texi:30755
54001 msgid "URL loaded when clicking on the cgit logo image."
54002 msgstr ""
54003
54004 #. type: deftypevr
54005 #: guix-git/doc/guix.texi:30303
54006 #, no-wrap
54007 msgid "{@code{cgit-configuration} parameter} file-object owner-filter"
54008 msgstr ""
54009
54010 #. type: deftypevr
54011 #: guix-git/doc/guix.texi:30306
54012 msgid "Command which will be invoked to format the Owner column of the main page."
54013 msgstr ""
54014
54015 #. type: deftypevr
54016 #: guix-git/doc/guix.texi:30311
54017 #, no-wrap
54018 msgid "{@code{cgit-configuration} parameter} integer max-atom-items"
54019 msgstr ""
54020
54021 #. type: deftypevr
54022 #: guix-git/doc/guix.texi:30313
54023 msgid "Number of items to display in atom feeds view."
54024 msgstr ""
54025
54026 #. type: deftypevr
54027 #: guix-git/doc/guix.texi:30318
54028 #, no-wrap
54029 msgid "{@code{cgit-configuration} parameter} integer max-commit-count"
54030 msgstr ""
54031
54032 #. type: deftypevr
54033 #: guix-git/doc/guix.texi:30320
54034 msgid "Number of entries to list per page in \"log\" view."
54035 msgstr ""
54036
54037 #. type: deftypevr
54038 #: guix-git/doc/guix.texi:30325
54039 #, no-wrap
54040 msgid "{@code{cgit-configuration} parameter} integer max-message-length"
54041 msgstr ""
54042
54043 #. type: deftypevr
54044 #: guix-git/doc/guix.texi:30327
54045 msgid "Number of commit message characters to display in \"log\" view."
54046 msgstr ""
54047
54048 #. type: deftypevr
54049 #: guix-git/doc/guix.texi:30329 guix-git/doc/guix.texi:30345
54050 msgid "Defaults to @samp{80}."
54051 msgstr ""
54052
54053 #. type: deftypevr
54054 #: guix-git/doc/guix.texi:30332
54055 #, no-wrap
54056 msgid "{@code{cgit-configuration} parameter} integer max-repo-count"
54057 msgstr ""
54058
54059 #. type: deftypevr
54060 #: guix-git/doc/guix.texi:30335
54061 msgid "Specifies the number of entries to list per page on the repository index page."
54062 msgstr ""
54063
54064 #. type: deftypevr
54065 #: guix-git/doc/guix.texi:30340
54066 #, no-wrap
54067 msgid "{@code{cgit-configuration} parameter} integer max-repodesc-length"
54068 msgstr ""
54069
54070 #. type: deftypevr
54071 #: guix-git/doc/guix.texi:30343
54072 msgid "Specifies the maximum number of repo description characters to display on the repository index page."
54073 msgstr ""
54074
54075 #. type: deftypevr
54076 #: guix-git/doc/guix.texi:30348
54077 #, no-wrap
54078 msgid "{@code{cgit-configuration} parameter} integer max-blob-size"
54079 msgstr ""
54080
54081 #. type: deftypevr
54082 #: guix-git/doc/guix.texi:30350
54083 msgid "Specifies the maximum size of a blob to display HTML for in KBytes."
54084 msgstr ""
54085
54086 #. type: deftypevr
54087 #: guix-git/doc/guix.texi:30355
54088 #, no-wrap
54089 msgid "{@code{cgit-configuration} parameter} string max-stats"
54090 msgstr ""
54091
54092 #. type: deftypevr
54093 #: guix-git/doc/guix.texi:30358
54094 msgid "Maximum statistics period. Valid values are @samp{week},@samp{month}, @samp{quarter} and @samp{year}."
54095 msgstr ""
54096
54097 #. type: deftypevr
54098 #: guix-git/doc/guix.texi:30363
54099 #, no-wrap
54100 msgid "{@code{cgit-configuration} parameter} mimetype-alist mimetype"
54101 msgstr ""
54102
54103 #. type: deftypevr
54104 #: guix-git/doc/guix.texi:30365
54105 msgid "Mimetype for the specified filename extension."
54106 msgstr ""
54107
54108 #. type: deftypevr
54109 #: guix-git/doc/guix.texi:30369
54110 msgid "Defaults to @samp{((gif \"image/gif\") (html \"text/html\") (jpg \"image/jpeg\") (jpeg \"image/jpeg\") (pdf \"application/pdf\") (png \"image/png\") (svg \"image/svg+xml\"))}."
54111 msgstr ""
54112
54113 #. type: deftypevr
54114 #: guix-git/doc/guix.texi:30372
54115 #, no-wrap
54116 msgid "{@code{cgit-configuration} parameter} file-object mimetype-file"
54117 msgstr ""
54118
54119 #. type: deftypevr
54120 #: guix-git/doc/guix.texi:30374
54121 msgid "Specifies the file to use for automatic mimetype lookup."
54122 msgstr ""
54123
54124 #. type: deftypevr
54125 #: guix-git/doc/guix.texi:30379
54126 #, no-wrap
54127 msgid "{@code{cgit-configuration} parameter} string module-link"
54128 msgstr ""
54129
54130 #. type: deftypevr
54131 #: guix-git/doc/guix.texi:30382
54132 msgid "Text which will be used as the formatstring for a hyperlink when a submodule is printed in a directory listing."
54133 msgstr ""
54134
54135 #. type: deftypevr
54136 #: guix-git/doc/guix.texi:30387
54137 #, no-wrap
54138 msgid "{@code{cgit-configuration} parameter} boolean nocache?"
54139 msgstr ""
54140
54141 #. type: deftypevr
54142 #: guix-git/doc/guix.texi:30389
54143 msgid "If set to the value @samp{#t} caching will be disabled."
54144 msgstr ""
54145
54146 #. type: deftypevr
54147 #: guix-git/doc/guix.texi:30394
54148 #, no-wrap
54149 msgid "{@code{cgit-configuration} parameter} boolean noplainemail?"
54150 msgstr ""
54151
54152 #. type: deftypevr
54153 #: guix-git/doc/guix.texi:30397
54154 msgid "If set to @samp{#t} showing full author email addresses will be disabled."
54155 msgstr ""
54156
54157 #. type: deftypevr
54158 #: guix-git/doc/guix.texi:30402
54159 #, no-wrap
54160 msgid "{@code{cgit-configuration} parameter} boolean noheader?"
54161 msgstr ""
54162
54163 #. type: deftypevr
54164 #: guix-git/doc/guix.texi:30405
54165 msgid "Flag which, when set to @samp{#t}, will make cgit omit the standard header on all pages."
54166 msgstr ""
54167
54168 #. type: deftypevr
54169 #: guix-git/doc/guix.texi:30410
54170 #, no-wrap
54171 msgid "{@code{cgit-configuration} parameter} project-list project-list"
54172 msgstr ""
54173
54174 #. type: deftypevr
54175 #: guix-git/doc/guix.texi:30414
54176 msgid "A list of subdirectories inside of @code{repository-directory}, relative to it, that should loaded as Git repositories. An empty list means that all subdirectories will be loaded."
54177 msgstr ""
54178
54179 #. type: deftypevr
54180 #: guix-git/doc/guix.texi:30419
54181 #, no-wrap
54182 msgid "{@code{cgit-configuration} parameter} file-object readme"
54183 msgstr ""
54184
54185 #. type: deftypevr
54186 #: guix-git/doc/guix.texi:30421
54187 msgid "Text which will be used as default value for @code{cgit-repo-readme}."
54188 msgstr ""
54189
54190 #. type: deftypevr
54191 #: guix-git/doc/guix.texi:30426
54192 #, no-wrap
54193 msgid "{@code{cgit-configuration} parameter} boolean remove-suffix?"
54194 msgstr ""
54195
54196 #. type: deftypevr
54197 #: guix-git/doc/guix.texi:30430
54198 msgid "If set to @code{#t} and @code{repository-directory} is enabled, if any repositories are found with a suffix of @code{.git}, this suffix will be removed for the URL and name."
54199 msgstr ""
54200
54201 #. type: deftypevr
54202 #: guix-git/doc/guix.texi:30435
54203 #, no-wrap
54204 msgid "{@code{cgit-configuration} parameter} integer renamelimit"
54205 msgstr ""
54206
54207 #. type: deftypevr
54208 #: guix-git/doc/guix.texi:30437
54209 msgid "Maximum number of files to consider when detecting renames."
54210 msgstr ""
54211
54212 #. type: deftypevr
54213 #: guix-git/doc/guix.texi:30442
54214 #, no-wrap
54215 msgid "{@code{cgit-configuration} parameter} string repository-sort"
54216 msgstr ""
54217
54218 #. type: deftypevr
54219 #: guix-git/doc/guix.texi:30444
54220 msgid "The way in which repositories in each section are sorted."
54221 msgstr ""
54222
54223 #. type: deftypevr
54224 #: guix-git/doc/guix.texi:30449
54225 #, no-wrap
54226 msgid "{@code{cgit-configuration} parameter} robots-list robots"
54227 msgstr ""
54228
54229 #. type: deftypevr
54230 #: guix-git/doc/guix.texi:30451
54231 msgid "Text used as content for the @code{robots} meta-tag."
54232 msgstr ""
54233
54234 #. type: deftypevr
54235 #: guix-git/doc/guix.texi:30453
54236 msgid "Defaults to @samp{(\"noindex\" \"nofollow\")}."
54237 msgstr ""
54238
54239 #. type: deftypevr
54240 #: guix-git/doc/guix.texi:30456
54241 #, no-wrap
54242 msgid "{@code{cgit-configuration} parameter} string root-desc"
54243 msgstr ""
54244
54245 #. type: deftypevr
54246 #: guix-git/doc/guix.texi:30458
54247 msgid "Text printed below the heading on the repository index page."
54248 msgstr ""
54249
54250 #. type: deftypevr
54251 #: guix-git/doc/guix.texi:30460
54252 msgid "Defaults to @samp{\"a fast webinterface for the git dscm\"}."
54253 msgstr ""
54254
54255 #. type: deftypevr
54256 #: guix-git/doc/guix.texi:30463
54257 #, no-wrap
54258 msgid "{@code{cgit-configuration} parameter} string root-readme"
54259 msgstr ""
54260
54261 #. type: deftypevr
54262 #: guix-git/doc/guix.texi:30466
54263 msgid "The content of the file specified with this option will be included verbatim below the ``about'' link on the repository index page."
54264 msgstr ""
54265
54266 #. type: deftypevr
54267 #: guix-git/doc/guix.texi:30471
54268 #, no-wrap
54269 msgid "{@code{cgit-configuration} parameter} string root-title"
54270 msgstr ""
54271
54272 #. type: deftypevr
54273 #: guix-git/doc/guix.texi:30473
54274 msgid "Text printed as heading on the repository index page."
54275 msgstr ""
54276
54277 #. type: deftypevr
54278 #: guix-git/doc/guix.texi:30478
54279 #, no-wrap
54280 msgid "{@code{cgit-configuration} parameter} boolean scan-hidden-path"
54281 msgstr ""
54282
54283 #. type: deftypevr
54284 #: guix-git/doc/guix.texi:30484
54285 msgid "If set to @samp{#t} and repository-directory is enabled, repository-directory will recurse into directories whose name starts with a period. Otherwise, repository-directory will stay away from such directories, considered as ``hidden''. Note that this does not apply to the @file{.git} directory in non-bare repos."
54286 msgstr ""
54287
54288 #. type: deftypevr
54289 #: guix-git/doc/guix.texi:30489
54290 #, no-wrap
54291 msgid "{@code{cgit-configuration} parameter} list snapshots"
54292 msgstr ""
54293
54294 #. type: deftypevr
54295 #: guix-git/doc/guix.texi:30492
54296 msgid "Text which specifies the default set of snapshot formats that cgit generates links for."
54297 msgstr ""
54298
54299 #. type: deftypevr
54300 #: guix-git/doc/guix.texi:30497
54301 #, no-wrap
54302 msgid "{@code{cgit-configuration} parameter} repository-directory repository-directory"
54303 msgstr ""
54304
54305 #. type: deftypevr
54306 #: guix-git/doc/guix.texi:30500
54307 msgid "Name of the directory to scan for repositories (represents @code{scan-path})."
54308 msgstr ""
54309
54310 #. type: deftypevr
54311 #: guix-git/doc/guix.texi:30502
54312 msgid "Defaults to @samp{\"/srv/git\"}."
54313 msgstr ""
54314
54315 #. type: deftypevr
54316 #: guix-git/doc/guix.texi:30505
54317 #, no-wrap
54318 msgid "{@code{cgit-configuration} parameter} string section"
54319 msgstr ""
54320
54321 #. type: deftypevr
54322 #: guix-git/doc/guix.texi:30508 guix-git/doc/guix.texi:30824
54323 msgid "The name of the current repository section - all repositories defined after this option will inherit the current section name."
54324 msgstr ""
54325
54326 #. type: deftypevr
54327 #: guix-git/doc/guix.texi:30513
54328 #, no-wrap
54329 msgid "{@code{cgit-configuration} parameter} string section-sort"
54330 msgstr ""
54331
54332 #. type: deftypevr
54333 #: guix-git/doc/guix.texi:30516
54334 msgid "Flag which, when set to @samp{1}, will sort the sections on the repository listing by name."
54335 msgstr ""
54336
54337 #. type: deftypevr
54338 #: guix-git/doc/guix.texi:30521
54339 #, no-wrap
54340 msgid "{@code{cgit-configuration} parameter} integer section-from-path"
54341 msgstr ""
54342
54343 #. type: deftypevr
54344 #: guix-git/doc/guix.texi:30524
54345 msgid "A number which, if defined prior to repository-directory, specifies how many path elements from each repo path to use as a default section name."
54346 msgstr ""
54347
54348 #. type: deftypevr
54349 #: guix-git/doc/guix.texi:30529
54350 #, no-wrap
54351 msgid "{@code{cgit-configuration} parameter} boolean side-by-side-diffs?"
54352 msgstr ""
54353
54354 #. type: deftypevr
54355 #: guix-git/doc/guix.texi:30532
54356 msgid "If set to @samp{#t} shows side-by-side diffs instead of unidiffs per default."
54357 msgstr ""
54358
54359 #. type: deftypevr
54360 #: guix-git/doc/guix.texi:30537
54361 #, no-wrap
54362 msgid "{@code{cgit-configuration} parameter} file-object source-filter"
54363 msgstr ""
54364
54365 #. type: deftypevr
54366 #: guix-git/doc/guix.texi:30540
54367 msgid "Specifies a command which will be invoked to format plaintext blobs in the tree view."
54368 msgstr ""
54369
54370 #. type: deftypevr
54371 #: guix-git/doc/guix.texi:30545
54372 #, no-wrap
54373 msgid "{@code{cgit-configuration} parameter} integer summary-branches"
54374 msgstr ""
54375
54376 #. type: deftypevr
54377 #: guix-git/doc/guix.texi:30548
54378 msgid "Specifies the number of branches to display in the repository ``summary'' view."
54379 msgstr ""
54380
54381 #. type: deftypevr
54382 #: guix-git/doc/guix.texi:30553
54383 #, no-wrap
54384 msgid "{@code{cgit-configuration} parameter} integer summary-log"
54385 msgstr ""
54386
54387 #. type: deftypevr
54388 #: guix-git/doc/guix.texi:30556
54389 msgid "Specifies the number of log entries to display in the repository ``summary'' view."
54390 msgstr ""
54391
54392 #. type: deftypevr
54393 #: guix-git/doc/guix.texi:30561
54394 #, no-wrap
54395 msgid "{@code{cgit-configuration} parameter} integer summary-tags"
54396 msgstr ""
54397
54398 #. type: deftypevr
54399 #: guix-git/doc/guix.texi:30564
54400 msgid "Specifies the number of tags to display in the repository ``summary'' view."
54401 msgstr ""
54402
54403 #. type: deftypevr
54404 #: guix-git/doc/guix.texi:30569
54405 #, no-wrap
54406 msgid "{@code{cgit-configuration} parameter} string strict-export"
54407 msgstr ""
54408
54409 #. type: deftypevr
54410 #: guix-git/doc/guix.texi:30572
54411 msgid "Filename which, if specified, needs to be present within the repository for cgit to allow access to that repository."
54412 msgstr ""
54413
54414 #. type: deftypevr
54415 #: guix-git/doc/guix.texi:30577
54416 #, no-wrap
54417 msgid "{@code{cgit-configuration} parameter} string virtual-root"
54418 msgstr ""
54419
54420 #. type: deftypevr
54421 #: guix-git/doc/guix.texi:30579
54422 msgid "URL which, if specified, will be used as root for all cgit links."
54423 msgstr ""
54424
54425 #. type: deftypevr
54426 #: guix-git/doc/guix.texi:30581
54427 msgid "Defaults to @samp{\"/\"}."
54428 msgstr ""
54429
54430 #. type: deftypevr
54431 #: guix-git/doc/guix.texi:30584
54432 #, no-wrap
54433 msgid "{@code{cgit-configuration} parameter} repository-cgit-configuration-list repositories"
54434 msgstr ""
54435
54436 #. type: deftypevr
54437 #: guix-git/doc/guix.texi:30586
54438 msgid "A list of @dfn{cgit-repo} records to use with config."
54439 msgstr ""
54440
54441 #. type: deftypevr
54442 #: guix-git/doc/guix.texi:30590
54443 msgid "Available @code{repository-cgit-configuration} fields are:"
54444 msgstr ""
54445
54446 #. type: deftypevr
54447 #: guix-git/doc/guix.texi:30591
54448 #, no-wrap
54449 msgid "{@code{repository-cgit-configuration} parameter} repo-list snapshots"
54450 msgstr ""
54451
54452 #. type: deftypevr
54453 #: guix-git/doc/guix.texi:30594
54454 msgid "A mask of snapshot formats for this repo that cgit generates links for, restricted by the global @code{snapshots} setting."
54455 msgstr ""
54456
54457 #. type: deftypevr
54458 #: guix-git/doc/guix.texi:30599
54459 #, no-wrap
54460 msgid "{@code{repository-cgit-configuration} parameter} repo-file-object source-filter"
54461 msgstr ""
54462
54463 #. type: deftypevr
54464 #: guix-git/doc/guix.texi:30601
54465 msgid "Override the default @code{source-filter}."
54466 msgstr ""
54467
54468 #. type: deftypevr
54469 #: guix-git/doc/guix.texi:30606
54470 #, no-wrap
54471 msgid "{@code{repository-cgit-configuration} parameter} repo-string url"
54472 msgstr ""
54473
54474 #. type: deftypevr
54475 #: guix-git/doc/guix.texi:30608
54476 msgid "The relative URL used to access the repository."
54477 msgstr ""
54478
54479 #. type: deftypevr
54480 #: guix-git/doc/guix.texi:30613
54481 #, no-wrap
54482 msgid "{@code{repository-cgit-configuration} parameter} repo-file-object about-filter"
54483 msgstr ""
54484
54485 #. type: deftypevr
54486 #: guix-git/doc/guix.texi:30615
54487 msgid "Override the default @code{about-filter}."
54488 msgstr ""
54489
54490 #. type: deftypevr
54491 #: guix-git/doc/guix.texi:30620
54492 #, no-wrap
54493 msgid "{@code{repository-cgit-configuration} parameter} repo-string branch-sort"
54494 msgstr ""
54495
54496 #. type: deftypevr
54497 #: guix-git/doc/guix.texi:30623
54498 msgid "Flag which, when set to @samp{age}, enables date ordering in the branch ref list, and when set to @samp{name} enables ordering by branch name."
54499 msgstr ""
54500
54501 #. type: deftypevr
54502 #: guix-git/doc/guix.texi:30628
54503 #, no-wrap
54504 msgid "{@code{repository-cgit-configuration} parameter} repo-list clone-url"
54505 msgstr ""
54506
54507 #. type: deftypevr
54508 #: guix-git/doc/guix.texi:30630
54509 msgid "A list of URLs which can be used to clone repo."
54510 msgstr ""
54511
54512 #. type: deftypevr
54513 #: guix-git/doc/guix.texi:30635
54514 #, no-wrap
54515 msgid "{@code{repository-cgit-configuration} parameter} repo-file-object commit-filter"
54516 msgstr ""
54517
54518 #. type: deftypevr
54519 #: guix-git/doc/guix.texi:30637
54520 msgid "Override the default @code{commit-filter}."
54521 msgstr ""
54522
54523 #. type: deftypevr
54524 #: guix-git/doc/guix.texi:30642
54525 #, no-wrap
54526 msgid "{@code{repository-cgit-configuration} parameter} repo-string commit-sort"
54527 msgstr ""
54528
54529 #. type: deftypevr
54530 #: guix-git/doc/guix.texi:30651
54531 #, no-wrap
54532 msgid "{@code{repository-cgit-configuration} parameter} repo-string defbranch"
54533 msgstr ""
54534
54535 #. type: deftypevr
54536 #: guix-git/doc/guix.texi:30656
54537 msgid "The name of the default branch for this repository. If no such branch exists in the repository, the first branch name (when sorted) is used as default instead. By default branch pointed to by HEAD, or ``master'' if there is no suitable HEAD."
54538 msgstr ""
54539
54540 #. type: deftypevr
54541 #: guix-git/doc/guix.texi:30661
54542 #, no-wrap
54543 msgid "{@code{repository-cgit-configuration} parameter} repo-string desc"
54544 msgstr ""
54545
54546 #. type: deftypevr
54547 #: guix-git/doc/guix.texi:30663
54548 msgid "The value to show as repository description."
54549 msgstr ""
54550
54551 #. type: deftypevr
54552 #: guix-git/doc/guix.texi:30668
54553 #, no-wrap
54554 msgid "{@code{repository-cgit-configuration} parameter} repo-string homepage"
54555 msgstr ""
54556
54557 #. type: deftypevr
54558 #: guix-git/doc/guix.texi:30670
54559 msgid "The value to show as repository homepage."
54560 msgstr ""
54561
54562 #. type: deftypevr
54563 #: guix-git/doc/guix.texi:30675
54564 #, no-wrap
54565 msgid "{@code{repository-cgit-configuration} parameter} repo-file-object email-filter"
54566 msgstr ""
54567
54568 #. type: deftypevr
54569 #: guix-git/doc/guix.texi:30677
54570 msgid "Override the default @code{email-filter}."
54571 msgstr ""
54572
54573 #. type: deftypevr
54574 #: guix-git/doc/guix.texi:30682
54575 #, no-wrap
54576 msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-commit-graph?"
54577 msgstr ""
54578
54579 #. type: deftypevr
54580 #: guix-git/doc/guix.texi:30685
54581 msgid "A flag which can be used to disable the global setting @code{enable-commit-graph?}."
54582 msgstr ""
54583
54584 #. type: deftypevr
54585 #: guix-git/doc/guix.texi:30690
54586 #, no-wrap
54587 msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-log-filecount?"
54588 msgstr ""
54589
54590 #. type: deftypevr
54591 #: guix-git/doc/guix.texi:30693
54592 msgid "A flag which can be used to disable the global setting @code{enable-log-filecount?}."
54593 msgstr ""
54594
54595 #. type: deftypevr
54596 #: guix-git/doc/guix.texi:30698
54597 #, no-wrap
54598 msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-log-linecount?"
54599 msgstr ""
54600
54601 #. type: deftypevr
54602 #: guix-git/doc/guix.texi:30701
54603 msgid "A flag which can be used to disable the global setting @code{enable-log-linecount?}."
54604 msgstr ""
54605
54606 #. type: deftypevr
54607 #: guix-git/doc/guix.texi:30706
54608 #, no-wrap
54609 msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-remote-branches?"
54610 msgstr ""
54611
54612 #. type: deftypevr
54613 #: guix-git/doc/guix.texi:30714
54614 #, no-wrap
54615 msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-subject-links?"
54616 msgstr ""
54617
54618 #. type: deftypevr
54619 #: guix-git/doc/guix.texi:30717
54620 msgid "A flag which can be used to override the global setting @code{enable-subject-links?}."
54621 msgstr ""
54622
54623 #. type: deftypevr
54624 #: guix-git/doc/guix.texi:30722
54625 #, no-wrap
54626 msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-html-serving?"
54627 msgstr ""
54628
54629 #. type: deftypevr
54630 #: guix-git/doc/guix.texi:30725
54631 msgid "A flag which can be used to override the global setting @code{enable-html-serving?}."
54632 msgstr ""
54633
54634 #. type: deftypevr
54635 #: guix-git/doc/guix.texi:30730
54636 #, no-wrap
54637 msgid "{@code{repository-cgit-configuration} parameter} repo-boolean hide?"
54638 msgstr ""
54639
54640 #. type: deftypevr
54641 #: guix-git/doc/guix.texi:30733
54642 msgid "Flag which, when set to @code{#t}, hides the repository from the repository index."
54643 msgstr ""
54644
54645 #. type: deftypevr
54646 #: guix-git/doc/guix.texi:30738
54647 #, no-wrap
54648 msgid "{@code{repository-cgit-configuration} parameter} repo-boolean ignore?"
54649 msgstr ""
54650
54651 #. type: deftypevr
54652 #: guix-git/doc/guix.texi:30740
54653 msgid "Flag which, when set to @samp{#t}, ignores the repository."
54654 msgstr ""
54655
54656 #. type: deftypevr
54657 #: guix-git/doc/guix.texi:30745
54658 #, no-wrap
54659 msgid "{@code{repository-cgit-configuration} parameter} repo-file-object logo"
54660 msgstr ""
54661
54662 #. type: deftypevr
54663 #: guix-git/doc/guix.texi:30748
54664 msgid "URL which specifies the source of an image which will be used as a logo on this repo’s pages."
54665 msgstr ""
54666
54667 #. type: deftypevr
54668 #: guix-git/doc/guix.texi:30753
54669 #, no-wrap
54670 msgid "{@code{repository-cgit-configuration} parameter} repo-string logo-link"
54671 msgstr ""
54672
54673 #. type: deftypevr
54674 #: guix-git/doc/guix.texi:30760
54675 #, no-wrap
54676 msgid "{@code{repository-cgit-configuration} parameter} repo-file-object owner-filter"
54677 msgstr ""
54678
54679 #. type: deftypevr
54680 #: guix-git/doc/guix.texi:30762
54681 msgid "Override the default @code{owner-filter}."
54682 msgstr ""
54683
54684 #. type: deftypevr
54685 #: guix-git/doc/guix.texi:30767
54686 #, no-wrap
54687 msgid "{@code{repository-cgit-configuration} parameter} repo-string module-link"
54688 msgstr ""
54689
54690 #. type: deftypevr
54691 #: guix-git/doc/guix.texi:30771
54692 msgid "Text which will be used as the formatstring for a hyperlink when a submodule is printed in a directory listing. The arguments for the formatstring are the path and SHA1 of the submodule commit."
54693 msgstr ""
54694
54695 #. type: deftypevr
54696 #: guix-git/doc/guix.texi:30776
54697 #, no-wrap
54698 msgid "{@code{repository-cgit-configuration} parameter} module-link-path module-link-path"
54699 msgstr ""
54700
54701 #. type: deftypevr
54702 #: guix-git/doc/guix.texi:30780
54703 msgid "Text which will be used as the formatstring for a hyperlink when a submodule with the specified subdirectory path is printed in a directory listing."
54704 msgstr ""
54705
54706 #. type: deftypevr
54707 #: guix-git/doc/guix.texi:30785
54708 #, no-wrap
54709 msgid "{@code{repository-cgit-configuration} parameter} repo-string max-stats"
54710 msgstr ""
54711
54712 #. type: deftypevr
54713 #: guix-git/doc/guix.texi:30787
54714 msgid "Override the default maximum statistics period."
54715 msgstr ""
54716
54717 #. type: deftypevr
54718 #: guix-git/doc/guix.texi:30792
54719 #, no-wrap
54720 msgid "{@code{repository-cgit-configuration} parameter} repo-string name"
54721 msgstr ""
54722
54723 #. type: deftypevr
54724 #: guix-git/doc/guix.texi:30794
54725 msgid "The value to show as repository name."
54726 msgstr ""
54727
54728 #. type: deftypevr
54729 #: guix-git/doc/guix.texi:30799
54730 #, no-wrap
54731 msgid "{@code{repository-cgit-configuration} parameter} repo-string owner"
54732 msgstr ""
54733
54734 #. type: deftypevr
54735 #: guix-git/doc/guix.texi:30801
54736 msgid "A value used to identify the owner of the repository."
54737 msgstr ""
54738
54739 #. type: deftypevr
54740 #: guix-git/doc/guix.texi:30806
54741 #, no-wrap
54742 msgid "{@code{repository-cgit-configuration} parameter} repo-string path"
54743 msgstr ""
54744
54745 #. type: deftypevr
54746 #: guix-git/doc/guix.texi:30808
54747 msgid "An absolute path to the repository directory."
54748 msgstr ""
54749
54750 #. type: deftypevr
54751 #: guix-git/doc/guix.texi:30813
54752 #, no-wrap
54753 msgid "{@code{repository-cgit-configuration} parameter} repo-string readme"
54754 msgstr ""
54755
54756 #. type: deftypevr
54757 #: guix-git/doc/guix.texi:30816
54758 msgid "A path (relative to repo) which specifies a file to include verbatim as the ``About'' page for this repo."
54759 msgstr ""
54760
54761 #. type: deftypevr
54762 #: guix-git/doc/guix.texi:30821
54763 #, no-wrap
54764 msgid "{@code{repository-cgit-configuration} parameter} repo-string section"
54765 msgstr ""
54766
54767 #. type: deftypevr
54768 #: guix-git/doc/guix.texi:30829
54769 #, no-wrap
54770 msgid "{@code{repository-cgit-configuration} parameter} repo-list extra-options"
54771 msgstr ""
54772
54773 #. type: deftypevr
54774 #: guix-git/doc/guix.texi:30831 guix-git/doc/guix.texi:30840
54775 msgid "Extra options will be appended to cgitrc file."
54776 msgstr ""
54777
54778 #. type: deftypevr
54779 #: guix-git/doc/guix.texi:30838
54780 #, no-wrap
54781 msgid "{@code{cgit-configuration} parameter} list extra-options"
54782 msgstr ""
54783
54784 #. type: Plain text
54785 #: guix-git/doc/guix.texi:30852
54786 msgid "However, it could be that you just want to get a @code{cgitrc} up and running. In that case, you can pass an @code{opaque-cgit-configuration} as a record to @code{cgit-service-type}. As its name indicates, an opaque configuration does not have easy reflective capabilities."
54787 msgstr ""
54788
54789 #. type: Plain text
54790 #: guix-git/doc/guix.texi:30854
54791 msgid "Available @code{opaque-cgit-configuration} fields are:"
54792 msgstr ""
54793
54794 #. type: deftypevr
54795 #: guix-git/doc/guix.texi:30855
54796 #, no-wrap
54797 msgid "{@code{opaque-cgit-configuration} parameter} package cgit"
54798 msgstr ""
54799
54800 #. type: deftypevr
54801 #: guix-git/doc/guix.texi:30857
54802 msgid "The cgit package."
54803 msgstr ""
54804
54805 #. type: deftypevr
54806 #: guix-git/doc/guix.texi:30859
54807 #, no-wrap
54808 msgid "{@code{opaque-cgit-configuration} parameter} string string"
54809 msgstr ""
54810
54811 #. type: deftypevr
54812 #: guix-git/doc/guix.texi:30861
54813 msgid "The contents of the @code{cgitrc}, as a string."
54814 msgstr ""
54815
54816 #. type: Plain text
54817 #: guix-git/doc/guix.texi:30865
54818 msgid "For example, if your @code{cgitrc} is just the empty string, you could instantiate a cgit service like this:"
54819 msgstr ""
54820
54821 #. type: lisp
54822 #: guix-git/doc/guix.texi:30870
54823 #, no-wrap
54824 msgid ""
54825 "(service cgit-service-type\n"
54826 " (opaque-cgit-configuration\n"
54827 " (cgitrc \"\")))\n"
54828 msgstr ""
54829
54830 #. type: subsubheading
54831 #: guix-git/doc/guix.texi:30872
54832 #, no-wrap
54833 msgid "Gitolite Service"
54834 msgstr ""
54835
54836 #. type: cindex
54837 #: guix-git/doc/guix.texi:30874
54838 #, no-wrap
54839 msgid "Gitolite service"
54840 msgstr ""
54841
54842 #. type: cindex
54843 #: guix-git/doc/guix.texi:30875
54844 #, no-wrap
54845 msgid "Git, hosting"
54846 msgstr ""
54847
54848 #. type: Plain text
54849 #: guix-git/doc/guix.texi:30878
54850 msgid "@uref{https://gitolite.com/gitolite/, Gitolite} is a tool for hosting Git repositories on a central server."
54851 msgstr ""
54852
54853 #. type: Plain text
54854 #: guix-git/doc/guix.texi:30881
54855 msgid "Gitolite can handle multiple repositories and users, and supports flexible configuration of the permissions for the users on the repositories."
54856 msgstr ""
54857
54858 #. type: Plain text
54859 #: guix-git/doc/guix.texi:30884
54860 msgid "The following example will configure Gitolite using the default @code{git} user, and the provided SSH public key."
54861 msgstr ""
54862
54863 #. type: lisp
54864 #: guix-git/doc/guix.texi:30891
54865 #, no-wrap
54866 msgid ""
54867 "(service gitolite-service-type\n"
54868 " (gitolite-configuration\n"
54869 " (admin-pubkey (plain-file\n"
54870 " \"yourname.pub\"\n"
54871 " \"ssh-rsa AAAA... guix@@example.com\"))))\n"
54872 msgstr ""
54873
54874 #. type: Plain text
54875 #: guix-git/doc/guix.texi:30896
54876 msgid "Gitolite is configured through a special admin repository which you can clone, for example, if you setup Gitolite on @code{example.com}, you would run the following command to clone the admin repository."
54877 msgstr ""
54878
54879 #. type: example
54880 #: guix-git/doc/guix.texi:30899
54881 #, no-wrap
54882 msgid "git clone git@@example.com:gitolite-admin\n"
54883 msgstr ""
54884
54885 #. type: Plain text
54886 #: guix-git/doc/guix.texi:30905
54887 msgid "When the Gitolite service is activated, the provided @code{admin-pubkey} will be inserted in to the @file{keydir} directory in the gitolite-admin repository. If this results in a change in the repository, it will be committed using the message ``gitolite setup by GNU Guix''."
54888 msgstr ""
54889
54890 #. type: deftp
54891 #: guix-git/doc/guix.texi:30906
54892 #, no-wrap
54893 msgid "{Data Type} gitolite-configuration"
54894 msgstr ""
54895
54896 #. type: deftp
54897 #: guix-git/doc/guix.texi:30908
54898 msgid "Data type representing the configuration for @code{gitolite-service-type}."
54899 msgstr ""
54900
54901 #. type: item
54902 #: guix-git/doc/guix.texi:30910
54903 #, no-wrap
54904 msgid "@code{package} (default: @var{gitolite})"
54905 msgstr ""
54906
54907 #. type: table
54908 #: guix-git/doc/guix.texi:30912
54909 msgid "Gitolite package to use."
54910 msgstr ""
54911
54912 #. type: item
54913 #: guix-git/doc/guix.texi:30913
54914 #, no-wrap
54915 msgid "@code{user} (default: @var{git})"
54916 msgstr ""
54917
54918 #. type: table
54919 #: guix-git/doc/guix.texi:30916
54920 msgid "User to use for Gitolite. This will be user that you use when accessing Gitolite over SSH."
54921 msgstr ""
54922
54923 #. type: item
54924 #: guix-git/doc/guix.texi:30917
54925 #, no-wrap
54926 msgid "@code{group} (default: @var{git})"
54927 msgstr ""
54928
54929 #. type: table
54930 #: guix-git/doc/guix.texi:30919
54931 msgid "Group to use for Gitolite."
54932 msgstr ""
54933
54934 #. type: item
54935 #: guix-git/doc/guix.texi:30920
54936 #, no-wrap
54937 msgid "@code{home-directory} (default: @var{\"/var/lib/gitolite\"})"
54938 msgstr ""
54939
54940 #. type: table
54941 #: guix-git/doc/guix.texi:30922
54942 msgid "Directory in which to store the Gitolite configuration and repositories."
54943 msgstr ""
54944
54945 #. type: item
54946 #: guix-git/doc/guix.texi:30923
54947 #, no-wrap
54948 msgid "@code{rc-file} (default: @var{(gitolite-rc-file)})"
54949 msgstr ""
54950
54951 #. type: table
54952 #: guix-git/doc/guix.texi:30926
54953 msgid "A ``file-like'' object (@pxref{G-Expressions, file-like objects}), representing the configuration for Gitolite."
54954 msgstr ""
54955
54956 #. type: item
54957 #: guix-git/doc/guix.texi:30927
54958 #, no-wrap
54959 msgid "@code{admin-pubkey} (default: @var{#f})"
54960 msgstr ""
54961
54962 #. type: table
54963 #: guix-git/doc/guix.texi:30931
54964 msgid "A ``file-like'' object (@pxref{G-Expressions, file-like objects}) used to setup Gitolite. This will be inserted in to the @file{keydir} directory within the gitolite-admin repository."
54965 msgstr ""
54966
54967 #. type: table
54968 #: guix-git/doc/guix.texi:30933
54969 msgid "To specify the SSH key as a string, use the @code{plain-file} function."
54970 msgstr ""
54971
54972 #. type: lisp
54973 #: guix-git/doc/guix.texi:30936
54974 #, no-wrap
54975 msgid "(plain-file \"yourname.pub\" \"ssh-rsa AAAA... guix@@example.com\")\n"
54976 msgstr ""
54977
54978 #. type: deftp
54979 #: guix-git/doc/guix.texi:30941
54980 #, no-wrap
54981 msgid "{Data Type} gitolite-rc-file"
54982 msgstr ""
54983
54984 #. type: deftp
54985 #: guix-git/doc/guix.texi:30943
54986 msgid "Data type representing the Gitolite RC file."
54987 msgstr ""
54988
54989 #. type: item
54990 #: guix-git/doc/guix.texi:30945
54991 #, no-wrap
54992 msgid "@code{umask} (default: @code{#o0077})"
54993 msgstr ""
54994
54995 #. type: table
54996 #: guix-git/doc/guix.texi:30948
54997 msgid "This controls the permissions Gitolite sets on the repositories and their contents."
54998 msgstr ""
54999
55000 #. type: table
55001 #: guix-git/doc/guix.texi:30952
55002 msgid "A value like @code{#o0027} will give read access to the group used by Gitolite (by default: @code{git}). This is necessary when using Gitolite with software like cgit or gitweb."
55003 msgstr ""
55004
55005 #. type: item
55006 #: guix-git/doc/guix.texi:30953
55007 #, no-wrap
55008 msgid "@code{git-config-keys} (default: @code{\"\"})"
55009 msgstr ""
55010
55011 #. type: table
55012 #: guix-git/doc/guix.texi:30956
55013 msgid "Gitolite allows you to set git config values using the @samp{config} keyword. This setting allows control over the config keys to accept."
55014 msgstr ""
55015
55016 #. type: item
55017 #: guix-git/doc/guix.texi:30957
55018 #, no-wrap
55019 msgid "@code{roles} (default: @code{'((\"READERS\" . 1) (\"WRITERS\" . ))})"
55020 msgstr ""
55021
55022 #. type: table
55023 #: guix-git/doc/guix.texi:30959
55024 msgid "Set the role names allowed to be used by users running the perms command."
55025 msgstr ""
55026
55027 #. type: item
55028 #: guix-git/doc/guix.texi:30960
55029 #, no-wrap
55030 msgid "@code{enable} (default: @code{'(\"help\" \"desc\" \"info\" \"perms\" \"writable\" \"ssh-authkeys\" \"git-config\" \"daemon\" \"gitweb\")})"
55031 msgstr ""
55032
55033 #. type: table
55034 #: guix-git/doc/guix.texi:30962
55035 msgid "This setting controls the commands and features to enable within Gitolite."
55036 msgstr ""
55037
55038 #. type: subsubheading
55039 #: guix-git/doc/guix.texi:30970
55040 #, no-wrap
55041 msgid "The Battle for Wesnoth Service"
55042 msgstr ""
55043
55044 #. type: cindex
55045 #: guix-git/doc/guix.texi:30971
55046 #, no-wrap
55047 msgid "wesnothd"
55048 msgstr ""
55049
55050 #. type: Plain text
55051 #: guix-git/doc/guix.texi:30975
55052 msgid "@uref{https://wesnoth.org, The Battle for Wesnoth} is a fantasy, turn based tactical strategy game, with several single player campaigns, and multiplayer games (both networked and local)."
55053 msgstr ""
55054
55055 #. type: defvar
55056 #: guix-git/doc/guix.texi:30976
55057 #, no-wrap
55058 msgid "{Scheme Variable} wesnothd-service-type"
55059 msgstr ""
55060
55061 #. type: defvar
55062 #: guix-git/doc/guix.texi:30980
55063 msgid "Service type for the wesnothd service. Its value must be a @code{wesnothd-configuration} object. To run wesnothd in the default configuration, instantiate it as:"
55064 msgstr ""
55065
55066 #. type: lisp
55067 #: guix-git/doc/guix.texi:30983
55068 #, no-wrap
55069 msgid "(service wesnothd-service-type)\n"
55070 msgstr ""
55071
55072 #. type: deftp
55073 #: guix-git/doc/guix.texi:30986
55074 #, no-wrap
55075 msgid "{Data Type} wesnothd-configuration"
55076 msgstr ""
55077
55078 #. type: deftp
55079 #: guix-git/doc/guix.texi:30988
55080 msgid "Data type representing the configuration of @command{wesnothd}."
55081 msgstr ""
55082
55083 #. type: item
55084 #: guix-git/doc/guix.texi:30990
55085 #, no-wrap
55086 msgid "@code{package} (default: @code{wesnoth-server})"
55087 msgstr ""
55088
55089 #. type: table
55090 #: guix-git/doc/guix.texi:30992
55091 msgid "The wesnoth server package to use."
55092 msgstr ""
55093
55094 #. type: item
55095 #: guix-git/doc/guix.texi:30993
55096 #, no-wrap
55097 msgid "@code{port} (default: @code{15000})"
55098 msgstr ""
55099
55100 #. type: table
55101 #: guix-git/doc/guix.texi:30995
55102 msgid "The port to bind the server to."
55103 msgstr ""
55104
55105 #. type: cindex
55106 #: guix-git/doc/guix.texi:31001
55107 #, no-wrap
55108 msgid "pam-mount"
55109 msgstr ""
55110
55111 #. type: Plain text
55112 #: guix-git/doc/guix.texi:31006
55113 msgid "The @code{(gnu services pam-mount)} module provides a service allowing users to mount volumes when they log in. It should be able to mount any volume format supported by the system."
55114 msgstr ""
55115
55116 #. type: defvar
55117 #: guix-git/doc/guix.texi:31007
55118 #, no-wrap
55119 msgid "{Scheme Variable} pam-mount-service-type"
55120 msgstr ""
55121
55122 #. type: defvar
55123 #: guix-git/doc/guix.texi:31009
55124 msgid "Service type for PAM Mount support."
55125 msgstr ""
55126
55127 #. type: deftp
55128 #: guix-git/doc/guix.texi:31011
55129 #, no-wrap
55130 msgid "{Data Type} pam-mount-configuration"
55131 msgstr ""
55132
55133 #. type: deftp
55134 #: guix-git/doc/guix.texi:31013
55135 msgid "Data type representing the configuration of PAM Mount."
55136 msgstr ""
55137
55138 #. type: code{#1}
55139 #: guix-git/doc/guix.texi:31017
55140 #, no-wrap
55141 msgid "rules"
55142 msgstr ""
55143
55144 #. type: table
55145 #: guix-git/doc/guix.texi:31020
55146 msgid "The configuration rules that will be used to generate @file{/etc/security/pam_mount.conf.xml}."
55147 msgstr ""
55148
55149 #. type: table
55150 #: guix-git/doc/guix.texi:31024
55151 msgid "The configuration rules are SXML elements (@pxref{SXML,,, guile, GNU Guile Reference Manual}), and the default ones don't mount anything for anyone at login:"
55152 msgstr ""
55153
55154 #. type: lisp
55155 #: guix-git/doc/guix.texi:31039
55156 #, no-wrap
55157 msgid ""
55158 "`((debug (@@ (enable \"0\")))\n"
55159 " (mntoptions (@@ (allow ,(string-join\n"
55160 " '(\"nosuid\" \"nodev\" \"loop\"\n"
55161 " \"encryption\" \"fsck\" \"nonempty\"\n"
55162 " \"allow_root\" \"allow_other\")\n"
55163 " \",\"))))\n"
55164 " (mntoptions (@@ (require \"nosuid,nodev\")))\n"
55165 " (logout (@@ (wait \"0\")\n"
55166 " (hup \"0\")\n"
55167 " (term \"no\")\n"
55168 " (kill \"no\")))\n"
55169 " (mkmountpoint (@@ (enable \"1\")\n"
55170 " (remove \"true\"))))\n"
55171 msgstr ""
55172
55173 #. type: table
55174 #: guix-git/doc/guix.texi:31045
55175 msgid "Some @code{volume} elements must be added to automatically mount volumes at login. Here's an example allowing the user @code{alice} to mount her encrypted @env{HOME} directory and allowing the user @code{bob} to mount the partition where he stores his data:"
55176 msgstr ""
55177
55178 #. type: lisp
55179 #: guix-git/doc/guix.texi:31070
55180 #, no-wrap
55181 msgid ""
55182 "(define pam-mount-rules\n"
55183 "`((debug (@@ (enable \"0\")))\n"
55184 " (volume (@@ (user \"alice\")\n"
55185 " (fstype \"crypt\")\n"
55186 " (path \"/dev/sda2\")\n"
55187 " (mountpoint \"/home/alice\")))\n"
55188 " (volume (@@ (user \"bob\")\n"
55189 " (fstype \"auto\")\n"
55190 " (path \"/dev/sdb3\")\n"
55191 " (mountpoint \"/home/bob/data\")\n"
55192 " (options \"defaults,autodefrag,compress\")))\n"
55193 " (mntoptions (@@ (allow ,(string-join\n"
55194 " '(\"nosuid\" \"nodev\" \"loop\"\n"
55195 " \"encryption\" \"fsck\" \"nonempty\"\n"
55196 " \"allow_root\" \"allow_other\")\n"
55197 " \",\"))))\n"
55198 " (mntoptions (@@ (require \"nosuid,nodev\")))\n"
55199 " (logout (@@ (wait \"0\")\n"
55200 " (hup \"0\")\n"
55201 " (term \"no\")\n"
55202 " (kill \"no\")))\n"
55203 " (mkmountpoint (@@ (enable \"1\")\n"
55204 " (remove \"true\")))))\n"
55205 "\n"
55206 msgstr ""
55207
55208 #. type: lisp
55209 #: guix-git/doc/guix.texi:31074
55210 #, no-wrap
55211 msgid ""
55212 "(service pam-mount-service-type\n"
55213 " (pam-mount-configuration\n"
55214 " (rules pam-mount-rules)))\n"
55215 msgstr ""
55216
55217 #. type: table
55218 #: guix-git/doc/guix.texi:31078
55219 msgid "The complete list of possible options can be found in the man page for @uref{http://pam-mount.sourceforge.net/pam_mount.conf.5.html, pam_mount.conf}."
55220 msgstr ""
55221
55222 #. type: subsubheading
55223 #: guix-git/doc/guix.texi:31085
55224 #, no-wrap
55225 msgid "Guix Build Coordinator"
55226 msgstr ""
55227
55228 #. type: Plain text
55229 #: guix-git/doc/guix.texi:31091
55230 msgid "The @uref{https://git.cbaines.net/guix/build-coordinator/,Guix Build Coordinator} aids in distributing derivation builds among machines running an @dfn{agent}. The build daemon is still used to build the derivations, but the Guix Build Coordinator manages allocating builds and working with the results."
55231 msgstr ""
55232
55233 #. type: quotation
55234 #: guix-git/doc/guix.texi:31096
55235 msgid "This service is considered experimental. Configuration options may be changed in a backwards-incompatible manner, and not all features have been thorougly tested."
55236 msgstr ""
55237
55238 #. type: Plain text
55239 #: guix-git/doc/guix.texi:31103
55240 msgid "The Guix Build Coordinator consists of one @dfn{coordinator}, and one or more connected @dfn{agent} processes. The coordinator process handles clients submitting builds, and allocating builds to agents. The agent processes talk to a build daemon to actually perform the builds, then send the results back to the coordinator."
55241 msgstr ""
55242
55243 #. type: Plain text
55244 #: guix-git/doc/guix.texi:31107
55245 msgid "There is a script to run the coordinator component of the Guix Build Coordinator, but the Guix service uses a custom Guile script instead, to provide better integration with G-expressions used in the configuration."
55246 msgstr ""
55247
55248 #. type: defvar
55249 #: guix-git/doc/guix.texi:31108
55250 #, no-wrap
55251 msgid "{Scheme Variable} guix-build-coordinator-service-type"
55252 msgstr ""
55253
55254 #. type: defvar
55255 #: guix-git/doc/guix.texi:31111
55256 msgid "Service type for the Guix Build Coordinator. Its value must be a @code{guix-build-coordinator-configuration} object."
55257 msgstr ""
55258
55259 #. type: deftp
55260 #: guix-git/doc/guix.texi:31113
55261 #, no-wrap
55262 msgid "{Data Type} guix-build-coordinator-configuration"
55263 msgstr ""
55264
55265 #. type: deftp
55266 #: guix-git/doc/guix.texi:31115
55267 msgid "Data type representing the configuration of the Guix Build Coordinator."
55268 msgstr ""
55269
55270 #. type: item
55271 #: guix-git/doc/guix.texi:31117 guix-git/doc/guix.texi:31161
55272 #: guix-git/doc/guix.texi:31278
55273 #, no-wrap
55274 msgid "@code{package} (default: @code{guix-build-coordinator})"
55275 msgstr ""
55276
55277 #. type: table
55278 #: guix-git/doc/guix.texi:31119 guix-git/doc/guix.texi:31163
55279 #: guix-git/doc/guix.texi:31280
55280 msgid "The Guix Build Coordinator package to use."
55281 msgstr ""
55282
55283 #. type: item
55284 #: guix-git/doc/guix.texi:31120
55285 #, no-wrap
55286 msgid "@code{user} (default: @code{\"guix-build-coordinator\"})"
55287 msgstr ""
55288
55289 #. type: table
55290 #: guix-git/doc/guix.texi:31122 guix-git/doc/guix.texi:31166
55291 #: guix-git/doc/guix.texi:31283 guix-git/doc/guix.texi:31329
55292 msgid "The system user to run the service as."
55293 msgstr ""
55294
55295 #. type: item
55296 #: guix-git/doc/guix.texi:31123
55297 #, no-wrap
55298 msgid "@code{group} (default: @code{\"guix-build-coordinator\"})"
55299 msgstr ""
55300
55301 #. type: table
55302 #: guix-git/doc/guix.texi:31125 guix-git/doc/guix.texi:31332
55303 msgid "The system group to run the service as."
55304 msgstr ""
55305
55306 #. type: item
55307 #: guix-git/doc/guix.texi:31126
55308 #, no-wrap
55309 msgid "@code{database-uri-string} (default: @code{\"sqlite:///var/lib/guix-build-coordinator/guix_build_coordinator.db\"})"
55310 msgstr ""
55311
55312 #. type: table
55313 #: guix-git/doc/guix.texi:31128
55314 msgid "The URI to use for the database."
55315 msgstr ""
55316
55317 #. type: item
55318 #: guix-git/doc/guix.texi:31129
55319 #, no-wrap
55320 msgid "@code{agent-communication-uri} (default: @code{\"http://0.0.0.0:8745\"})"
55321 msgstr ""
55322
55323 #. type: table
55324 #: guix-git/doc/guix.texi:31131
55325 msgid "The URI describing how to listen to requests from agent processes."
55326 msgstr ""
55327
55328 #. type: item
55329 #: guix-git/doc/guix.texi:31132
55330 #, no-wrap
55331 msgid "@code{client-communication-uri} (default: @code{\"http://127.0.0.1:8746\"})"
55332 msgstr ""
55333
55334 #. type: table
55335 #: guix-git/doc/guix.texi:31136
55336 msgid "The URI describing how to listen to requests from clients. The client API allows submitting builds and currently isn't authenticated, so take care when configuring this value."
55337 msgstr ""
55338
55339 #. type: item
55340 #: guix-git/doc/guix.texi:31137
55341 #, no-wrap
55342 msgid "@code{allocation-strategy} (default: @code{#~basic-build-allocation-strategy})"
55343 msgstr ""
55344
55345 #. type: table
55346 #: guix-git/doc/guix.texi:31141
55347 msgid "A G-expression for the allocation strategy to be used. This is a procedure that takes the datastore as an argument and populates the allocation plan in the database."
55348 msgstr ""
55349
55350 #. type: item
55351 #: guix-git/doc/guix.texi:31142
55352 #, no-wrap
55353 msgid "@code{hooks} (default: @var{'()})"
55354 msgstr ""
55355
55356 #. type: table
55357 #: guix-git/doc/guix.texi:31145
55358 msgid "An association list of hooks. These provide a way to execute arbitrary code upon certain events, like a build result being processed."
55359 msgstr ""
55360
55361 #. type: item
55362 #: guix-git/doc/guix.texi:31146
55363 #, no-wrap
55364 msgid "@code{guile} (default: @code{guile-3.0-latest})"
55365 msgstr ""
55366
55367 #. type: table
55368 #: guix-git/doc/guix.texi:31148
55369 msgid "The Guile package with which to run the Guix Build Coordinator."
55370 msgstr ""
55371
55372 #. type: defvar
55373 #: guix-git/doc/guix.texi:31152
55374 #, no-wrap
55375 msgid "{Scheme Variable} guix-build-coordinator-agent-service-type"
55376 msgstr ""
55377
55378 #. type: defvar
55379 #: guix-git/doc/guix.texi:31155
55380 msgid "Service type for a Guix Build Coordinator agent. Its value must be a @code{guix-build-coordinator-agent-configuration} object."
55381 msgstr ""
55382
55383 #. type: deftp
55384 #: guix-git/doc/guix.texi:31157
55385 #, no-wrap
55386 msgid "{Data Type} guix-build-coordinator-agent-configuration"
55387 msgstr ""
55388
55389 #. type: deftp
55390 #: guix-git/doc/guix.texi:31159
55391 msgid "Data type representing the configuration a Guix Build Coordinator agent."
55392 msgstr ""
55393
55394 #. type: item
55395 #: guix-git/doc/guix.texi:31164
55396 #, no-wrap
55397 msgid "@code{user} (default: @code{\"guix-build-coordinator-agent\"})"
55398 msgstr ""
55399
55400 #. type: item
55401 #: guix-git/doc/guix.texi:31167 guix-git/doc/guix.texi:31284
55402 #, no-wrap
55403 msgid "@code{coordinator} (default: @code{\"http://localhost:8745\"})"
55404 msgstr ""
55405
55406 #. type: table
55407 #: guix-git/doc/guix.texi:31169 guix-git/doc/guix.texi:31286
55408 msgid "The URI to use when connecting to the coordinator."
55409 msgstr ""
55410
55411 #. type: code{#1}
55412 #: guix-git/doc/guix.texi:31170
55413 #, no-wrap
55414 msgid "authentication"
55415 msgstr ""
55416
55417 #. type: table
55418 #: guix-git/doc/guix.texi:31173
55419 msgid "Record describing how this agent should authenticate with the coordinator. Possible record types are described below."
55420 msgstr ""
55421
55422 #. type: item
55423 #: guix-git/doc/guix.texi:31174 guix-git/doc/guix.texi:31287
55424 #, no-wrap
55425 msgid "@code{systems} (default: @code{#f})"
55426 msgstr ""
55427
55428 #. type: table
55429 #: guix-git/doc/guix.texi:31177
55430 msgid "The systems for which this agent should fetch builds. The agent process will use the current system it's running on as the default."
55431 msgstr ""
55432
55433 #. type: item
55434 #: guix-git/doc/guix.texi:31178
55435 #, no-wrap
55436 msgid "@code{max-parallel-builds} (default: @code{1})"
55437 msgstr ""
55438
55439 #. type: table
55440 #: guix-git/doc/guix.texi:31180
55441 msgid "The number of builds to perform in parallel."
55442 msgstr ""
55443
55444 #. type: item
55445 #: guix-git/doc/guix.texi:31181
55446 #, no-wrap
55447 msgid "@code{derivation-substitute-urls} (default: @code{#f})"
55448 msgstr ""
55449
55450 #. type: table
55451 #: guix-git/doc/guix.texi:31184
55452 msgid "URLs from which to attempt to fetch substitutes for derivations, if the derivations aren't already available."
55453 msgstr ""
55454
55455 #. type: item
55456 #: guix-git/doc/guix.texi:31185
55457 #, no-wrap
55458 msgid "@code{non-derivation-substitute-urls} (default: @code{#f})"
55459 msgstr ""
55460
55461 #. type: table
55462 #: guix-git/doc/guix.texi:31188
55463 msgid "URLs from which to attempt to fetch substitutes for build inputs, if the input store items aren't already available."
55464 msgstr ""
55465
55466 #. type: deftp
55467 #: guix-git/doc/guix.texi:31192
55468 #, no-wrap
55469 msgid "{Data Type} guix-build-coordinator-agent-password-auth"
55470 msgstr ""
55471
55472 #. type: deftp
55473 #: guix-git/doc/guix.texi:31195
55474 msgid "Data type representing an agent authenticating with a coordinator via a UUID and password."
55475 msgstr ""
55476
55477 #. type: table
55478 #: guix-git/doc/guix.texi:31201 guix-git/doc/guix.texi:31217
55479 msgid "The UUID of the agent. This should be generated by the coordinator process, stored in the coordinator database, and used by the intended agent."
55480 msgstr ""
55481
55482 #. type: table
55483 #: guix-git/doc/guix.texi:31204
55484 msgid "The password to use when connecting to the coordinator."
55485 msgstr ""
55486
55487 #. type: deftp
55488 #: guix-git/doc/guix.texi:31208
55489 #, no-wrap
55490 msgid "{Data Type} guix-build-coordinator-agent-password-file-auth"
55491 msgstr ""
55492
55493 #. type: deftp
55494 #: guix-git/doc/guix.texi:31211
55495 msgid "Data type representing an agent authenticating with a coordinator via a UUID and password read from a file."
55496 msgstr ""
55497
55498 #. type: code{#1}
55499 #: guix-git/doc/guix.texi:31218
55500 #, no-wrap
55501 msgid "password-file"
55502 msgstr ""
55503
55504 #. type: table
55505 #: guix-git/doc/guix.texi:31221
55506 msgid "A file containing the password to use when connecting to the coordinator."
55507 msgstr ""
55508
55509 #. type: deftp
55510 #: guix-git/doc/guix.texi:31225
55511 #, no-wrap
55512 msgid "{Data Type} guix-build-coordinator-agent-dynamic-auth"
55513 msgstr ""
55514
55515 #. type: deftp
55516 #: guix-git/doc/guix.texi:31228
55517 msgid "Data type representing an agent authenticating with a coordinator via a dynamic auth token and agent name."
55518 msgstr ""
55519
55520 #. type: code{#1}
55521 #: guix-git/doc/guix.texi:31230 guix-git/doc/guix.texi:31247
55522 #, no-wrap
55523 msgid "agent-name"
55524 msgstr ""
55525
55526 #. type: table
55527 #: guix-git/doc/guix.texi:31234 guix-git/doc/guix.texi:31251
55528 msgid "Name of an agent, this is used to match up to an existing entry in the database if there is one. When no existing entry is found, a new entry is automatically added."
55529 msgstr ""
55530
55531 #. type: code{#1}
55532 #: guix-git/doc/guix.texi:31235
55533 #, no-wrap
55534 msgid "token"
55535 msgstr ""
55536
55537 #. type: table
55538 #: guix-git/doc/guix.texi:31238
55539 msgid "Dynamic auth token, this is created and stored in the coordinator database, and is used by the agent to authenticate."
55540 msgstr ""
55541
55542 #. type: deftp
55543 #: guix-git/doc/guix.texi:31242
55544 #, no-wrap
55545 msgid "{Data Type} guix-build-coordinator-agent-dynamic-auth-with-file"
55546 msgstr ""
55547
55548 #. type: deftp
55549 #: guix-git/doc/guix.texi:31245
55550 msgid "Data type representing an agent authenticating with a coordinator via a dynamic auth token read from a file and agent name."
55551 msgstr ""
55552
55553 #. type: code{#1}
55554 #: guix-git/doc/guix.texi:31252
55555 #, no-wrap
55556 msgid "token-file"
55557 msgstr ""
55558
55559 #. type: table
55560 #: guix-git/doc/guix.texi:31255
55561 msgid "File containing the dynamic auth token, this is created and stored in the coordinator database, and is used by the agent to authenticate."
55562 msgstr ""
55563
55564 #. type: Plain text
55565 #: guix-git/doc/guix.texi:31265
55566 msgid "The Guix Build Coordinator package contains a script to query an instance of the Guix Data Service for derivations to build, and then submit builds for those derivations to the coordinator. The service type below assists in running this script. This is an additional tool that may be useful when building derivations contained within an instance of the Guix Data Service."
55567 msgstr ""
55568
55569 #. type: defvar
55570 #: guix-git/doc/guix.texi:31266
55571 #, no-wrap
55572 msgid "{Scheme Variable} guix-build-coordinator-queue-builds-service-type"
55573 msgstr ""
55574
55575 #. type: defvar
55576 #: guix-git/doc/guix.texi:31271
55577 msgid "Service type for the guix-build-coordinator-queue-builds-from-guix-data-service script. Its value must be a @code{guix-build-coordinator-queue-builds-configuration} object."
55578 msgstr ""
55579
55580 #. type: deftp
55581 #: guix-git/doc/guix.texi:31273
55582 #, no-wrap
55583 msgid "{Data Type} guix-build-coordinator-queue-builds-configuration"
55584 msgstr ""
55585
55586 #. type: deftp
55587 #: guix-git/doc/guix.texi:31276
55588 msgid "Data type representing the options to the queue builds from guix data service script."
55589 msgstr ""
55590
55591 #. type: item
55592 #: guix-git/doc/guix.texi:31281
55593 #, no-wrap
55594 msgid "@code{user} (default: @code{\"guix-build-coordinator-queue-builds\"})"
55595 msgstr ""
55596
55597 #. type: table
55598 #: guix-git/doc/guix.texi:31289
55599 msgid "The systems for which to fetch derivations to build."
55600 msgstr ""
55601
55602 #. type: item
55603 #: guix-git/doc/guix.texi:31290
55604 #, no-wrap
55605 msgid "@code{systems-and-targets} (default: @code{#f})"
55606 msgstr ""
55607
55608 #. type: table
55609 #: guix-git/doc/guix.texi:31293
55610 msgid "An association list of system and target pairs for which to fetch derivations to build."
55611 msgstr ""
55612
55613 #. type: item
55614 #: guix-git/doc/guix.texi:31294
55615 #, no-wrap
55616 msgid "@code{guix-data-service} (default: @code{\"https://data.guix.gnu.org\"})"
55617 msgstr ""
55618
55619 #. type: table
55620 #: guix-git/doc/guix.texi:31297
55621 msgid "The Guix Data Service instance from which to query to find out about derivations to build."
55622 msgstr ""
55623
55624 #. type: item
55625 #: guix-git/doc/guix.texi:31298
55626 #, no-wrap
55627 msgid "@code{processed-commits-file} (default: @code{\"/var/cache/guix-build-coordinator-queue-builds/processed-commits\"})"
55628 msgstr ""
55629
55630 #. type: table
55631 #: guix-git/doc/guix.texi:31301
55632 msgid "A file to record which commits have been processed, to avoid needlessly processing them again if the service is restarted."
55633 msgstr ""
55634
55635 #. type: subsubheading
55636 #: guix-git/doc/guix.texi:31305
55637 #, no-wrap
55638 msgid "Guix Data Service"
55639 msgstr ""
55640
55641 #. type: Plain text
55642 #: guix-git/doc/guix.texi:31309
55643 msgid "The @uref{http://data.guix.gnu.org,Guix Data Service} processes, stores and provides data about GNU Guix. This includes information about packages, derivations and lint warnings."
55644 msgstr ""
55645
55646 #. type: Plain text
55647 #: guix-git/doc/guix.texi:31312
55648 msgid "The data is stored in a PostgreSQL database, and available through a web interface."
55649 msgstr ""
55650
55651 #. type: defvar
55652 #: guix-git/doc/guix.texi:31313
55653 #, no-wrap
55654 msgid "{Scheme Variable} guix-data-service-type"
55655 msgstr ""
55656
55657 #. type: defvar
55658 #: guix-git/doc/guix.texi:31318
55659 msgid "Service type for the Guix Data Service. Its value must be a @code{guix-data-service-configuration} object. The service optionally extends the getmail service, as the guix-commits mailing list is used to find out about changes in the Guix git repository."
55660 msgstr ""
55661
55662 #. type: deftp
55663 #: guix-git/doc/guix.texi:31320
55664 #, no-wrap
55665 msgid "{Data Type} guix-data-service-configuration"
55666 msgstr ""
55667
55668 #. type: deftp
55669 #: guix-git/doc/guix.texi:31322
55670 msgid "Data type representing the configuration of the Guix Data Service."
55671 msgstr ""
55672
55673 #. type: item
55674 #: guix-git/doc/guix.texi:31324
55675 #, no-wrap
55676 msgid "@code{package} (default: @code{guix-data-service})"
55677 msgstr ""
55678
55679 #. type: table
55680 #: guix-git/doc/guix.texi:31326
55681 msgid "The Guix Data Service package to use."
55682 msgstr ""
55683
55684 #. type: item
55685 #: guix-git/doc/guix.texi:31327
55686 #, no-wrap
55687 msgid "@code{user} (default: @code{\"guix-data-service\"})"
55688 msgstr ""
55689
55690 #. type: item
55691 #: guix-git/doc/guix.texi:31330
55692 #, no-wrap
55693 msgid "@code{group} (default: @code{\"guix-data-service\"})"
55694 msgstr ""
55695
55696 #. type: item
55697 #: guix-git/doc/guix.texi:31333
55698 #, no-wrap
55699 msgid "@code{port} (default: @code{8765})"
55700 msgstr ""
55701
55702 #. type: table
55703 #: guix-git/doc/guix.texi:31335
55704 msgid "The port to bind the web service to."
55705 msgstr ""
55706
55707 #. type: item
55708 #: guix-git/doc/guix.texi:31336
55709 #, no-wrap
55710 msgid "@code{host} (default: @code{\"127.0.0.1\"})"
55711 msgstr ""
55712
55713 #. type: table
55714 #: guix-git/doc/guix.texi:31338
55715 msgid "The host to bind the web service to."
55716 msgstr ""
55717
55718 #. type: item
55719 #: guix-git/doc/guix.texi:31339
55720 #, no-wrap
55721 msgid "@code{getmail-idle-mailboxes} (default: @code{#f})"
55722 msgstr ""
55723
55724 #. type: table
55725 #: guix-git/doc/guix.texi:31342
55726 msgid "If set, this is the list of mailboxes that the getmail service will be configured to listen to."
55727 msgstr ""
55728
55729 #. type: item
55730 #: guix-git/doc/guix.texi:31343
55731 #, no-wrap
55732 msgid "@code{commits-getmail-retriever-configuration} (default: @code{#f})"
55733 msgstr ""
55734
55735 #. type: table
55736 #: guix-git/doc/guix.texi:31347
55737 msgid "If set, this is the @code{getmail-retriever-configuration} object with which to configure getmail to fetch mail from the guix-commits mailing list."
55738 msgstr ""
55739
55740 #. type: item
55741 #: guix-git/doc/guix.texi:31348
55742 #, no-wrap
55743 msgid "@code{extra-options} (default: @var{'()})"
55744 msgstr ""
55745
55746 #. type: table
55747 #: guix-git/doc/guix.texi:31350
55748 msgid "Extra command line options for @code{guix-data-service}."
55749 msgstr ""
55750
55751 #. type: item
55752 #: guix-git/doc/guix.texi:31351
55753 #, no-wrap
55754 msgid "@code{extra-process-jobs-options} (default: @var{'()})"
55755 msgstr ""
55756
55757 #. type: table
55758 #: guix-git/doc/guix.texi:31353
55759 msgid "Extra command line options for @code{guix-data-service-process-jobs}."
55760 msgstr ""
55761
55762 #. type: cindex
55763 #: guix-git/doc/guix.texi:31360
55764 #, no-wrap
55765 msgid "oom"
55766 msgstr ""
55767
55768 #. type: cindex
55769 #: guix-git/doc/guix.texi:31361
55770 #, no-wrap
55771 msgid "out of memory killer"
55772 msgstr ""
55773
55774 #. type: cindex
55775 #: guix-git/doc/guix.texi:31362
55776 #, no-wrap
55777 msgid "earlyoom"
55778 msgstr ""
55779
55780 #. type: cindex
55781 #: guix-git/doc/guix.texi:31363
55782 #, no-wrap
55783 msgid "early out of memory daemon"
55784 msgstr ""
55785
55786 #. type: subsubheading
55787 #: guix-git/doc/guix.texi:31364
55788 #, no-wrap
55789 msgid "Early OOM Service"
55790 msgstr ""
55791
55792 #. type: Plain text
55793 #: guix-git/doc/guix.texi:31371
55794 msgid "@uref{https://github.com/rfjakob/earlyoom,Early OOM}, also known as Earlyoom, is a minimalist out of memory (OOM) daemon that runs in user space and provides a more responsive and configurable alternative to the in-kernel OOM killer. It is useful to prevent the system from becoming unresponsive when it runs out of memory."
55795 msgstr ""
55796
55797 #. type: deffn
55798 #: guix-git/doc/guix.texi:31372
55799 #, no-wrap
55800 msgid "{Scheme Variable} earlyoom-service-type"
55801 msgstr ""
55802
55803 #. type: deffn
55804 #: guix-git/doc/guix.texi:31377
55805 msgid "The service type for running @command{earlyoom}, the Early OOM daemon. Its value must be a @code{earlyoom-configuration} object, described below. The service can be instantiated in its default configuration with:"
55806 msgstr ""
55807
55808 #. type: lisp
55809 #: guix-git/doc/guix.texi:31380
55810 #, no-wrap
55811 msgid "(service earlyoom-service-type)\n"
55812 msgstr ""
55813
55814 #. type: deftp
55815 #: guix-git/doc/guix.texi:31383
55816 #, no-wrap
55817 msgid "{Data Type} earlyoom-configuration"
55818 msgstr ""
55819
55820 #. type: deftp
55821 #: guix-git/doc/guix.texi:31385
55822 msgid "This is the configuration record for the @code{earlyoom-service-type}."
55823 msgstr ""
55824
55825 #. type: item
55826 #: guix-git/doc/guix.texi:31387
55827 #, no-wrap
55828 msgid "@code{earlyoom} (default: @var{earlyoom})"
55829 msgstr ""
55830
55831 #. type: table
55832 #: guix-git/doc/guix.texi:31389
55833 msgid "The Earlyoom package to use."
55834 msgstr ""
55835
55836 #. type: item
55837 #: guix-git/doc/guix.texi:31390
55838 #, no-wrap
55839 msgid "@code{minimum-available-memory} (default: @code{10})"
55840 msgstr ""
55841
55842 #. type: table
55843 #: guix-git/doc/guix.texi:31392
55844 msgid "The threshold for the minimum @emph{available} memory, in percentages."
55845 msgstr ""
55846
55847 #. type: item
55848 #: guix-git/doc/guix.texi:31393
55849 #, no-wrap
55850 msgid "@code{minimum-free-swap} (default: @code{10})"
55851 msgstr ""
55852
55853 #. type: table
55854 #: guix-git/doc/guix.texi:31395
55855 msgid "The threshold for the minimum free swap memory, in percentages."
55856 msgstr ""
55857
55858 #. type: item
55859 #: guix-git/doc/guix.texi:31396
55860 #, no-wrap
55861 msgid "@code{prefer-regexp} (default: @code{#f})"
55862 msgstr ""
55863
55864 #. type: table
55865 #: guix-git/doc/guix.texi:31399
55866 msgid "A regular expression (as a string) to match the names of the processes that should be preferably killed."
55867 msgstr ""
55868
55869 #. type: item
55870 #: guix-git/doc/guix.texi:31400
55871 #, no-wrap
55872 msgid "@code{avoid-regexp} (default: @code{#f})"
55873 msgstr ""
55874
55875 #. type: table
55876 #: guix-git/doc/guix.texi:31403
55877 msgid "A regular expression (as a string) to match the names of the processes that should @emph{not} be killed."
55878 msgstr ""
55879
55880 #. type: item
55881 #: guix-git/doc/guix.texi:31404
55882 #, no-wrap
55883 msgid "@code{memory-report-interval} (default: @code{0})"
55884 msgstr ""
55885
55886 #. type: table
55887 #: guix-git/doc/guix.texi:31407
55888 msgid "The interval in seconds at which a memory report is printed. It is disabled by default."
55889 msgstr ""
55890
55891 #. type: item
55892 #: guix-git/doc/guix.texi:31408
55893 #, no-wrap
55894 msgid "@code{ignore-positive-oom-score-adj?} (default: @code{#f})"
55895 msgstr ""
55896
55897 #. type: table
55898 #: guix-git/doc/guix.texi:31411
55899 msgid "A boolean indicating whether the positive adjustments set in @file{/proc/*/oom_score_adj} should be ignored."
55900 msgstr ""
55901
55902 #. type: item
55903 #: guix-git/doc/guix.texi:31412
55904 #, no-wrap
55905 msgid "@code{show-debug-messages?} (default: @code{#f})"
55906 msgstr ""
55907
55908 #. type: table
55909 #: guix-git/doc/guix.texi:31415
55910 msgid "A boolean indicating whether debug messages should be printed. The logs are saved at @file{/var/log/earlyoom.log}."
55911 msgstr ""
55912
55913 #. type: item
55914 #: guix-git/doc/guix.texi:31416
55915 #, no-wrap
55916 msgid "@code{send-notification-command} (default: @code{#f})"
55917 msgstr ""
55918
55919 #. type: table
55920 #: guix-git/doc/guix.texi:31419
55921 msgid "This can be used to provide a custom command used for sending notifications."
55922 msgstr ""
55923
55924 #. type: cindex
55925 #: guix-git/doc/guix.texi:31422
55926 #, no-wrap
55927 msgid "modprobe"
55928 msgstr ""
55929
55930 #. type: cindex
55931 #: guix-git/doc/guix.texi:31423
55932 #, no-wrap
55933 msgid "kernel module loader"
55934 msgstr ""
55935
55936 #. type: subsubheading
55937 #: guix-git/doc/guix.texi:31424
55938 #, no-wrap
55939 msgid "Kernel Module Loader Service"
55940 msgstr ""
55941
55942 #. type: Plain text
55943 #: guix-git/doc/guix.texi:31430
55944 msgid "The kernel module loader service allows one to load loadable kernel modules at boot. This is especially useful for modules that don't autoload and need to be manually loaded, as it's the case with @code{ddcci}."
55945 msgstr ""
55946
55947 #. type: deffn
55948 #: guix-git/doc/guix.texi:31431
55949 #, no-wrap
55950 msgid "{Scheme Variable} kernel-module-loader-service-type"
55951 msgstr ""
55952
55953 #. type: deffn
55954 #: guix-git/doc/guix.texi:31437
55955 msgid "The service type for loading loadable kernel modules at boot with @command{modprobe}. Its value must be a list of strings representing module names. For example loading the drivers provided by @code{ddcci-driver-linux}, in debugging mode by passing some module parameters, can be done as follow:"
55956 msgstr ""
55957
55958 #. type: lisp
55959 #: guix-git/doc/guix.texi:31442
55960 #, no-wrap
55961 msgid ""
55962 "(use-modules (gnu) (gnu services))\n"
55963 "(use-package-modules linux)\n"
55964 "(use-service-modules linux)\n"
55965 "\n"
55966 msgstr ""
55967
55968 #. type: lisp
55969 #: guix-git/doc/guix.texi:31446
55970 #, no-wrap
55971 msgid ""
55972 "(define ddcci-config\n"
55973 " (plain-file \"ddcci.conf\"\n"
55974 " \"options ddcci dyndbg delay=120\"))\n"
55975 "\n"
55976 msgstr ""
55977
55978 #. type: lisp
55979 #: guix-git/doc/guix.texi:31456
55980 #, no-wrap
55981 msgid ""
55982 "(operating-system\n"
55983 " ...\n"
55984 " (services (cons* (service kernel-module-loader-service-type\n"
55985 " '(\"ddcci\" \"ddcci_backlight\"))\n"
55986 " (simple-service 'ddcci-config etc-service-type\n"
55987 " (list `(\"modprobe.d/ddcci.conf\"\n"
55988 " ,ddcci-config)))\n"
55989 " %base-services))\n"
55990 " (kernel-loadable-modules (list ddcci-driver-linux)))\n"
55991 msgstr ""
55992
55993 #. type: cindex
55994 #: guix-git/doc/guix.texi:31459
55995 #, no-wrap
55996 msgid "zram"
55997 msgstr ""
55998
55999 #. type: cindex
56000 #: guix-git/doc/guix.texi:31460
56001 #, no-wrap
56002 msgid "compressed swap"
56003 msgstr ""
56004
56005 #. type: cindex
56006 #: guix-git/doc/guix.texi:31461
56007 #, no-wrap
56008 msgid "Compressed RAM-based block devices"
56009 msgstr ""
56010
56011 #. type: subsubheading
56012 #: guix-git/doc/guix.texi:31462
56013 #, no-wrap
56014 msgid "Zram Device Service"
56015 msgstr ""
56016
56017 #. type: Plain text
56018 #: guix-git/doc/guix.texi:31468
56019 msgid "The Zram device service provides a compressed swap device in system memory. The Linux Kernel documentation has more information about @uref{https://www.kernel.org/doc/html/latest/admin-guide/blockdev/zram.html,zram} devices."
56020 msgstr ""
56021
56022 #. type: deffn
56023 #: guix-git/doc/guix.texi:31469
56024 #, no-wrap
56025 msgid "{Scheme Variable} zram-device-service-type"
56026 msgstr ""
56027
56028 #. type: deffn
56029 #: guix-git/doc/guix.texi:31473
56030 msgid "This service creates the zram block device, formats it as swap and enables it as a swap device. The service's value is a @code{zram-device-configuration} record."
56031 msgstr ""
56032
56033 #. type: deftp
56034 #: guix-git/doc/guix.texi:31474
56035 #, no-wrap
56036 msgid "{Data Type} zram-device-configuration"
56037 msgstr ""
56038
56039 #. type: deftp
56040 #: guix-git/doc/guix.texi:31477
56041 msgid "This is the data type representing the configuration for the zram-device service."
56042 msgstr ""
56043
56044 #. type: item
56045 #: guix-git/doc/guix.texi:31479
56046 #, no-wrap
56047 msgid "@code{size} (default @code{\"1G\"})"
56048 msgstr ""
56049
56050 #. type: table
56051 #: guix-git/doc/guix.texi:31483
56052 msgid "This is the amount of space you wish to provide for the zram device. It accepts a string and can be a number of bytes or use a suffix, eg.: @code{\"512M\"} or @code{1024000}."
56053 msgstr ""
56054
56055 #. type: item
56056 #: guix-git/doc/guix.texi:31483
56057 #, no-wrap
56058 msgid "@code{compression-algorithm} (default @code{'lzo})"
56059 msgstr ""
56060
56061 #. type: table
56062 #: guix-git/doc/guix.texi:31487
56063 msgid "This is the compression algorithm you wish to use. It is difficult to list all the possible compression options, but common ones supported by Guix's Linux Libre Kernel include @code{'lzo}, @code{'lz4} and @code{'zstd}."
56064 msgstr ""
56065
56066 #. type: item
56067 #: guix-git/doc/guix.texi:31487
56068 #, no-wrap
56069 msgid "@code{memory-limit} (default @code{0})"
56070 msgstr ""
56071
56072 #. type: table
56073 #: guix-git/doc/guix.texi:31494
56074 msgid "This is the maximum amount of memory which the zram device can use. Setting it to '0' disables the limit. While it is generally expected that compression will be 2:1, it is possible that uncompressable data can be written to swap and this is a method to limit how much memory can be used. It accepts a string and can be a number of bytes or use a suffix, eg.: @code{\"2G\"}."
56075 msgstr ""
56076
56077 #. type: item
56078 #: guix-git/doc/guix.texi:31494
56079 #, no-wrap
56080 msgid "@code{priority} (default @code{-1})"
56081 msgstr ""
56082
56083 #. type: table
56084 #: guix-git/doc/guix.texi:31499
56085 msgid "This is the priority of the swap device created from the zram device. @code{swapon} accepts values between -1 and 32767, with higher values indicating higher priority. Higher priority swap will generally be used first."
56086 msgstr ""
56087
56088 #. type: defvr
56089 #: guix-git/doc/guix.texi:31507
56090 #, no-wrap
56091 msgid "{Scheme Variable} hurd-console-service-type"
56092 msgstr ""
56093
56094 #. type: defvr
56095 #: guix-git/doc/guix.texi:31509
56096 msgid "This service starts the fancy @code{VGA} console client on the Hurd."
56097 msgstr ""
56098
56099 #. type: defvr
56100 #: guix-git/doc/guix.texi:31511
56101 msgid "The service's value is a @code{hurd-console-configuration} record."
56102 msgstr ""
56103
56104 #. type: deftp
56105 #: guix-git/doc/guix.texi:31513
56106 #, no-wrap
56107 msgid "{Data Type} hurd-console-configuration"
56108 msgstr ""
56109
56110 #. type: deftp
56111 #: guix-git/doc/guix.texi:31516
56112 msgid "This is the data type representing the configuration for the hurd-console-service."
56113 msgstr ""
56114
56115 #. type: item
56116 #: guix-git/doc/guix.texi:31518 guix-git/doc/guix.texi:31534
56117 #, no-wrap
56118 msgid "@code{hurd} (default: @var{hurd})"
56119 msgstr ""
56120
56121 #. type: table
56122 #: guix-git/doc/guix.texi:31520 guix-git/doc/guix.texi:31536
56123 msgid "The Hurd package to use."
56124 msgstr ""
56125
56126 #. type: defvr
56127 #: guix-git/doc/guix.texi:31523
56128 #, no-wrap
56129 msgid "{Scheme Variable} hurd-getty-service-type"
56130 msgstr ""
56131
56132 #. type: defvr
56133 #: guix-git/doc/guix.texi:31525
56134 msgid "This service starts a tty using the Hurd @code{getty} program."
56135 msgstr ""
56136
56137 #. type: defvr
56138 #: guix-git/doc/guix.texi:31527
56139 msgid "The service's value is a @code{hurd-getty-configuration} record."
56140 msgstr ""
56141
56142 #. type: deftp
56143 #: guix-git/doc/guix.texi:31529
56144 #, no-wrap
56145 msgid "{Data Type} hurd-getty-configuration"
56146 msgstr ""
56147
56148 #. type: deftp
56149 #: guix-git/doc/guix.texi:31532
56150 msgid "This is the data type representing the configuration for the hurd-getty-service."
56151 msgstr ""
56152
56153 #. type: table
56154 #: guix-git/doc/guix.texi:31539
56155 msgid "The name of the console this Getty runs on---e.g., @code{\"tty1\"}."
56156 msgstr ""
56157
56158 #. type: item
56159 #: guix-git/doc/guix.texi:31540
56160 #, no-wrap
56161 msgid "@code{baud-rate} (default: @code{38400})"
56162 msgstr ""
56163
56164 #. type: table
56165 #: guix-git/doc/guix.texi:31542
56166 msgid "An integer specifying the baud rate of the tty."
56167 msgstr ""
56168
56169 #. type: cindex
56170 #: guix-git/doc/guix.texi:31549
56171 #, no-wrap
56172 msgid "fingerprint"
56173 msgstr ""
56174
56175 #. type: subsubheading
56176 #: guix-git/doc/guix.texi:31550
56177 #, no-wrap
56178 msgid "Fingerprint Service"
56179 msgstr ""
56180
56181 #. type: Plain text
56182 #: guix-git/doc/guix.texi:31554
56183 msgid "The @code{(gnu services authentication)} module provides a DBus service to read and identify fingerprints via a fingerprint sensor."
56184 msgstr ""
56185
56186 #. type: defvr
56187 #: guix-git/doc/guix.texi:31555
56188 #, no-wrap
56189 msgid "{Scheme Variable} fprintd-service-type"
56190 msgstr ""
56191
56192 #. type: defvr
56193 #: guix-git/doc/guix.texi:31558
56194 msgid "The service type for @command{fprintd}, which provides the fingerprint reading capability."
56195 msgstr ""
56196
56197 #. type: lisp
56198 #: guix-git/doc/guix.texi:31561
56199 #, no-wrap
56200 msgid "(service fprintd-service-type)\n"
56201 msgstr ""
56202
56203 #. type: cindex
56204 #: guix-git/doc/guix.texi:31564
56205 #, no-wrap
56206 msgid "sysctl"
56207 msgstr ""
56208
56209 #. type: subsubheading
56210 #: guix-git/doc/guix.texi:31565
56211 #, no-wrap
56212 msgid "System Control Service"
56213 msgstr ""
56214
56215 #. type: Plain text
56216 #: guix-git/doc/guix.texi:31569
56217 msgid "The @code{(gnu services sysctl)} provides a service to configure kernel parameters at boot."
56218 msgstr ""
56219
56220 #. type: defvr
56221 #: guix-git/doc/guix.texi:31570
56222 #, no-wrap
56223 msgid "{Scheme Variable} sysctl-service-type"
56224 msgstr ""
56225
56226 #. type: defvr
56227 #: guix-git/doc/guix.texi:31574
56228 msgid "The service type for @command{sysctl}, which modifies kernel parameters under @file{/proc/sys/}. To enable IPv4 forwarding, it can be instantiated as:"
56229 msgstr ""
56230
56231 #. type: lisp
56232 #: guix-git/doc/guix.texi:31579
56233 #, no-wrap
56234 msgid ""
56235 "(service sysctl-service-type\n"
56236 " (sysctl-configuration\n"
56237 " (settings '((\"net.ipv4.ip_forward\" . \"1\")))))\n"
56238 msgstr ""
56239
56240 #. type: defvr
56241 #: guix-git/doc/guix.texi:31586
56242 msgid "Since @code{sysctl-service-type} is used in the default lists of services, @code{%base-services} and @code{%desktop-services}, you can use @code{modify-services} to change its configuration and add the kernel parameters that you want (@pxref{Service Reference, @code{modify-services}})."
56243 msgstr ""
56244
56245 #. type: lisp
56246 #: guix-git/doc/guix.texi:31593
56247 #, no-wrap
56248 msgid ""
56249 "(modify-services %base-services\n"
56250 " (sysctl-service-type config =>\n"
56251 " (sysctl-configuration\n"
56252 " (settings (append '((\"net.ipv4.ip_forward\" . \"1\"))\n"
56253 " %default-sysctl-settings)))))\n"
56254 msgstr ""
56255
56256 #. type: deftp
56257 #: guix-git/doc/guix.texi:31597
56258 #, no-wrap
56259 msgid "{Data Type} sysctl-configuration"
56260 msgstr ""
56261
56262 #. type: deftp
56263 #: guix-git/doc/guix.texi:31599
56264 msgid "The data type representing the configuration of @command{sysctl}."
56265 msgstr ""
56266
56267 #. type: item
56268 #: guix-git/doc/guix.texi:31601
56269 #, no-wrap
56270 msgid "@code{sysctl} (default: @code{(file-append procps \"/sbin/sysctl\"})"
56271 msgstr ""
56272
56273 #. type: table
56274 #: guix-git/doc/guix.texi:31603
56275 msgid "The @command{sysctl} executable to use."
56276 msgstr ""
56277
56278 #. type: item
56279 #: guix-git/doc/guix.texi:31604
56280 #, no-wrap
56281 msgid "@code{settings} (default: @code{%default-sysctl-settings})"
56282 msgstr ""
56283
56284 #. type: table
56285 #: guix-git/doc/guix.texi:31606
56286 msgid "An association list specifies kernel parameters and their values."
56287 msgstr ""
56288
56289 #. type: defvr
56290 #: guix-git/doc/guix.texi:31609
56291 #, no-wrap
56292 msgid "{Scheme Variable} %default-sysctl-settings"
56293 msgstr ""
56294
56295 #. type: defvr
56296 #: guix-git/doc/guix.texi:31612
56297 msgid "An association list specifying the default @command{sysctl} parameters on Guix System."
56298 msgstr ""
56299
56300 #. type: cindex
56301 #: guix-git/doc/guix.texi:31614
56302 #, no-wrap
56303 msgid "pcscd"
56304 msgstr ""
56305
56306 #. type: subsubheading
56307 #: guix-git/doc/guix.texi:31615
56308 #, no-wrap
56309 msgid "PC/SC Smart Card Daemon Service"
56310 msgstr ""
56311
56312 #. type: Plain text
56313 #: guix-git/doc/guix.texi:31622
56314 msgid "The @code{(gnu services security-token)} module provides the following service to run @command{pcscd}, the PC/SC Smart Card Daemon. @command{pcscd} is the daemon program for pcsc-lite and the MuscleCard framework. It is a resource manager that coordinates communications with smart card readers, smart cards and cryptographic tokens that are connected to the system."
56315 msgstr ""
56316
56317 #. type: defvr
56318 #: guix-git/doc/guix.texi:31623
56319 #, no-wrap
56320 msgid "{Scheme Variable} pcscd-service-type"
56321 msgstr ""
56322
56323 #. type: defvr
56324 #: guix-git/doc/guix.texi:31627
56325 msgid "Service type for the @command{pcscd} service. Its value must be a @code{pcscd-configuration} object. To run pcscd in the default configuration, instantiate it as:"
56326 msgstr ""
56327
56328 #. type: lisp
56329 #: guix-git/doc/guix.texi:31630
56330 #, no-wrap
56331 msgid "(service pcscd-service-type)\n"
56332 msgstr ""
56333
56334 #. type: deftp
56335 #: guix-git/doc/guix.texi:31633
56336 #, no-wrap
56337 msgid "{Data Type} pcscd-configuration"
56338 msgstr ""
56339
56340 #. type: deftp
56341 #: guix-git/doc/guix.texi:31635
56342 msgid "The data type representing the configuration of @command{pcscd}."
56343 msgstr ""
56344
56345 #. type: item
56346 #: guix-git/doc/guix.texi:31637
56347 #, no-wrap
56348 msgid "@code{pcsc-lite} (default: @code{pcsc-lite})"
56349 msgstr ""
56350
56351 #. type: table
56352 #: guix-git/doc/guix.texi:31639
56353 msgid "The pcsc-lite package that provides pcscd."
56354 msgstr ""
56355
56356 #. type: item
56357 #: guix-git/doc/guix.texi:31639
56358 #, no-wrap
56359 msgid "@code{usb-drivers} (default: @code{(list ccid)})"
56360 msgstr ""
56361
56362 #. type: table
56363 #: guix-git/doc/guix.texi:31642
56364 msgid "List of packages that provide USB drivers to pcscd. Drivers are expected to be under @file{pcsc/drivers} in the store directory of the package."
56365 msgstr ""
56366
56367 #. type: cindex
56368 #: guix-git/doc/guix.texi:31645
56369 #, no-wrap
56370 msgid "lirc"
56371 msgstr ""
56372
56373 #. type: subsubheading
56374 #: guix-git/doc/guix.texi:31646
56375 #, no-wrap
56376 msgid "Lirc Service"
56377 msgstr ""
56378
56379 #. type: Plain text
56380 #: guix-git/doc/guix.texi:31649
56381 msgid "The @code{(gnu services lirc)} module provides the following service."
56382 msgstr ""
56383
56384 #. type: deffn
56385 #: guix-git/doc/guix.texi:31650
56386 #, no-wrap
56387 msgid "{Scheme Procedure} lirc-service [#:lirc lirc] @"
56388 msgstr ""
56389
56390 #. type: deffn
56391 #: guix-git/doc/guix.texi:31655
56392 msgid "[#:device #f] [#:driver #f] [#:config-file #f] @ [#:extra-options '()] Return a service that runs @url{http://www.lirc.org,LIRC}, a daemon that decodes infrared signals from remote controls."
56393 msgstr ""
56394
56395 #. type: deffn
56396 #: guix-git/doc/guix.texi:31659
56397 msgid "Optionally, @var{device}, @var{driver} and @var{config-file} (configuration file name) may be specified. See @command{lircd} manual for details."
56398 msgstr ""
56399
56400 #. type: deffn
56401 #: guix-git/doc/guix.texi:31662
56402 msgid "Finally, @var{extra-options} is a list of additional command-line options passed to @command{lircd}."
56403 msgstr ""
56404
56405 #. type: cindex
56406 #: guix-git/doc/guix.texi:31664
56407 #, no-wrap
56408 msgid "spice"
56409 msgstr ""
56410
56411 #. type: subsubheading
56412 #: guix-git/doc/guix.texi:31665
56413 #, no-wrap
56414 msgid "Spice Service"
56415 msgstr ""
56416
56417 #. type: Plain text
56418 #: guix-git/doc/guix.texi:31668
56419 msgid "The @code{(gnu services spice)} module provides the following service."
56420 msgstr ""
56421
56422 #. type: deffn
56423 #: guix-git/doc/guix.texi:31669
56424 #, no-wrap
56425 msgid "{Scheme Procedure} spice-vdagent-service [#:spice-vdagent]"
56426 msgstr ""
56427
56428 #. type: deffn
56429 #: guix-git/doc/guix.texi:31673
56430 msgid "Returns a service that runs @url{https://www.spice-space.org,VDAGENT}, a daemon that enables sharing the clipboard with a vm and setting the guest display resolution when the graphical console window resizes."
56431 msgstr ""
56432
56433 #. type: cindex
56434 #: guix-git/doc/guix.texi:31675
56435 #, no-wrap
56436 msgid "inputattach"
56437 msgstr ""
56438
56439 #. type: subsubheading
56440 #: guix-git/doc/guix.texi:31676
56441 #, no-wrap
56442 msgid "inputattach Service"
56443 msgstr ""
56444
56445 #. type: cindex
56446 #: guix-git/doc/guix.texi:31678
56447 #, no-wrap
56448 msgid "tablet input, for Xorg"
56449 msgstr ""
56450
56451 #. type: cindex
56452 #: guix-git/doc/guix.texi:31679
56453 #, no-wrap
56454 msgid "touchscreen input, for Xorg"
56455 msgstr ""
56456
56457 #. type: Plain text
56458 #: guix-git/doc/guix.texi:31683
56459 msgid "The @uref{https://linuxwacom.github.io/, inputattach} service allows you to use input devices such as Wacom tablets, touchscreens, or joysticks with the Xorg display server."
56460 msgstr ""
56461
56462 #. type: deffn
56463 #: guix-git/doc/guix.texi:31684
56464 #, no-wrap
56465 msgid "{Scheme Variable} inputattach-service-type"
56466 msgstr ""
56467
56468 #. type: deffn
56469 #: guix-git/doc/guix.texi:31687
56470 msgid "Type of a service that runs @command{inputattach} on a device and dispatches events from it."
56471 msgstr ""
56472
56473 #. type: deftp
56474 #: guix-git/doc/guix.texi:31689
56475 #, no-wrap
56476 msgid "{Data Type} inputattach-configuration"
56477 msgstr ""
56478
56479 #. type: item
56480 #: guix-git/doc/guix.texi:31691
56481 #, no-wrap
56482 msgid "@code{device-type} (default: @code{\"wacom\"})"
56483 msgstr ""
56484
56485 #. type: table
56486 #: guix-git/doc/guix.texi:31694
56487 msgid "The type of device to connect to. Run @command{inputattach --help}, from the @code{inputattach} package, to see the list of supported device types."
56488 msgstr ""
56489
56490 #. type: item
56491 #: guix-git/doc/guix.texi:31695
56492 #, no-wrap
56493 msgid "@code{device} (default: @code{\"/dev/ttyS0\"})"
56494 msgstr ""
56495
56496 #. type: table
56497 #: guix-git/doc/guix.texi:31697
56498 msgid "The device file to connect to the device."
56499 msgstr ""
56500
56501 #. type: table
56502 #: guix-git/doc/guix.texi:31701
56503 msgid "Baud rate to use for the serial connection. Should be a number or @code{#f}."
56504 msgstr ""
56505
56506 #. type: item
56507 #: guix-git/doc/guix.texi:31702
56508 #, no-wrap
56509 msgid "@code{log-file} (default: @code{#f})"
56510 msgstr ""
56511
56512 #. type: table
56513 #: guix-git/doc/guix.texi:31704
56514 msgid "If true, this must be the name of a file to log messages to."
56515 msgstr ""
56516
56517 #. type: subsubheading
56518 #: guix-git/doc/guix.texi:31707
56519 #, no-wrap
56520 msgid "Dictionary Service"
56521 msgstr ""
56522
56523 #. type: cindex
56524 #: guix-git/doc/guix.texi:31708
56525 #, no-wrap
56526 msgid "dictionary"
56527 msgstr ""
56528
56529 #. type: Plain text
56530 #: guix-git/doc/guix.texi:31710
56531 msgid "The @code{(gnu services dict)} module provides the following service:"
56532 msgstr ""
56533
56534 #. type: defvr
56535 #: guix-git/doc/guix.texi:31711
56536 #, no-wrap
56537 msgid "{Scheme Variable} dicod-service-type"
56538 msgstr ""
56539
56540 #. type: defvr
56541 #: guix-git/doc/guix.texi:31714
56542 msgid "This is the type of the service that runs the @command{dicod} daemon, an implementation of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual})."
56543 msgstr ""
56544
56545 #. type: deffn
56546 #: guix-git/doc/guix.texi:31716
56547 #, no-wrap
56548 msgid "{Scheme Procedure} dicod-service [#:config (dicod-configuration)]"
56549 msgstr ""
56550
56551 #. type: deffn
56552 #: guix-git/doc/guix.texi:31719
56553 msgid "Return a service that runs the @command{dicod} daemon, an implementation of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual})."
56554 msgstr ""
56555
56556 #. type: deffn
56557 #: guix-git/doc/guix.texi:31723
56558 msgid "The optional @var{config} argument specifies the configuration for @command{dicod}, which should be a @code{<dicod-configuration>} object, by default it serves the GNU Collaborative International Dictionary of English."
56559 msgstr ""
56560
56561 #. type: deffn
56562 #: guix-git/doc/guix.texi:31727
56563 msgid "You can add @command{open localhost} to your @file{~/.dico} file to make @code{localhost} the default server for @command{dico} client (@pxref{Initialization File,,, dico, GNU Dico Manual})."
56564 msgstr ""
56565
56566 #. type: deftp
56567 #: guix-git/doc/guix.texi:31729
56568 #, no-wrap
56569 msgid "{Data Type} dicod-configuration"
56570 msgstr ""
56571
56572 #. type: deftp
56573 #: guix-git/doc/guix.texi:31731
56574 msgid "Data type representing the configuration of dicod."
56575 msgstr ""
56576
56577 #. type: item
56578 #: guix-git/doc/guix.texi:31733
56579 #, no-wrap
56580 msgid "@code{dico} (default: @var{dico})"
56581 msgstr ""
56582
56583 #. type: table
56584 #: guix-git/doc/guix.texi:31735
56585 msgid "Package object of the GNU Dico dictionary server."
56586 msgstr ""
56587
56588 #. type: item
56589 #: guix-git/doc/guix.texi:31736
56590 #, no-wrap
56591 msgid "@code{interfaces} (default: @var{'(\"localhost\")})"
56592 msgstr ""
56593
56594 #. type: table
56595 #: guix-git/doc/guix.texi:31740
56596 msgid "This is the list of IP addresses and ports and possibly socket file names to listen to (@pxref{Server Settings, @code{listen} directive,, dico, GNU Dico Manual})."
56597 msgstr ""
56598
56599 #. type: item
56600 #: guix-git/doc/guix.texi:31741
56601 #, no-wrap
56602 msgid "@code{handlers} (default: @var{'()})"
56603 msgstr ""
56604
56605 #. type: table
56606 #: guix-git/doc/guix.texi:31743
56607 msgid "List of @code{<dicod-handler>} objects denoting handlers (module instances)."
56608 msgstr ""
56609
56610 #. type: item
56611 #: guix-git/doc/guix.texi:31744
56612 #, no-wrap
56613 msgid "@code{databases} (default: @var{(list %dicod-database:gcide)})"
56614 msgstr ""
56615
56616 #. type: table
56617 #: guix-git/doc/guix.texi:31746
56618 msgid "List of @code{<dicod-database>} objects denoting dictionaries to be served."
56619 msgstr ""
56620
56621 #. type: deftp
56622 #: guix-git/doc/guix.texi:31749
56623 #, no-wrap
56624 msgid "{Data Type} dicod-handler"
56625 msgstr ""
56626
56627 #. type: deftp
56628 #: guix-git/doc/guix.texi:31751
56629 msgid "Data type representing a dictionary handler (module instance)."
56630 msgstr ""
56631
56632 #. type: table
56633 #: guix-git/doc/guix.texi:31755
56634 msgid "Name of the handler (module instance)."
56635 msgstr ""
56636
56637 #. type: item
56638 #: guix-git/doc/guix.texi:31756
56639 #, no-wrap
56640 msgid "@code{module} (default: @var{#f})"
56641 msgstr ""
56642
56643 #. type: table
56644 #: guix-git/doc/guix.texi:31760
56645 msgid "Name of the dicod module of the handler (instance). If it is @code{#f}, the module has the same name as the handler. (@pxref{Modules,,, dico, GNU Dico Manual})."
56646 msgstr ""
56647
56648 #. type: table
56649 #: guix-git/doc/guix.texi:31763
56650 msgid "List of strings or gexps representing the arguments for the module handler"
56651 msgstr ""
56652
56653 #. type: deftp
56654 #: guix-git/doc/guix.texi:31766
56655 #, no-wrap
56656 msgid "{Data Type} dicod-database"
56657 msgstr ""
56658
56659 #. type: deftp
56660 #: guix-git/doc/guix.texi:31768
56661 msgid "Data type representing a dictionary database."
56662 msgstr ""
56663
56664 #. type: table
56665 #: guix-git/doc/guix.texi:31772
56666 msgid "Name of the database, will be used in DICT commands."
56667 msgstr ""
56668
56669 #. type: code{#1}
56670 #: guix-git/doc/guix.texi:31773
56671 #, no-wrap
56672 msgid "handler"
56673 msgstr ""
56674
56675 #. type: table
56676 #: guix-git/doc/guix.texi:31776
56677 msgid "Name of the dicod handler (module instance) used by this database (@pxref{Handlers,,, dico, GNU Dico Manual})."
56678 msgstr ""
56679
56680 #. type: item
56681 #: guix-git/doc/guix.texi:31777
56682 #, no-wrap
56683 msgid "@code{complex?} (default: @var{#f})"
56684 msgstr ""
56685
56686 #. type: table
56687 #: guix-git/doc/guix.texi:31780
56688 msgid "Whether the database configuration complex. The complex configuration will need a corresponding @code{<dicod-handler>} object, otherwise not."
56689 msgstr ""
56690
56691 #. type: table
56692 #: guix-git/doc/guix.texi:31784
56693 msgid "List of strings or gexps representing the arguments for the database (@pxref{Databases,,, dico, GNU Dico Manual})."
56694 msgstr ""
56695
56696 #. type: defvr
56697 #: guix-git/doc/guix.texi:31787
56698 #, no-wrap
56699 msgid "{Scheme Variable} %dicod-database:gcide"
56700 msgstr ""
56701
56702 #. type: defvr
56703 #: guix-git/doc/guix.texi:31790
56704 msgid "A @code{<dicod-database>} object serving the GNU Collaborative International Dictionary of English using the @code{gcide} package."
56705 msgstr ""
56706
56707 #. type: Plain text
56708 #: guix-git/doc/guix.texi:31793
56709 msgid "The following is an example @code{dicod-service} configuration."
56710 msgstr ""
56711
56712 #. type: lisp
56713 #: guix-git/doc/guix.texi:31808
56714 #, no-wrap
56715 msgid ""
56716 "(dicod-service #:config\n"
56717 " (dicod-configuration\n"
56718 " (handlers (list (dicod-handler\n"
56719 " (name \"wordnet\")\n"
56720 " (module \"dictorg\")\n"
56721 " (options\n"
56722 " (list #~(string-append \"dbdir=\" #$wordnet))))))\n"
56723 " (databases (list (dicod-database\n"
56724 " (name \"wordnet\")\n"
56725 " (complex? #t)\n"
56726 " (handler \"wordnet\")\n"
56727 " (options '(\"database=wn\")))\n"
56728 " %dicod-database:gcide))))\n"
56729 msgstr ""
56730
56731 #. type: cindex
56732 #: guix-git/doc/guix.texi:31810
56733 #, no-wrap
56734 msgid "Docker"
56735 msgstr ""
56736
56737 #. type: subsubheading
56738 #: guix-git/doc/guix.texi:31811
56739 #, no-wrap
56740 msgid "Docker Service"
56741 msgstr ""
56742
56743 #. type: Plain text
56744 #: guix-git/doc/guix.texi:31814
56745 msgid "The @code{(gnu services docker)} module provides the following services."
56746 msgstr ""
56747
56748 #. type: defvr
56749 #: guix-git/doc/guix.texi:31815
56750 #, no-wrap
56751 msgid "{Scheme Variable} docker-service-type"
56752 msgstr ""
56753
56754 #. type: defvr
56755 #: guix-git/doc/guix.texi:31820
56756 msgid "This is the type of the service that runs @url{https://www.docker.com,Docker}, a daemon that can execute application bundles (sometimes referred to as ``containers'') in isolated environments."
56757 msgstr ""
56758
56759 #. type: deftp
56760 #: guix-git/doc/guix.texi:31823
56761 #, no-wrap
56762 msgid "{Data Type} docker-configuration"
56763 msgstr ""
56764
56765 #. type: deftp
56766 #: guix-git/doc/guix.texi:31825
56767 msgid "This is the data type representing the configuration of Docker and Containerd."
56768 msgstr ""
56769
56770 #. type: item
56771 #: guix-git/doc/guix.texi:31828
56772 #, no-wrap
56773 msgid "@code{package} (default: @code{docker})"
56774 msgstr ""
56775
56776 #. type: table
56777 #: guix-git/doc/guix.texi:31830
56778 msgid "The Docker daemon package to use."
56779 msgstr ""
56780
56781 #. type: item
56782 #: guix-git/doc/guix.texi:31831
56783 #, no-wrap
56784 msgid "@code{package} (default: @code{docker-cli})"
56785 msgstr ""
56786
56787 #. type: table
56788 #: guix-git/doc/guix.texi:31833
56789 msgid "The Docker client package to use."
56790 msgstr ""
56791
56792 #. type: item
56793 #: guix-git/doc/guix.texi:31834
56794 #, no-wrap
56795 msgid "@code{containerd} (default: @var{containerd})"
56796 msgstr ""
56797
56798 #. type: table
56799 #: guix-git/doc/guix.texi:31836
56800 msgid "The Containerd package to use."
56801 msgstr ""
56802
56803 #. type: item
56804 #: guix-git/doc/guix.texi:31837
56805 #, no-wrap
56806 msgid "@code{proxy} (default @var{docker-libnetwork-cmd-proxy})"
56807 msgstr ""
56808
56809 #. type: table
56810 #: guix-git/doc/guix.texi:31839
56811 msgid "The Docker user-land networking proxy package to use."
56812 msgstr ""
56813
56814 #. type: item
56815 #: guix-git/doc/guix.texi:31840
56816 #, no-wrap
56817 msgid "@code{enable-proxy?} (default @code{#t})"
56818 msgstr ""
56819
56820 #. type: table
56821 #: guix-git/doc/guix.texi:31842
56822 msgid "Enable or disable the use of the Docker user-land networking proxy."
56823 msgstr ""
56824
56825 #. type: item
56826 #: guix-git/doc/guix.texi:31843
56827 #, no-wrap
56828 msgid "@code{debug?} (default @code{#f})"
56829 msgstr ""
56830
56831 #. type: table
56832 #: guix-git/doc/guix.texi:31845
56833 msgid "Enable or disable debug output."
56834 msgstr ""
56835
56836 #. type: item
56837 #: guix-git/doc/guix.texi:31846
56838 #, no-wrap
56839 msgid "@code{enable-iptables?} (default @code{#t})"
56840 msgstr ""
56841
56842 #. type: table
56843 #: guix-git/doc/guix.texi:31848
56844 msgid "Enable or disable the addition of iptables rules."
56845 msgstr ""
56846
56847 #. type: cindex
56848 #: guix-git/doc/guix.texi:31852
56849 #, no-wrap
56850 msgid "Singularity, container service"
56851 msgstr ""
56852
56853 #. type: defvr
56854 #: guix-git/doc/guix.texi:31853
56855 #, no-wrap
56856 msgid "{Scheme Variable} singularity-service-type"
56857 msgstr ""
56858
56859 #. type: defvr
56860 #: guix-git/doc/guix.texi:31858
56861 msgid "This is the type of the service that allows you to run @url{https://www.sylabs.io/singularity/, Singularity}, a Docker-style tool to create and run application bundles (aka. ``containers''). The value for this service is the Singularity package to use."
56862 msgstr ""
56863
56864 #. type: defvr
56865 #: guix-git/doc/guix.texi:31862
56866 msgid "The service does not install a daemon; instead, it installs helper programs as setuid-root (@pxref{Setuid Programs}) such that unprivileged users can invoke @command{singularity run} and similar commands."
56867 msgstr ""
56868
56869 #. type: cindex
56870 #: guix-git/doc/guix.texi:31864
56871 #, no-wrap
56872 msgid "Audit"
56873 msgstr ""
56874
56875 #. type: subsubheading
56876 #: guix-git/doc/guix.texi:31865
56877 #, no-wrap
56878 msgid "Auditd Service"
56879 msgstr ""
56880
56881 #. type: Plain text
56882 #: guix-git/doc/guix.texi:31868
56883 msgid "The @code{(gnu services auditd)} module provides the following service."
56884 msgstr ""
56885
56886 #. type: defvr
56887 #: guix-git/doc/guix.texi:31869
56888 #, no-wrap
56889 msgid "{Scheme Variable} auditd-service-type"
56890 msgstr ""
56891
56892 #. type: defvr
56893 #: guix-git/doc/guix.texi:31874
56894 msgid "This is the type of the service that runs @url{https://people.redhat.com/sgrubb/audit/,auditd}, a daemon that tracks security-relevant information on your system."
56895 msgstr ""
56896
56897 #. type: defvr
56898 #: guix-git/doc/guix.texi:31876
56899 msgid "Examples of things that can be tracked:"
56900 msgstr ""
56901
56902 #. type: enumerate
56903 #: guix-git/doc/guix.texi:31880
56904 msgid "File accesses"
56905 msgstr ""
56906
56907 #. type: enumerate
56908 #: guix-git/doc/guix.texi:31882
56909 msgid "System calls"
56910 msgstr ""
56911
56912 #. type: enumerate
56913 #: guix-git/doc/guix.texi:31884
56914 msgid "Invoked commands"
56915 msgstr ""
56916
56917 #. type: enumerate
56918 #: guix-git/doc/guix.texi:31886
56919 msgid "Failed login attempts"
56920 msgstr ""
56921
56922 #. type: enumerate
56923 #: guix-git/doc/guix.texi:31888
56924 msgid "Firewall filtering"
56925 msgstr ""
56926
56927 #. type: enumerate
56928 #: guix-git/doc/guix.texi:31890
56929 msgid "Network access"
56930 msgstr ""
56931
56932 #. type: defvr
56933 #: guix-git/doc/guix.texi:31901
56934 msgid "@command{auditctl} from the @code{audit} package can be used in order to add or remove events to be tracked (until the next reboot). In order to permanently track events, put the command line arguments of auditctl into a file called @code{audit.rules} in the configuration directory (see below). @command{aureport} from the @code{audit} package can be used in order to view a report of all recorded events. The audit daemon by default logs into the file @file{/var/log/audit.log}."
56935 msgstr ""
56936
56937 #. type: deftp
56938 #: guix-git/doc/guix.texi:31904
56939 #, no-wrap
56940 msgid "{Data Type} auditd-configuration"
56941 msgstr ""
56942
56943 #. type: deftp
56944 #: guix-git/doc/guix.texi:31906
56945 msgid "This is the data type representing the configuration of auditd."
56946 msgstr ""
56947
56948 #. type: item
56949 #: guix-git/doc/guix.texi:31909
56950 #, no-wrap
56951 msgid "@code{audit} (default: @code{audit})"
56952 msgstr ""
56953
56954 #. type: table
56955 #: guix-git/doc/guix.texi:31911
56956 msgid "The audit package to use."
56957 msgstr ""
56958
56959 #. type: item
56960 #: guix-git/doc/guix.texi:31912
56961 #, no-wrap
56962 msgid "@code{configuration-directory} (default: @code{%default-auditd-configuration-directory})"
56963 msgstr ""
56964
56965 #. type: table
56966 #: guix-git/doc/guix.texi:31916
56967 msgid "The directory containing the configuration file for the audit package, which must be named @code{auditd.conf}, and optionally some audit rules to instantiate on startup."
56968 msgstr ""
56969
56970 #. type: cindex
56971 #: guix-git/doc/guix.texi:31920
56972 #, no-wrap
56973 msgid "rshiny"
56974 msgstr ""
56975
56976 #. type: subsubheading
56977 #: guix-git/doc/guix.texi:31921
56978 #, no-wrap
56979 msgid "R-Shiny service"
56980 msgstr ""
56981
56982 #. type: Plain text
56983 #: guix-git/doc/guix.texi:31924
56984 msgid "The @code{(gnu services science)} module provides the following service."
56985 msgstr ""
56986
56987 #. type: defvr
56988 #: guix-git/doc/guix.texi:31925
56989 #, no-wrap
56990 msgid "{Scheme Variable} rshiny-service-type"
56991 msgstr ""
56992
56993 #. type: defvr
56994 #: guix-git/doc/guix.texi:31930
56995 msgid "This is a type of service which is used to run a webapp created with @code{r-shiny}. This service sets the @env{R_LIBS_USER} environment variable and runs the provided script to call @code{runApp}."
56996 msgstr ""
56997
56998 #. type: deftp
56999 #: guix-git/doc/guix.texi:31931
57000 #, no-wrap
57001 msgid "{Data Type} rshiny-configuration"
57002 msgstr ""
57003
57004 #. type: deftp
57005 #: guix-git/doc/guix.texi:31933
57006 msgid "This is the data type representing the configuration of rshiny."
57007 msgstr ""
57008
57009 #. type: item
57010 #: guix-git/doc/guix.texi:31936
57011 #, no-wrap
57012 msgid "@code{package} (default: @code{r-shiny})"
57013 msgstr ""
57014
57015 #. type: table
57016 #: guix-git/doc/guix.texi:31938
57017 msgid "The package to use."
57018 msgstr ""
57019
57020 #. type: item
57021 #: guix-git/doc/guix.texi:31939
57022 #, no-wrap
57023 msgid "@code{binary} (defaunlt @code{\"rshiny\"})"
57024 msgstr ""
57025
57026 #. type: table
57027 #: guix-git/doc/guix.texi:31942
57028 msgid "The name of the binary or shell script located at @code{package/bin/} to run when the service is run."
57029 msgstr ""
57030
57031 #. type: table
57032 #: guix-git/doc/guix.texi:31944
57033 msgid "The common way to create this file is as follows:"
57034 msgstr ""
57035
57036 #. type: lisp
57037 #: guix-git/doc/guix.texi:31962
57038 #, no-wrap
57039 msgid ""
57040 "@dots{}\n"
57041 "(let* ((out (assoc-ref %outputs \"out\"))\n"
57042 " (targetdir (string-append out \"/share/\" ,name))\n"
57043 " (app (string-append out \"/bin/\" ,name))\n"
57044 " (Rbin (string-append (assoc-ref %build-inputs \"r-min\")\n"
57045 " \"/bin/Rscript\")))\n"
57046 " ;; @dots{}\n"
57047 " (mkdir-p (string-append out \"/bin\"))\n"
57048 " (call-with-output-file app\n"
57049 " (lambda (port)\n"
57050 " (format port\n"
57051 "\"#!~a\n"
57052 "library(shiny)\n"
57053 "setwd(\\\"~a\\\")\n"
57054 "runApp(launch.browser=0, port=4202)~%\\n\"\n"
57055 " Rbin targetdir))))\n"
57056 msgstr ""
57057
57058 #. type: cindex
57059 #: guix-git/doc/guix.texi:31968
57060 #, no-wrap
57061 msgid "Nix"
57062 msgstr ""
57063
57064 #. type: subsubheading
57065 #: guix-git/doc/guix.texi:31969
57066 #, no-wrap
57067 msgid "Nix service"
57068 msgstr ""
57069
57070 #. type: Plain text
57071 #: guix-git/doc/guix.texi:31972
57072 msgid "The @code{(gnu services nix)} module provides the following service."
57073 msgstr ""
57074
57075 #. type: defvr
57076 #: guix-git/doc/guix.texi:31973
57077 #, no-wrap
57078 msgid "{Scheme Variable} nix-service-type"
57079 msgstr ""
57080
57081 #. type: defvr
57082 #: guix-git/doc/guix.texi:31978
57083 msgid "This is the type of the service that runs build daemon of the @url{https://nixos.org/nix/, Nix} package manager. Here is an example showing how to use it:"
57084 msgstr ""
57085
57086 #. type: lisp
57087 #: guix-git/doc/guix.texi:31983
57088 #, no-wrap
57089 msgid ""
57090 "(use-modules (gnu))\n"
57091 "(use-service-modules nix)\n"
57092 "(use-package-modules package-management)\n"
57093 "\n"
57094 msgstr ""
57095
57096 #. type: lisp
57097 #: guix-git/doc/guix.texi:31988
57098 #, no-wrap
57099 msgid ""
57100 "(operating-system\n"
57101 " ;; @dots{}\n"
57102 " (packages (append (list nix)\n"
57103 " %base-packages))\n"
57104 "\n"
57105 msgstr ""
57106
57107 #. type: lisp
57108 #: guix-git/doc/guix.texi:31991
57109 #, no-wrap
57110 msgid ""
57111 " (services (append (list (service nix-service-type))\n"
57112 " %base-services)))\n"
57113 msgstr ""
57114
57115 #. type: defvr
57116 #: guix-git/doc/guix.texi:31994
57117 msgid "After @command{guix system reconfigure} configure Nix for your user:"
57118 msgstr ""
57119
57120 #. type: item
57121 #: guix-git/doc/guix.texi:31996
57122 #, no-wrap
57123 msgid "Add a Nix channel and update it. See"
57124 msgstr ""
57125
57126 #. type: itemize
57127 #: guix-git/doc/guix.texi:31998
57128 msgid "@url{https://nixos.org/nix/manual/, Nix Package Manager Guide}."
57129 msgstr ""
57130
57131 #. type: item
57132 #: guix-git/doc/guix.texi:31999
57133 #, no-wrap
57134 msgid "Create a symlink to your profile and activate Nix profile:"
57135 msgstr ""
57136
57137 #. type: example
57138 #: guix-git/doc/guix.texi:32005
57139 #, no-wrap
57140 msgid ""
57141 "$ ln -s \"/nix/var/nix/profiles/per-user/$USER/profile\" ~/.nix-profile\n"
57142 "$ source /run/current-system/profile/etc/profile.d/nix.sh\n"
57143 msgstr ""
57144
57145 #. type: deftp
57146 #: guix-git/doc/guix.texi:32009
57147 #, no-wrap
57148 msgid "{Data Type} nix-configuration"
57149 msgstr ""
57150
57151 #. type: deftp
57152 #: guix-git/doc/guix.texi:32011
57153 msgid "This data type represents the configuration of the Nix daemon."
57154 msgstr ""
57155
57156 #. type: item
57157 #: guix-git/doc/guix.texi:32013
57158 #, no-wrap
57159 msgid "@code{nix} (default: @code{nix})"
57160 msgstr ""
57161
57162 #. type: table
57163 #: guix-git/doc/guix.texi:32015
57164 msgid "The Nix package to use."
57165 msgstr ""
57166
57167 #. type: item
57168 #: guix-git/doc/guix.texi:32016
57169 #, no-wrap
57170 msgid "@code{sandbox} (default: @code{#t})"
57171 msgstr ""
57172
57173 #. type: table
57174 #: guix-git/doc/guix.texi:32018
57175 msgid "Specifies whether builds are sandboxed by default."
57176 msgstr ""
57177
57178 #. type: item
57179 #: guix-git/doc/guix.texi:32019
57180 #, no-wrap
57181 msgid "@code{build-sandbox-items} (default: @code{'()})"
57182 msgstr ""
57183
57184 #. type: table
57185 #: guix-git/doc/guix.texi:32022
57186 msgid "This is a list of strings or objects appended to the @code{build-sandbox-items} field of the configuration file."
57187 msgstr ""
57188
57189 #. type: table
57190 #: guix-git/doc/guix.texi:32030
57191 msgid "Extra command line options for @code{nix-service-type}."
57192 msgstr ""
57193
57194 #. type: cindex
57195 #: guix-git/doc/guix.texi:32036
57196 #, no-wrap
57197 msgid "setuid programs"
57198 msgstr ""
57199
57200 #. type: Plain text
57201 #: guix-git/doc/guix.texi:32046
57202 msgid "Some programs need to run with ``root'' privileges, even when they are launched by unprivileged users. A notorious example is the @command{passwd} program, which users can run to change their password, and which needs to access the @file{/etc/passwd} and @file{/etc/shadow} files---something normally restricted to root, for obvious security reasons. To address that, these executables are @dfn{setuid-root}, meaning that they always run with root privileges (@pxref{How Change Persona,,, libc, The GNU C Library Reference Manual}, for more info about the setuid mechanism)."
57203 msgstr ""
57204
57205 #. type: Plain text
57206 #: guix-git/doc/guix.texi:32053
57207 msgid "The store itself @emph{cannot} contain setuid programs: that would be a security issue since any user on the system can write derivations that populate the store (@pxref{The Store}). Thus, a different mechanism is used: instead of changing the setuid bit directly on files that are in the store, we let the system administrator @emph{declare} which programs should be setuid root."
57208 msgstr ""
57209
57210 #. type: Plain text
57211 #: guix-git/doc/guix.texi:32059
57212 msgid "The @code{setuid-programs} field of an @code{operating-system} declaration contains a list of G-expressions denoting the names of programs to be setuid-root (@pxref{Using the Configuration System}). For instance, the @command{passwd} program, which is part of the Shadow package, can be designated by this G-expression (@pxref{G-Expressions}):"
57213 msgstr ""
57214
57215 #. type: example
57216 #: guix-git/doc/guix.texi:32062
57217 #, no-wrap
57218 msgid "#~(string-append #$shadow \"/bin/passwd\")\n"
57219 msgstr ""
57220
57221 #. type: Plain text
57222 #: guix-git/doc/guix.texi:32066
57223 msgid "A default set of setuid programs is defined by the @code{%setuid-programs} variable of the @code{(gnu system)} module."
57224 msgstr ""
57225
57226 #. type: defvr
57227 #: guix-git/doc/guix.texi:32067
57228 #, no-wrap
57229 msgid "{Scheme Variable} %setuid-programs"
57230 msgstr ""
57231
57232 #. type: defvr
57233 #: guix-git/doc/guix.texi:32069
57234 msgid "A list of G-expressions denoting common programs that are setuid-root."
57235 msgstr ""
57236
57237 #. type: defvr
57238 #: guix-git/doc/guix.texi:32072
57239 msgid "The list includes commands such as @command{passwd}, @command{ping}, @command{su}, and @command{sudo}."
57240 msgstr ""
57241
57242 #. type: Plain text
57243 #: guix-git/doc/guix.texi:32078
57244 msgid "Under the hood, the actual setuid programs are created in the @file{/run/setuid-programs} directory at system activation time. The files in this directory refer to the ``real'' binaries, which are in the store."
57245 msgstr ""
57246
57247 #. type: cindex
57248 #: guix-git/doc/guix.texi:32082
57249 #, no-wrap
57250 msgid "HTTPS, certificates"
57251 msgstr ""
57252
57253 #. type: cindex
57254 #: guix-git/doc/guix.texi:32083
57255 #, no-wrap
57256 msgid "X.509 certificates"
57257 msgstr ""
57258
57259 #. type: cindex
57260 #: guix-git/doc/guix.texi:32084
57261 #, no-wrap
57262 msgid "TLS"
57263 msgstr ""
57264
57265 #. type: Plain text
57266 #: guix-git/doc/guix.texi:32091
57267 msgid "Web servers available over HTTPS (that is, HTTP over the transport-layer security mechanism, TLS) send client programs an @dfn{X.509 certificate} that the client can then use to @emph{authenticate} the server. To do that, clients verify that the server's certificate is signed by a so-called @dfn{certificate authority} (CA). But to verify the CA's signature, clients must have first acquired the CA's certificate."
57268 msgstr ""
57269
57270 #. type: Plain text
57271 #: guix-git/doc/guix.texi:32095
57272 msgid "Web browsers such as GNU@tie{}IceCat include their own set of CA certificates, such that they are able to verify CA signatures out-of-the-box."
57273 msgstr ""
57274
57275 #. type: Plain text
57276 #: guix-git/doc/guix.texi:32099
57277 msgid "However, most other programs that can talk HTTPS---@command{wget}, @command{git}, @command{w3m}, etc.---need to be told where CA certificates can be found."
57278 msgstr ""
57279
57280 #. type: Plain text
57281 #: guix-git/doc/guix.texi:32106
57282 msgid "In Guix, this is done by adding a package that provides certificates to the @code{packages} field of the @code{operating-system} declaration (@pxref{operating-system Reference}). Guix includes one such package, @code{nss-certs}, which is a set of CA certificates provided as part of Mozilla's Network Security Services."
57283 msgstr ""
57284
57285 #. type: Plain text
57286 #: guix-git/doc/guix.texi:32111
57287 msgid "Note that it is @emph{not} part of @code{%base-packages}, so you need to explicitly add it. The @file{/etc/ssl/certs} directory, which is where most applications and libraries look for certificates by default, points to the certificates installed globally."
57288 msgstr ""
57289
57290 #. type: Plain text
57291 #: guix-git/doc/guix.texi:32121
57292 msgid "Unprivileged users, including users of Guix on a foreign distro, can also install their own certificate package in their profile. A number of environment variables need to be defined so that applications and libraries know where to find them. Namely, the OpenSSL library honors the @env{SSL_CERT_DIR} and @env{SSL_CERT_FILE} variables. Some applications add their own environment variables; for instance, the Git version control system honors the certificate bundle pointed to by the @env{GIT_SSL_CAINFO} environment variable. Thus, you would typically run something like:"
57293 msgstr ""
57294
57295 #. type: example
57296 #: guix-git/doc/guix.texi:32127
57297 #, no-wrap
57298 msgid ""
57299 "guix install nss-certs\n"
57300 "export SSL_CERT_DIR=\"$HOME/.guix-profile/etc/ssl/certs\"\n"
57301 "export SSL_CERT_FILE=\"$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt\"\n"
57302 "export GIT_SSL_CAINFO=\"$SSL_CERT_FILE\"\n"
57303 msgstr ""
57304
57305 #. type: Plain text
57306 #: guix-git/doc/guix.texi:32132
57307 msgid "As another example, R requires the @env{CURL_CA_BUNDLE} environment variable to point to a certificate bundle, so you would have to run something like this:"
57308 msgstr ""
57309
57310 #. type: example
57311 #: guix-git/doc/guix.texi:32136
57312 #, no-wrap
57313 msgid ""
57314 "guix install nss-certs\n"
57315 "export CURL_CA_BUNDLE=\"$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt\"\n"
57316 msgstr ""
57317
57318 #. type: Plain text
57319 #: guix-git/doc/guix.texi:32140
57320 msgid "For other applications you may want to look up the required environment variable in the relevant documentation."
57321 msgstr ""
57322
57323 #. type: cindex
57324 #: guix-git/doc/guix.texi:32145
57325 #, no-wrap
57326 msgid "name service switch"
57327 msgstr ""
57328
57329 #. type: cindex
57330 #: guix-git/doc/guix.texi:32146
57331 #, no-wrap
57332 msgid "NSS"
57333 msgstr ""
57334
57335 #. type: Plain text
57336 #: guix-git/doc/guix.texi:32155
57337 msgid "The @code{(gnu system nss)} module provides bindings to the configuration file of the libc @dfn{name service switch} or @dfn{NSS} (@pxref{NSS Configuration File,,, libc, The GNU C Library Reference Manual}). In a nutshell, the NSS is a mechanism that allows libc to be extended with new ``name'' lookup methods for system databases, which includes host names, service names, user accounts, and more (@pxref{Name Service Switch, System Databases and Name Service Switch,, libc, The GNU C Library Reference Manual})."
57338 msgstr ""
57339
57340 #. type: Plain text
57341 #: guix-git/doc/guix.texi:32162
57342 msgid "The NSS configuration specifies, for each system database, which lookup method is to be used, and how the various methods are chained together---for instance, under which circumstances NSS should try the next method in the list. The NSS configuration is given in the @code{name-service-switch} field of @code{operating-system} declarations (@pxref{operating-system Reference, @code{name-service-switch}})."
57343 msgstr ""
57344
57345 #. type: cindex
57346 #: guix-git/doc/guix.texi:32163
57347 #, no-wrap
57348 msgid "nss-mdns"
57349 msgstr ""
57350
57351 #. type: cindex
57352 #: guix-git/doc/guix.texi:32164
57353 #, no-wrap
57354 msgid ".local, host name lookup"
57355 msgstr ""
57356
57357 #. type: Plain text
57358 #: guix-git/doc/guix.texi:32169
57359 msgid "As an example, the declaration below configures the NSS to use the @uref{https://0pointer.de/lennart/projects/nss-mdns/, @code{nss-mdns} back-end}, which supports host name lookups over multicast DNS (mDNS) for host names ending in @code{.local}:"
57360 msgstr ""
57361
57362 #. type: lisp
57363 #: guix-git/doc/guix.texi:32173
57364 #, no-wrap
57365 msgid ""
57366 "(name-service-switch\n"
57367 " (hosts (list %files ;first, check /etc/hosts\n"
57368 "\n"
57369 msgstr ""
57370
57371 #. type: lisp
57372 #: guix-git/doc/guix.texi:32178
57373 #, no-wrap
57374 msgid ""
57375 " ;; If the above did not succeed, try\n"
57376 " ;; with 'mdns_minimal'.\n"
57377 " (name-service\n"
57378 " (name \"mdns_minimal\")\n"
57379 "\n"
57380 msgstr ""
57381
57382 #. type: lisp
57383 #: guix-git/doc/guix.texi:32184
57384 #, no-wrap
57385 msgid ""
57386 " ;; 'mdns_minimal' is authoritative for\n"
57387 " ;; '.local'. When it returns \"not found\",\n"
57388 " ;; no need to try the next methods.\n"
57389 " (reaction (lookup-specification\n"
57390 " (not-found => return))))\n"
57391 "\n"
57392 msgstr ""
57393
57394 #. type: lisp
57395 #: guix-git/doc/guix.texi:32188
57396 #, no-wrap
57397 msgid ""
57398 " ;; Then fall back to DNS.\n"
57399 " (name-service\n"
57400 " (name \"dns\"))\n"
57401 "\n"
57402 msgstr ""
57403
57404 #. type: lisp
57405 #: guix-git/doc/guix.texi:32192
57406 #, no-wrap
57407 msgid ""
57408 " ;; Finally, try with the \"full\" 'mdns'.\n"
57409 " (name-service\n"
57410 " (name \"mdns\")))))\n"
57411 msgstr ""
57412
57413 #. type: Plain text
57414 #: guix-git/doc/guix.texi:32197
57415 msgid "Do not worry: the @code{%mdns-host-lookup-nss} variable (see below) contains this configuration, so you will not have to type it if all you want is to have @code{.local} host lookup working."
57416 msgstr ""
57417
57418 #. type: Plain text
57419 #: guix-git/doc/guix.texi:32205
57420 msgid "Note that, in this case, in addition to setting the @code{name-service-switch} of the @code{operating-system} declaration, you also need to use @code{avahi-service-type} (@pxref{Networking Services, @code{avahi-service-type}}), or @code{%desktop-services}, which includes it (@pxref{Desktop Services}). Doing this makes @code{nss-mdns} accessible to the name service cache daemon (@pxref{Base Services, @code{nscd-service}})."
57421 msgstr ""
57422
57423 #. type: Plain text
57424 #: guix-git/doc/guix.texi:32208
57425 msgid "For convenience, the following variables provide typical NSS configurations."
57426 msgstr ""
57427
57428 #. type: defvr
57429 #: guix-git/doc/guix.texi:32209
57430 #, no-wrap
57431 msgid "{Scheme Variable} %default-nss"
57432 msgstr ""
57433
57434 #. type: defvr
57435 #: guix-git/doc/guix.texi:32212
57436 msgid "This is the default name service switch configuration, a @code{name-service-switch} object."
57437 msgstr ""
57438
57439 #. type: defvr
57440 #: guix-git/doc/guix.texi:32214
57441 #, no-wrap
57442 msgid "{Scheme Variable} %mdns-host-lookup-nss"
57443 msgstr ""
57444
57445 #. type: defvr
57446 #: guix-git/doc/guix.texi:32217
57447 msgid "This is the name service switch configuration with support for host name lookup over multicast DNS (mDNS) for host names ending in @code{.local}."
57448 msgstr ""
57449
57450 #. type: Plain text
57451 #: guix-git/doc/guix.texi:32227
57452 msgid "The reference for name service switch configuration is given below. It is a direct mapping of the configuration file format of the C library , so please refer to the C library manual for more information (@pxref{NSS Configuration File,,, libc, The GNU C Library Reference Manual}). Compared to the configuration file format of libc NSS, it has the advantage not only of adding this warm parenthetic feel that we like, but also static checks: you will know about syntax errors and typos as soon as you run @command{guix system}."
57453 msgstr ""
57454
57455 #. type: deftp
57456 #: guix-git/doc/guix.texi:32228
57457 #, no-wrap
57458 msgid "{Data Type} name-service-switch"
57459 msgstr ""
57460
57461 #. type: deftp
57462 #: guix-git/doc/guix.texi:32233
57463 msgid "This is the data type representation the configuration of libc's name service switch (NSS). Each field below represents one of the supported system databases."
57464 msgstr ""
57465
57466 #. type: item
57467 #: guix-git/doc/guix.texi:32235
57468 #, no-wrap
57469 msgid "aliases"
57470 msgstr ""
57471
57472 #. type: itemx
57473 #: guix-git/doc/guix.texi:32236
57474 #, no-wrap
57475 msgid "ethers"
57476 msgstr ""
57477
57478 #. type: itemx
57479 #: guix-git/doc/guix.texi:32238
57480 #, no-wrap
57481 msgid "gshadow"
57482 msgstr ""
57483
57484 #. type: itemx
57485 #: guix-git/doc/guix.texi:32239
57486 #, no-wrap
57487 msgid "hosts"
57488 msgstr ""
57489
57490 #. type: itemx
57491 #: guix-git/doc/guix.texi:32240
57492 #, no-wrap
57493 msgid "initgroups"
57494 msgstr ""
57495
57496 #. type: itemx
57497 #: guix-git/doc/guix.texi:32241
57498 #, no-wrap
57499 msgid "netgroup"
57500 msgstr ""
57501
57502 #. type: itemx
57503 #: guix-git/doc/guix.texi:32242
57504 #, no-wrap
57505 msgid "networks"
57506 msgstr ""
57507
57508 #. type: itemx
57509 #: guix-git/doc/guix.texi:32245
57510 #, no-wrap
57511 msgid "rpc"
57512 msgstr ""
57513
57514 #. type: itemx
57515 #: guix-git/doc/guix.texi:32247
57516 #, no-wrap
57517 msgid "shadow"
57518 msgstr ""
57519
57520 #. type: table
57521 #: guix-git/doc/guix.texi:32250
57522 msgid "The system databases handled by the NSS@. Each of these fields must be a list of @code{<name-service>} objects (see below)."
57523 msgstr ""
57524
57525 #. type: deftp
57526 #: guix-git/doc/guix.texi:32253
57527 #, no-wrap
57528 msgid "{Data Type} name-service"
57529 msgstr ""
57530
57531 #. type: deftp
57532 #: guix-git/doc/guix.texi:32257
57533 msgid "This is the data type representing an actual name service and the associated lookup action."
57534 msgstr ""
57535
57536 #. type: table
57537 #: guix-git/doc/guix.texi:32262
57538 msgid "A string denoting the name service (@pxref{Services in the NSS configuration,,, libc, The GNU C Library Reference Manual})."
57539 msgstr ""
57540
57541 #. type: table
57542 #: guix-git/doc/guix.texi:32267
57543 msgid "Note that name services listed here must be visible to nscd. This is achieved by passing the @code{#:name-services} argument to @code{nscd-service} the list of packages providing the needed name services (@pxref{Base Services, @code{nscd-service}})."
57544 msgstr ""
57545
57546 #. type: item
57547 #: guix-git/doc/guix.texi:32268
57548 #, no-wrap
57549 msgid "reaction"
57550 msgstr ""
57551
57552 #. type: table
57553 #: guix-git/doc/guix.texi:32272
57554 msgid "An action specified using the @code{lookup-specification} macro (@pxref{Actions in the NSS configuration,,, libc, The GNU C Library Reference Manual}). For example:"
57555 msgstr ""
57556
57557 #. type: lisp
57558 #: guix-git/doc/guix.texi:32276
57559 #, no-wrap
57560 msgid ""
57561 "(lookup-specification (unavailable => continue)\n"
57562 " (success => return))\n"
57563 msgstr ""
57564
57565 #. type: Plain text
57566 #: guix-git/doc/guix.texi:32290
57567 msgid "For bootstrapping purposes, the Linux-Libre kernel is passed an @dfn{initial RAM disk}, or @dfn{initrd}. An initrd contains a temporary root file system as well as an initialization script. The latter is responsible for mounting the real root file system, and for loading any kernel modules that may be needed to achieve that."
57568 msgstr ""
57569
57570 #. type: Plain text
57571 #: guix-git/doc/guix.texi:32299
57572 msgid "The @code{initrd-modules} field of an @code{operating-system} declaration allows you to specify Linux-libre kernel modules that must be available in the initrd. In particular, this is where you would list modules needed to actually drive the hard disk where your root partition is---although the default value of @code{initrd-modules} should cover most use cases. For example, assuming you need the @code{megaraid_sas} module in addition to the default modules to be able to access your root file system, you would write:"
57573 msgstr ""
57574
57575 #. type: lisp
57576 #: guix-git/doc/guix.texi:32304
57577 #, no-wrap
57578 msgid ""
57579 "(operating-system\n"
57580 " ;; @dots{}\n"
57581 " (initrd-modules (cons \"megaraid_sas\" %base-initrd-modules)))\n"
57582 msgstr ""
57583
57584 #. type: defvr
57585 #: guix-git/doc/guix.texi:32306
57586 #, no-wrap
57587 msgid "{Scheme Variable} %base-initrd-modules"
57588 msgstr ""
57589
57590 #. type: defvr
57591 #: guix-git/doc/guix.texi:32308
57592 msgid "This is the list of kernel modules included in the initrd by default."
57593 msgstr ""
57594
57595 #. type: Plain text
57596 #: guix-git/doc/guix.texi:32316
57597 msgid "Furthermore, if you need lower-level customization, the @code{initrd} field of an @code{operating-system} declaration allows you to specify which initrd you would like to use. The @code{(gnu system linux-initrd)} module provides three ways to build an initrd: the high-level @code{base-initrd} procedure and the low-level @code{raw-initrd} and @code{expression->initrd} procedures."
57598 msgstr ""
57599
57600 #. type: Plain text
57601 #: guix-git/doc/guix.texi:32321
57602 msgid "The @code{base-initrd} procedure is intended to cover most common uses. For example, if you want to add a bunch of kernel modules to be loaded at boot time, you can define the @code{initrd} field of the operating system declaration like this:"
57603 msgstr ""
57604
57605 #. type: lisp
57606 #: guix-git/doc/guix.texi:32329
57607 #, no-wrap
57608 msgid ""
57609 "(initrd (lambda (file-systems . rest)\n"
57610 " ;; Create a standard initrd but set up networking\n"
57611 " ;; with the parameters QEMU expects by default.\n"
57612 " (apply base-initrd file-systems\n"
57613 " #:qemu-networking? #t\n"
57614 " rest)))\n"
57615 msgstr ""
57616
57617 #. type: Plain text
57618 #: guix-git/doc/guix.texi:32334
57619 msgid "The @code{base-initrd} procedure also handles common use cases that involves using the system as a QEMU guest, or as a ``live'' system with volatile root file system."
57620 msgstr ""
57621
57622 #. type: Plain text
57623 #: guix-git/doc/guix.texi:32341
57624 msgid "The @code{base-initrd} procedure is built from @code{raw-initrd} procedure. Unlike @code{base-initrd}, @code{raw-initrd} doesn't do anything high-level, such as trying to guess which kernel modules and packages should be included to the initrd. An example use of @code{raw-initrd} is when a user has a custom Linux kernel configuration and default kernel modules included by @code{base-initrd} are not available."
57625 msgstr ""
57626
57627 #. type: Plain text
57628 #: guix-git/doc/guix.texi:32346
57629 msgid "The initial RAM disk produced by @code{base-initrd} or @code{raw-initrd} honors several options passed on the Linux kernel command line (that is, arguments passed @i{via} the @code{linux} command of GRUB, or the @code{-append} option of QEMU), notably:"
57630 msgstr ""
57631
57632 #. type: item
57633 #: guix-git/doc/guix.texi:32348
57634 #, no-wrap
57635 msgid "--load=@var{boot}"
57636 msgstr ""
57637
57638 #. type: table
57639 #: guix-git/doc/guix.texi:32351
57640 msgid "Tell the initial RAM disk to load @var{boot}, a file containing a Scheme program, once it has mounted the root file system."
57641 msgstr ""
57642
57643 #. type: table
57644 #: guix-git/doc/guix.texi:32355
57645 msgid "Guix uses this option to yield control to a boot program that runs the service activation programs and then spawns the GNU@tie{}Shepherd, the initialization system."
57646 msgstr ""
57647
57648 #. type: item
57649 #: guix-git/doc/guix.texi:32356
57650 #, no-wrap
57651 msgid "--root=@var{root}"
57652 msgstr ""
57653
57654 #. type: table
57655 #: guix-git/doc/guix.texi:32361
57656 msgid "Mount @var{root} as the root file system. @var{root} can be a device name like @code{/dev/sda1}, a file system label, or a file system UUID. When unspecified, the device name from the root file system of the operating system declaration is used."
57657 msgstr ""
57658
57659 #. type: table
57660 #: guix-git/doc/guix.texi:32365
57661 msgid "Have @file{/run/booted-system} and @file{/run/current-system} point to @var{system}."
57662 msgstr ""
57663
57664 #. type: item
57665 #: guix-git/doc/guix.texi:32366
57666 #, no-wrap
57667 msgid "modprobe.blacklist=@var{modules}@dots{}"
57668 msgstr ""
57669
57670 #. type: cindex
57671 #: guix-git/doc/guix.texi:32367
57672 #, no-wrap
57673 msgid "module, black-listing"
57674 msgstr ""
57675
57676 #. type: cindex
57677 #: guix-git/doc/guix.texi:32368
57678 #, no-wrap
57679 msgid "black list, of kernel modules"
57680 msgstr ""
57681
57682 #. type: table
57683 #: guix-git/doc/guix.texi:32373
57684 msgid "Instruct the initial RAM disk as well as the @command{modprobe} command (from the kmod package) to refuse to load @var{modules}. @var{modules} must be a comma-separated list of module names---e.g., @code{usbkbd,9pnet}."
57685 msgstr ""
57686
57687 #. type: item
57688 #: guix-git/doc/guix.texi:32374
57689 #, no-wrap
57690 msgid "--repl"
57691 msgstr ""
57692
57693 #. type: table
57694 #: guix-git/doc/guix.texi:32380
57695 msgid "Start a read-eval-print loop (REPL) from the initial RAM disk before it tries to load kernel modules and to mount the root file system. Our marketing team calls it @dfn{boot-to-Guile}. The Schemer in you will love it. @xref{Using Guile Interactively,,, guile, GNU Guile Reference Manual}, for more information on Guile's REPL."
57696 msgstr ""
57697
57698 #. type: Plain text
57699 #: guix-git/doc/guix.texi:32386
57700 msgid "Now that you know all the features that initial RAM disks produced by @code{base-initrd} and @code{raw-initrd} provide, here is how to use it and customize it further."
57701 msgstr ""
57702
57703 #. type: deffn
57704 #: guix-git/doc/guix.texi:32389
57705 #, no-wrap
57706 msgid "{Scheme Procedure} raw-initrd @var{file-systems} @"
57707 msgstr ""
57708
57709 #. type: deffn
57710 #: guix-git/doc/guix.texi:32403
57711 msgid "[#:linux-modules '()] [#:mapped-devices '()] @ [#:keyboard-layout #f] @ [#:helper-packages '()] [#:qemu-networking? #f] [#:volatile-root? #f] Return a derivation that builds a raw initrd. @var{file-systems} is a list of file systems to be mounted by the initrd, possibly in addition to the root file system specified on the kernel command line via @option{--root}. @var{linux-modules} is a list of kernel modules to be loaded at boot time. @var{mapped-devices} is a list of device mappings to realize before @var{file-systems} are mounted (@pxref{Mapped Devices}). @var{helper-packages} is a list of packages to be copied in the initrd. It may include @code{e2fsck/static} or other packages needed by the initrd to check the root file system."
57712 msgstr ""
57713
57714 #. type: deffn
57715 #: guix-git/doc/guix.texi:32409 guix-git/doc/guix.texi:32433
57716 msgid "When true, @var{keyboard-layout} is a @code{<keyboard-layout>} record denoting the desired console keyboard layout. This is done before @var{mapped-devices} are set up and before @var{file-systems} are mounted such that, should the user need to enter a passphrase or use the REPL, this happens using the intended keyboard layout."
57717 msgstr ""
57718
57719 #. type: deffn
57720 #: guix-git/doc/guix.texi:32413
57721 msgid "When @var{qemu-networking?} is true, set up networking with the standard QEMU parameters. When @var{virtio?} is true, load additional modules so that the initrd can be used as a QEMU guest with para-virtualized I/O drivers."
57722 msgstr ""
57723
57724 #. type: deffn
57725 #: guix-git/doc/guix.texi:32416
57726 msgid "When @var{volatile-root?} is true, the root file system is writable but any changes to it are lost."
57727 msgstr ""
57728
57729 #. type: deffn
57730 #: guix-git/doc/guix.texi:32418
57731 #, no-wrap
57732 msgid "{Scheme Procedure} base-initrd @var{file-systems} @"
57733 msgstr ""
57734
57735 #. type: deffn
57736 #: guix-git/doc/guix.texi:32427
57737 msgid "[#:mapped-devices '()] [#:keyboard-layout #f] @ [#:qemu-networking? #f] [#:volatile-root? #f] @ [#:linux-modules '()] Return as a file-like object a generic initrd, with kernel modules taken from @var{linux}. @var{file-systems} is a list of file-systems to be mounted by the initrd, possibly in addition to the root file system specified on the kernel command line via @option{--root}. @var{mapped-devices} is a list of device mappings to realize before @var{file-systems} are mounted."
57738 msgstr ""
57739
57740 #. type: deffn
57741 #: guix-git/doc/guix.texi:32435
57742 msgid "@var{qemu-networking?} and @var{volatile-root?} behaves as in @code{raw-initrd}."
57743 msgstr ""
57744
57745 #. type: deffn
57746 #: guix-git/doc/guix.texi:32440
57747 msgid "The initrd is automatically populated with all the kernel modules necessary for @var{file-systems} and for the given options. Additional kernel modules can be listed in @var{linux-modules}. They will be added to the initrd, and loaded at boot time in the order in which they appear."
57748 msgstr ""
57749
57750 #. type: Plain text
57751 #: guix-git/doc/guix.texi:32447
57752 msgid "Needless to say, the initrds we produce and use embed a statically-linked Guile, and the initialization program is a Guile program. That gives a lot of flexibility. The @code{expression->initrd} procedure builds such an initrd, given the program to run in that initrd."
57753 msgstr ""
57754
57755 #. type: deffn
57756 #: guix-git/doc/guix.texi:32448
57757 #, no-wrap
57758 msgid "{Scheme Procedure} expression->initrd @var{exp} @"
57759 msgstr ""
57760
57761 #. type: deffn
57762 #: guix-git/doc/guix.texi:32454
57763 msgid "[#:guile %guile-3.0-static-stripped] [#:name \"guile-initrd\"] Return as a file-like object a Linux initrd (a gzipped cpio archive) containing @var{guile} and that evaluates @var{exp}, a G-expression, upon booting. All the derivations referenced by @var{exp} are automatically copied to the initrd."
57764 msgstr ""
57765
57766 #. type: cindex
57767 #: guix-git/doc/guix.texi:32460
57768 #, no-wrap
57769 msgid "boot loader"
57770 msgstr ""
57771
57772 #. type: Plain text
57773 #: guix-git/doc/guix.texi:32467
57774 msgid "The operating system supports multiple bootloaders. The bootloader is configured using @code{bootloader-configuration} declaration. All the fields of this structure are bootloader agnostic except for one field, @code{bootloader} that indicates the bootloader to be configured and installed."
57775 msgstr ""
57776
57777 #. type: Plain text
57778 #: guix-git/doc/guix.texi:32472
57779 msgid "Some of the bootloaders do not honor every field of @code{bootloader-configuration}. For instance, the extlinux bootloader does not support themes and thus ignores the @code{theme} field."
57780 msgstr ""
57781
57782 #. type: deftp
57783 #: guix-git/doc/guix.texi:32473
57784 #, no-wrap
57785 msgid "{Data Type} bootloader-configuration"
57786 msgstr ""
57787
57788 #. type: deftp
57789 #: guix-git/doc/guix.texi:32475
57790 msgid "The type of a bootloader configuration declaration."
57791 msgstr ""
57792
57793 #. type: cindex
57794 #: guix-git/doc/guix.texi:32479
57795 #, no-wrap
57796 msgid "EFI, bootloader"
57797 msgstr ""
57798
57799 #. type: cindex
57800 #: guix-git/doc/guix.texi:32480
57801 #, no-wrap
57802 msgid "UEFI, bootloader"
57803 msgstr ""
57804
57805 #. type: cindex
57806 #: guix-git/doc/guix.texi:32481
57807 #, no-wrap
57808 msgid "BIOS, bootloader"
57809 msgstr ""
57810
57811 #. type: table
57812 #: guix-git/doc/guix.texi:32486
57813 msgid "The bootloader to use, as a @code{bootloader} object. For now @code{grub-bootloader}, @code{grub-efi-bootloader}, @code{grub-efi-netboot-bootloader}, @code{extlinux-bootloader} and @code{u-boot-bootloader} are supported."
57814 msgstr ""
57815
57816 #. type: cindex
57817 #: guix-git/doc/guix.texi:32487
57818 #, no-wrap
57819 msgid "ARM, bootloaders"
57820 msgstr ""
57821
57822 #. type: cindex
57823 #: guix-git/doc/guix.texi:32488
57824 #, no-wrap
57825 msgid "AArch64, bootloaders"
57826 msgstr ""
57827
57828 #. type: table
57829 #: guix-git/doc/guix.texi:32493
57830 msgid "Available bootloaders are described in @code{(gnu bootloader @dots{})} modules. In particular, @code{(gnu bootloader u-boot)} contains definitions of bootloaders for a wide range of ARM and AArch64 systems, using the @uref{https://www.denx.de/wiki/U-Boot/, U-Boot bootloader}."
57831 msgstr ""
57832
57833 #. type: table
57834 #: guix-git/doc/guix.texi:32499
57835 msgid "@code{grub-efi-bootloader} allows to boot on modern systems using the @dfn{Unified Extensible Firmware Interface} (UEFI). This is what you should use if the installation image contains a @file{/sys/firmware/efi} directory when you boot it on your system."
57836 msgstr ""
57837
57838 #. type: table
57839 #: guix-git/doc/guix.texi:32503
57840 msgid "@code{grub-bootloader} allows you to boot in particular Intel-based machines in ``legacy'' BIOS mode."
57841 msgstr ""
57842
57843 #. type: vindex
57844 #: guix-git/doc/guix.texi:32504
57845 #, no-wrap
57846 msgid "grub-efi-netboot-bootloader"
57847 msgstr ""
57848
57849 #. type: table
57850 #: guix-git/doc/guix.texi:32508
57851 msgid "@code{grub-efi-netboot-bootloader} allows you to boot your system over network through TFTP@. In combination with an NFS root file system this allows you to build a diskless Guix system."
57852 msgstr ""
57853
57854 #. type: table
57855 #: guix-git/doc/guix.texi:32514
57856 msgid "The installation of the @code{grub-efi-netboot-bootloader} generates the content of the TFTP root directory at @code{target} (@pxref{Bootloader Configuration, @code{target}}), to be served by a TFTP server. You may want to mount your TFTP server directory onto @code{target} to move the required files to the TFTP server automatically."
57857 msgstr ""
57858
57859 #. type: table
57860 #: guix-git/doc/guix.texi:32523
57861 msgid "If you plan to use an NFS root file system as well (actually if you mount the store from an NFS share), then the TFTP server needs to serve the file @file{/boot/grub/grub.cfg} and other files from the store (like GRUBs background image, the kernel (@pxref{operating-system Reference, @code{kernel}}) and the initrd (@pxref{operating-system Reference, @code{initrd}})), too. All these files from the store will be accessed by GRUB through TFTP with their normal store path, for example as @file{tftp://tftp-server/gnu/store/…-initrd/initrd.cpio.gz}."
57862 msgstr ""
57863
57864 #. type: table
57865 #: guix-git/doc/guix.texi:32531
57866 msgid "Two symlinks are created to make this possible. The first symlink is @code{target}@file{/efi/Guix/boot/grub/grub.cfg} pointing to @file{../../../boot/grub/grub.cfg}, where @code{target} may be @file{/boot}. In this case the link is not leaving the served TFTP root directory, but otherwise it does. The second link is @code{target}@file{/gnu/store} and points to @file{../gnu/store}. This link is leaving the served TFTP root directory."
57867 msgstr ""
57868
57869 #. type: table
57870 #: guix-git/doc/guix.texi:32536
57871 msgid "The assumption behind all this is that you have an NFS server exporting the root file system for your Guix system, and additionally a TFTP server exporting your @code{target} directory—usually @file{/boot}—from that same root file system for your Guix system. In this constellation the symlinks will work."
57872 msgstr ""
57873
57874 #. type: table
57875 #: guix-git/doc/guix.texi:32540
57876 msgid "For other constellations you will have to program your own bootloader installer, which then takes care to make necessary files from the store accessible through TFTP, for example by copying them into the TFTP root directory at @code{target}."
57877 msgstr ""
57878
57879 #. type: table
57880 #: guix-git/doc/guix.texi:32545
57881 msgid "It is important to note that symlinks pointing outside the TFTP root directory may need to be allowed in the configuration of your TFTP server. Further the store link exposes the whole store through TFTP@. Both points need to be considered carefully for security aspects."
57882 msgstr ""
57883
57884 #. type: table
57885 #: guix-git/doc/guix.texi:32550
57886 msgid "Beside the @code{grub-efi-netboot-bootloader}, the already mentioned TFTP and NFS servers, you also need a properly configured DHCP server to make the booting over netboot possible. For all this we can currently only recommend you to look for instructions about @acronym{PXE, Preboot eXecution Environment}."
57887 msgstr ""
57888
57889 #. type: table
57890 #: guix-git/doc/guix.texi:32554
57891 msgid "This is a string denoting the target onto which to install the bootloader."
57892 msgstr ""
57893
57894 #. type: table
57895 #: guix-git/doc/guix.texi:32563
57896 msgid "The interpretation depends on the bootloader in question. For @code{grub-bootloader}, for example, it should be a device name understood by the bootloader @command{installer} command, such as @code{/dev/sda} or @code{(hd0)} (@pxref{Invoking grub-install,,, grub, GNU GRUB Manual}). For @code{grub-efi-bootloader}, it should be the mount point of the EFI file system, usually @file{/boot/efi}. For @code{grub-efi-netboot-bootloader}, @code{target} should be the mount point corresponding to the TFTP root directory of your TFTP server."
57897 msgstr ""
57898
57899 #. type: item
57900 #: guix-git/doc/guix.texi:32564
57901 #, no-wrap
57902 msgid "@code{menu-entries} (default: @code{()})"
57903 msgstr ""
57904
57905 #. type: table
57906 #: guix-git/doc/guix.texi:32568
57907 msgid "A possibly empty list of @code{menu-entry} objects (see below), denoting entries to appear in the bootloader menu, in addition to the current system entry and the entry pointing to previous system generations."
57908 msgstr ""
57909
57910 #. type: item
57911 #: guix-git/doc/guix.texi:32569
57912 #, no-wrap
57913 msgid "@code{default-entry} (default: @code{0})"
57914 msgstr ""
57915
57916 #. type: table
57917 #: guix-git/doc/guix.texi:32572
57918 msgid "The index of the default boot menu entry. Index 0 is for the entry of the current system."
57919 msgstr ""
57920
57921 #. type: item
57922 #: guix-git/doc/guix.texi:32573
57923 #, no-wrap
57924 msgid "@code{timeout} (default: @code{5})"
57925 msgstr ""
57926
57927 #. type: table
57928 #: guix-git/doc/guix.texi:32576
57929 msgid "The number of seconds to wait for keyboard input before booting. Set to 0 to boot immediately, and to -1 to wait indefinitely."
57930 msgstr ""
57931
57932 #. type: cindex
57933 #: guix-git/doc/guix.texi:32577
57934 #, no-wrap
57935 msgid "keyboard layout, for the bootloader"
57936 msgstr ""
57937
57938 #. type: table
57939 #: guix-git/doc/guix.texi:32581
57940 msgid "If this is @code{#f}, the bootloader's menu (if any) uses the default keyboard layout, usually US@tie{}English (``qwerty'')."
57941 msgstr ""
57942
57943 #. type: table
57944 #: guix-git/doc/guix.texi:32584
57945 msgid "Otherwise, this must be a @code{keyboard-layout} object (@pxref{Keyboard Layout})."
57946 msgstr ""
57947
57948 #. type: quotation
57949 #: guix-git/doc/guix.texi:32588
57950 msgid "This option is currently ignored by bootloaders other than @code{grub} and @code{grub-efi}."
57951 msgstr ""
57952
57953 #. type: item
57954 #: guix-git/doc/guix.texi:32590
57955 #, no-wrap
57956 msgid "@code{theme} (default: @var{#f})"
57957 msgstr ""
57958
57959 #. type: table
57960 #: guix-git/doc/guix.texi:32594
57961 msgid "The bootloader theme object describing the theme to use. If no theme is provided, some bootloaders might use a default theme, that's true for GRUB."
57962 msgstr ""
57963
57964 #. type: item
57965 #: guix-git/doc/guix.texi:32595
57966 #, no-wrap
57967 msgid "@code{terminal-outputs} (default: @code{'(gfxterm)})"
57968 msgstr ""
57969
57970 #. type: table
57971 #: guix-git/doc/guix.texi:32602
57972 msgid "The output terminals used for the bootloader boot menu, as a list of symbols. GRUB accepts the values: @code{console}, @code{serial}, @code{serial_@{0-3@}}, @code{gfxterm}, @code{vga_text}, @code{mda_text}, @code{morse}, and @code{pkmodem}. This field corresponds to the GRUB variable @code{GRUB_TERMINAL_OUTPUT} (@pxref{Simple configuration,,, grub,GNU GRUB manual})."
57973 msgstr ""
57974
57975 #. type: item
57976 #: guix-git/doc/guix.texi:32603
57977 #, no-wrap
57978 msgid "@code{terminal-inputs} (default: @code{'()})"
57979 msgstr ""
57980
57981 #. type: table
57982 #: guix-git/doc/guix.texi:32611
57983 msgid "The input terminals used for the bootloader boot menu, as a list of symbols. For GRUB, the default is the native platform terminal as determined at run-time. GRUB accepts the values: @code{console}, @code{serial}, @code{serial_@{0-3@}}, @code{at_keyboard}, and @code{usb_keyboard}. This field corresponds to the GRUB variable @code{GRUB_TERMINAL_INPUT} (@pxref{Simple configuration,,, grub,GNU GRUB manual})."
57984 msgstr ""
57985
57986 #. type: item
57987 #: guix-git/doc/guix.texi:32612
57988 #, no-wrap
57989 msgid "@code{serial-unit} (default: @code{#f})"
57990 msgstr ""
57991
57992 #. type: table
57993 #: guix-git/doc/guix.texi:32616
57994 msgid "The serial unit used by the bootloader, as an integer from 0 to 3. For GRUB, it is chosen at run-time; currently GRUB chooses 0, which corresponds to COM1 (@pxref{Serial terminal,,, grub,GNU GRUB manual})."
57995 msgstr ""
57996
57997 #. type: item
57998 #: guix-git/doc/guix.texi:32617
57999 #, no-wrap
58000 msgid "@code{serial-speed} (default: @code{#f})"
58001 msgstr ""
58002
58003 #. type: table
58004 #: guix-git/doc/guix.texi:32621
58005 msgid "The speed of the serial interface, as an integer. For GRUB, the default value is chosen at run-time; currently GRUB chooses 9600@tie{}bps (@pxref{Serial terminal,,, grub,GNU GRUB manual})."
58006 msgstr ""
58007
58008 #. type: cindex
58009 #: guix-git/doc/guix.texi:32625
58010 #, no-wrap
58011 msgid "dual boot"
58012 msgstr ""
58013
58014 #. type: cindex
58015 #: guix-git/doc/guix.texi:32626
58016 #, no-wrap
58017 msgid "boot menu"
58018 msgstr ""
58019
58020 #. type: Plain text
58021 #: guix-git/doc/guix.texi:32632
58022 msgid "Should you want to list additional boot menu entries @i{via} the @code{menu-entries} field above, you will need to create them with the @code{menu-entry} form. For example, imagine you want to be able to boot another distro (hard to imagine!), you can define a menu entry along these lines:"
58023 msgstr ""
58024
58025 #. type: lisp
58026 #: guix-git/doc/guix.texi:32639
58027 #, no-wrap
58028 msgid ""
58029 "(menu-entry\n"
58030 " (label \"The Other Distro\")\n"
58031 " (linux \"/boot/old/vmlinux-2.6.32\")\n"
58032 " (linux-arguments '(\"root=/dev/sda2\"))\n"
58033 " (initrd \"/boot/old/initrd\"))\n"
58034 msgstr ""
58035
58036 #. type: Plain text
58037 #: guix-git/doc/guix.texi:32642
58038 msgid "Details below."
58039 msgstr ""
58040
58041 #. type: deftp
58042 #: guix-git/doc/guix.texi:32643
58043 #, no-wrap
58044 msgid "{Data Type} menu-entry"
58045 msgstr ""
58046
58047 #. type: deftp
58048 #: guix-git/doc/guix.texi:32645
58049 msgid "The type of an entry in the bootloader menu."
58050 msgstr ""
58051
58052 #. type: table
58053 #: guix-git/doc/guix.texi:32650
58054 msgid "The label to show in the menu---e.g., @code{\"GNU\"}."
58055 msgstr ""
58056
58057 #. type: item
58058 #: guix-git/doc/guix.texi:32651
58059 #, no-wrap
58060 msgid "@code{linux} (default: @code{#f})"
58061 msgstr ""
58062
58063 #. type: table
58064 #: guix-git/doc/guix.texi:32653
58065 msgid "The Linux kernel image to boot, for example:"
58066 msgstr ""
58067
58068 #. type: lisp
58069 #: guix-git/doc/guix.texi:32656
58070 #, no-wrap
58071 msgid "(file-append linux-libre \"/bzImage\")\n"
58072 msgstr ""
58073
58074 #. type: table
58075 #: guix-git/doc/guix.texi:32661
58076 msgid "For GRUB, it is also possible to specify a device explicitly in the file path using GRUB's device naming convention (@pxref{Naming convention,,, grub, GNU GRUB manual}), for example:"
58077 msgstr ""
58078
58079 #. type: example
58080 #: guix-git/doc/guix.texi:32664
58081 #, no-wrap
58082 msgid "\"(hd0,msdos1)/boot/vmlinuz\"\n"
58083 msgstr ""
58084
58085 #. type: table
58086 #: guix-git/doc/guix.texi:32668
58087 msgid "If the device is specified explicitly as above, then the @code{device} field is ignored entirely."
58088 msgstr ""
58089
58090 #. type: item
58091 #: guix-git/doc/guix.texi:32669
58092 #, no-wrap
58093 msgid "@code{linux-arguments} (default: @code{()})"
58094 msgstr ""
58095
58096 #. type: table
58097 #: guix-git/doc/guix.texi:32672
58098 msgid "The list of extra Linux kernel command-line arguments---e.g., @code{(\"console=ttyS0\")}."
58099 msgstr ""
58100
58101 #. type: item
58102 #: guix-git/doc/guix.texi:32673
58103 #, no-wrap
58104 msgid "@code{initrd} (default: @code{#f})"
58105 msgstr ""
58106
58107 #. type: table
58108 #: guix-git/doc/guix.texi:32676
58109 msgid "A G-Expression or string denoting the file name of the initial RAM disk to use (@pxref{G-Expressions})."
58110 msgstr ""
58111
58112 #. type: item
58113 #: guix-git/doc/guix.texi:32677
58114 #, no-wrap
58115 msgid "@code{device} (default: @code{#f})"
58116 msgstr ""
58117
58118 #. type: table
58119 #: guix-git/doc/guix.texi:32680
58120 msgid "The device where the kernel and initrd are to be found---i.e., for GRUB, @dfn{root} for this menu entry (@pxref{root,,, grub, GNU GRUB manual})."
58121 msgstr ""
58122
58123 #. type: table
58124 #: guix-git/doc/guix.texi:32686
58125 msgid "This may be a file system label (a string), a file system UUID (a bytevector, @pxref{File Systems}), or @code{#f}, in which case the bootloader will search the device containing the file specified by the @code{linux} field (@pxref{search,,, grub, GNU GRUB manual}). It must @emph{not} be an OS device name such as @file{/dev/sda1}."
58126 msgstr ""
58127
58128 #. type: item
58129 #: guix-git/doc/guix.texi:32687
58130 #, no-wrap
58131 msgid "@code{multiboot-kernel} (default: @code{#f})"
58132 msgstr ""
58133
58134 #. type: table
58135 #: guix-git/doc/guix.texi:32691
58136 msgid "The kernel to boot in Multiboot-mode (@pxref{multiboot,,, grub, GNU GRUB manual}). When this field is set, a Multiboot menu-entry is generated. For example:"
58137 msgstr ""
58138
58139 #. type: lisp
58140 #: guix-git/doc/guix.texi:32694
58141 #, no-wrap
58142 msgid "(file-append mach \"/boot/gnumach\")\n"
58143 msgstr ""
58144
58145 #. type: item
58146 #: guix-git/doc/guix.texi:32696
58147 #, no-wrap
58148 msgid "@code{multiboot-arguments} (default: @code{()})"
58149 msgstr ""
58150
58151 #. type: table
58152 #: guix-git/doc/guix.texi:32698
58153 msgid "The list of extra command-line arguments for the multiboot-kernel."
58154 msgstr ""
58155
58156 #. type: item
58157 #: guix-git/doc/guix.texi:32699
58158 #, no-wrap
58159 msgid "@code{multiboot-modules} (default: @code{()})"
58160 msgstr ""
58161
58162 #. type: table
58163 #: guix-git/doc/guix.texi:32701
58164 msgid "The list of commands for loading Multiboot modules. For example:"
58165 msgstr ""
58166
58167 #. type: lisp
58168 #: guix-git/doc/guix.texi:32707
58169 #, no-wrap
58170 msgid ""
58171 "(list (list (file-append hurd \"/hurd/ext2fs.static\") \"ext2fs\"\n"
58172 " @dots{})\n"
58173 " (list (file-append libc \"/lib/ld.so.1\") \"exec\"\n"
58174 " @dots{}))\n"
58175 msgstr ""
58176
58177 #. type: cindex
58178 #: guix-git/doc/guix.texi:32712 guix-git/doc/guix.texi:32771
58179 #, no-wrap
58180 msgid "HDPI"
58181 msgstr ""
58182
58183 #. type: cindex
58184 #: guix-git/doc/guix.texi:32713 guix-git/doc/guix.texi:32772
58185 #, no-wrap
58186 msgid "HiDPI"
58187 msgstr ""
58188
58189 #. type: cindex
58190 #: guix-git/doc/guix.texi:32714 guix-git/doc/guix.texi:32773
58191 #, no-wrap
58192 msgid "resolution"
58193 msgstr ""
58194
58195 #. type: Plain text
58196 #: guix-git/doc/guix.texi:32718
58197 msgid "For now only GRUB has theme support. GRUB themes are created using the @code{grub-theme} form, which is not fully documented yet."
58198 msgstr ""
58199
58200 #. type: deftp
58201 #: guix-git/doc/guix.texi:32719
58202 #, no-wrap
58203 msgid "{Data Type} grub-theme"
58204 msgstr ""
58205
58206 #. type: deftp
58207 #: guix-git/doc/guix.texi:32721
58208 msgid "Data type representing the configuration of the GRUB theme."
58209 msgstr ""
58210
58211 #. type: item
58212 #: guix-git/doc/guix.texi:32723
58213 #, no-wrap
58214 msgid "@code{gfxmode} (default: @code{'(\"auto\")})"
58215 msgstr ""
58216
58217 #. type: table
58218 #: guix-git/doc/guix.texi:32726
58219 msgid "The GRUB @code{gfxmode} to set (a list of screen resolution strings, @pxref{gfxmode,,, grub, GNU GRUB manual})."
58220 msgstr ""
58221
58222 #. type: deffn
58223 #: guix-git/doc/guix.texi:32729
58224 #, no-wrap
58225 msgid "{Scheme Procedure} grub-theme"
58226 msgstr ""
58227
58228 #. type: deffn
58229 #: guix-git/doc/guix.texi:32733
58230 msgid "Return the default GRUB theme used by the operating system if no @code{theme} field is specified in @code{bootloader-configuration} record."
58231 msgstr ""
58232
58233 #. type: deffn
58234 #: guix-git/doc/guix.texi:32736
58235 msgid "It comes with a fancy background image displaying the GNU and Guix logos."
58236 msgstr ""
58237
58238 #. type: Plain text
58239 #: guix-git/doc/guix.texi:32740
58240 msgid "For example, to override the default resolution, you may use something like"
58241 msgstr ""
58242
58243 #. type: lisp
58244 #: guix-git/doc/guix.texi:32748
58245 #, no-wrap
58246 msgid ""
58247 "(bootloader\n"
58248 " (bootloader-configuration\n"
58249 " ;; @dots{}\n"
58250 " (theme (grub-theme\n"
58251 " (inherit (grub-theme))\n"
58252 " (gfxmode '(\"1024x786x32\" \"auto\"))))))\n"
58253 msgstr ""
58254
58255 #. type: section
58256 #: guix-git/doc/guix.texi:32751
58257 #, no-wrap
58258 msgid "Invoking @code{guix system}"
58259 msgstr ""
58260
58261 #. type: Plain text
58262 #: guix-git/doc/guix.texi:32756
58263 msgid "Once you have written an operating system declaration as seen in the previous section, it can be @dfn{instantiated} using the @command{guix system} command. The synopsis is:"
58264 msgstr ""
58265
58266 #. type: example
58267 #: guix-git/doc/guix.texi:32759
58268 #, no-wrap
58269 msgid "guix system @var{options}@dots{} @var{action} @var{file}\n"
58270 msgstr ""
58271
58272 #. type: Plain text
58273 #: guix-git/doc/guix.texi:32765
58274 msgid "@var{file} must be the name of a file containing an @code{operating-system} declaration. @var{action} specifies how the operating system is instantiated. Currently the following values are supported:"
58275 msgstr ""
58276
58277 #. type: item
58278 #: guix-git/doc/guix.texi:32767
58279 #, no-wrap
58280 msgid "search"
58281 msgstr ""
58282
58283 #. type: table
58284 #: guix-git/doc/guix.texi:32770
58285 msgid "Display available service type definitions that match the given regular expressions, sorted by relevance:"
58286 msgstr ""
58287
58288 #. type: example
58289 #: guix-git/doc/guix.texi:32792
58290 #, no-wrap
58291 msgid ""
58292 "$ guix system search console\n"
58293 "name: console-fonts\n"
58294 "location: gnu/services/base.scm:806:2\n"
58295 "extends: shepherd-root\n"
58296 "description: Install the given fonts on the specified ttys (fonts are per\n"
58297 "+ virtual console on GNU/Linux). The value of this service is a list of\n"
58298 "+ tty/font pairs. The font can be the name of a font provided by the `kbd'\n"
58299 "+ package or any valid argument to `setfont', as in this example:\n"
58300 "+\n"
58301 "+ '((\"tty1\" . \"LatGrkCyr-8x16\")\n"
58302 "+ (\"tty2\" . (file-append\n"
58303 "+ font-tamzen\n"
58304 "+ \"/share/kbd/consolefonts/TamzenForPowerline10x20.psf\"))\n"
58305 "+ (\"tty3\" . (file-append\n"
58306 "+ font-terminus\n"
58307 "+ \"/share/consolefonts/ter-132n\"))) ; for HDPI\n"
58308 "relevance: 9\n"
58309 "\n"
58310 msgstr ""
58311
58312 #. type: example
58313 #: guix-git/doc/guix.texi:32798
58314 #, no-wrap
58315 msgid ""
58316 "name: mingetty\n"
58317 "location: gnu/services/base.scm:1190:2\n"
58318 "extends: shepherd-root\n"
58319 "description: Provide console login using the `mingetty' program.\n"
58320 "relevance: 2\n"
58321 "\n"
58322 msgstr ""
58323
58324 #. type: example
58325 #: guix-git/doc/guix.texi:32805
58326 #, no-wrap
58327 msgid ""
58328 "name: login\n"
58329 "location: gnu/services/base.scm:860:2\n"
58330 "extends: pam\n"
58331 "description: Provide a console log-in service as specified by its\n"
58332 "+ configuration value, a `login-configuration' object.\n"
58333 "relevance: 2\n"
58334 "\n"
58335 msgstr ""
58336
58337 #. type: example
58338 #: guix-git/doc/guix.texi:32807
58339 #, no-wrap
58340 msgid "@dots{}\n"
58341 msgstr ""
58342
58343 #. type: table
58344 #: guix-git/doc/guix.texi:32812
58345 msgid "As for @command{guix package --search}, the result is written in @code{recutils} format, which makes it easy to filter the output (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual})."
58346 msgstr ""
58347
58348 #. type: item
58349 #: guix-git/doc/guix.texi:32813
58350 #, no-wrap
58351 msgid "reconfigure"
58352 msgstr ""
58353
58354 #. type: table
58355 #: guix-git/doc/guix.texi:32818
58356 msgid "Build the operating system described in @var{file}, activate it, and switch to it@footnote{This action (and the related actions @code{switch-generation} and @code{roll-back}) are usable only on systems already running Guix System.}."
58357 msgstr ""
58358
58359 #. type: quotation
58360 #: guix-git/doc/guix.texi:32826
58361 msgid "It is highly recommended to run @command{guix pull} once before you run @command{guix system reconfigure} for the first time (@pxref{Invoking guix pull}). Failing to do that you would see an older version of Guix once @command{reconfigure} has completed."
58362 msgstr ""
58363
58364 #. type: table
58365 #: guix-git/doc/guix.texi:32834
58366 msgid "This effects all the configuration specified in @var{file}: user accounts, system services, global package list, setuid programs, etc. The command starts system services specified in @var{file} that are not currently running; if a service is currently running this command will arrange for it to be upgraded the next time it is stopped (e.g.@: by @code{herd stop X} or @code{herd restart X})."
58367 msgstr ""
58368
58369 #. type: table
58370 #: guix-git/doc/guix.texi:32840
58371 msgid "This command creates a new generation whose number is one greater than the current generation (as reported by @command{guix system list-generations}). If that generation already exists, it will be overwritten. This behavior mirrors that of @command{guix package} (@pxref{Invoking guix package})."
58372 msgstr ""
58373
58374 #. type: table
58375 #: guix-git/doc/guix.texi:32845
58376 msgid "It also adds a bootloader menu entry for the new OS configuration, ---unless @option{--no-bootloader} is passed. For GRUB, it moves entries for older configurations to a submenu, allowing you to choose an older system generation at boot time should you need it."
58377 msgstr ""
58378
58379 #. type: cindex
58380 #: guix-git/doc/guix.texi:32846 guix-git/doc/guix.texi:33171
58381 #: guix-git/doc/guix.texi:34119
58382 #, no-wrap
58383 msgid "provenance tracking, of the operating system"
58384 msgstr ""
58385
58386 #. type: table
58387 #: guix-git/doc/guix.texi:32851
58388 msgid "Upon completion, the new system is deployed under @file{/run/current-system}. This directory contains @dfn{provenance meta-data}: the list of channels in use (@pxref{Channels}) and @var{file} itself, when available. You can view it by running:"
58389 msgstr ""
58390
58391 #. type: example
58392 #: guix-git/doc/guix.texi:32854
58393 #, no-wrap
58394 msgid "guix system describe\n"
58395 msgstr ""
58396
58397 #. type: table
58398 #: guix-git/doc/guix.texi:32860
58399 msgid "This information is useful should you later want to inspect how this particular generation was built. In fact, assuming @var{file} is self-contained, you can later rebuild generation @var{n} of your operating system with:"
58400 msgstr ""
58401
58402 #. type: example
58403 #: guix-git/doc/guix.texi:32866
58404 #, no-wrap
58405 msgid ""
58406 "guix time-machine \\\n"
58407 " -C /var/guix/profiles/system-@var{n}-link/channels.scm -- \\\n"
58408 " system reconfigure \\\n"
58409 " /var/guix/profiles/system-@var{n}-link/configuration.scm\n"
58410 msgstr ""
58411
58412 #. type: table
58413 #: guix-git/doc/guix.texi:32872
58414 msgid "You can think of it as some sort of built-in version control! Your system is not just a binary artifact: @emph{it carries its own source}. @xref{Service Reference, @code{provenance-service-type}}, for more information on provenance tracking."
58415 msgstr ""
58416
58417 #. type: table
58418 #: guix-git/doc/guix.texi:32878
58419 msgid "By default, @command{reconfigure} @emph{prevents you from downgrading your system}, which could (re)introduce security vulnerabilities and also cause problems with ``stateful'' services such as database management systems. You can override that behavior by passing @option{--allow-downgrades}."
58420 msgstr ""
58421
58422 #. type: item
58423 #: guix-git/doc/guix.texi:32879
58424 #, no-wrap
58425 msgid "switch-generation"
58426 msgstr ""
58427
58428 #. type: table
58429 #: guix-git/doc/guix.texi:32888
58430 msgid "Switch to an existing system generation. This action atomically switches the system profile to the specified system generation. It also rearranges the system's existing bootloader menu entries. It makes the menu entry for the specified system generation the default, and it moves the entries for the other generations to a submenu, if supported by the bootloader being used. The next time the system boots, it will use the specified system generation."
58431 msgstr ""
58432
58433 #. type: table
58434 #: guix-git/doc/guix.texi:32892
58435 msgid "The bootloader itself is not being reinstalled when using this command. Thus, the installed bootloader is used with an updated configuration file."
58436 msgstr ""
58437
58438 #. type: table
58439 #: guix-git/doc/guix.texi:32896
58440 msgid "The target generation can be specified explicitly by its generation number. For example, the following invocation would switch to system generation 7:"
58441 msgstr ""
58442
58443 #. type: example
58444 #: guix-git/doc/guix.texi:32899
58445 #, no-wrap
58446 msgid "guix system switch-generation 7\n"
58447 msgstr ""
58448
58449 #. type: table
58450 #: guix-git/doc/guix.texi:32907
58451 msgid "The target generation can also be specified relative to the current generation with the form @code{+N} or @code{-N}, where @code{+3} means ``3 generations ahead of the current generation,'' and @code{-1} means ``1 generation prior to the current generation.'' When specifying a negative value such as @code{-1}, you must precede it with @code{--} to prevent it from being parsed as an option. For example:"
58452 msgstr ""
58453
58454 #. type: example
58455 #: guix-git/doc/guix.texi:32910
58456 #, no-wrap
58457 msgid "guix system switch-generation -- -1\n"
58458 msgstr ""
58459
58460 #. type: table
58461 #: guix-git/doc/guix.texi:32918
58462 msgid "Currently, the effect of invoking this action is @emph{only} to switch the system profile to an existing generation and rearrange the bootloader menu entries. To actually start using the target system generation, you must reboot after running this action. In the future, it will be updated to do the same things as @command{reconfigure}, like activating and deactivating services."
58463 msgstr ""
58464
58465 #. type: table
58466 #: guix-git/doc/guix.texi:32920
58467 msgid "This action will fail if the specified generation does not exist."
58468 msgstr ""
58469
58470 #. type: item
58471 #: guix-git/doc/guix.texi:32921
58472 #, no-wrap
58473 msgid "roll-back"
58474 msgstr ""
58475
58476 #. type: table
58477 #: guix-git/doc/guix.texi:32927
58478 msgid "Switch to the preceding system generation. The next time the system boots, it will use the preceding system generation. This is the inverse of @command{reconfigure}, and it is exactly the same as invoking @command{switch-generation} with an argument of @code{-1}."
58479 msgstr ""
58480
58481 #. type: table
58482 #: guix-git/doc/guix.texi:32931
58483 msgid "Currently, as with @command{switch-generation}, you must reboot after running this action to actually start using the preceding system generation."
58484 msgstr ""
58485
58486 #. type: item
58487 #: guix-git/doc/guix.texi:32932
58488 #, no-wrap
58489 msgid "delete-generations"
58490 msgstr ""
58491
58492 #. type: cindex
58493 #: guix-git/doc/guix.texi:32933
58494 #, no-wrap
58495 msgid "deleting system generations"
58496 msgstr ""
58497
58498 #. type: cindex
58499 #: guix-git/doc/guix.texi:32934
58500 #, no-wrap
58501 msgid "saving space"
58502 msgstr ""
58503
58504 #. type: table
58505 #: guix-git/doc/guix.texi:32938
58506 msgid "Delete system generations, making them candidates for garbage collection (@pxref{Invoking guix gc}, for information on how to run the ``garbage collector'')."
58507 msgstr ""
58508
58509 #. type: table
58510 #: guix-git/doc/guix.texi:32942
58511 msgid "This works in the same way as @samp{guix package --delete-generations} (@pxref{Invoking guix package, @option{--delete-generations}}). With no arguments, all system generations but the current one are deleted:"
58512 msgstr ""
58513
58514 #. type: example
58515 #: guix-git/doc/guix.texi:32945
58516 #, no-wrap
58517 msgid "guix system delete-generations\n"
58518 msgstr ""
58519
58520 #. type: table
58521 #: guix-git/doc/guix.texi:32949
58522 msgid "You can also select the generations you want to delete. The example below deletes all the system generations that are more than two month old:"
58523 msgstr ""
58524
58525 #. type: example
58526 #: guix-git/doc/guix.texi:32952
58527 #, no-wrap
58528 msgid "guix system delete-generations 2m\n"
58529 msgstr ""
58530
58531 #. type: table
58532 #: guix-git/doc/guix.texi:32957
58533 msgid "Running this command automatically reinstalls the bootloader with an updated list of menu entries---e.g., the ``old generations'' sub-menu in GRUB no longer lists the generations that have been deleted."
58534 msgstr ""
58535
58536 #. type: table
58537 #: guix-git/doc/guix.texi:32962
58538 msgid "Build the derivation of the operating system, which includes all the configuration files and programs needed to boot and run the system. This action does not actually install anything."
58539 msgstr ""
58540
58541 #. type: item
58542 #: guix-git/doc/guix.texi:32963
58543 #, no-wrap
58544 msgid "init"
58545 msgstr ""
58546
58547 #. type: table
58548 #: guix-git/doc/guix.texi:32967
58549 msgid "Populate the given directory with all the files necessary to run the operating system specified in @var{file}. This is useful for first-time installations of Guix System. For instance:"
58550 msgstr ""
58551
58552 #. type: example
58553 #: guix-git/doc/guix.texi:32970
58554 #, no-wrap
58555 msgid "guix system init my-os-config.scm /mnt\n"
58556 msgstr ""
58557
58558 #. type: table
58559 #: guix-git/doc/guix.texi:32977
58560 msgid "copies to @file{/mnt} all the store items required by the configuration specified in @file{my-os-config.scm}. This includes configuration files, packages, and so on. It also creates other essential files needed for the system to operate correctly---e.g., the @file{/etc}, @file{/var}, and @file{/run} directories, and the @file{/bin/sh} file."
58561 msgstr ""
58562
58563 #. type: table
58564 #: guix-git/doc/guix.texi:32981
58565 msgid "This command also installs bootloader on the target specified in @file{my-os-config}, unless the @option{--no-bootloader} option was passed."
58566 msgstr ""
58567
58568 #. type: item
58569 #: guix-git/doc/guix.texi:32982
58570 #, no-wrap
58571 msgid "vm"
58572 msgstr ""
58573
58574 #. type: cindex
58575 #: guix-git/doc/guix.texi:32983 guix-git/doc/guix.texi:33544
58576 #, no-wrap
58577 msgid "virtual machine"
58578 msgstr ""
58579
58580 #. type: cindex
58581 #: guix-git/doc/guix.texi:32984
58582 #, no-wrap
58583 msgid "VM"
58584 msgstr ""
58585
58586 #. type: anchor{#1}
58587 #: guix-git/doc/guix.texi:32988
58588 msgid "guix system vm"
58589 msgstr ""
58590
58591 #. type: table
58592 #: guix-git/doc/guix.texi:32988
58593 msgid "Build a virtual machine that contains the operating system declared in @var{file}, and return a script to run that virtual machine (VM)."
58594 msgstr ""
58595
58596 #. type: quotation
58597 #: guix-git/doc/guix.texi:32996
58598 msgid "The @code{vm} action and others below can use KVM support in the Linux-libre kernel. Specifically, if the machine has hardware virtualization support, the corresponding KVM kernel module should be loaded, and the @file{/dev/kvm} device node must exist and be readable and writable by the user and by the build users of the daemon (@pxref{Build Environment Setup})."
58599 msgstr ""
58600
58601 #. type: table
58602 #: guix-git/doc/guix.texi:33001
58603 msgid "Arguments given to the script are passed to QEMU as in the example below, which enables networking and requests 1@tie{}GiB of RAM for the emulated machine:"
58604 msgstr ""
58605
58606 #. type: example
58607 #: guix-git/doc/guix.texi:33004
58608 #, no-wrap
58609 msgid "$ /gnu/store/@dots{}-run-vm.sh -m 1024 -smp 2 -net user,model=virtio-net-pci\n"
58610 msgstr ""
58611
58612 #. type: table
58613 #: guix-git/doc/guix.texi:33007
58614 msgid "The VM shares its store with the host system."
58615 msgstr ""
58616
58617 #. type: table
58618 #: guix-git/doc/guix.texi:33012
58619 msgid "Additional file systems can be shared between the host and the VM using the @option{--share} and @option{--expose} command-line options: the former specifies a directory to be shared with write access, while the latter provides read-only access to the shared directory."
58620 msgstr ""
58621
58622 #. type: table
58623 #: guix-git/doc/guix.texi:33016
58624 msgid "The example below creates a VM in which the user's home directory is accessible read-only, and where the @file{/exchange} directory is a read-write mapping of @file{$HOME/tmp} on the host:"
58625 msgstr ""
58626
58627 #. type: example
58628 #: guix-git/doc/guix.texi:33020
58629 #, no-wrap
58630 msgid ""
58631 "guix system vm my-config.scm \\\n"
58632 " --expose=$HOME --share=$HOME/tmp=/exchange\n"
58633 msgstr ""
58634
58635 #. type: table
58636 #: guix-git/doc/guix.texi:33025
58637 msgid "On GNU/Linux, the default is to boot directly to the kernel; this has the advantage of requiring only a very tiny root disk image since the store of the host can then be mounted."
58638 msgstr ""
58639
58640 #. type: table
58641 #: guix-git/doc/guix.texi:33031
58642 msgid "The @option{--full-boot} option forces a complete boot sequence, starting with the bootloader. This requires more disk space since a root image containing at least the kernel, initrd, and bootloader data files must be created. The @option{--image-size} option can be used to specify the size of the image."
58643 msgstr ""
58644
58645 #. type: cindex
58646 #: guix-git/doc/guix.texi:33032
58647 #, no-wrap
58648 msgid "System images, creation in various formats"
58649 msgstr ""
58650
58651 #. type: cindex
58652 #: guix-git/doc/guix.texi:33033
58653 #, no-wrap
58654 msgid "Creating system images in various formats"
58655 msgstr ""
58656
58657 #. type: item
58658 #: guix-git/doc/guix.texi:33034
58659 #, no-wrap
58660 msgid "image"
58661 msgstr ""
58662
58663 #. type: itemx
58664 #: guix-git/doc/guix.texi:33035
58665 #, no-wrap
58666 msgid "docker-image"
58667 msgstr ""
58668
58669 #. type: table
58670 #: guix-git/doc/guix.texi:33043
58671 msgid "Return a virtual machine, disk image, or Docker image of the operating system declared in @var{file} that stands alone. By default, @command{guix system} estimates the size of the image needed to store the system, but you can use the @option{--image-size} option to specify a value. Docker images are built to contain exactly what they need, so the @option{--image-size} option is ignored in the case of @code{docker-image}."
58672 msgstr ""
58673
58674 #. type: cindex
58675 #: guix-git/doc/guix.texi:33044
58676 #, no-wrap
58677 msgid "image, creating disk images"
58678 msgstr ""
58679
58680 #. type: table
58681 #: guix-git/doc/guix.texi:33056
58682 msgid "The @code{image} command can produce various image types. The image type can be selected using the @option{--image-type} option. It defaults to @code{efi-raw}. When its value is @code{iso9660}, the @option{--label} option can be used to specify a volume ID with @code{image}. By default, the root file system of a disk image is mounted non-volatile; the @option{--volatile} option can be provided to make it volatile instead. When using @code{image}, the bootloader installed on the generated image is taken from the provided @code{operating-system} definition. The following example demonstrates how to generate an image that uses the @code{grub-efi-bootloader} bootloader and boot it with QEMU:"
58683 msgstr ""
58684
58685 #. type: example
58686 #: guix-git/doc/guix.texi:33064
58687 #, no-wrap
58688 msgid ""
58689 "image=$(guix system image --image-type=qcow2 \\\n"
58690 " gnu/system/examples/lightweight-desktop.tmpl)\n"
58691 "cp $image /tmp/my-image.qcow2\n"
58692 "chmod +w /tmp/my-image.qcow2\n"
58693 "qemu-system-x86_64 -enable-kvm -hda /tmp/my-image.qcow2 -m 1000 \\\n"
58694 " -bios $(guix build ovmf)/share/firmware/ovmf_x64.bin\n"
58695 msgstr ""
58696
58697 #. type: table
58698 #: guix-git/doc/guix.texi:33070
58699 msgid "When using the @code{efi-raw} image type, a raw disk image is produced; it can be copied as is to a USB stick, for instance. Assuming @code{/dev/sdc} is the device corresponding to a USB stick, one can copy the image to it using the following command:"
58700 msgstr ""
58701
58702 #. type: example
58703 #: guix-git/doc/guix.texi:33073
58704 #, no-wrap
58705 msgid "# dd if=$(guix system image my-os.scm) of=/dev/sdc status=progress\n"
58706 msgstr ""
58707
58708 #. type: table
58709 #: guix-git/doc/guix.texi:33077
58710 msgid "The @code{--list-image-types} command lists all the available image types."
58711 msgstr ""
58712
58713 #. type: cindex
58714 #: guix-git/doc/guix.texi:33078
58715 #, no-wrap
58716 msgid "creating virtual machine images"
58717 msgstr ""
58718
58719 #. type: table
58720 #: guix-git/doc/guix.texi:33087
58721 msgid "When using the @code{qcow2} image type, the returned image is in qcow2 format, which the QEMU emulator can efficiently use. @xref{Running Guix in a VM}, for more information on how to run the image in a virtual machine. The @code{grub-bootloader} bootloader is always used independently of what is declared in the @code{operating-system} file passed as argument. This is to make it easier to work with QEMU, which uses the SeaBIOS BIOS by default, expecting a bootloader to be installed in the Master Boot Record (MBR)."
58722 msgstr ""
58723
58724 #. type: cindex
58725 #: guix-git/doc/guix.texi:33088
58726 #, no-wrap
58727 msgid "docker-image, creating docker images"
58728 msgstr ""
58729
58730 #. type: table
58731 #: guix-git/doc/guix.texi:33094
58732 msgid "When using @code{docker-image}, a Docker image is produced. Guix builds the image from scratch, not from a pre-existing Docker base image. As a result, it contains @emph{exactly} what you define in the operating system configuration file. You can then load the image and launch a Docker container using commands like the following:"
58733 msgstr ""
58734
58735 #. type: example
58736 #: guix-git/doc/guix.texi:33099
58737 #, no-wrap
58738 msgid ""
58739 "image_id=\"$(docker load < guix-system-docker-image.tar.gz)\"\n"
58740 "container_id=\"$(docker create $image_id)\"\n"
58741 "docker start $container_id\n"
58742 msgstr ""
58743
58744 #. type: table
58745 #: guix-git/doc/guix.texi:33106
58746 msgid "This command starts a new Docker container from the specified image. It will boot the Guix system in the usual manner, which means it will start any services you have defined in the operating system configuration. You can get an interactive shell running in the container using @command{docker exec}:"
58747 msgstr ""
58748
58749 #. type: example
58750 #: guix-git/doc/guix.texi:33109
58751 #, no-wrap
58752 msgid "docker exec -ti $container_id /run/current-system/profile/bin/bash --login\n"
58753 msgstr ""
58754
58755 #. type: table
58756 #: guix-git/doc/guix.texi:33116
58757 msgid "Depending on what you run in the Docker container, it may be necessary to give the container additional permissions. For example, if you intend to build software using Guix inside of the Docker container, you may need to pass the @option{--privileged} option to @code{docker create}."
58758 msgstr ""
58759
58760 #. type: table
58761 #: guix-git/doc/guix.texi:33120
58762 msgid "Last, the @option{--network} option applies to @command{guix system docker-image}: it produces an image where network is supposedly shared with the host, and thus without services like nscd or NetworkManager."
58763 msgstr ""
58764
58765 #. type: table
58766 #: guix-git/doc/guix.texi:33128
58767 msgid "Return a script to run the operating system declared in @var{file} within a container. Containers are a set of lightweight isolation mechanisms provided by the kernel Linux-libre. Containers are substantially less resource-demanding than full virtual machines since the kernel, shared objects, and other resources can be shared with the host system; this also means they provide thinner isolation."
58768 msgstr ""
58769
58770 #. type: table
58771 #: guix-git/doc/guix.texi:33132
58772 msgid "Currently, the script must be run as root in order to support more than a single user and group. The container shares its store with the host system."
58773 msgstr ""
58774
58775 #. type: table
58776 #: guix-git/doc/guix.texi:33136
58777 msgid "As with the @code{vm} action (@pxref{guix system vm}), additional file systems to be shared between the host and container can be specified using the @option{--share} and @option{--expose} options:"
58778 msgstr ""
58779
58780 #. type: example
58781 #: guix-git/doc/guix.texi:33140
58782 #, no-wrap
58783 msgid ""
58784 "guix system container my-config.scm \\\n"
58785 " --expose=$HOME --share=$HOME/tmp=/exchange\n"
58786 msgstr ""
58787
58788 #. type: quotation
58789 #: guix-git/doc/guix.texi:33144
58790 msgid "This option requires Linux-libre 3.19 or newer."
58791 msgstr ""
58792
58793 #. type: Plain text
58794 #: guix-git/doc/guix.texi:33151
58795 msgid "@var{options} can contain any of the common build options (@pxref{Common Build Options}). In addition, @var{options} can contain one of the following:"
58796 msgstr ""
58797
58798 #. type: table
58799 #: guix-git/doc/guix.texi:33160
58800 msgid "Consider the operating-system @var{expr} evaluates to. This is an alternative to specifying a file which evaluates to an operating system. This is used to generate the Guix system installer @pxref{Building the Installation Image})."
58801 msgstr ""
58802
58803 #. type: table
58804 #: guix-git/doc/guix.texi:33165
58805 msgid "Attempt to build for @var{system} instead of the host system type. This works as per @command{guix build} (@pxref{Invoking guix build})."
58806 msgstr ""
58807
58808 #. type: table
58809 #: guix-git/doc/guix.texi:33170
58810 msgid "Return the derivation file name of the given operating system without building anything."
58811 msgstr ""
58812
58813 #. type: table
58814 #: guix-git/doc/guix.texi:33179
58815 msgid "As discussed above, @command{guix system init} and @command{guix system reconfigure} always save provenance information @i{via} a dedicated service (@pxref{Service Reference, @code{provenance-service-type}}). However, other commands don't do that by default. If you wish to, say, create a virtual machine image that contains provenance information, you can run:"
58816 msgstr ""
58817
58818 #. type: example
58819 #: guix-git/doc/guix.texi:33182
58820 #, no-wrap
58821 msgid "guix system image -t qcow2 --save-provenance config.scm\n"
58822 msgstr ""
58823
58824 #. type: table
58825 #: guix-git/doc/guix.texi:33189
58826 msgid "That way, the resulting image will effectively ``embed its own source'' in the form of meta-data in @file{/run/current-system}. With that information, one can rebuild the image to make sure it really contains what it pretends to contain; or they could use that to derive a variant of the image."
58827 msgstr ""
58828
58829 #. type: item
58830 #: guix-git/doc/guix.texi:33190
58831 #, no-wrap
58832 msgid "--image-type=@var{type}"
58833 msgstr ""
58834
58835 #. type: table
58836 #: guix-git/doc/guix.texi:33193
58837 msgid "For the @code{image} action, create an image with given @var{type}."
58838 msgstr ""
58839
58840 #. type: table
58841 #: guix-git/doc/guix.texi:33196
58842 msgid "When this option is omitted, @command{guix system} uses the @code{efi-raw} image type."
58843 msgstr ""
58844
58845 #. type: cindex
58846 #: guix-git/doc/guix.texi:33197
58847 #, no-wrap
58848 msgid "ISO-9660 format"
58849 msgstr ""
58850
58851 #. type: cindex
58852 #: guix-git/doc/guix.texi:33198
58853 #, no-wrap
58854 msgid "CD image format"
58855 msgstr ""
58856
58857 #. type: cindex
58858 #: guix-git/doc/guix.texi:33199
58859 #, no-wrap
58860 msgid "DVD image format"
58861 msgstr ""
58862
58863 #. type: table
58864 #: guix-git/doc/guix.texi:33202
58865 msgid "@option{--image-type=iso9660} produces an ISO-9660 image, suitable for burning on CDs and DVDs."
58866 msgstr ""
58867
58868 #. type: item
58869 #: guix-git/doc/guix.texi:33203
58870 #, no-wrap
58871 msgid "--image-size=@var{size}"
58872 msgstr ""
58873
58874 #. type: table
58875 #: guix-git/doc/guix.texi:33208
58876 msgid "For the @code{image} action, create an image of the given @var{size}. @var{size} may be a number of bytes, or it may include a unit as a suffix (@pxref{Block size, size specifications,, coreutils, GNU Coreutils})."
58877 msgstr ""
58878
58879 #. type: table
58880 #: guix-git/doc/guix.texi:33212
58881 msgid "When this option is omitted, @command{guix system} computes an estimate of the image size as a function of the size of the system declared in @var{file}."
58882 msgstr ""
58883
58884 #. type: table
58885 #: guix-git/doc/guix.texi:33217
58886 msgid "For the @code{container} action, allow containers to access the host network, that is, do not create a network namespace."
58887 msgstr ""
58888
58889 #. type: item
58890 #: guix-git/doc/guix.texi:33223
58891 #, no-wrap
58892 msgid "--skip-checks"
58893 msgstr ""
58894
58895 #. type: table
58896 #: guix-git/doc/guix.texi:33225
58897 msgid "Skip pre-installation safety checks."
58898 msgstr ""
58899
58900 #. type: table
58901 #: guix-git/doc/guix.texi:33232
58902 msgid "By default, @command{guix system init} and @command{guix system reconfigure} perform safety checks: they make sure the file systems that appear in the @code{operating-system} declaration actually exist (@pxref{File Systems}), and that any Linux kernel modules that may be needed at boot time are listed in @code{initrd-modules} (@pxref{Initial RAM Disk}). Passing this option skips these tests altogether."
58903 msgstr ""
58904
58905 #. type: table
58906 #: guix-git/doc/guix.texi:33235
58907 msgid "Instruct @command{guix system reconfigure} to allow system downgrades."
58908 msgstr ""
58909
58910 #. type: table
58911 #: guix-git/doc/guix.texi:33243
58912 msgid "By default, @command{reconfigure} prevents you from downgrading your system. It achieves that by comparing the provenance info of your system (shown by @command{guix system describe}) with that of your @command{guix} command (shown by @command{guix describe}). If the commits for @command{guix} are not descendants of those used for your system, @command{guix system reconfigure} errors out. Passing @option{--allow-downgrades} allows you to bypass these checks."
58913 msgstr ""
58914
58915 #. type: cindex
58916 #: guix-git/doc/guix.texi:33249
58917 #, no-wrap
58918 msgid "on-error"
58919 msgstr ""
58920
58921 #. type: cindex
58922 #: guix-git/doc/guix.texi:33250
58923 #, no-wrap
58924 msgid "on-error strategy"
58925 msgstr ""
58926
58927 #. type: cindex
58928 #: guix-git/doc/guix.texi:33251
58929 #, no-wrap
58930 msgid "error strategy"
58931 msgstr ""
58932
58933 #. type: item
58934 #: guix-git/doc/guix.texi:33252
58935 #, no-wrap
58936 msgid "--on-error=@var{strategy}"
58937 msgstr ""
58938
58939 #. type: table
58940 #: guix-git/doc/guix.texi:33255
58941 msgid "Apply @var{strategy} when an error occurs when reading @var{file}. @var{strategy} may be one of the following:"
58942 msgstr ""
58943
58944 #. type: item
58945 #: guix-git/doc/guix.texi:33257
58946 #, no-wrap
58947 msgid "nothing-special"
58948 msgstr ""
58949
58950 #. type: table
58951 #: guix-git/doc/guix.texi:33259
58952 msgid "Report the error concisely and exit. This is the default strategy."
58953 msgstr ""
58954
58955 #. type: item
58956 #: guix-git/doc/guix.texi:33260
58957 #, no-wrap
58958 msgid "backtrace"
58959 msgstr ""
58960
58961 #. type: table
58962 #: guix-git/doc/guix.texi:33262
58963 msgid "Likewise, but also display a backtrace."
58964 msgstr ""
58965
58966 #. type: item
58967 #: guix-git/doc/guix.texi:33263
58968 #, no-wrap
58969 msgid "debug"
58970 msgstr ""
58971
58972 #. type: table
58973 #: guix-git/doc/guix.texi:33269
58974 msgid "Report the error and enter Guile's debugger. From there, you can run commands such as @code{,bt} to get a backtrace, @code{,locals} to display local variable values, and more generally inspect the state of the program. @xref{Debug Commands,,, guile, GNU Guile Reference Manual}, for a list of available debugging commands."
58975 msgstr ""
58976
58977 #. type: Plain text
58978 #: guix-git/doc/guix.texi:33276
58979 msgid "Once you have built, configured, re-configured, and re-re-configured your Guix installation, you may find it useful to list the operating system generations available on disk---and that you can choose from the bootloader boot menu:"
58980 msgstr ""
58981
58982 #. type: item
58983 #: guix-git/doc/guix.texi:33279
58984 #, no-wrap
58985 msgid "describe"
58986 msgstr ""
58987
58988 #. type: table
58989 #: guix-git/doc/guix.texi:33282
58990 msgid "Describe the current system generation: its file name, the kernel and bootloader used, etc., as well as provenance information when available."
58991 msgstr ""
58992
58993 #. type: item
58994 #: guix-git/doc/guix.texi:33283
58995 #, no-wrap
58996 msgid "list-generations"
58997 msgstr ""
58998
58999 #. type: table
59000 #: guix-git/doc/guix.texi:33288
59001 msgid "List a summary of each generation of the operating system available on disk, in a human-readable way. This is similar to the @option{--list-generations} option of @command{guix package} (@pxref{Invoking guix package})."
59002 msgstr ""
59003
59004 #. type: table
59005 #: guix-git/doc/guix.texi:33293
59006 msgid "Optionally, one can specify a pattern, with the same syntax that is used in @command{guix package --list-generations}, to restrict the list of generations displayed. For instance, the following command displays generations that are up to 10 days old:"
59007 msgstr ""
59008
59009 #. type: example
59010 #: guix-git/doc/guix.texi:33296
59011 #, no-wrap
59012 msgid "$ guix system list-generations 10d\n"
59013 msgstr ""
59014
59015 #. type: Plain text
59016 #: guix-git/doc/guix.texi:33303
59017 msgid "The @command{guix system} command has even more to offer! The following sub-commands allow you to visualize how your system services relate to each other:"
59018 msgstr ""
59019
59020 #. type: anchor{#1}
59021 #: guix-git/doc/guix.texi:33305
59022 msgid "system-extension-graph"
59023 msgstr ""
59024
59025 #. type: item
59026 #: guix-git/doc/guix.texi:33307
59027 #, no-wrap
59028 msgid "extension-graph"
59029 msgstr ""
59030
59031 #. type: table
59032 #: guix-git/doc/guix.texi:33314
59033 msgid "Emit to standard output the @dfn{service extension graph} of the operating system defined in @var{file} (@pxref{Service Composition}, for more information on service extensions). By default the output is in Dot/Graphviz format, but you can choose a different format with @option{--graph-backend}, as with @command{guix graph} (@pxref{Invoking guix graph, @option{--backend}}):"
59034 msgstr ""
59035
59036 #. type: table
59037 #: guix-git/doc/guix.texi:33316
59038 msgid "The command:"
59039 msgstr ""
59040
59041 #. type: example
59042 #: guix-git/doc/guix.texi:33319
59043 #, no-wrap
59044 msgid "$ guix system extension-graph @var{file} | xdot -\n"
59045 msgstr ""
59046
59047 #. type: table
59048 #: guix-git/doc/guix.texi:33322
59049 msgid "shows the extension relations among services."
59050 msgstr ""
59051
59052 #. type: anchor{#1}
59053 #: guix-git/doc/guix.texi:33324
59054 msgid "system-shepherd-graph"
59055 msgstr ""
59056
59057 #. type: item
59058 #: guix-git/doc/guix.texi:33324
59059 #, no-wrap
59060 msgid "shepherd-graph"
59061 msgstr ""
59062
59063 #. type: table
59064 #: guix-git/doc/guix.texi:33329
59065 msgid "Emit to standard output the @dfn{dependency graph} of shepherd services of the operating system defined in @var{file}. @xref{Shepherd Services}, for more information and for an example graph."
59066 msgstr ""
59067
59068 #. type: table
59069 #: guix-git/doc/guix.texi:33332
59070 msgid "Again, the default output format is Dot/Graphviz, but you can pass @option{--graph-backend} to select a different one."
59071 msgstr ""
59072
59073 #. type: section
59074 #: guix-git/doc/guix.texi:33336
59075 #, no-wrap
59076 msgid "Invoking @code{guix deploy}"
59077 msgstr ""
59078
59079 #. type: Plain text
59080 #: guix-git/doc/guix.texi:33344
59081 msgid "We've already seen @code{operating-system} declarations used to manage a machine's configuration locally. Suppose you need to configure multiple machines, though---perhaps you're managing a service on the web that's comprised of several servers. @command{guix deploy} enables you to use those same @code{operating-system} declarations to manage multiple remote hosts at once as a logical ``deployment''."
59082 msgstr ""
59083
59084 #. type: quotation
59085 #: guix-git/doc/guix.texi:33349
59086 msgid "The functionality described in this section is still under development and is subject to change. Get in touch with us on @email{guix-devel@@gnu.org}!"
59087 msgstr ""
59088
59089 #. type: example
59090 #: guix-git/doc/guix.texi:33353
59091 #, no-wrap
59092 msgid "guix deploy @var{file}\n"
59093 msgstr ""
59094
59095 #. type: Plain text
59096 #: guix-git/doc/guix.texi:33357
59097 msgid "Such an invocation will deploy the machines that the code within @var{file} evaluates to. As an example, @var{file} might contain a definition like this:"
59098 msgstr ""
59099
59100 #. type: lisp
59101 #: guix-git/doc/guix.texi:33364
59102 #, no-wrap
59103 msgid ""
59104 ";; This is a Guix deployment of a \"bare bones\" setup, with\n"
59105 ";; no X11 display server, to a machine with an SSH daemon\n"
59106 ";; listening on localhost:2222. A configuration such as this\n"
59107 ";; may be appropriate for virtual machine with ports\n"
59108 ";; forwarded to the host's loopback interface.\n"
59109 "\n"
59110 msgstr ""
59111
59112 #. type: lisp
59113 #: guix-git/doc/guix.texi:33367
59114 #, no-wrap
59115 msgid ""
59116 "(use-service-modules networking ssh)\n"
59117 "(use-package-modules bootloaders)\n"
59118 "\n"
59119 msgstr ""
59120
59121 #. type: lisp
59122 #: guix-git/doc/guix.texi:33388
59123 #, no-wrap
59124 msgid ""
59125 "(define %system\n"
59126 " (operating-system\n"
59127 " (host-name \"gnu-deployed\")\n"
59128 " (timezone \"Etc/UTC\")\n"
59129 " (bootloader (bootloader-configuration\n"
59130 " (bootloader grub-bootloader)\n"
59131 " (target \"/dev/vda\")\n"
59132 " (terminal-outputs '(console))))\n"
59133 " (file-systems (cons (file-system\n"
59134 " (mount-point \"/\")\n"
59135 " (device \"/dev/vda1\")\n"
59136 " (type \"ext4\"))\n"
59137 " %base-file-systems))\n"
59138 " (services\n"
59139 " (append (list (service dhcp-client-service-type)\n"
59140 " (service openssh-service-type\n"
59141 " (openssh-configuration\n"
59142 " (permit-root-login #t)\n"
59143 " (allow-empty-passwords? #t))))\n"
59144 " %base-services))))\n"
59145 "\n"
59146 msgstr ""
59147
59148 #. type: lisp
59149 #: guix-git/doc/guix.texi:33398
59150 #, no-wrap
59151 msgid ""
59152 "(list (machine\n"
59153 " (operating-system %system)\n"
59154 " (environment managed-host-environment-type)\n"
59155 " (configuration (machine-ssh-configuration\n"
59156 " (host-name \"localhost\")\n"
59157 " (system \"x86_64-linux\")\n"
59158 " (user \"alice\")\n"
59159 " (identity \"./id_rsa\")\n"
59160 " (port 2222)))))\n"
59161 msgstr ""
59162
59163 #. type: Plain text
59164 #: guix-git/doc/guix.texi:33411
59165 msgid "The file should evaluate to a list of @var{machine} objects. This example, upon being deployed, will create a new generation on the remote system realizing the @code{operating-system} declaration @code{%system}. @code{environment} and @code{configuration} specify how the machine should be provisioned---that is, how the computing resources should be created and managed. The above example does not create any resources, as a @code{'managed-host} is a machine that is already running the Guix system and available over the network. This is a particularly simple case; a more complex deployment may involve, for example, starting virtual machines through a Virtual Private Server (VPS) provider. In such a case, a different @var{environment} type would be used."
59166 msgstr ""
59167
59168 #. type: Plain text
59169 #: guix-git/doc/guix.texi:33416
59170 msgid "Do note that you first need to generate a key pair on the coordinator machine to allow the daemon to export signed archives of files from the store (@pxref{Invoking guix archive}), though this step is automatic on Guix System:"
59171 msgstr ""
59172
59173 #. type: Plain text
59174 #: guix-git/doc/guix.texi:33424
59175 msgid "Each target machine must authorize the key of the master machine so that it accepts store items it receives from the coordinator:"
59176 msgstr ""
59177
59178 #. type: example
59179 #: guix-git/doc/guix.texi:33427
59180 #, no-wrap
59181 msgid "# guix archive --authorize < coordinator-public-key.txt\n"
59182 msgstr ""
59183
59184 #. type: Plain text
59185 #: guix-git/doc/guix.texi:33438
59186 msgid "@code{user}, in this example, specifies the name of the user account to log in as to perform the deployment. Its default value is @code{root}, but root login over SSH may be forbidden in some cases. To work around this, @command{guix deploy} can log in as an unprivileged user and employ @code{sudo} to escalate privileges. This will only work if @code{sudo} is currently installed on the remote and can be invoked non-interactively as @code{user}. That is, the line in @code{sudoers} granting @code{user} the ability to use @code{sudo} must contain the @code{NOPASSWD} tag. This can be accomplished with the following operating system configuration snippet:"
59187 msgstr ""
59188
59189 #. type: lisp
59190 #: guix-git/doc/guix.texi:33442
59191 #, no-wrap
59192 msgid ""
59193 "(use-modules ...\n"
59194 " (gnu system)) ;for %sudoers-specification\n"
59195 "\n"
59196 msgstr ""
59197
59198 #. type: lisp
59199 #: guix-git/doc/guix.texi:33444
59200 #, no-wrap
59201 msgid ""
59202 "(define %user \"username\")\n"
59203 "\n"
59204 msgstr ""
59205
59206 #. type: lisp
59207 #: guix-git/doc/guix.texi:33452
59208 #, no-wrap
59209 msgid ""
59210 "(operating-system\n"
59211 " ...\n"
59212 " (sudoers-file\n"
59213 " (plain-file \"sudoers\"\n"
59214 " (string-append (plain-file-content %sudoers-specification)\n"
59215 " (format #f \"~a ALL = NOPASSWD: ALL~%\"\n"
59216 " %user)))))\n"
59217 "\n"
59218 msgstr ""
59219
59220 #. type: Plain text
59221 #: guix-git/doc/guix.texi:33457
59222 msgid "For more information regarding the format of the @file{sudoers} file, consult @command{man sudoers}."
59223 msgstr ""
59224
59225 #. type: deftp
59226 #: guix-git/doc/guix.texi:33458
59227 #, no-wrap
59228 msgid "{Data Type} machine"
59229 msgstr ""
59230
59231 #. type: deftp
59232 #: guix-git/doc/guix.texi:33461
59233 msgid "This is the data type representing a single machine in a heterogeneous Guix deployment."
59234 msgstr ""
59235
59236 #. type: table
59237 #: guix-git/doc/guix.texi:33465
59238 msgid "The object of the operating system configuration to deploy."
59239 msgstr ""
59240
59241 #. type: code{#1}
59242 #: guix-git/doc/guix.texi:33466
59243 #, no-wrap
59244 msgid "environment"
59245 msgstr ""
59246
59247 #. type: table
59248 #: guix-git/doc/guix.texi:33468
59249 msgid "An @code{environment-type} describing how the machine should be provisioned."
59250 msgstr ""
59251
59252 #. type: item
59253 #: guix-git/doc/guix.texi:33469
59254 #, no-wrap
59255 msgid "@code{configuration} (default: @code{#f})"
59256 msgstr ""
59257
59258 #. type: table
59259 #: guix-git/doc/guix.texi:33474
59260 msgid "An object describing the configuration for the machine's @code{environment}. If the @code{environment} has a default configuration, @code{#f} may be used. If @code{#f} is used for an environment with no default configuration, however, an error will be thrown."
59261 msgstr ""
59262
59263 #. type: deftp
59264 #: guix-git/doc/guix.texi:33477
59265 #, no-wrap
59266 msgid "{Data Type} machine-ssh-configuration"
59267 msgstr ""
59268
59269 #. type: deftp
59270 #: guix-git/doc/guix.texi:33480
59271 msgid "This is the data type representing the SSH client parameters for a machine with an @code{environment} of @code{managed-host-environment-type}."
59272 msgstr ""
59273
59274 #. type: item
59275 #: guix-git/doc/guix.texi:33483
59276 #, no-wrap
59277 msgid "@code{build-locally?} (default: @code{#t})"
59278 msgstr ""
59279
59280 #. type: table
59281 #: guix-git/doc/guix.texi:33485
59282 msgid "If false, system derivations will be built on the machine being deployed to."
59283 msgstr ""
59284
59285 #. type: code{#1}
59286 #: guix-git/doc/guix.texi:33485
59287 #, no-wrap
59288 msgid "system"
59289 msgstr ""
59290
59291 #. type: table
59292 #: guix-git/doc/guix.texi:33488
59293 msgid "The system type describing the architecture of the machine being deployed to---e.g., @code{\"x86_64-linux\"}."
59294 msgstr ""
59295
59296 #. type: item
59297 #: guix-git/doc/guix.texi:33488
59298 #, no-wrap
59299 msgid "@code{authorize?} (default: @code{#t})"
59300 msgstr ""
59301
59302 #. type: table
59303 #: guix-git/doc/guix.texi:33491
59304 msgid "If true, the coordinator's signing key will be added to the remote's ACL keyring."
59305 msgstr ""
59306
59307 #. type: item
59308 #: guix-git/doc/guix.texi:33492
59309 #, no-wrap
59310 msgid "@code{user} (default: @code{\"root\"})"
59311 msgstr ""
59312
59313 #. type: item
59314 #: guix-git/doc/guix.texi:33493
59315 #, no-wrap
59316 msgid "@code{identity} (default: @code{#f})"
59317 msgstr ""
59318
59319 #. type: table
59320 #: guix-git/doc/guix.texi:33496
59321 msgid "If specified, the path to the SSH private key to use to authenticate with the remote host."
59322 msgstr ""
59323
59324 #. type: item
59325 #: guix-git/doc/guix.texi:33497
59326 #, no-wrap
59327 msgid "@code{host-key} (default: @code{#f})"
59328 msgstr ""
59329
59330 #. type: table
59331 #: guix-git/doc/guix.texi:33499
59332 msgid "This should be the SSH host key of the machine, which looks like this:"
59333 msgstr ""
59334
59335 #. type: example
59336 #: guix-git/doc/guix.texi:33502
59337 #, no-wrap
59338 msgid "ssh-ed25519 AAAAC3Nz@dots{} root@@example.org\n"
59339 msgstr ""
59340
59341 #. type: table
59342 #: guix-git/doc/guix.texi:33507
59343 msgid "When @code{host-key} is @code{#f}, the server is authenticated against the @file{~/.ssh/known_hosts} file, just like the OpenSSH @command{ssh} client does."
59344 msgstr ""
59345
59346 #. type: item
59347 #: guix-git/doc/guix.texi:33508
59348 #, no-wrap
59349 msgid "@code{allow-downgrades?} (default: @code{#f})"
59350 msgstr ""
59351
59352 #. type: table
59353 #: guix-git/doc/guix.texi:33510
59354 msgid "Whether to allow potential downgrades."
59355 msgstr ""
59356
59357 #. type: table
59358 #: guix-git/doc/guix.texi:33518
59359 msgid "Like @command{guix system reconfigure}, @command{guix deploy} compares the channel commits currently deployed on the remote host (as returned by @command{guix system describe}) to those currently in use (as returned by @command{guix describe}) to determine whether commits currently in use are descendants of those deployed. When this is not the case and @code{allow-downgrades?} is false, it raises an error. This ensures you do not accidentally downgrade remote machines."
59360 msgstr ""
59361
59362 #. type: deftp
59363 #: guix-git/doc/guix.texi:33521
59364 #, no-wrap
59365 msgid "{Data Type} digital-ocean-configuration"
59366 msgstr ""
59367
59368 #. type: deftp
59369 #: guix-git/doc/guix.texi:33524
59370 msgid "This is the data type describing the Droplet that should be created for a machine with an @code{environment} of @code{digital-ocean-environment-type}."
59371 msgstr ""
59372
59373 #. type: code{#1}
59374 #: guix-git/doc/guix.texi:33526
59375 #, no-wrap
59376 msgid "ssh-key"
59377 msgstr ""
59378
59379 #. type: table
59380 #: guix-git/doc/guix.texi:33529
59381 msgid "The path to the SSH private key to use to authenticate with the remote host. In the future, this field may not exist."
59382 msgstr ""
59383
59384 #. type: code{#1}
59385 #: guix-git/doc/guix.texi:33529
59386 #, no-wrap
59387 msgid "tags"
59388 msgstr ""
59389
59390 #. type: table
59391 #: guix-git/doc/guix.texi:33532
59392 msgid "A list of string ``tags'' that uniquely identify the machine. Must be given such that no two machines in the deployment have the same set of tags."
59393 msgstr ""
59394
59395 #. type: code{#1}
59396 #: guix-git/doc/guix.texi:33532
59397 #, no-wrap
59398 msgid "region"
59399 msgstr ""
59400
59401 #. type: table
59402 #: guix-git/doc/guix.texi:33534
59403 msgid "A Digital Ocean region slug, such as @code{\"nyc3\"}."
59404 msgstr ""
59405
59406 #. type: table
59407 #: guix-git/doc/guix.texi:33536
59408 msgid "A Digital Ocean size slug, such as @code{\"s-1vcpu-1gb\"}"
59409 msgstr ""
59410
59411 #. type: code{#1}
59412 #: guix-git/doc/guix.texi:33536
59413 #, no-wrap
59414 msgid "enable-ipv6?"
59415 msgstr ""
59416
59417 #. type: table
59418 #: guix-git/doc/guix.texi:33538
59419 msgid "Whether or not the droplet should be created with IPv6 networking."
59420 msgstr ""
59421
59422 #. type: section
59423 #: guix-git/doc/guix.texi:33542
59424 #, no-wrap
59425 msgid "Running Guix in a Virtual Machine"
59426 msgstr ""
59427
59428 #. type: Plain text
59429 #: guix-git/doc/guix.texi:33551
59430 msgid "To run Guix in a virtual machine (VM), one can use the pre-built Guix VM image distributed at @url{@value{BASE-URL}/guix-system-vm-image-@value{VERSION}.x86_64-linux.xz}. This image is a compressed image in QCOW format. You will first need to decompress with @command{xz -d}, and then you can pass it to an emulator such as QEMU (see below for details)."
59431 msgstr ""
59432
59433 #. type: Plain text
59434 #: guix-git/doc/guix.texi:33558
59435 msgid "This image boots the Xfce graphical environment and it contains some commonly used tools. You can install more software in the image by running @command{guix package} in a terminal (@pxref{Invoking guix package}). You can also reconfigure the system based on its initial configuration file available as @file{/run/current-system/configuration.scm} (@pxref{Using the Configuration System})."
59436 msgstr ""
59437
59438 #. type: Plain text
59439 #: guix-git/doc/guix.texi:33563
59440 msgid "Instead of using this pre-built image, one can also build their own virtual machine image using @command{guix system vm-image} (@pxref{Invoking guix system}). The returned image is in qcow2 format, which the @uref{https://qemu.org/, QEMU emulator} can efficiently use."
59441 msgstr ""
59442
59443 #. type: cindex
59444 #: guix-git/doc/guix.texi:33564
59445 #, no-wrap
59446 msgid "QEMU"
59447 msgstr ""
59448
59449 #. type: Plain text
59450 #: guix-git/doc/guix.texi:33571
59451 msgid "If you built your own image, you must copy it out of the store (@pxref{The Store}) and give yourself permission to write to the copy before you can use it. When invoking QEMU, you must choose a system emulator that is suitable for your hardware platform. Here is a minimal QEMU invocation that will boot the result of @command{guix system image -t qcow2} on x86_64 hardware:"
59452 msgstr ""
59453
59454 #. type: example
59455 #: guix-git/doc/guix.texi:33578
59456 #, no-wrap
59457 msgid ""
59458 "$ qemu-system-x86_64 \\\n"
59459 " -nic user,model=virtio-net-pci \\\n"
59460 " -enable-kvm -m 1024 \\\n"
59461 " -device virtio-blk,drive=myhd \\\n"
59462 " -drive if=none,file=/tmp/qemu-image,id=myhd\n"
59463 msgstr ""
59464
59465 #. type: Plain text
59466 #: guix-git/doc/guix.texi:33581
59467 msgid "Here is what each of these options means:"
59468 msgstr ""
59469
59470 #. type: item
59471 #: guix-git/doc/guix.texi:33583
59472 #, no-wrap
59473 msgid "qemu-system-x86_64"
59474 msgstr ""
59475
59476 #. type: table
59477 #: guix-git/doc/guix.texi:33586
59478 msgid "This specifies the hardware platform to emulate. This should match the host."
59479 msgstr ""
59480
59481 #. type: item
59482 #: guix-git/doc/guix.texi:33587
59483 #, no-wrap
59484 msgid "-nic user,model=virtio-net-pci"
59485 msgstr ""
59486
59487 #. type: table
59488 #: guix-git/doc/guix.texi:33595
59489 msgid "Enable the unprivileged user-mode network stack. The guest OS can access the host but not vice versa. This is the simplest way to get the guest OS online. @code{model} specifies which network device to emulate: @code{virtio-net-pci} is a special device made for virtualized operating systems and recommended for most uses. Assuming your hardware platform is x86_64, you can get a list of available NIC models by running @command{qemu-system-x86_64 -nic model=help}."
59490 msgstr ""
59491
59492 #. type: item
59493 #: guix-git/doc/guix.texi:33596
59494 #, no-wrap
59495 msgid "-enable-kvm"
59496 msgstr ""
59497
59498 #. type: table
59499 #: guix-git/doc/guix.texi:33600
59500 msgid "If your system has hardware virtualization extensions, enabling the virtual machine support (KVM) of the Linux kernel will make things run faster."
59501 msgstr ""
59502
59503 #. type: item
59504 #: guix-git/doc/guix.texi:33602
59505 #, no-wrap
59506 msgid "-m 1024"
59507 msgstr ""
59508
59509 #. type: table
59510 #: guix-git/doc/guix.texi:33605
59511 msgid "RAM available to the guest OS, in mebibytes. Defaults to 128@tie{}MiB, which may be insufficient for some operations."
59512 msgstr ""
59513
59514 #. type: item
59515 #: guix-git/doc/guix.texi:33606
59516 #, no-wrap
59517 msgid "-device virtio-blk,drive=myhd"
59518 msgstr ""
59519
59520 #. type: table
59521 #: guix-git/doc/guix.texi:33611
59522 msgid "Create a @code{virtio-blk} drive called ``myhd''. @code{virtio-blk} is a ``paravirtualization'' mechanism for block devices that allows QEMU to achieve better performance than if it were emulating a complete disk drive. See the QEMU and KVM documentation for more info."
59523 msgstr ""
59524
59525 #. type: item
59526 #: guix-git/doc/guix.texi:33612
59527 #, no-wrap
59528 msgid "-drive if=none,file=/tmp/qemu-image,id=myhd"
59529 msgstr ""
59530
59531 #. type: table
59532 #: guix-git/doc/guix.texi:33615
59533 msgid "Use our QCOW image, the @file{/tmp/qemu-image} file, as the backing store of the ``myhd'' drive."
59534 msgstr ""
59535
59536 #. type: Plain text
59537 #: guix-git/doc/guix.texi:33625
59538 msgid "The default @command{run-vm.sh} script that is returned by an invocation of @command{guix system vm} does not add a @command{-nic user} flag by default. To get network access from within the vm add the @code{(dhcp-client-service)} to your system definition and start the VM using @command{$(guix system vm config.scm) -nic user}. An important caveat of using @command{-nic user} for networking is that @command{ping} will not work, because it uses the ICMP protocol. You'll have to use a different command to check for network connectivity, for example @command{guix download}."
59539 msgstr ""
59540
59541 #. type: subsection
59542 #: guix-git/doc/guix.texi:33626
59543 #, no-wrap
59544 msgid "Connecting Through SSH"
59545 msgstr ""
59546
59547 #. type: Plain text
59548 #: guix-git/doc/guix.texi:33634
59549 msgid "To enable SSH inside a VM you need to add an SSH server like @code{openssh-service-type} to your VM (@pxref{Networking Services, @code{openssh-service-type}}). In addition you need to forward the SSH port, 22 by default, to the host. You can do this with"
59550 msgstr ""
59551
59552 #. type: example
59553 #: guix-git/doc/guix.texi:33637
59554 #, no-wrap
59555 msgid "$(guix system vm config.scm) -nic user,model=virtio-net-pci,hostfwd=tcp::10022-:22\n"
59556 msgstr ""
59557
59558 #. type: Plain text
59559 #: guix-git/doc/guix.texi:33640
59560 msgid "To connect to the VM you can run"
59561 msgstr ""
59562
59563 #. type: example
59564 #: guix-git/doc/guix.texi:33643
59565 #, no-wrap
59566 msgid "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 10022 localhost\n"
59567 msgstr ""
59568
59569 #. type: Plain text
59570 #: guix-git/doc/guix.texi:33650
59571 msgid "The @command{-p} tells @command{ssh} the port you want to connect to. @command{-o UserKnownHostsFile=/dev/null} prevents @command{ssh} from complaining every time you modify your @command{config.scm} file and the @command{-o StrictHostKeyChecking=no} prevents you from having to allow a connection to an unknown host every time you connect."
59572 msgstr ""
59573
59574 #. type: subsection
59575 #: guix-git/doc/guix.texi:33651
59576 #, no-wrap
59577 msgid "Using @command{virt-viewer} with Spice"
59578 msgstr ""
59579
59580 #. type: Plain text
59581 #: guix-git/doc/guix.texi:33657
59582 msgid "As an alternative to the default @command{qemu} graphical client you can use the @command{remote-viewer} from the @command{virt-viewer} package. To connect pass the @command{-spice port=5930,disable-ticketing} flag to @command{qemu}. See previous section for further information on how to do this."
59583 msgstr ""
59584
59585 #. type: Plain text
59586 #: guix-git/doc/guix.texi:33660
59587 msgid "Spice also allows you to do some nice stuff like share your clipboard with your VM@. To enable that you'll also have to pass the following flags to @command{qemu}:"
59588 msgstr ""
59589
59590 #. type: example
59591 #: guix-git/doc/guix.texi:33666
59592 #, no-wrap
59593 msgid ""
59594 "-device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x5\n"
59595 "-chardev spicevmc,name=vdagent,id=vdagent\n"
59596 "-device virtserialport,nr=1,bus=virtio-serial0.0,chardev=vdagent,\n"
59597 "name=com.redhat.spice.0\n"
59598 msgstr ""
59599
59600 #. type: Plain text
59601 #: guix-git/doc/guix.texi:33670
59602 msgid "You'll also need to add the @code{(spice-vdagent-service)} to your system definition (@pxref{Miscellaneous Services, Spice service})."
59603 msgstr ""
59604
59605 #. type: Plain text
59606 #: guix-git/doc/guix.texi:33677
59607 msgid "The previous sections show the available services and how one can combine them in an @code{operating-system} declaration. But how do we define them in the first place? And what is a service anyway?"
59608 msgstr ""
59609
59610 #. type: cindex
59611 #: guix-git/doc/guix.texi:33689
59612 #, no-wrap
59613 msgid "daemons"
59614 msgstr ""
59615
59616 #. type: Plain text
59617 #: guix-git/doc/guix.texi:33702
59618 msgid "Here we define a @dfn{service} as, broadly, something that extends the functionality of the operating system. Often a service is a process---a @dfn{daemon}---started when the system boots: a secure shell server, a Web server, the Guix build daemon, etc. Sometimes a service is a daemon whose execution can be triggered by another daemon---e.g., an FTP server started by @command{inetd} or a D-Bus service activated by @command{dbus-daemon}. Occasionally, a service does not map to a daemon. For instance, the ``account'' service collects user accounts and makes sure they exist when the system runs; the ``udev'' service collects device management rules and makes them available to the eudev daemon; the @file{/etc} service populates the @file{/etc} directory of the system."
59619 msgstr ""
59620
59621 #. type: cindex
59622 #: guix-git/doc/guix.texi:33703
59623 #, no-wrap
59624 msgid "service extensions"
59625 msgstr ""
59626
59627 #. type: Plain text
59628 #: guix-git/doc/guix.texi:33715
59629 msgid "Guix system services are connected by @dfn{extensions}. For instance, the secure shell service @emph{extends} the Shepherd---the initialization system, running as PID@tie{}1---by giving it the command lines to start and stop the secure shell daemon (@pxref{Networking Services, @code{openssh-service-type}}); the UPower service extends the D-Bus service by passing it its @file{.service} specification, and extends the udev service by passing it device management rules (@pxref{Desktop Services, @code{upower-service}}); the Guix daemon service extends the Shepherd by passing it the command lines to start and stop the daemon, and extends the account service by passing it a list of required build user accounts (@pxref{Base Services})."
59630 msgstr ""
59631
59632 #. type: Plain text
59633 #: guix-git/doc/guix.texi:33719
59634 msgid "All in all, services and their ``extends'' relations form a directed acyclic graph (DAG). If we represent services as boxes and extensions as arrows, a typical system might provide something like this:"
59635 msgstr ""
59636
59637 #. type: Plain text
59638 #: guix-git/doc/guix.texi:33721
59639 msgid "@image{images/service-graph,,5in,Typical service extension graph.}"
59640 msgstr ""
59641
59642 #. type: cindex
59643 #: guix-git/doc/guix.texi:33722
59644 #, no-wrap
59645 msgid "system service"
59646 msgstr ""
59647
59648 #. type: Plain text
59649 #: guix-git/doc/guix.texi:33730
59650 msgid "At the bottom, we see the @dfn{system service}, which produces the directory containing everything to run and boot the system, as returned by the @command{guix system build} command. @xref{Service Reference}, to learn about the other service types shown here. @xref{system-extension-graph, the @command{guix system extension-graph} command}, for information on how to generate this representation for a particular operating system definition."
59651 msgstr ""
59652
59653 #. type: cindex
59654 #: guix-git/doc/guix.texi:33731
59655 #, no-wrap
59656 msgid "service types"
59657 msgstr ""
59658
59659 #. type: Plain text
59660 #: guix-git/doc/guix.texi:33737
59661 msgid "Technically, developers can define @dfn{service types} to express these relations. There can be any number of services of a given type on the system---for instance, a system running two instances of the GNU secure shell server (lsh) has two instances of @code{lsh-service-type}, with different parameters."
59662 msgstr ""
59663
59664 #. type: Plain text
59665 #: guix-git/doc/guix.texi:33740
59666 msgid "The following section describes the programming interface for service types and services."
59667 msgstr ""
59668
59669 #. type: Plain text
59670 #: guix-git/doc/guix.texi:33747
59671 msgid "A @dfn{service type} is a node in the DAG described above. Let us start with a simple example, the service type for the Guix build daemon (@pxref{Invoking guix-daemon}):"
59672 msgstr ""
59673
59674 #. type: lisp
59675 #: guix-git/doc/guix.texi:33757
59676 #, no-wrap
59677 msgid ""
59678 "(define guix-service-type\n"
59679 " (service-type\n"
59680 " (name 'guix)\n"
59681 " (extensions\n"
59682 " (list (service-extension shepherd-root-service-type guix-shepherd-service)\n"
59683 " (service-extension account-service-type guix-accounts)\n"
59684 " (service-extension activation-service-type guix-activation)))\n"
59685 " (default-value (guix-configuration))))\n"
59686 msgstr ""
59687
59688 #. type: Plain text
59689 #: guix-git/doc/guix.texi:33761
59690 msgid "It defines three things:"
59691 msgstr ""
59692
59693 #. type: enumerate
59694 #: guix-git/doc/guix.texi:33765
59695 msgid "A name, whose sole purpose is to make inspection and debugging easier."
59696 msgstr ""
59697
59698 #. type: enumerate
59699 #: guix-git/doc/guix.texi:33770
59700 msgid "A list of @dfn{service extensions}, where each extension designates the target service type and a procedure that, given the parameters of the service, returns a list of objects to extend the service of that type."
59701 msgstr ""
59702
59703 #. type: enumerate
59704 #: guix-git/doc/guix.texi:33773
59705 msgid "Every service type has at least one service extension. The only exception is the @dfn{boot service type}, which is the ultimate service."
59706 msgstr ""
59707
59708 #. type: enumerate
59709 #: guix-git/doc/guix.texi:33776
59710 msgid "Optionally, a default value for instances of this type."
59711 msgstr ""
59712
59713 #. type: Plain text
59714 #: guix-git/doc/guix.texi:33779
59715 msgid "In this example, @code{guix-service-type} extends three services:"
59716 msgstr ""
59717
59718 #. type: item
59719 #: guix-git/doc/guix.texi:33781
59720 #, no-wrap
59721 msgid "shepherd-root-service-type"
59722 msgstr ""
59723
59724 #. type: table
59725 #: guix-git/doc/guix.texi:33786
59726 msgid "The @code{guix-shepherd-service} procedure defines how the Shepherd service is extended. Namely, it returns a @code{<shepherd-service>} object that defines how @command{guix-daemon} is started and stopped (@pxref{Shepherd Services})."
59727 msgstr ""
59728
59729 #. type: item
59730 #: guix-git/doc/guix.texi:33787
59731 #, no-wrap
59732 msgid "account-service-type"
59733 msgstr ""
59734
59735 #. type: table
59736 #: guix-git/doc/guix.texi:33792
59737 msgid "This extension for this service is computed by @code{guix-accounts}, which returns a list of @code{user-group} and @code{user-account} objects representing the build user accounts (@pxref{Invoking guix-daemon})."
59738 msgstr ""
59739
59740 #. type: item
59741 #: guix-git/doc/guix.texi:33793
59742 #, no-wrap
59743 msgid "activation-service-type"
59744 msgstr ""
59745
59746 #. type: table
59747 #: guix-git/doc/guix.texi:33797
59748 msgid "Here @code{guix-activation} is a procedure that returns a gexp, which is a code snippet to run at ``activation time''---e.g., when the service is booted."
59749 msgstr ""
59750
59751 #. type: Plain text
59752 #: guix-git/doc/guix.texi:33800
59753 msgid "A service of this type is instantiated like this:"
59754 msgstr ""
59755
59756 #. type: lisp
59757 #: guix-git/doc/guix.texi:33806
59758 #, no-wrap
59759 msgid ""
59760 "(service guix-service-type\n"
59761 " (guix-configuration\n"
59762 " (build-accounts 5)\n"
59763 " (extra-options '(\"--gc-keep-derivations\"))))\n"
59764 msgstr ""
59765
59766 #. type: Plain text
59767 #: guix-git/doc/guix.texi:33814
59768 msgid "The second argument to the @code{service} form is a value representing the parameters of this specific service instance. @xref{guix-configuration-type, @code{guix-configuration}}, for information about the @code{guix-configuration} data type. When the value is omitted, the default value specified by @code{guix-service-type} is used:"
59769 msgstr ""
59770
59771 #. type: lisp
59772 #: guix-git/doc/guix.texi:33817
59773 #, no-wrap
59774 msgid "(service guix-service-type)\n"
59775 msgstr ""
59776
59777 #. type: Plain text
59778 #: guix-git/doc/guix.texi:33821
59779 msgid "@code{guix-service-type} is quite simple because it extends other services but is not extensible itself."
59780 msgstr ""
59781
59782 #. type: Plain text
59783 #: guix-git/doc/guix.texi:33825
59784 msgid "The service type for an @emph{extensible} service looks like this:"
59785 msgstr ""
59786
59787 #. type: lisp
59788 #: guix-git/doc/guix.texi:33832
59789 #, no-wrap
59790 msgid ""
59791 "(define udev-service-type\n"
59792 " (service-type (name 'udev)\n"
59793 " (extensions\n"
59794 " (list (service-extension shepherd-root-service-type\n"
59795 " udev-shepherd-service)))\n"
59796 "\n"
59797 msgstr ""
59798
59799 #. type: lisp
59800 #: guix-git/doc/guix.texi:33840
59801 #, no-wrap
59802 msgid ""
59803 " (compose concatenate) ;concatenate the list of rules\n"
59804 " (extend (lambda (config rules)\n"
59805 " (match config\n"
59806 " (($ <udev-configuration> udev initial-rules)\n"
59807 " (udev-configuration\n"
59808 " (udev udev) ;the udev package to use\n"
59809 " (rules (append initial-rules rules)))))))))\n"
59810 msgstr ""
59811
59812 #. type: Plain text
59813 #: guix-git/doc/guix.texi:33846
59814 msgid "This is the service type for the @uref{https://wiki.gentoo.org/wiki/Project:Eudev, eudev device management daemon}. Compared to the previous example, in addition to an extension of @code{shepherd-root-service-type}, we see two new fields:"
59815 msgstr ""
59816
59817 #. type: item
59818 #: guix-git/doc/guix.texi:33848
59819 #, no-wrap
59820 msgid "compose"
59821 msgstr ""
59822
59823 #. type: table
59824 #: guix-git/doc/guix.texi:33851
59825 msgid "This is the procedure to @dfn{compose} the list of extensions to services of this type."
59826 msgstr ""
59827
59828 #. type: table
59829 #: guix-git/doc/guix.texi:33854
59830 msgid "Services can extend the udev service by passing it lists of rules; we compose those extensions simply by concatenating them."
59831 msgstr ""
59832
59833 #. type: item
59834 #: guix-git/doc/guix.texi:33855
59835 #, no-wrap
59836 msgid "extend"
59837 msgstr ""
59838
59839 #. type: table
59840 #: guix-git/doc/guix.texi:33858
59841 msgid "This procedure defines how the value of the service is @dfn{extended} with the composition of the extensions."
59842 msgstr ""
59843
59844 #. type: table
59845 #: guix-git/doc/guix.texi:33863
59846 msgid "Udev extensions are composed into a list of rules, but the udev service value is itself a @code{<udev-configuration>} record. So here, we extend that record by appending the list of rules it contains to the list of contributed rules."
59847 msgstr ""
59848
59849 #. type: table
59850 #: guix-git/doc/guix.texi:33869
59851 msgid "This is a string giving an overview of the service type. The string can contain Texinfo markup (@pxref{Overview,,, texinfo, GNU Texinfo}). The @command{guix system search} command searches these strings and displays them (@pxref{Invoking guix system})."
59852 msgstr ""
59853
59854 #. type: Plain text
59855 #: guix-git/doc/guix.texi:33874
59856 msgid "There can be only one instance of an extensible service type such as @code{udev-service-type}. If there were more, the @code{service-extension} specifications would be ambiguous."
59857 msgstr ""
59858
59859 #. type: Plain text
59860 #: guix-git/doc/guix.texi:33877
59861 msgid "Still here? The next section provides a reference of the programming interface for services."
59862 msgstr ""
59863
59864 #. type: Plain text
59865 #: guix-git/doc/guix.texi:33885
59866 msgid "We have seen an overview of service types (@pxref{Service Types and Services}). This section provides a reference on how to manipulate services and service types. This interface is provided by the @code{(gnu services)} module."
59867 msgstr ""
59868
59869 #. type: deffn
59870 #: guix-git/doc/guix.texi:33886
59871 #, no-wrap
59872 msgid "{Scheme Procedure} service @var{type} [@var{value}]"
59873 msgstr ""
59874
59875 #. type: deffn
59876 #: guix-git/doc/guix.texi:33890
59877 msgid "Return a new service of @var{type}, a @code{<service-type>} object (see below). @var{value} can be any object; it represents the parameters of this particular service instance."
59878 msgstr ""
59879
59880 #. type: deffn
59881 #: guix-git/doc/guix.texi:33894
59882 msgid "When @var{value} is omitted, the default value specified by @var{type} is used; if @var{type} does not specify a default value, an error is raised."
59883 msgstr ""
59884
59885 #. type: deffn
59886 #: guix-git/doc/guix.texi:33896
59887 msgid "For instance, this:"
59888 msgstr ""
59889
59890 #. type: lisp
59891 #: guix-git/doc/guix.texi:33899
59892 #, no-wrap
59893 msgid "(service openssh-service-type)\n"
59894 msgstr ""
59895
59896 #. type: deffn
59897 #: guix-git/doc/guix.texi:33903
59898 msgid "is equivalent to this:"
59899 msgstr ""
59900
59901 #. type: lisp
59902 #: guix-git/doc/guix.texi:33907
59903 #, no-wrap
59904 msgid ""
59905 "(service openssh-service-type\n"
59906 " (openssh-configuration))\n"
59907 msgstr ""
59908
59909 #. type: deffn
59910 #: guix-git/doc/guix.texi:33911
59911 msgid "In both cases the result is an instance of @code{openssh-service-type} with the default configuration."
59912 msgstr ""
59913
59914 #. type: deffn
59915 #: guix-git/doc/guix.texi:33913
59916 #, no-wrap
59917 msgid "{Scheme Procedure} service? @var{obj}"
59918 msgstr ""
59919
59920 #. type: deffn
59921 #: guix-git/doc/guix.texi:33915
59922 msgid "Return true if @var{obj} is a service."
59923 msgstr ""
59924
59925 #. type: deffn
59926 #: guix-git/doc/guix.texi:33917
59927 #, no-wrap
59928 msgid "{Scheme Procedure} service-kind @var{service}"
59929 msgstr ""
59930
59931 #. type: deffn
59932 #: guix-git/doc/guix.texi:33919
59933 msgid "Return the type of @var{service}---i.e., a @code{<service-type>} object."
59934 msgstr ""
59935
59936 #. type: deffn
59937 #: guix-git/doc/guix.texi:33921
59938 #, no-wrap
59939 msgid "{Scheme Procedure} service-value @var{service}"
59940 msgstr ""
59941
59942 #. type: deffn
59943 #: guix-git/doc/guix.texi:33924
59944 msgid "Return the value associated with @var{service}. It represents its parameters."
59945 msgstr ""
59946
59947 #. type: Plain text
59948 #: guix-git/doc/guix.texi:33927
59949 msgid "Here is an example of how a service is created and manipulated:"
59950 msgstr ""
59951
59952 #. type: lisp
59953 #: guix-git/doc/guix.texi:33936
59954 #, no-wrap
59955 msgid ""
59956 "(define s\n"
59957 " (service nginx-service-type\n"
59958 " (nginx-configuration\n"
59959 " (nginx nginx)\n"
59960 " (log-directory log-directory)\n"
59961 " (run-directory run-directory)\n"
59962 " (file config-file))))\n"
59963 "\n"
59964 msgstr ""
59965
59966 #. type: lisp
59967 #: guix-git/doc/guix.texi:33939
59968 #, no-wrap
59969 msgid ""
59970 "(service? s)\n"
59971 "@result{} #t\n"
59972 "\n"
59973 msgstr ""
59974
59975 #. type: lisp
59976 #: guix-git/doc/guix.texi:33942
59977 #, no-wrap
59978 msgid ""
59979 "(eq? (service-kind s) nginx-service-type)\n"
59980 "@result{} #t\n"
59981 msgstr ""
59982
59983 #. type: Plain text
59984 #: guix-git/doc/guix.texi:33952
59985 msgid "The @code{modify-services} form provides a handy way to change the parameters of some of the services of a list such as @code{%base-services} (@pxref{Base Services, @code{%base-services}}). It evaluates to a list of services. Of course, you could always use standard list combinators such as @code{map} and @code{fold} to do that (@pxref{SRFI-1, List Library,, guile, GNU Guile Reference Manual}); @code{modify-services} simply provides a more concise form for this common pattern."
59986 msgstr ""
59987
59988 #. type: deffn
59989 #: guix-git/doc/guix.texi:33953
59990 #, no-wrap
59991 msgid "{Scheme Syntax} modify-services @var{services} @"
59992 msgstr ""
59993
59994 #. type: deffn
59995 #: guix-git/doc/guix.texi:33955
59996 msgid "(@var{type} @var{variable} => @var{body}) @dots{}"
59997 msgstr ""
59998
59999 #. type: deffn
60000 #: guix-git/doc/guix.texi:33958
60001 msgid "Modify the services listed in @var{services} according to the given clauses. Each clause has the form:"
60002 msgstr ""
60003
60004 #. type: example
60005 #: guix-git/doc/guix.texi:33961
60006 #, no-wrap
60007 msgid "(@var{type} @var{variable} => @var{body})\n"
60008 msgstr ""
60009
60010 #. type: deffn
60011 #: guix-git/doc/guix.texi:33968
60012 msgid "where @var{type} is a service type---e.g., @code{guix-service-type}---and @var{variable} is an identifier that is bound within the @var{body} to the service parameters---e.g., a @code{guix-configuration} instance---of the original service of that @var{type}."
60013 msgstr ""
60014
60015 #. type: deffn
60016 #: guix-git/doc/guix.texi:33975
60017 msgid "The @var{body} should evaluate to the new service parameters, which will be used to configure the new service. This new service will replace the original in the resulting list. Because a service's service parameters are created using @code{define-record-type*}, you can write a succinct @var{body} that evaluates to the new service parameters by using the @code{inherit} feature that @code{define-record-type*} provides."
60018 msgstr ""
60019
60020 #. type: deffn
60021 #: guix-git/doc/guix.texi:33977
60022 msgid "@xref{Using the Configuration System}, for example usage."
60023 msgstr ""
60024
60025 #. type: Plain text
60026 #: guix-git/doc/guix.texi:33984
60027 msgid "Next comes the programming interface for service types. This is something you want to know when writing new service definitions, but not necessarily when simply looking for ways to customize your @code{operating-system} declaration."
60028 msgstr ""
60029
60030 #. type: deftp
60031 #: guix-git/doc/guix.texi:33985
60032 #, no-wrap
60033 msgid "{Data Type} service-type"
60034 msgstr ""
60035
60036 #. type: cindex
60037 #: guix-git/doc/guix.texi:33986
60038 #, no-wrap
60039 msgid "service type"
60040 msgstr ""
60041
60042 #. type: deftp
60043 #: guix-git/doc/guix.texi:33989
60044 msgid "This is the representation of a @dfn{service type} (@pxref{Service Types and Services})."
60045 msgstr ""
60046
60047 #. type: table
60048 #: guix-git/doc/guix.texi:33993
60049 msgid "This is a symbol, used only to simplify inspection and debugging."
60050 msgstr ""
60051
60052 #. type: code{#1}
60053 #: guix-git/doc/guix.texi:33994
60054 #, no-wrap
60055 msgid "extensions"
60056 msgstr ""
60057
60058 #. type: table
60059 #: guix-git/doc/guix.texi:33996
60060 msgid "A non-empty list of @code{<service-extension>} objects (see below)."
60061 msgstr ""
60062
60063 #. type: item
60064 #: guix-git/doc/guix.texi:33997
60065 #, no-wrap
60066 msgid "@code{compose} (default: @code{#f})"
60067 msgstr ""
60068
60069 #. type: table
60070 #: guix-git/doc/guix.texi:34001
60071 msgid "If this is @code{#f}, then the service type denotes services that cannot be extended---i.e., services that do not receive ``values'' from other services."
60072 msgstr ""
60073
60074 #. type: table
60075 #: guix-git/doc/guix.texi:34005
60076 msgid "Otherwise, it must be a one-argument procedure. The procedure is called by @code{fold-services} and is passed a list of values collected from extensions. It may return any single value."
60077 msgstr ""
60078
60079 #. type: item
60080 #: guix-git/doc/guix.texi:34006
60081 #, no-wrap
60082 msgid "@code{extend} (default: @code{#f})"
60083 msgstr ""
60084
60085 #. type: table
60086 #: guix-git/doc/guix.texi:34008
60087 msgid "If this is @code{#f}, services of this type cannot be extended."
60088 msgstr ""
60089
60090 #. type: table
60091 #: guix-git/doc/guix.texi:34014
60092 msgid "Otherwise, it must be a two-argument procedure: @code{fold-services} calls it, passing it the initial value of the service as the first argument and the result of applying @code{compose} to the extension values as the second argument. It must return a value that is a valid parameter value for the service instance."
60093 msgstr ""
60094
60095 #. type: table
60096 #: guix-git/doc/guix.texi:34020
60097 msgid "This is a string, possibly using Texinfo markup, describing in a couple of sentences what the service is about. This string allows users to find about the service through @command{guix system search} (@pxref{Invoking guix system})."
60098 msgstr ""
60099
60100 #. type: item
60101 #: guix-git/doc/guix.texi:34021
60102 #, no-wrap
60103 msgid "@code{default-value} (default: @code{&no-default-value})"
60104 msgstr ""
60105
60106 #. type: table
60107 #: guix-git/doc/guix.texi:34024
60108 msgid "The default value associated for instances of this service type. This allows users to use the @code{service} form without its second argument:"
60109 msgstr ""
60110
60111 #. type: lisp
60112 #: guix-git/doc/guix.texi:34027
60113 #, no-wrap
60114 msgid "(service @var{type})\n"
60115 msgstr ""
60116
60117 #. type: table
60118 #: guix-git/doc/guix.texi:34031
60119 msgid "The returned service in this case has the default value specified by @var{type}."
60120 msgstr ""
60121
60122 #. type: deftp
60123 #: guix-git/doc/guix.texi:34034
60124 msgid "@xref{Service Types and Services}, for examples."
60125 msgstr ""
60126
60127 #. type: deffn
60128 #: guix-git/doc/guix.texi:34036
60129 #, no-wrap
60130 msgid "{Scheme Procedure} service-extension @var{target-type} @"
60131 msgstr ""
60132
60133 #. type: deffn
60134 #: guix-git/doc/guix.texi:34042
60135 msgid "@var{compute} Return a new extension for services of type @var{target-type}. @var{compute} must be a one-argument procedure: @code{fold-services} calls it, passing it the value associated with the service that provides the extension; it must return a valid value for the target service."
60136 msgstr ""
60137
60138 #. type: deffn
60139 #: guix-git/doc/guix.texi:34044
60140 #, no-wrap
60141 msgid "{Scheme Procedure} service-extension? @var{obj}"
60142 msgstr ""
60143
60144 #. type: deffn
60145 #: guix-git/doc/guix.texi:34046
60146 msgid "Return true if @var{obj} is a service extension."
60147 msgstr ""
60148
60149 #. type: Plain text
60150 #: guix-git/doc/guix.texi:34052
60151 msgid "Occasionally, you might want to simply extend an existing service. This involves creating a new service type and specifying the extension of interest, which can be verbose; the @code{simple-service} procedure provides a shorthand for this."
60152 msgstr ""
60153
60154 #. type: deffn
60155 #: guix-git/doc/guix.texi:34053
60156 #, no-wrap
60157 msgid "{Scheme Procedure} simple-service @var{name} @var{target} @var{value}"
60158 msgstr ""
60159
60160 #. type: deffn
60161 #: guix-git/doc/guix.texi:34057
60162 msgid "Return a service that extends @var{target} with @var{value}. This works by creating a singleton service type @var{name}, of which the returned service is an instance."
60163 msgstr ""
60164
60165 #. type: deffn
60166 #: guix-git/doc/guix.texi:34060
60167 msgid "For example, this extends mcron (@pxref{Scheduled Job Execution}) with an additional job:"
60168 msgstr ""
60169
60170 #. type: lisp
60171 #: guix-git/doc/guix.texi:34064
60172 #, no-wrap
60173 msgid ""
60174 "(simple-service 'my-mcron-job mcron-service-type\n"
60175 " #~(job '(next-hour (3)) \"guix gc -F 2G\"))\n"
60176 msgstr ""
60177
60178 #. type: Plain text
60179 #: guix-git/doc/guix.texi:34074
60180 msgid "At the core of the service abstraction lies the @code{fold-services} procedure, which is responsible for ``compiling'' a list of services down to a single directory that contains everything needed to boot and run the system---the directory shown by the @command{guix system build} command (@pxref{Invoking guix system}). In essence, it propagates service extensions down the service graph, updating each node parameters on the way, until it reaches the root node."
60181 msgstr ""
60182
60183 #. type: deffn
60184 #: guix-git/doc/guix.texi:34075
60185 #, no-wrap
60186 msgid "{Scheme Procedure} fold-services @var{services} @"
60187 msgstr ""
60188
60189 #. type: deffn
60190 #: guix-git/doc/guix.texi:34079
60191 msgid "[#:target-type @var{system-service-type}] Fold @var{services} by propagating their extensions down to the root of type @var{target-type}; return the root service adjusted accordingly."
60192 msgstr ""
60193
60194 #. type: Plain text
60195 #: guix-git/doc/guix.texi:34083
60196 msgid "Lastly, the @code{(gnu services)} module also defines several essential service types, some of which are listed below."
60197 msgstr ""
60198
60199 #. type: defvr
60200 #: guix-git/doc/guix.texi:34084
60201 #, no-wrap
60202 msgid "{Scheme Variable} system-service-type"
60203 msgstr ""
60204
60205 #. type: defvr
60206 #: guix-git/doc/guix.texi:34087
60207 msgid "This is the root of the service graph. It produces the system directory as returned by the @command{guix system build} command."
60208 msgstr ""
60209
60210 #. type: defvr
60211 #: guix-git/doc/guix.texi:34089
60212 #, no-wrap
60213 msgid "{Scheme Variable} boot-service-type"
60214 msgstr ""
60215
60216 #. type: defvr
60217 #: guix-git/doc/guix.texi:34092
60218 msgid "The type of the ``boot service'', which produces the @dfn{boot script}. The boot script is what the initial RAM disk runs when booting."
60219 msgstr ""
60220
60221 #. type: defvr
60222 #: guix-git/doc/guix.texi:34094
60223 #, no-wrap
60224 msgid "{Scheme Variable} etc-service-type"
60225 msgstr ""
60226
60227 #. type: defvr
60228 #: guix-git/doc/guix.texi:34098
60229 msgid "The type of the @file{/etc} service. This service is used to create files under @file{/etc} and can be extended by passing it name/file tuples such as:"
60230 msgstr ""
60231
60232 #. type: lisp
60233 #: guix-git/doc/guix.texi:34101
60234 #, no-wrap
60235 msgid "(list `(\"issue\" ,(plain-file \"issue\" \"Welcome!\\n\")))\n"
60236 msgstr ""
60237
60238 #. type: defvr
60239 #: guix-git/doc/guix.texi:34105
60240 msgid "In this example, the effect would be to add an @file{/etc/issue} file pointing to the given file."
60241 msgstr ""
60242
60243 #. type: defvr
60244 #: guix-git/doc/guix.texi:34107
60245 #, no-wrap
60246 msgid "{Scheme Variable} setuid-program-service-type"
60247 msgstr ""
60248
60249 #. type: defvr
60250 #: guix-git/doc/guix.texi:34111
60251 msgid "Type for the ``setuid-program service''. This service collects lists of executable file names, passed as gexps, and adds them to the set of setuid-root programs on the system (@pxref{Setuid Programs})."
60252 msgstr ""
60253
60254 #. type: defvr
60255 #: guix-git/doc/guix.texi:34113
60256 #, no-wrap
60257 msgid "{Scheme Variable} profile-service-type"
60258 msgstr ""
60259
60260 #. type: defvr
60261 #: guix-git/doc/guix.texi:34117
60262 msgid "Type of the service that populates the @dfn{system profile}---i.e., the programs under @file{/run/current-system/profile}. Other services can extend it by passing it lists of packages to add to the system profile."
60263 msgstr ""
60264
60265 #. type: anchor{#1}
60266 #: guix-git/doc/guix.texi:34121
60267 msgid "provenance-service-type"
60268 msgstr ""
60269
60270 #. type: defvr
60271 #: guix-git/doc/guix.texi:34121
60272 #, no-wrap
60273 msgid "{Scheme Variable} provenance-service-type"
60274 msgstr ""
60275
60276 #. type: defvr
60277 #: guix-git/doc/guix.texi:34125
60278 msgid "This is the type of the service that records @dfn{provenance meta-data} in the system itself. It creates several files under @file{/run/current-system}:"
60279 msgstr ""
60280
60281 #. type: item
60282 #: guix-git/doc/guix.texi:34127
60283 #, no-wrap
60284 msgid "channels.scm"
60285 msgstr ""
60286
60287 #. type: table
60288 #: guix-git/doc/guix.texi:34132
60289 msgid "This is a ``channel file'' that can be passed to @command{guix pull -C} or @command{guix time-machine -C}, and which describes the channels used to build the system, if that information was available (@pxref{Channels})."
60290 msgstr ""
60291
60292 #. type: item
60293 #: guix-git/doc/guix.texi:34133
60294 #, no-wrap
60295 msgid "configuration.scm"
60296 msgstr ""
60297
60298 #. type: table
60299 #: guix-git/doc/guix.texi:34138
60300 msgid "This is the file that was passed as the value for this @code{provenance-service-type} service. By default, @command{guix system reconfigure} automatically passes the OS configuration file it received on the command line."
60301 msgstr ""
60302
60303 #. type: item
60304 #: guix-git/doc/guix.texi:34139
60305 #, no-wrap
60306 msgid "provenance"
60307 msgstr ""
60308
60309 #. type: table
60310 #: guix-git/doc/guix.texi:34142
60311 msgid "This contains the same information as the two other files but in a format that is more readily processable."
60312 msgstr ""
60313
60314 #. type: defvr
60315 #: guix-git/doc/guix.texi:34146
60316 msgid "In general, these two pieces of information (channels and configuration file) are enough to reproduce the operating system ``from source''."
60317 msgstr ""
60318
60319 #. type: quotation
60320 #: guix-git/doc/guix.texi:34147
60321 #, no-wrap
60322 msgid "Caveats"
60323 msgstr ""
60324
60325 #. type: quotation
60326 #: guix-git/doc/guix.texi:34154
60327 msgid "This information is necessary to rebuild your operating system, but it is not always sufficient. In particular, @file{configuration.scm} itself is insufficient if it is not self-contained---if it refers to external Guile modules or to extra files. If you want @file{configuration.scm} to be self-contained, we recommend that modules or files it refers to be part of a channel."
60328 msgstr ""
60329
60330 #. type: quotation
60331 #: guix-git/doc/guix.texi:34162
60332 msgid "Besides, provenance meta-data is ``silent'' in the sense that it does not change the bits contained in your system, @emph{except for the meta-data bits themselves}. Two different OS configurations or sets of channels can lead to the same system, bit-for-bit; when @code{provenance-service-type} is used, these two systems will have different meta-data and thus different store file names, which makes comparison less trivial."
60333 msgstr ""
60334
60335 #. type: defvr
60336 #: guix-git/doc/guix.texi:34167
60337 msgid "This service is automatically added to your operating system configuration when you use @command{guix system reconfigure}, @command{guix system init}, or @command{guix deploy}."
60338 msgstr ""
60339
60340 #. type: cindex
60341 #: guix-git/doc/guix.texi:34172
60342 #, no-wrap
60343 msgid "shepherd services"
60344 msgstr ""
60345
60346 #. type: cindex
60347 #: guix-git/doc/guix.texi:34173
60348 #, no-wrap
60349 msgid "PID 1"
60350 msgstr ""
60351
60352 #. type: cindex
60353 #: guix-git/doc/guix.texi:34174
60354 #, no-wrap
60355 msgid "init system"
60356 msgstr ""
60357
60358 #. type: Plain text
60359 #: guix-git/doc/guix.texi:34180
60360 msgid "The @code{(gnu services shepherd)} module provides a way to define services managed by the GNU@tie{}Shepherd, which is the initialization system---the first process that is started when the system boots, also known as PID@tie{}1 (@pxref{Introduction,,, shepherd, The GNU Shepherd Manual})."
60361 msgstr ""
60362
60363 #. type: Plain text
60364 #: guix-git/doc/guix.texi:34186
60365 msgid "Services in the Shepherd can depend on each other. For instance, the SSH daemon may need to be started after the syslog daemon has been started, which in turn can only happen once all the file systems have been mounted. The simple operating system defined earlier (@pxref{Using the Configuration System}) results in a service graph like this:"
60366 msgstr ""
60367
60368 #. type: Plain text
60369 #: guix-git/doc/guix.texi:34188
60370 msgid "@image{images/shepherd-graph,,5in,Typical shepherd service graph.}"
60371 msgstr ""
60372
60373 #. type: Plain text
60374 #: guix-git/doc/guix.texi:34192
60375 msgid "You can actually generate such a graph for any operating system definition using the @command{guix system shepherd-graph} command (@pxref{system-shepherd-graph, @command{guix system shepherd-graph}})."
60376 msgstr ""
60377
60378 #. type: Plain text
60379 #: guix-git/doc/guix.texi:34196
60380 msgid "The @code{%shepherd-root-service} is a service object representing PID@tie{}1, of type @code{shepherd-root-service-type}; it can be extended by passing it lists of @code{<shepherd-service>} objects."
60381 msgstr ""
60382
60383 #. type: deftp
60384 #: guix-git/doc/guix.texi:34197
60385 #, no-wrap
60386 msgid "{Data Type} shepherd-service"
60387 msgstr ""
60388
60389 #. type: deftp
60390 #: guix-git/doc/guix.texi:34199
60391 msgid "The data type representing a service managed by the Shepherd."
60392 msgstr ""
60393
60394 #. type: code{#1}
60395 #: guix-git/doc/guix.texi:34201
60396 #, no-wrap
60397 msgid "provision"
60398 msgstr ""
60399
60400 #. type: table
60401 #: guix-git/doc/guix.texi:34203
60402 msgid "This is a list of symbols denoting what the service provides."
60403 msgstr ""
60404
60405 #. type: table
60406 #: guix-git/doc/guix.texi:34208
60407 msgid "These are the names that may be passed to @command{herd start}, @command{herd status}, and similar commands (@pxref{Invoking herd,,, shepherd, The GNU Shepherd Manual}). @xref{Slots of services, the @code{provides} slot,, shepherd, The GNU Shepherd Manual}, for details."
60408 msgstr ""
60409
60410 #. type: item
60411 #: guix-git/doc/guix.texi:34209
60412 #, no-wrap
60413 msgid "@code{requirement} (default: @code{'()})"
60414 msgstr ""
60415
60416 #. type: table
60417 #: guix-git/doc/guix.texi:34211
60418 msgid "List of symbols denoting the Shepherd services this one depends on."
60419 msgstr ""
60420
60421 #. type: cindex
60422 #: guix-git/doc/guix.texi:34212
60423 #, no-wrap
60424 msgid "one-shot services, for the Shepherd"
60425 msgstr ""
60426
60427 #. type: table
60428 #: guix-git/doc/guix.texi:34217
60429 msgid "Whether this service is @dfn{one-shot}. One-shot services stop immediately after their @code{start} action has completed. @xref{Slots of services,,, shepherd, The GNU Shepherd Manual}, for more info."
60430 msgstr ""
60431
60432 #. type: item
60433 #: guix-git/doc/guix.texi:34218
60434 #, no-wrap
60435 msgid "@code{respawn?} (default: @code{#t})"
60436 msgstr ""
60437
60438 #. type: table
60439 #: guix-git/doc/guix.texi:34221
60440 msgid "Whether to restart the service when it stops, for instance when the underlying process dies."
60441 msgstr ""
60442
60443 #. type: code{#1}
60444 #: guix-git/doc/guix.texi:34222
60445 #, no-wrap
60446 msgid "start"
60447 msgstr ""
60448
60449 #. type: itemx
60450 #: guix-git/doc/guix.texi:34223
60451 #, no-wrap
60452 msgid "@code{stop} (default: @code{#~(const #f)})"
60453 msgstr ""
60454
60455 #. type: table
60456 #: guix-git/doc/guix.texi:34229
60457 msgid "The @code{start} and @code{stop} fields refer to the Shepherd's facilities to start and stop processes (@pxref{Service De- and Constructors,,, shepherd, The GNU Shepherd Manual}). They are given as G-expressions that get expanded in the Shepherd configuration file (@pxref{G-Expressions})."
60458 msgstr ""
60459
60460 #. type: item
60461 #: guix-git/doc/guix.texi:34230
60462 #, no-wrap
60463 msgid "@code{actions} (default: @code{'()})"
60464 msgstr ""
60465
60466 #. type: cindex
60467 #: guix-git/doc/guix.texi:34231
60468 #, no-wrap
60469 msgid "actions, of Shepherd services"
60470 msgstr ""
60471
60472 #. type: table
60473 #: guix-git/doc/guix.texi:34236
60474 msgid "This is a list of @code{shepherd-action} objects (see below) defining @dfn{actions} supported by the service, in addition to the standard @code{start} and @code{stop} actions. Actions listed here become available as @command{herd} sub-commands:"
60475 msgstr ""
60476
60477 #. type: example
60478 #: guix-git/doc/guix.texi:34239
60479 #, no-wrap
60480 msgid "herd @var{action} @var{service} [@var{arguments}@dots{}]\n"
60481 msgstr ""
60482
60483 #. type: item
60484 #: guix-git/doc/guix.texi:34241
60485 #, no-wrap
60486 msgid "@code{auto-start?} (default: @code{#t})"
60487 msgstr ""
60488
60489 #. type: table
60490 #: guix-git/doc/guix.texi:34244
60491 msgid "Whether this service should be started automatically by the Shepherd. If it is @code{#f} the service has to be started manually with @code{herd start}."
60492 msgstr ""
60493
60494 #. type: table
60495 #: guix-git/doc/guix.texi:34247
60496 msgid "A documentation string, as shown when running:"
60497 msgstr ""
60498
60499 #. type: example
60500 #: guix-git/doc/guix.texi:34250
60501 #, no-wrap
60502 msgid "herd doc @var{service-name}\n"
60503 msgstr ""
60504
60505 #. type: table
60506 #: guix-git/doc/guix.texi:34254
60507 msgid "where @var{service-name} is one of the symbols in @code{provision} (@pxref{Invoking herd,,, shepherd, The GNU Shepherd Manual})."
60508 msgstr ""
60509
60510 #. type: item
60511 #: guix-git/doc/guix.texi:34255
60512 #, no-wrap
60513 msgid "@code{modules} (default: @code{%default-modules})"
60514 msgstr ""
60515
60516 #. type: table
60517 #: guix-git/doc/guix.texi:34258
60518 msgid "This is the list of modules that must be in scope when @code{start} and @code{stop} are evaluated."
60519 msgstr ""
60520
60521 #. type: Plain text
60522 #: guix-git/doc/guix.texi:34266
60523 msgid "The example below defines a Shepherd service that spawns @command{syslogd}, the system logger from the GNU Networking Utilities (@pxref{syslogd invocation, @command{syslogd},, inetutils, GNU Inetutils}):"
60524 msgstr ""
60525
60526 #. type: example
60527 #: guix-git/doc/guix.texi:34278
60528 #, no-wrap
60529 msgid ""
60530 "(let ((config (plain-file \"syslogd.conf\" \"@dots{}\")))\n"
60531 " (shepherd-service\n"
60532 " (documentation \"Run the syslog daemon (syslogd).\")\n"
60533 " (provision '(syslogd))\n"
60534 " (requirement '(user-processes))\n"
60535 " (start #~(make-forkexec-constructor\n"
60536 " (list #$(file-append inetutils \"/libexec/syslogd\")\n"
60537 " \"--rcfile\" #$config)\n"
60538 " #:pid-file \"/var/run/syslog.pid\"))\n"
60539 " (stop #~(make-kill-destructor))))\n"
60540 msgstr ""
60541
60542 #. type: Plain text
60543 #: guix-git/doc/guix.texi:34293
60544 msgid "Key elements in this example are the @code{start} and @code{stop} fields: they are @dfn{staged} code snippets that use the @code{make-forkexec-constructor} procedure provided by the Shepherd and its dual, @code{make-kill-destructor} (@pxref{Service De- and Constructors,,, shepherd, The GNU Shepherd Manual}). The @code{start} field will have @command{shepherd} spawn @command{syslogd} with the given option; note that we pass @code{config} after @option{--rcfile}, which is a configuration file declared above (contents of this file are omitted). Likewise, the @code{stop} field tells how this service is to be stopped; in this case, it is stopped by making the @code{kill} system call on its PID@. Code staging is achieved using G-expressions: @code{#~} stages code, while @code{#$} ``escapes'' back to host code (@pxref{G-Expressions})."
60545 msgstr ""
60546
60547 #. type: deftp
60548 #: guix-git/doc/guix.texi:34294
60549 #, no-wrap
60550 msgid "{Data Type} shepherd-action"
60551 msgstr ""
60552
60553 #. type: deftp
60554 #: guix-git/doc/guix.texi:34297
60555 msgid "This is the data type that defines additional actions implemented by a Shepherd service (see above)."
60556 msgstr ""
60557
60558 #. type: table
60559 #: guix-git/doc/guix.texi:34301
60560 msgid "Symbol naming the action."
60561 msgstr ""
60562
60563 #. type: table
60564 #: guix-git/doc/guix.texi:34304
60565 msgid "This is a documentation string for the action. It can be viewed by running:"
60566 msgstr ""
60567
60568 #. type: example
60569 #: guix-git/doc/guix.texi:34307
60570 #, no-wrap
60571 msgid "herd doc @var{service} action @var{action}\n"
60572 msgstr ""
60573
60574 #. type: item
60575 #: guix-git/doc/guix.texi:34309
60576 #, no-wrap
60577 msgid "procedure"
60578 msgstr ""
60579
60580 #. type: table
60581 #: guix-git/doc/guix.texi:34313
60582 msgid "This should be a gexp that evaluates to a procedure of at least one argument, which is the ``running value'' of the service (@pxref{Slots of services,,, shepherd, The GNU Shepherd Manual})."
60583 msgstr ""
60584
60585 #. type: deftp
60586 #: guix-git/doc/guix.texi:34317
60587 msgid "The following example defines an action called @code{say-hello} that kindly greets the user:"
60588 msgstr ""
60589
60590 #. type: lisp
60591 #: guix-git/doc/guix.texi:34326
60592 #, no-wrap
60593 msgid ""
60594 "(shepherd-action\n"
60595 " (name 'say-hello)\n"
60596 " (documentation \"Say hi!\")\n"
60597 " (procedure #~(lambda (running . args)\n"
60598 " (format #t \"Hello, friend! arguments: ~s\\n\"\n"
60599 " args)\n"
60600 " #t)))\n"
60601 msgstr ""
60602
60603 #. type: deftp
60604 #: guix-git/doc/guix.texi:34329
60605 msgid "Assuming this action is added to the @code{example} service, then you can do:"
60606 msgstr ""
60607
60608 #. type: example
60609 #: guix-git/doc/guix.texi:34335
60610 #, no-wrap
60611 msgid ""
60612 "# herd say-hello example\n"
60613 "Hello, friend! arguments: ()\n"
60614 "# herd say-hello example a b c\n"
60615 "Hello, friend! arguments: (\"a\" \"b\" \"c\")\n"
60616 msgstr ""
60617
60618 #. type: deftp
60619 #: guix-git/doc/guix.texi:34340
60620 msgid "This, as you can see, is a fairly sophisticated way to say hello. @xref{Service Convenience,,, shepherd, The GNU Shepherd Manual}, for more info on actions."
60621 msgstr ""
60622
60623 #. type: defvr
60624 #: guix-git/doc/guix.texi:34342
60625 #, no-wrap
60626 msgid "{Scheme Variable} shepherd-root-service-type"
60627 msgstr ""
60628
60629 #. type: defvr
60630 #: guix-git/doc/guix.texi:34344
60631 msgid "The service type for the Shepherd ``root service''---i.e., PID@tie{}1."
60632 msgstr ""
60633
60634 #. type: defvr
60635 #: guix-git/doc/guix.texi:34349
60636 msgid "This is the service type that extensions target when they want to create shepherd services (@pxref{Service Types and Services}, for an example). Each extension must pass a list of @code{<shepherd-service>}. Its value must be a @code{shepherd-configuration}, as described below."
60637 msgstr ""
60638
60639 #. type: deftp
60640 #: guix-git/doc/guix.texi:34351
60641 #, no-wrap
60642 msgid "{Data Type} shepherd-configuration"
60643 msgstr ""
60644
60645 #. type: deftp
60646 #: guix-git/doc/guix.texi:34353
60647 msgid "This data type represents the Shepherd's configuration."
60648 msgstr ""
60649
60650 #. type: item
60651 #: guix-git/doc/guix.texi:34355
60652 #, no-wrap
60653 msgid "shepherd (default: @code{shepherd})"
60654 msgstr ""
60655
60656 #. type: table
60657 #: guix-git/doc/guix.texi:34357
60658 msgid "The Shepherd package to use."
60659 msgstr ""
60660
60661 #. type: item
60662 #: guix-git/doc/guix.texi:34358
60663 #, no-wrap
60664 msgid "services (default: @code{'()})"
60665 msgstr ""
60666
60667 #. type: table
60668 #: guix-git/doc/guix.texi:34362
60669 msgid "A list of @code{<shepherd-service>} to start. You should probably use the service extension mechanism instead (@pxref{Shepherd Services})."
60670 msgstr ""
60671
60672 #. type: Plain text
60673 #: guix-git/doc/guix.texi:34367
60674 msgid "The following example specifies the Shepherd package for the operating system:"
60675 msgstr ""
60676
60677 #. type: lisp
60678 #: guix-git/doc/guix.texi:34382
60679 #, no-wrap
60680 msgid ""
60681 "(operating-system\n"
60682 " ;; ...\n"
60683 " (services (append (list openssh-service-type))\n"
60684 " ;; ...\n"
60685 " %desktop-services)\n"
60686 " ;; ...\n"
60687 " ;; Use own Shepherd package.\n"
60688 " (essential-services\n"
60689 " (modify-services (operating-system-default-essential-services\n"
60690 " this-operating-system)\n"
60691 " (shepherd-root-service-type config => (shepherd-configuration\n"
60692 " (inherit config)\n"
60693 " (shepherd my-shepherd))))))\n"
60694 msgstr ""
60695
60696 #. type: defvr
60697 #: guix-git/doc/guix.texi:34384
60698 #, no-wrap
60699 msgid "{Scheme Variable} %shepherd-root-service"
60700 msgstr ""
60701
60702 #. type: defvr
60703 #: guix-git/doc/guix.texi:34386
60704 msgid "This service represents PID@tie{}1."
60705 msgstr ""
60706
60707 #. type: cindex
60708 #: guix-git/doc/guix.texi:34392
60709 #, no-wrap
60710 msgid "documentation, searching for"
60711 msgstr ""
60712
60713 #. type: cindex
60714 #: guix-git/doc/guix.texi:34393
60715 #, no-wrap
60716 msgid "searching for documentation"
60717 msgstr ""
60718
60719 #. type: cindex
60720 #: guix-git/doc/guix.texi:34394
60721 #, no-wrap
60722 msgid "Info, documentation format"
60723 msgstr ""
60724
60725 #. type: cindex
60726 #: guix-git/doc/guix.texi:34395
60727 #, no-wrap
60728 msgid "man pages"
60729 msgstr ""
60730
60731 #. type: cindex
60732 #: guix-git/doc/guix.texi:34396
60733 #, no-wrap
60734 msgid "manual pages"
60735 msgstr ""
60736
60737 #. type: Plain text
60738 #: guix-git/doc/guix.texi:34403
60739 msgid "In most cases packages installed with Guix come with documentation. There are two main documentation formats: ``Info'', a browsable hypertext format used for GNU software, and ``manual pages'' (or ``man pages''), the linear documentation format traditionally found on Unix. Info manuals are accessed with the @command{info} command or with Emacs, and man pages are accessed using @command{man}."
60740 msgstr ""
60741
60742 #. type: Plain text
60743 #: guix-git/doc/guix.texi:34407
60744 msgid "You can look for documentation of software installed on your system by keyword. For example, the following command searches for information about ``TLS'' in Info manuals:"
60745 msgstr ""
60746
60747 #. type: example
60748 #: guix-git/doc/guix.texi:34415
60749 #, no-wrap
60750 msgid ""
60751 "$ info -k TLS\n"
60752 "\"(emacs)Network Security\" -- STARTTLS\n"
60753 "\"(emacs)Network Security\" -- TLS\n"
60754 "\"(gnutls)Core TLS API\" -- gnutls_certificate_set_verify_flags\n"
60755 "\"(gnutls)Core TLS API\" -- gnutls_certificate_set_verify_function\n"
60756 "@dots{}\n"
60757 msgstr ""
60758
60759 #. type: Plain text
60760 #: guix-git/doc/guix.texi:34419
60761 msgid "The command below searches for the same keyword in man pages:"
60762 msgstr ""
60763
60764 #. type: example
60765 #: guix-git/doc/guix.texi:34425
60766 #, no-wrap
60767 msgid ""
60768 "$ man -k TLS\n"
60769 "SSL (7) - OpenSSL SSL/TLS library\n"
60770 "certtool (1) - GnuTLS certificate tool\n"
60771 "@dots {}\n"
60772 msgstr ""
60773
60774 #. type: Plain text
60775 #: guix-git/doc/guix.texi:34431
60776 msgid "These searches are purely local to your computer so you have the guarantee that documentation you find corresponds to what you have actually installed, you can access it off-line, and your privacy is respected."
60777 msgstr ""
60778
60779 #. type: Plain text
60780 #: guix-git/doc/guix.texi:34434
60781 msgid "Once you have these results, you can view the relevant documentation by running, say:"
60782 msgstr ""
60783
60784 #. type: example
60785 #: guix-git/doc/guix.texi:34437
60786 #, no-wrap
60787 msgid "$ info \"(gnutls)Core TLS API\"\n"
60788 msgstr ""
60789
60790 #. type: Plain text
60791 #: guix-git/doc/guix.texi:34441
60792 msgid "or:"
60793 msgstr ""
60794
60795 #. type: example
60796 #: guix-git/doc/guix.texi:34444
60797 #, no-wrap
60798 msgid "$ man certtool\n"
60799 msgstr ""
60800
60801 #. type: Plain text
60802 #: guix-git/doc/guix.texi:34452
60803 msgid "Info manuals contain sections and indices as well as hyperlinks like those found in Web pages. The @command{info} reader (@pxref{Top, Info reader,, info-stnd, Stand-alone GNU Info}) and its Emacs counterpart (@pxref{Misc Help,,, emacs, The GNU Emacs Manual}) provide intuitive key bindings to navigate manuals. @xref{Getting Started,,, info, Info: An Introduction}, for an introduction to Info navigation."
60804 msgstr ""
60805
60806 #. type: cindex
60807 #: guix-git/doc/guix.texi:34456
60808 #, no-wrap
60809 msgid "debugging files"
60810 msgstr ""
60811
60812 #. type: Plain text
60813 #: guix-git/doc/guix.texi:34462
60814 msgid "Program binaries, as produced by the GCC compilers for instance, are typically written in the ELF format, with a section containing @dfn{debugging information}. Debugging information is what allows the debugger, GDB, to map binary code to source code; it is required to debug a compiled program in good conditions."
60815 msgstr ""
60816
60817 #. type: Plain text
60818 #: guix-git/doc/guix.texi:34466
60819 msgid "This chapter explains how to use separate debug info when packages provide it, and how to rebuild packages with debug info when it's missing."
60820 msgstr ""
60821
60822 #. type: Plain text
60823 #: guix-git/doc/guix.texi:34482
60824 msgid "The problem with debugging information is that is takes up a fair amount of disk space. For example, debugging information for the GNU C Library weighs in at more than 60 MiB@. Thus, as a user, keeping all the debugging info of all the installed programs is usually not an option. Yet, space savings should not come at the cost of an impediment to debugging---especially in the GNU system, which should make it easier for users to exert their computing freedom (@pxref{GNU Distribution})."
60825 msgstr ""
60826
60827 #. type: Plain text
60828 #: guix-git/doc/guix.texi:34489
60829 msgid "Thankfully, the GNU Binary Utilities (Binutils) and GDB provide a mechanism that allows users to get the best of both worlds: debugging information can be stripped from the binaries and stored in separate files. GDB is then able to load debugging information from those files, when they are available (@pxref{Separate Debug Files,,, gdb, Debugging with GDB})."
60830 msgstr ""
60831
60832 #. type: Plain text
60833 #: guix-git/doc/guix.texi:34497
60834 msgid "The GNU distribution takes advantage of this by storing debugging information in the @code{lib/debug} sub-directory of a separate package output unimaginatively called @code{debug} (@pxref{Packages with Multiple Outputs}). Users can choose to install the @code{debug} output of a package when they need it. For instance, the following command installs the debugging information for the GNU C Library and for GNU Guile:"
60835 msgstr ""
60836
60837 #. type: example
60838 #: guix-git/doc/guix.texi:34500
60839 #, no-wrap
60840 msgid "guix install glibc:debug guile:debug\n"
60841 msgstr ""
60842
60843 #. type: Plain text
60844 #: guix-git/doc/guix.texi:34506
60845 msgid "GDB must then be told to look for debug files in the user's profile, by setting the @code{debug-file-directory} variable (consider setting it from the @file{~/.gdbinit} file, @pxref{Startup,,, gdb, Debugging with GDB}):"
60846 msgstr ""
60847
60848 #. type: example
60849 #: guix-git/doc/guix.texi:34509
60850 #, no-wrap
60851 msgid "(gdb) set debug-file-directory ~/.guix-profile/lib/debug\n"
60852 msgstr ""
60853
60854 #. type: Plain text
60855 #: guix-git/doc/guix.texi:34513
60856 msgid "From there on, GDB will pick up debugging information from the @file{.debug} files under @file{~/.guix-profile/lib/debug}."
60857 msgstr ""
60858
60859 #. type: Plain text
60860 #: guix-git/doc/guix.texi:34520
60861 msgid "In addition, you will most likely want GDB to be able to show the source code being debugged. To do that, you will have to unpack the source code of the package of interest (obtained with @code{guix build --source}, @pxref{Invoking guix build}), and to point GDB to that source directory using the @code{directory} command (@pxref{Source Path, @code{directory},, gdb, Debugging with GDB})."
60862 msgstr ""
60863
60864 #. type: Plain text
60865 #: guix-git/doc/guix.texi:34528
60866 msgid "The @code{debug} output mechanism in Guix is implemented by the @code{gnu-build-system} (@pxref{Build Systems}). Currently, it is opt-in---debugging information is available only for the packages with definitions explicitly declaring a @code{debug} output. To check whether a package has a @code{debug} output, use @command{guix package --list-available} (@pxref{Invoking guix package})."
60867 msgstr ""
60868
60869 #. type: Plain text
60870 #: guix-git/doc/guix.texi:34530
60871 msgid "Read on for how to deal with packages lacking a @code{debug} output."
60872 msgstr ""
60873
60874 #. type: Plain text
60875 #: guix-git/doc/guix.texi:34542
60876 msgid "As we saw above, some packages, but not all, provide debugging info in a @code{debug} output. What can you do when debugging info is missing? The @option{--with-debug-info} option provides a solution to that: it allows you to rebuild the package(s) for which debugging info is missing---and only those---and to graft those onto the application you're debugging. Thus, while it's not as fast as installing a @code{debug} output, it is relatively inexpensive."
60877 msgstr ""
60878
60879 #. type: Plain text
60880 #: guix-git/doc/guix.texi:34547
60881 msgid "Let's illustrate that. Suppose you're experiencing a bug in Inkscape and would like to see what's going on in GLib, a library that's deep down in its dependency graph. As it turns out, GLib does not have a @code{debug} output and the backtrace GDB shows is all sadness:"
60882 msgstr ""
60883
60884 #. type: example
60885 #: guix-git/doc/guix.texi:34558
60886 #, no-wrap
60887 msgid ""
60888 "(gdb) bt\n"
60889 "#0 0x00007ffff5f92190 in g_getenv ()\n"
60890 " from /gnu/store/@dots{}-glib-2.62.6/lib/libglib-2.0.so.0\n"
60891 "#1 0x00007ffff608a7d6 in gobject_init_ctor ()\n"
60892 " from /gnu/store/@dots{}-glib-2.62.6/lib/libgobject-2.0.so.0\n"
60893 "#2 0x00007ffff7fe275a in call_init (l=<optimized out>, argc=argc@@entry=1, argv=argv@@entry=0x7fffffffcfd8, \n"
60894 " env=env@@entry=0x7fffffffcfe8) at dl-init.c:72\n"
60895 "#3 0x00007ffff7fe2866 in call_init (env=0x7fffffffcfe8, argv=0x7fffffffcfd8, argc=1, l=<optimized out>)\n"
60896 " at dl-init.c:118\n"
60897 msgstr ""
60898
60899 #. type: Plain text
60900 #: guix-git/doc/guix.texi:34562
60901 msgid "To address that, you install Inkscape linked against a variant GLib that contains debug info:"
60902 msgstr ""
60903
60904 #. type: Plain text
60905 #: guix-git/doc/guix.texi:34568
60906 msgid "This time, debugging will be a whole lot nicer:"
60907 msgstr ""
60908
60909 #. type: example
60910 #: guix-git/doc/guix.texi:34586
60911 #, no-wrap
60912 msgid ""
60913 "$ gdb --args sh -c 'exec inkscape'\n"
60914 "@dots{}\n"
60915 "(gdb) b g_getenv\n"
60916 "Function \"g_getenv\" not defined.\n"
60917 "Make breakpoint pending on future shared library load? (y or [n]) y\n"
60918 "Breakpoint 1 (g_getenv) pending.\n"
60919 "(gdb) r\n"
60920 "Starting program: /gnu/store/@dots{}-profile/bin/sh -c exec\\ inkscape\n"
60921 "@dots{}\n"
60922 "(gdb) bt\n"
60923 "#0 g_getenv (variable=variable@@entry=0x7ffff60c7a2e \"GOBJECT_DEBUG\") at ../glib-2.62.6/glib/genviron.c:252\n"
60924 "#1 0x00007ffff608a7d6 in gobject_init () at ../glib-2.62.6/gobject/gtype.c:4380\n"
60925 "#2 gobject_init_ctor () at ../glib-2.62.6/gobject/gtype.c:4493\n"
60926 "#3 0x00007ffff7fe275a in call_init (l=<optimized out>, argc=argc@@entry=3, argv=argv@@entry=0x7fffffffd088, \n"
60927 " env=env@@entry=0x7fffffffd0a8) at dl-init.c:72\n"
60928 "@dots{}\n"
60929 msgstr ""
60930
60931 #. type: Plain text
60932 #: guix-git/doc/guix.texi:34589
60933 msgid "Much better!"
60934 msgstr ""
60935
60936 #. type: Plain text
60937 #: guix-git/doc/guix.texi:34593
60938 msgid "Note that there can be packages for which @option{--with-debug-info} will not have the desired effect. @xref{Package Transformation Options, @option{--with-debug-info}}, for more information."
60939 msgstr ""
60940
60941 #. type: cindex
60942 #: guix-git/doc/guix.texi:34597
60943 #, no-wrap
60944 msgid "security updates"
60945 msgstr ""
60946
60947 #. type: Plain text
60948 #: guix-git/doc/guix.texi:34606
60949 msgid "Occasionally, important security vulnerabilities are discovered in software packages and must be patched. Guix developers try hard to keep track of known vulnerabilities and to apply fixes as soon as possible in the @code{master} branch of Guix (we do not yet provide a ``stable'' branch containing only security updates). The @command{guix lint} tool helps developers find out about vulnerable versions of software packages in the distribution:"
60950 msgstr ""
60951
60952 #. type: smallexample
60953 #: guix-git/doc/guix.texi:34613
60954 #, no-wrap
60955 msgid ""
60956 "$ guix lint -c cve\n"
60957 "gnu/packages/base.scm:652:2: glibc@@2.21: probably vulnerable to CVE-2015-1781, CVE-2015-7547\n"
60958 "gnu/packages/gcc.scm:334:2: gcc@@4.9.3: probably vulnerable to CVE-2015-5276\n"
60959 "gnu/packages/image.scm:312:2: openjpeg@@2.1.0: probably vulnerable to CVE-2016-1923, CVE-2016-1924\n"
60960 "@dots{}\n"
60961 msgstr ""
60962
60963 #. type: Plain text
60964 #: guix-git/doc/guix.texi:34616
60965 msgid "@xref{Invoking guix lint}, for more information."
60966 msgstr ""
60967
60968 #. type: Plain text
60969 #: guix-git/doc/guix.texi:34625
60970 msgid "Guix follows a functional package management discipline (@pxref{Introduction}), which implies that, when a package is changed, @emph{every package that depends on it} must be rebuilt. This can significantly slow down the deployment of fixes in core packages such as libc or Bash, since basically the whole distribution would need to be rebuilt. Using pre-built binaries helps (@pxref{Substitutes}), but deployment may still take more time than desired."
60971 msgstr ""
60972
60973 #. type: cindex
60974 #: guix-git/doc/guix.texi:34626
60975 #, no-wrap
60976 msgid "grafts"
60977 msgstr ""
60978
60979 #. type: Plain text
60980 #: guix-git/doc/guix.texi:34634
60981 msgid "To address this, Guix implements @dfn{grafts}, a mechanism that allows for fast deployment of critical updates without the costs associated with a whole-distribution rebuild. The idea is to rebuild only the package that needs to be patched, and then to ``graft'' it onto packages explicitly installed by the user and that were previously referring to the original package. The cost of grafting is typically very low, and order of magnitudes lower than a full rebuild of the dependency chain."
60982 msgstr ""
60983
60984 #. type: cindex
60985 #: guix-git/doc/guix.texi:34635
60986 #, no-wrap
60987 msgid "replacements of packages, for grafts"
60988 msgstr ""
60989
60990 #. type: Plain text
60991 #: guix-git/doc/guix.texi:34641
60992 msgid "For instance, suppose a security update needs to be applied to Bash. Guix developers will provide a package definition for the ``fixed'' Bash, say @code{bash-fixed}, in the usual way (@pxref{Defining Packages}). Then, the original package definition is augmented with a @code{replacement} field pointing to the package containing the bug fix:"
60993 msgstr ""
60994
60995 #. type: lisp
60996 #: guix-git/doc/guix.texi:34648
60997 #, no-wrap
60998 msgid ""
60999 "(define bash\n"
61000 " (package\n"
61001 " (name \"bash\")\n"
61002 " ;; @dots{}\n"
61003 " (replacement bash-fixed)))\n"
61004 msgstr ""
61005
61006 #. type: Plain text
61007 #: guix-git/doc/guix.texi:34658
61008 msgid "From there on, any package depending directly or indirectly on Bash---as reported by @command{guix gc --requisites} (@pxref{Invoking guix gc})---that is installed is automatically ``rewritten'' to refer to @code{bash-fixed} instead of @code{bash}. This grafting process takes time proportional to the size of the package, usually less than a minute for an ``average'' package on a recent machine. Grafting is recursive: when an indirect dependency requires grafting, then grafting ``propagates'' up to the package that the user is installing."
61009 msgstr ""
61010
61011 #. type: Plain text
61012 #: guix-git/doc/guix.texi:34666
61013 msgid "Currently, the length of the name and version of the graft and that of the package it replaces (@code{bash-fixed} and @code{bash} in the example above) must be equal. This restriction mostly comes from the fact that grafting works by patching files, including binary files, directly. Other restrictions may apply: for instance, when adding a graft to a package providing a shared library, the original shared library and its replacement must have the same @code{SONAME} and be binary-compatible."
61014 msgstr ""
61015
61016 #. type: Plain text
61017 #: guix-git/doc/guix.texi:34670
61018 msgid "The @option{--no-grafts} command-line option allows you to forcefully avoid grafting (@pxref{Common Build Options, @option{--no-grafts}}). Thus, the command:"
61019 msgstr ""
61020
61021 #. type: example
61022 #: guix-git/doc/guix.texi:34673
61023 #, no-wrap
61024 msgid "guix build bash --no-grafts\n"
61025 msgstr ""
61026
61027 #. type: Plain text
61028 #: guix-git/doc/guix.texi:34677
61029 msgid "returns the store file name of the original Bash, whereas:"
61030 msgstr ""
61031
61032 #. type: example
61033 #: guix-git/doc/guix.texi:34680
61034 #, no-wrap
61035 msgid "guix build bash\n"
61036 msgstr ""
61037
61038 #. type: Plain text
61039 #: guix-git/doc/guix.texi:34685
61040 msgid "returns the store file name of the ``fixed'', replacement Bash. This allows you to distinguish between the two variants of Bash."
61041 msgstr ""
61042
61043 #. type: Plain text
61044 #: guix-git/doc/guix.texi:34688
61045 msgid "To verify which Bash your whole profile refers to, you can run (@pxref{Invoking guix gc}):"
61046 msgstr ""
61047
61048 #. type: example
61049 #: guix-git/doc/guix.texi:34691
61050 #, no-wrap
61051 msgid "guix gc -R $(readlink -f ~/.guix-profile) | grep bash\n"
61052 msgstr ""
61053
61054 #. type: Plain text
61055 #: guix-git/doc/guix.texi:34696
61056 msgid "@dots{} and compare the store file names that you get with those above. Likewise for a complete Guix system generation:"
61057 msgstr ""
61058
61059 #. type: example
61060 #: guix-git/doc/guix.texi:34699
61061 #, no-wrap
61062 msgid "guix gc -R $(guix system build my-config.scm) | grep bash\n"
61063 msgstr ""
61064
61065 #. type: Plain text
61066 #: guix-git/doc/guix.texi:34703
61067 msgid "Lastly, to check which Bash running processes are using, you can use the @command{lsof} command:"
61068 msgstr ""
61069
61070 #. type: example
61071 #: guix-git/doc/guix.texi:34706
61072 #, no-wrap
61073 msgid "lsof | grep /gnu/store/.*bash\n"
61074 msgstr ""
61075
61076 #. type: cindex
61077 #: guix-git/doc/guix.texi:34714
61078 #, no-wrap
61079 msgid "bootstrapping"
61080 msgstr ""
61081
61082 #. type: Plain text
61083 #: guix-git/doc/guix.texi:34721
61084 msgid "Bootstrapping in our context refers to how the distribution gets built ``from nothing''. Remember that the build environment of a derivation contains nothing but its declared inputs (@pxref{Introduction}). So there's an obvious chicken-and-egg problem: how does the first package get built? How does the first compiler get compiled?"
61085 msgstr ""
61086
61087 #. type: Plain text
61088 #: guix-git/doc/guix.texi:34729
61089 msgid "It is tempting to think of this question as one that only die-hard hackers may care about. However, while the answer to that question is technical in nature, its implications are wide-ranging. How the distribution is bootstrapped defines the extent to which we, as individuals and as a collective of users and hackers, can trust the software we run. It is a central concern from the standpoint of @emph{security} and from a @emph{user freedom} viewpoint."
61090 msgstr ""
61091
61092 #. type: cindex
61093 #: guix-git/doc/guix.texi:34730 guix-git/doc/guix.texi:34942
61094 #, no-wrap
61095 msgid "bootstrap binaries"
61096 msgstr ""
61097
61098 #. type: Plain text
61099 #: guix-git/doc/guix.texi:34740
61100 msgid "The GNU system is primarily made of C code, with libc at its core. The GNU build system itself assumes the availability of a Bourne shell and command-line tools provided by GNU Coreutils, Awk, Findutils, `sed', and `grep'. Furthermore, build programs---programs that run @code{./configure}, @code{make}, etc.---are written in Guile Scheme (@pxref{Derivations}). Consequently, to be able to build anything at all, from scratch, Guix relies on pre-built binaries of Guile, GCC, Binutils, libc, and the other packages mentioned above---the @dfn{bootstrap binaries}."
61101 msgstr ""
61102
61103 #. type: Plain text
61104 #: guix-git/doc/guix.texi:34744
61105 msgid "These bootstrap binaries are ``taken for granted'', though we can also re-create them if needed (@pxref{Preparing to Use the Bootstrap Binaries})."
61106 msgstr ""
61107
61108 #. type: section
61109 #: guix-git/doc/guix.texi:34751
61110 #, no-wrap
61111 msgid "The Reduced Binary Seed Bootstrap"
61112 msgstr ""
61113
61114 #. type: Plain text
61115 #: guix-git/doc/guix.texi:34758
61116 msgid "Guix---like other GNU/Linux distributions---is traditionally bootstrapped from a set of bootstrap binaries: Bourne shell, command-line tools provided by GNU Coreutils, Awk, Findutils, `sed', and `grep' and Guile, GCC, Binutils, and the GNU C Library (@pxref{Bootstrapping}). Usually, these bootstrap binaries are ``taken for granted.''"
61117 msgstr ""
61118
61119 #. type: Plain text
61120 #: guix-git/doc/guix.texi:34764
61121 msgid "Taking the bootstrap binaries for granted means that we consider them to be a correct and trustworthy ``seed'' for building the complete system. Therein lies a problem: the combined size of these bootstrap binaries is about 250MB (@pxref{Bootstrappable Builds,,, mes, GNU Mes}). Auditing or even inspecting these is next to impossible."
61122 msgstr ""
61123
61124 #. type: Plain text
61125 #: guix-git/doc/guix.texi:34769
61126 msgid "For @code{i686-linux} and @code{x86_64-linux}, Guix now features a ``Reduced Binary Seed'' bootstrap @footnote{We would like to say: ``Full Source Bootstrap'' and while we are working towards that goal it would be hyperbole to use that term for what we do now.}."
61127 msgstr ""
61128
61129 #. type: Plain text
61130 #: guix-git/doc/guix.texi:34775
61131 msgid "The Reduced Binary Seed bootstrap removes the most critical tools---from a trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C Library are replaced by: @code{bootstrap-mescc-tools} (a tiny assembler and linker) and @code{bootstrap-mes} (a small Scheme Interpreter and a C compiler written in Scheme and the Mes C Library, built for TinyCC and for GCC)."
61132 msgstr ""
61133
61134 #. type: Plain text
61135 #: guix-git/doc/guix.texi:34780
61136 msgid "Using these new binary seeds the ``missing'' Binutils, GCC, and the GNU C Library are built from source. From here on the more traditional bootstrap process resumes. This approach has reduced the bootstrap binaries in size to about 145MB in Guix v1.1."
61137 msgstr ""
61138
61139 #. type: Plain text
61140 #: guix-git/doc/guix.texi:34788
61141 msgid "The next step that Guix has taken is to replace the shell and all its utilities with implementations in Guile Scheme, the @emph{Scheme-only bootstrap}. Gash (@pxref{Gash,,, gash, The Gash manual}) is a POSIX-compatible shell that replaces Bash, and it comes with Gash Utils which has minimalist replacements for Awk, the GNU Core Utilities, Grep, Gzip, Sed, and Tar. The rest of the bootstrap binary seeds that were removed are now built from source."
61142 msgstr ""
61143
61144 #. type: Plain text
61145 #: guix-git/doc/guix.texi:34798
61146 msgid "Building the GNU System from source is currently only possible by adding some historical GNU packages as intermediate steps@footnote{Packages such as @code{gcc-2.95.3}, @code{binutils-2.14}, @code{glibc-2.2.5}, @code{gzip-1.2.4}, @code{tar-1.22}, and some others. For details, see @file{gnu/packages/commencement.scm}.}. As Gash and Gash Utils mature, and GNU packages become more bootstrappable again (e.g., new releases of GNU Sed will also ship as gzipped tarballs again, as alternative to the hard to bootstrap @code{xz}-compression), this set of added packages can hopefully be reduced again."
61147 msgstr ""
61148
61149 #. type: Plain text
61150 #: guix-git/doc/guix.texi:34802
61151 msgid "The graph below shows the resulting dependency graph for @code{gcc-core-mesboot0}, the bootstrap compiler used for the traditional bootstrap of the rest of the Guix System."
61152 msgstr ""
61153
61154 #. type: Plain text
61155 #: guix-git/doc/guix.texi:34805
61156 msgid "@image{images/gcc-core-mesboot0-graph,6in,,Dependency graph of gcc-core-mesboot0}"
61157 msgstr ""
61158
61159 #. type: Plain text
61160 #: guix-git/doc/guix.texi:34812
61161 msgid "The only significant binary bootstrap seeds that remain@footnote{ Ignoring the 68KB @code{mescc-tools}; that will be removed later, together with @code{mes}.} are a Scheme interpreter and a Scheme compiler: GNU Mes and GNU Guile@footnote{Not shown in this graph are the static binaries for @file{bash}, @code{tar}, and @code{xz} that are used to get Guile running.}."
61162 msgstr ""
61163
61164 #. type: Plain text
61165 #: guix-git/doc/guix.texi:34815
61166 msgid "This further reduction has brought down the size of the binary seed to about 60MB for @code{i686-linux} and @code{x86_64-linux}."
61167 msgstr ""
61168
61169 #. type: Plain text
61170 #: guix-git/doc/guix.texi:34820
61171 msgid "Work is ongoing to remove all binary blobs from our free software bootstrap stack, working towards a Full Source Bootstrap. Also ongoing is work to bring these bootstraps to the @code{arm-linux} and @code{aarch64-linux} architectures and to the Hurd."
61172 msgstr ""
61173
61174 #. type: Plain text
61175 #: guix-git/doc/guix.texi:34824
61176 msgid "If you are interested, join us on @samp{#bootstrappable} on the Freenode IRC network or discuss on @email{bug-mes@@gnu.org} or @email{gash-devel@@nongnu.org}."
61177 msgstr ""
61178
61179 #. type: Plain text
61180 #: guix-git/doc/guix.texi:34831
61181 msgid "@image{images/bootstrap-graph,6in,,Dependency graph of the early bootstrap derivations}"
61182 msgstr ""
61183
61184 #. type: Plain text
61185 #: guix-git/doc/guix.texi:34836
61186 msgid "The figure above shows the very beginning of the dependency graph of the distribution, corresponding to the package definitions of the @code{(gnu packages bootstrap)} module. A similar figure can be generated with @command{guix graph} (@pxref{Invoking guix graph}), along the lines of:"
61187 msgstr ""
61188
61189 #. type: example
61190 #: guix-git/doc/guix.texi:34841
61191 #, no-wrap
61192 msgid ""
61193 "guix graph -t derivation \\\n"
61194 " -e '(@@@@ (gnu packages bootstrap) %bootstrap-gcc)' \\\n"
61195 " | dot -Tps > gcc.ps\n"
61196 msgstr ""
61197
61198 #. type: Plain text
61199 #: guix-git/doc/guix.texi:34844
61200 msgid "or, for the further Reduced Binary Seed bootstrap"
61201 msgstr ""
61202
61203 #. type: example
61204 #: guix-git/doc/guix.texi:34849
61205 #, no-wrap
61206 msgid ""
61207 "guix graph -t derivation \\\n"
61208 " -e '(@@@@ (gnu packages bootstrap) %bootstrap-mes)' \\\n"
61209 " | dot -Tps > mes.ps\n"
61210 msgstr ""
61211
61212 #. type: Plain text
61213 #: guix-git/doc/guix.texi:34858
61214 msgid "At this level of detail, things are slightly complex. First, Guile itself consists of an ELF executable, along with many source and compiled Scheme files that are dynamically loaded when it runs. This gets stored in the @file{guile-2.0.7.tar.xz} tarball shown in this graph. This tarball is part of Guix's ``source'' distribution, and gets inserted into the store with @code{add-to-store} (@pxref{The Store})."
61215 msgstr ""
61216
61217 #. type: Plain text
61218 #: guix-git/doc/guix.texi:34867
61219 msgid "But how do we write a derivation that unpacks this tarball and adds it to the store? To solve this problem, the @code{guile-bootstrap-2.0.drv} derivation---the first one that gets built---uses @code{bash} as its builder, which runs @code{build-bootstrap-guile.sh}, which in turn calls @code{tar} to unpack the tarball. Thus, @file{bash}, @file{tar}, @file{xz}, and @file{mkdir} are statically-linked binaries, also part of the Guix source distribution, whose sole purpose is to allow the Guile tarball to be unpacked."
61220 msgstr ""
61221
61222 #. type: Plain text
61223 #: guix-git/doc/guix.texi:34879
61224 msgid "Once @code{guile-bootstrap-2.0.drv} is built, we have a functioning Guile that can be used to run subsequent build programs. Its first task is to download tarballs containing the other pre-built binaries---this is what the @file{.tar.xz.drv} derivations do. Guix modules such as @code{ftp-client.scm} are used for this purpose. The @code{module-import.drv} derivations import those modules in a directory in the store, using the original layout. The @code{module-import-compiled.drv} derivations compile those modules, and write them in an output directory with the right layout. This corresponds to the @code{#:modules} argument of @code{build-expression->derivation} (@pxref{Derivations})."
61225 msgstr ""
61226
61227 #. type: Plain text
61228 #: guix-git/doc/guix.texi:34884
61229 msgid "Finally, the various tarballs are unpacked by the derivations @code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv}, or @code{bootstrap-mes-0.drv} and @code{bootstrap-mescc-tools-0.drv}, at which point we have a working C tool chain."
61230 msgstr ""
61231
61232 #. type: unnumberedsec
61233 #: guix-git/doc/guix.texi:34885
61234 #, no-wrap
61235 msgid "Building the Build Tools"
61236 msgstr ""
61237
61238 #. type: Plain text
61239 #: guix-git/doc/guix.texi:34894
61240 msgid "Bootstrapping is complete when we have a full tool chain that does not depend on the pre-built bootstrap tools discussed above. This no-dependency requirement is verified by checking whether the files of the final tool chain contain references to the @file{/gnu/store} directories of the bootstrap inputs. The process that leads to this ``final'' tool chain is described by the package definitions found in the @code{(gnu packages commencement)} module."
61241 msgstr ""
61242
61243 #. type: Plain text
61244 #: guix-git/doc/guix.texi:34901
61245 msgid "The @command{guix graph} command allows us to ``zoom out'' compared to the graph above, by looking at the level of package objects instead of individual derivations---remember that a package may translate to several derivations, typically one derivation to download its source, one to build the Guile modules it needs, and one to actually build the package from source. The command:"
61246 msgstr ""
61247
61248 #. type: example
61249 #: guix-git/doc/guix.texi:34906
61250 #, no-wrap
61251 msgid ""
61252 "guix graph -t bag \\\n"
61253 " -e '(@@@@ (gnu packages commencement)\n"
61254 " glibc-final-with-bootstrap-bash)' | xdot -\n"
61255 msgstr ""
61256
61257 #. type: Plain text
61258 #: guix-git/doc/guix.texi:34913
61259 msgid "displays the dependency graph leading to the ``final'' C library@footnote{You may notice the @code{glibc-intermediate} label, suggesting that it is not @emph{quite} final, but as a good approximation, we will consider it final.}, depicted below."
61260 msgstr ""
61261
61262 #. type: Plain text
61263 #: guix-git/doc/guix.texi:34915
61264 msgid "@image{images/bootstrap-packages,6in,,Dependency graph of the early packages}"
61265 msgstr ""
61266
61267 #. type: Plain text
61268 #: guix-git/doc/guix.texi:34921
61269 msgid "The first tool that gets built with the bootstrap binaries is GNU@tie{}Make---noted @code{make-boot0} above---which is a prerequisite for all the following packages. From there Findutils and Diffutils get built."
61270 msgstr ""
61271
61272 #. type: Plain text
61273 #: guix-git/doc/guix.texi:34926
61274 msgid "Then come the first-stage Binutils and GCC, built as pseudo cross tools---i.e., with @option{--target} equal to @option{--host}. They are used to build libc. Thanks to this cross-build trick, this libc is guaranteed not to hold any reference to the initial tool chain."
61275 msgstr ""
61276
61277 #. type: Plain text
61278 #: guix-git/doc/guix.texi:34932
61279 msgid "From there the final Binutils and GCC (not shown above) are built. GCC uses @command{ld} from the final Binutils, and links programs against the just-built libc. This tool chain is used to build the other packages used by Guix and by the GNU Build System: Guile, Bash, Coreutils, etc."
61280 msgstr ""
61281
61282 #. type: Plain text
61283 #: guix-git/doc/guix.texi:34938
61284 msgid "And voilà! At this point we have the complete set of build tools that the GNU Build System expects. These are in the @code{%final-inputs} variable of the @code{(gnu packages commencement)} module, and are implicitly used by any package that uses @code{gnu-build-system} (@pxref{Build Systems, @code{gnu-build-system}})."
61285 msgstr ""
61286
61287 #. type: unnumberedsec
61288 #: guix-git/doc/guix.texi:34940
61289 #, no-wrap
61290 msgid "Building the Bootstrap Binaries"
61291 msgstr ""
61292
61293 #. type: Plain text
61294 #: guix-git/doc/guix.texi:34947
61295 msgid "Because the final tool chain does not depend on the bootstrap binaries, those rarely need to be updated. Nevertheless, it is useful to have an automated way to produce them, should an update occur, and this is what the @code{(gnu packages make-bootstrap)} module provides."
61296 msgstr ""
61297
61298 #. type: Plain text
61299 #: guix-git/doc/guix.texi:34953
61300 msgid "The following command builds the tarballs containing the bootstrap binaries (Binutils, GCC, glibc, for the traditional bootstrap and linux-libre-headers, bootstrap-mescc-tools, bootstrap-mes for the Reduced Binary Seed bootstrap, and Guile, and a tarball containing a mixture of Coreutils and other basic command-line tools):"
61301 msgstr ""
61302
61303 #. type: example
61304 #: guix-git/doc/guix.texi:34956
61305 #, no-wrap
61306 msgid "guix build bootstrap-tarballs\n"
61307 msgstr ""
61308
61309 #. type: Plain text
61310 #: guix-git/doc/guix.texi:34961
61311 msgid "The generated tarballs are those that should be referred to in the @code{(gnu packages bootstrap)} module mentioned at the beginning of this section."
61312 msgstr ""
61313
61314 #. type: Plain text
61315 #: guix-git/doc/guix.texi:34967
61316 msgid "Still here? Then perhaps by now you've started to wonder: when do we reach a fixed point? That is an interesting question! The answer is unknown, but if you would like to investigate further (and have significant computational and storage resources to do so), then let us know."
61317 msgstr ""
61318
61319 #. type: unnumberedsec
61320 #: guix-git/doc/guix.texi:34968
61321 #, no-wrap
61322 msgid "Reducing the Set of Bootstrap Binaries"
61323 msgstr ""
61324
61325 #. type: Plain text
61326 #: guix-git/doc/guix.texi:34976
61327 msgid "Our traditional bootstrap includes GCC, GNU Libc, Guile, etc. That's a lot of binary code! Why is that a problem? It's a problem because these big chunks of binary code are practically non-auditable, which makes it hard to establish what source code produced them. Every unauditable binary also leaves us vulnerable to compiler backdoors as described by Ken Thompson in the 1984 paper @emph{Reflections on Trusting Trust}."
61328 msgstr ""
61329
61330 #. type: Plain text
61331 #: guix-git/doc/guix.texi:34982
61332 msgid "This is mitigated by the fact that our bootstrap binaries were generated from an earlier Guix revision. Nevertheless it lacks the level of transparency that we get in the rest of the package dependency graph, where Guix always gives us a source-to-binary mapping. Thus, our goal is to reduce the set of bootstrap binaries to the bare minimum."
61333 msgstr ""
61334
61335 #. type: Plain text
61336 #: guix-git/doc/guix.texi:34988
61337 msgid "The @uref{https://bootstrappable.org, Bootstrappable.org web site} lists on-going projects to do that. One of these is about replacing the bootstrap GCC with a sequence of assemblers, interpreters, and compilers of increasing complexity, which could be built from source starting from a simple and auditable assembler."
61338 msgstr ""
61339
61340 #. type: Plain text
61341 #: guix-git/doc/guix.texi:34997
61342 msgid "Our first major achievement is the replacement of of GCC, the GNU C Library and Binutils by MesCC-Tools (a simple hex linker and macro assembler) and Mes (@pxref{Top, GNU Mes Reference Manual,, mes, GNU Mes}, a Scheme interpreter and C compiler in Scheme). Neither MesCC-Tools nor Mes can be fully bootstrapped yet and thus we inject them as binary seeds. We call this the Reduced Binary Seed bootstrap, as it has halved the size of our bootstrap binaries! Also, it has eliminated the C compiler binary; i686-linux and x86_64-linux Guix packages are now bootstrapped without any binary C compiler."
61343 msgstr ""
61344
61345 #. type: Plain text
61346 #: guix-git/doc/guix.texi:35000
61347 msgid "Work is ongoing to make MesCC-Tools and Mes fully bootstrappable and we are also looking at any other bootstrap binaries. Your help is welcome!"
61348 msgstr ""
61349
61350 #. type: chapter
61351 #: guix-git/doc/guix.texi:35002
61352 #, no-wrap
61353 msgid "Porting to a New Platform"
61354 msgstr ""
61355
61356 #. type: Plain text
61357 #: guix-git/doc/guix.texi:35011
61358 msgid "As discussed above, the GNU distribution is self-contained, and self-containment is achieved by relying on pre-built ``bootstrap binaries'' (@pxref{Bootstrapping}). These binaries are specific to an operating system kernel, CPU architecture, and application binary interface (ABI). Thus, to port the distribution to a platform that is not yet supported, one must build those bootstrap binaries, and update the @code{(gnu packages bootstrap)} module to use them on that platform."
61359 msgstr ""
61360
61361 #. type: Plain text
61362 #: guix-git/doc/guix.texi:35016
61363 msgid "Fortunately, Guix can @emph{cross compile} those bootstrap binaries. When everything goes well, and assuming the GNU tool chain supports the target platform, this can be as simple as running a command like this one:"
61364 msgstr ""
61365
61366 #. type: example
61367 #: guix-git/doc/guix.texi:35019
61368 #, no-wrap
61369 msgid "guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs\n"
61370 msgstr ""
61371
61372 #. type: Plain text
61373 #: guix-git/doc/guix.texi:35026
61374 msgid "For this to work, the @code{glibc-dynamic-linker} procedure in @code{(gnu packages bootstrap)} must be augmented to return the right file name for libc's dynamic linker on that platform; likewise, @code{system->linux-architecture} in @code{(gnu packages linux)} must be taught about the new platform."
61375 msgstr ""
61376
61377 #. type: Plain text
61378 #: guix-git/doc/guix.texi:35035
61379 msgid "Once these are built, the @code{(gnu packages bootstrap)} module needs to be updated to refer to these binaries on the target platform. That is, the hashes and URLs of the bootstrap tarballs for the new platform must be added alongside those of the currently supported platforms. The bootstrap Guile tarball is treated specially: it is expected to be available locally, and @file{gnu/local.mk} has rules to download it for the supported architectures; a rule for the new platform must be added as well."
61380 msgstr ""
61381
61382 #. type: Plain text
61383 #: guix-git/doc/guix.texi:35044
61384 msgid "In practice, there may be some complications. First, it may be that the extended GNU triplet that specifies an ABI (like the @code{eabi} suffix above) is not recognized by all the GNU tools. Typically, glibc recognizes some of these, whereas GCC uses an extra @option{--with-abi} configure flag (see @code{gcc.scm} for examples of how to handle this). Second, some of the required packages could fail to build for that platform. Lastly, the generated binaries could be broken for some reason."
61385 msgstr ""
61386
61387 #. type: include
61388 #: guix-git/doc/guix.texi:35046
61389 #, no-wrap
61390 msgid "contributing.texi"
61391 msgstr "contributing.sk.texi"
61392
61393 #. type: Plain text
61394 #: guix-git/doc/guix.texi:35059
61395 msgid "Guix is based on the @uref{https://nixos.org/nix/, Nix package manager}, which was designed and implemented by Eelco Dolstra, with contributions from other people (see the @file{nix/AUTHORS} file in Guix). Nix pioneered functional package management, and promoted unprecedented features, such as transactional package upgrades and rollbacks, per-user profiles, and referentially transparent build processes. Without this work, Guix would not exist."
61396 msgstr ""
61397
61398 #. type: Plain text
61399 #: guix-git/doc/guix.texi:35062
61400 msgid "The Nix-based software distributions, Nixpkgs and NixOS, have also been an inspiration for Guix."
61401 msgstr ""
61402
61403 #. type: Plain text
61404 #: guix-git/doc/guix.texi:35068
61405 msgid "GNU@tie{}Guix itself is a collective work with contributions from a number of people. See the @file{AUTHORS} file in Guix for more information on these fine people. The @file{THANKS} file lists people who have helped by reporting bugs, taking care of the infrastructure, providing artwork and themes, making suggestions, and more---thank you!"
61406 msgstr ""
61407
61408 #. type: cindex
61409 #: guix-git/doc/guix.texi:35073
61410 #, no-wrap
61411 msgid "license, GNU Free Documentation License"
61412 msgstr ""
61413
61414 #. type: include
61415 #: guix-git/doc/guix.texi:35074
61416 #, no-wrap
61417 msgid "fdl-1.3.texi"
61418 msgstr ""