diff options
| author | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2025-05-08 11:03:35 +0900 |
|---|---|---|
| committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2025-05-26 13:43:03 +0900 |
| commit | c743d646ee9104aa14d066cdf6657a0fac82ebea (patch) | |
| tree | 0cbd78ae16fbbbfec8344b031f7f10dce407a571 /gnu/services.scm | |
| parent | 45b883a9d33ff3bfd0bdb9c9eeea4d64eb73e10c (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.scm | 23 |
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 @@ | |||
| 125 | etc-profile-d-service-type | 125 | etc-profile-d-service-type |
| 126 | etc-bashrc-d-service-type | 126 | etc-bashrc-d-service-type |
| 127 | %default-etc-bashrc-d-files | 127 | %default-etc-bashrc-d-files |
| 128 | %default-bash-aliases | ||
| 128 | etc-directory | 129 | etc-directory |
| 129 | privileged-program-service-type | 130 | privileged-program-service-type |
| 130 | setuid-program-service-type ; deprecated | 131 | setuid-program-service-type ; deprecated |
| @@ -993,9 +994,27 @@ log in."))) | |||
| 993 | (define files->bashrc-d-directory | 994 | (define files->bashrc-d-directory |
| 994 | (make-files->etc-directory "bashrc.d")) | 995 | (make-files->etc-directory "bashrc.d")) |
| 995 | 996 | ||
| 997 | ;;; Use an alist to be compatible with <home-bash-configuration>. | ||
| 998 | (define %default-bash-aliases | ||
| 999 | '(("ls" . "ls -p --color=auto") | ||
| 1000 | ("ll" . "ls -l") | ||
| 1001 | ("grep" . "grep --color=auto") | ||
| 1002 | ("ip" . "ip -color=auto"))) | ||
| 1003 | |||
| 1004 | ;;; ... but avoid the full blown bash-serialize-aliases, which depends on | ||
| 1005 | ;;; other 'guix home' definitions such as `shell-double-quote'. | ||
| 1006 | (define %default-bashrc-d-aliases | ||
| 1007 | (plain-file "aliases.sh" | ||
| 1008 | (string-join | ||
| 1009 | (map (match-lambda | ||
| 1010 | ((alias . value) | ||
| 1011 | (format #f "~a=~s~%" alias value))) | ||
| 1012 | %default-bash-aliases) | ||
| 1013 | ""))) | ||
| 1014 | |||
| 996 | (define %default-etc-bashrc-d-files | 1015 | (define %default-etc-bashrc-d-files |
| 997 | (list (file-append bash-completion | 1016 | (list (file-append bash-completion "/etc/profile.d/bash_completion.sh") |
| 998 | "/etc/profile.d/bash_completion.sh"))) | 1017 | %default-bashrc-d-aliases)) |
| 999 | 1018 | ||
| 1000 | (define etc-bashrc-d-service-type | 1019 | (define etc-bashrc-d-service-type |
| 1001 | (service-type | 1020 | (service-type |
