summaryrefslogtreecommitdiff
path: root/gnu/services.scm
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2025-05-08 11:03:35 +0900
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2025-05-26 13:43:03 +0900
commitc743d646ee9104aa14d066cdf6657a0fac82ebea (patch)
tree0cbd78ae16fbbbfec8344b031f7f10dce407a571 /gnu/services.scm
parent45b883a9d33ff3bfd0bdb9c9eeea4d64eb73e10c (diff)
system: Factorize bashrc default configuration.
This factorizes out the remaining bashrc bits from /etc/skel/.bashrc to a the template used for both /etc/bashrc on Guix System and ~/.bashrc for home-bash-service-type. Rationale: The use of /etc/skel introduce state: the file is only copied originally when the user account is created, and never (automatically) refreshed again. * gnu/system.scm (operating-system-etc-service): <profile>: Guard against souring /etc/bashrc in non-interactive, SSH case. <bashrc>: Use %default-bashrc, having migrated the remaining definitions to... * gnu/system/shadow.scm (%default-bashrc): ... here. Factorize aliases to... * gnu/services.scm (%default-bash-aliases): ... here. (%default-bashrc-d-aliases): New variable. (%default-etc-bashrc-d-files): Include it in the default configuration. * gnu/services/base.scm (%base-services): Register etc-bashrc-d-service-type. * gnu/home/services/shells.scm (add-bash-configuration): Do not set PS1, now part of %default-bashrc. (home-bash-configuration) [guix-defaults?]: Update doc. [aliases]: Set %default-bash-aliases as the default value. Update doc. * doc/guix.texi (Shells Home Services): Update documentation. (Service Reference): Update example. Change-Id: I340c614983a78fd20a9c4a9705e7fc542ae9b513
Diffstat (limited to 'gnu/services.scm')
-rw-r--r--gnu/services.scm23
1 files changed, 21 insertions, 2 deletions
diff --git a/gnu/services.scm b/gnu/services.scm
index 5dbda176b80..159d357c3e7 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -125,6 +125,7 @@
etc-profile-d-service-type
etc-bashrc-d-service-type
%default-etc-bashrc-d-files
+ %default-bash-aliases
etc-directory
privileged-program-service-type
setuid-program-service-type ; deprecated
@@ -993,9 +994,27 @@ log in.")))
(define files->bashrc-d-directory
(make-files->etc-directory "bashrc.d"))
+;;; Use an alist to be compatible with <home-bash-configuration>.
+(define %default-bash-aliases
+ '(("ls" . "ls -p --color=auto")
+ ("ll" . "ls -l")
+ ("grep" . "grep --color=auto")
+ ("ip" . "ip -color=auto")))
+
+;;; ... but avoid the full blown bash-serialize-aliases, which depends on
+;;; other 'guix home' definitions such as `shell-double-quote'.
+(define %default-bashrc-d-aliases
+ (plain-file "aliases.sh"
+ (string-join
+ (map (match-lambda
+ ((alias . value)
+ (format #f "~a=~s~%" alias value)))
+ %default-bash-aliases)
+ "")))
+
(define %default-etc-bashrc-d-files
- (list (file-append bash-completion
- "/etc/profile.d/bash_completion.sh")))
+ (list (file-append bash-completion "/etc/profile.d/bash_completion.sh")
+ %default-bashrc-d-aliases))
(define etc-bashrc-d-service-type
(service-type