[bug#78308,6/9] system: Migrate sourcing bash_completion.sh to etc-bashrc-d-service-type.

Message ID 93144b9f500318da89c3391ce68f453041fd6afc.1746682206.git.maxim.cournoyer@gmail.com
State New
Headers
Series VTE integration support / Shell startup files refactor |

Commit Message

Maxim Cournoyer May 8, 2025, 6:02 a.m. UTC
  * 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(-)
  

Patch

diff --git a/doc/guix.texi b/doc/guix.texi
index 74503ce0e6c..c8d74a3c31b 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -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
 
diff --git a/gnu/services.scm b/gnu/services.scm
index 7083c88c130..5dbda176b80 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -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."
diff --git a/gnu/system.scm b/gnu/system.scm
index 70f341a495a..d009a2036b0 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -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