[bug#78308,6/9] system: Migrate sourcing bash_completion.sh to etc-bashrc-d-service-type.
Commit Message
* gnu/system.scm (operating-system-etc-service): Remove block sourcing
bash_completion.sh.
(%base-packages-interactive): Delete bash-completion.
* gnu/services.scm (%default-etc-bashrc-d-files): New variable, which includes
the bash_completion.sh file.
(etc-bashrc-d-service-type): Use it.
* doc/guix.texi (Service Reference): Update documentation.
Change-Id: I2223a5f96f5d761148badc6be29e1c5c80465a1d
---
doc/guix.texi | 11 +++++++----
gnu/services.scm | 8 +++++++-
gnu/system.scm | 10 ----------
3 files changed, 14 insertions(+), 15 deletions(-)
@@ -47540,15 +47540,18 @@ Service Reference
The type of the @file{/etc/bashrc.d} service. This service is used to
create files under @file{/etc/bashrc.d}. It takes as value a list of
file-like objects, as can be produced with @code{local-file},
-@code{plain-file}, etc. Package objects can also be provided directly
-to have their @file{etc/bashrc.d/*.sh} prefixed files added. An example
-usage may look like:
+@code{plain-file}, etc. The default value is made available via the
+@var{%default-etc-bashrc-d-files} variable for users to extended.
+Package objects can also be provided directly to have their
+@file{etc/bashrc.d/*.sh} prefixed files added. An example usage may
+look like:
@example
(use-package-modules gnome) ;for the `vte' package
(service etc-bashrc-d-service-type
- (list (file-append vte "/etc/profile.d/vte.sh")))
+ (append (list (file-append vte "/etc/profile.d/vte.sh"))
+ %default-etc-bashrc-d-files))
@end example
@end defvar
@@ -124,6 +124,7 @@ (define-module (gnu services)
etc-service-type
etc-profile-d-service-type
etc-bashrc-d-service-type
+ %default-etc-bashrc-d-files
etc-directory
privileged-program-service-type
setuid-program-service-type ; deprecated
@@ -992,6 +993,10 @@ (define etc-profile-d-service-type
(define files->bashrc-d-directory
(make-files->etc-directory "bashrc.d"))
+(define %default-etc-bashrc-d-files
+ (list (file-append bash-completion
+ "/etc/profile.d/bash_completion.sh")))
+
(define etc-bashrc-d-service-type
(service-type
(inherit etc-profile-d-service-type)
@@ -1000,7 +1005,8 @@ (define etc-bashrc-d-service-type
files->bashrc-d-directory)))
(description "A service for populating @file{/etc/bashrc.d/} with Bash
scripts having the @file{.sh} file extension, to be sourced by interactive
-Bash shells.")))
+Bash shells.")
+ (default-value %default-etc-bashrc-d-files)))
(define (privileged-program->activation-gexp programs)
"Return an activation gexp for privileged-program from PROGRAMS."
@@ -959,7 +959,6 @@ (define %base-packages-interactive
nvi
man-db
info-reader ;the standalone Info reader (no Perl)
- bash-completion
kbd
;; The 'sudo' command is already in %SETUID-PROGRAMS, but we also
;; want the other commands and the man pages (notably because
@@ -1146,15 +1145,6 @@ (define* (operating-system-etc-service os)
# Provide a default prompt. The user's ~/.bashrc can override it.
PS1='\\u@\\h \\w${GUIX_ENVIRONMENT:+ [env]}\\$ '
-# The 'bash-completion' package.
-if [ -f /run/current-system/profile/etc/profile.d/bash_completion.sh ]
-then
- # Bash-completion sources ~/.bash_completion. It installs a dynamic
- # completion loader that searches its own completion files as well
- # as those in ~/.guix-profile and /run/current-system/profile.
- source /run/current-system/profile/etc/profile.d/bash_completion.sh
-fi
-
for i in /etc/bashrc.d/*.sh; do
[[ -r $i ]] && source \"$i\"
done