doc: Improve documentation of the Bash home service

* doc/guix.texi (Shells Home Services): Document ‘home-bash-extension’
  configuration record.
* gnu/home/services/shells.scm (generate-home-bash-documentation): Extract
  docstrings from ‘home-bash-extension’.
  (home-bash-configuration): Expound on docstrings.
  (home-bash-extension): Likewise.

Fixes: <https://issues.guix.gnu.org/50991>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Xinglu Chen 2021-11-07 12:36:29 +01:00 committed by Ludovic Courtès
parent 4b96998292
commit 2f665d4309
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 76 additions and 19 deletions

View File

@ -36159,6 +36159,7 @@ Extend home-shell-profile service only if you really know what you do.
@subsubheading Bash Home Service
@anchor{home-bash-configuration}
@deftp {Data Type} home-bash-configuration
Available @code{home-bash-configuration} fields are:
@ -36167,15 +36168,20 @@ Available @code{home-bash-configuration} fields are:
The Bash package to use.
@item @code{guix-defaults?} (default: @code{#t}) (type: boolean)
Add sane defaults like reading @file{/etc/bashrc}, coloring output for
@code{ls} provided by guix to @file{.bashrc}.
Add sane defaults like reading @file{/etc/bashrc} and coloring the output of
@command{ls} to the end of the @file{.bashrc} file.
@item @code{environment-variables} (default: @code{()}) (type: alist)
Association list of environment variables to set for the Bash session.
Association list of environment variables to set for the Bash session. The
rules for the @code{home-environment-variables-service-type} apply
here (@pxref{Essential Home Services}). The contents of this field will be
added after the contents of the @code{bash-profile} field.
@item @code{aliases} (default: @code{()}) (type: alist)
Association list of aliases to set for the Bash session. The alias will
automatically be quoted, so something line this:
Association list of aliases to set for the Bash session. The aliases
will be defined after the contents of the @code{bashrc} field has been
put in the @file{.bashrc} file. The alias will automatically be quoted,
so something line this:
@lisp
'((\"ls\" . \"ls -alF\"))
@ -36206,7 +36212,41 @@ be read in some cases (if the shell terminates by exec'ing another
process for example).
@end table
@end deftp
You can extend the Bash service by using the @code{home-bash-extension}
configuration record, whose fields most mirror that of
@code{home-bash-configuration} (@pxref{home-bash-configuration}). The
contents of the extensions will be added to the end of the corresponding
Bash configuration files (@pxref{Bash Startup Files,,, bash, The GNU
Bash Reference Manual}.
@deftp {Data Type} home-bash-extension
Available @code{home-bash-extension} fields are:
@table @asis
@item @code{environment-variables} (default: @code{()}) (type: alist)
Additional environment variables to set. These will be combined with the
environment variables from other extensions and the base service to form one
coherent block of environment variables.
@item @code{aliases} (default: @code{()}) (type: alist)
Additional aliases to set. These will be combined with the aliases from
other extensions and the base service.
@item @code{bash-profile} (default: @code{()}) (type: text-config)
Additional text blocks to add to @file{.bash_profile}, which will be combined
with text blocks from other extensions and the base service.
@item @code{bashrc} (default: @code{()}) (type: text-config)
Additional text blocks to add to @file{.bashrc}, which will be combined
with text blocks from other extensions and the base service.
@item @code{bash-logout} (default: @code{()}) (type: text-config)
Additional text blocks to add to @file{.bash_logout}, which will be combined
with text blocks from other extensions and the base service.
@end table
@end deftp
@subsubheading Zsh Home Service

View File

@ -323,16 +323,21 @@ source ~/.profile
"The Bash package to use.")
(guix-defaults?
(boolean #t)
"Add sane defaults like reading @file{/etc/bashrc}, coloring output
for @code{ls} provided by guix to @file{.bashrc}.")
"Add sane defaults like reading @file{/etc/bashrc} and coloring the output of
@command{ls} to the end of the @file{.bashrc} file.")
(environment-variables
(alist '())
"Association list of environment variables to set for the Bash session."
"Association list of environment variables to set for the Bash session. The
rules for the @code{home-environment-variables-service-type} apply
here (@pxref{Essential Home Services}). The contents of this field will be
added after the contents of the @code{bash-profile} field."
serialize-posix-env-vars)
(aliases
(alist '())
"Association list of aliases to set for the Bash session. The alias will
automatically be quoted, so something line this:
"Association list of aliases to set for the Bash session. The aliases will be
defined after the contents of the @code{bashrc} field has been put in the
@file{.bashrc} file. The alias will automatically be quoted, so something line
this:
@lisp
'((\"ls\" . \"ls -alF\"))
@ -450,19 +455,25 @@ if [ -f ~/.bashrc ]; then source ~/.bashrc; fi
(define-configuration/no-serialization home-bash-extension
(environment-variables
(alist '())
"Association list of environment variables to set.")
"Additional environment variables to set. These will be combined with the
environment variables from other extensions and the base service to form one
coherent block of environment variables.")
(aliases
(alist '())
"Association list of aliases to set.")
"Additional aliases to set. These will be combined with the aliases from
other extensions and the base service.")
(bash-profile
(text-config '())
"List of file-like objects.")
"Additional text blocks to add to @file{.bash_profile}, which will be combined
with text blocks from other extensions and the base service.")
(bashrc
(text-config '())
"List of file-like objects.")
"Additional text blocks to add to @file{.bashrc}, which will be combined
with text blocks from other extensions and the base service.")
(bash-logout
(text-config '())
"List of file-like objects."))
"Additional text blocks to add to @file{.bash_logout}, which will be combined
with text blocks from other extensions and the base service."))
(define (home-bash-extensions original-config extension-configs)
(match original-config
@ -646,10 +657,16 @@ Install and configure Fish, the friendly interactive shell.")))
'home-shell-profile-configuration))
(define (generate-home-bash-documentation)
(generate-documentation
`((home-bash-configuration
,home-bash-configuration-fields))
'home-bash-configuration))
(string-append
(generate-documentation
`((home-bash-configuration
,home-bash-configuration-fields))
'home-bash-configuration)
"\n\n"
(generate-documentation
`((home-bash-extension
,home-bash-extension-fields))
'home-bash-extension)))
(define (generate-home-zsh-documentation)
(generate-documentation