aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/bash.scm24
1 files changed, 24 insertions, 0 deletions
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 02cb45c955..45676f568b 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -23,6 +23,7 @@
#:use-module (gnu packages ncurses)
#:use-module (gnu packages readline)
#:use-module (gnu packages bison)
+ #:use-module (gnu packages linux)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
@@ -247,6 +248,29 @@ without modification.")
(patches
(list (search-patch "bash-completion-directories.patch")))))
(build-system gnu-build-system)
+ (native-inputs `(("util-linux" ,util-linux)))
+ (arguments
+ `(#:phases (alist-cons-after
+ 'install 'remove-redundant-completions
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Util-linux comes with a bunch of completion files for
+ ;; its own commands which are more sophisticated and
+ ;; up-to-date than those of bash-completion. Remove those
+ ;; from bash-completion.
+ (let* ((out (assoc-ref outputs "out"))
+ (util-linux (assoc-ref inputs "util-linux"))
+ (completions (string-append out
+ "/share/bash-completion"
+ "/completions"))
+ (already (find-files (string-append util-linux
+ "/etc/bash_completion.d"))))
+ (with-directory-excursion completions
+ (for-each (lambda (file)
+ (when (file-exists? file)
+ (delete-file file)))
+ (map basename already)))
+ #t))
+ %standard-phases)))
(synopsis "Bash completions for common commands")
(description
"This package provides extensions that allow Bash to provide adapted