diff mbox series

[bug#61358] system: default-skeletons: Merge search-paths of multiple profiles.

Message ID 20230208023735.8388-1-iyzsong@envs.net
State New
Headers show
Series [bug#61358] system: default-skeletons: Merge search-paths of multiple profiles. | expand

Commit Message

vasilii.smirnov--- via Guix-patches" via Feb. 8, 2023, 2:37 a.m. UTC
From: 宋文武 <iyzsong@member.fsf.org>

Fixes <https://issues.guix/gnu.org/20255>.

* gnu/system/shadow.scm (default-skeletons)[bash_profile, zprofile]:
Merge search-paths from multiple profiles via "guix package".
---
 gnu/system/shadow.scm | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

Comments

Liliana Marie Prikler Feb. 8, 2023, 5:18 a.m. UTC | #1
Am Mittwoch, dem 08.02.2023 um 10:37 +0800 schrieb iyzsong@envs.net:
> From: 宋文武 <iyzsong@member.fsf.org>
> 
> Fixes <https://issues.guix/gnu.org/20255>.
> 
> * gnu/system/shadow.scm (default-skeletons)[bash_profile, zprofile]:
> Merge search-paths from multiple profiles via "guix package".
> ---
>  gnu/system/shadow.scm | 24 ++++++++++++++++++++++--
>  1 file changed, 22 insertions(+), 2 deletions(-)
> 
> diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
> index 2e87928368..a46f53e784 100644
> --- a/gnu/system/shadow.scm
> +++ b/gnu/system/shadow.scm
> @@ -152,11 +152,31 @@ (define (default-skeletons)
>  
>    (let ((profile (plain-file "bash_profile" "\
>  # Honor per-interactive-shell startup file
> -if [ -f ~/.bashrc ]; then . ~/.bashrc; fi\n"))
> +if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
> +
> +# Merge search-paths from multiple profiles, the order matters.
> +eval \"$(guix package --search-paths \\
> +-p $HOME/.config/guix/current \\
> +-p $HOME/.guix-profile \\
> +-p /run/current-system/profile)\"
> +
> +# Prepend setuid programs.
> +export PATH=/run/setuid-programs:$PATH
> +"))
>          (bashrc  %default-bashrc)
>          (zprofile    (plain-file "zprofile" "\
>  # Honor system-wide environment variables
> -source /etc/profile\n"))
> +source /etc/profile
> +
> +# Merge search-paths from multiple profiles, the order matters.
> +eval \"$(guix package --search-paths \\
> +-p $HOME/.config/guix/current \\
> +-p $HOME/.guix-profile \\
> +-p /run/current-system/profile)\"
> +
> +# Prepend setuid programs.
> +export PATH=/run/setuid-programs:$PATH
> +"))
>          (xdefaults (plain-file "Xdefaults" "\
>  XTerm*utf8: always
>  XTerm*metaSendsEscape: true\n"))
Why not do this in /etc/profile?
宋文武 Feb. 8, 2023, 7:20 a.m. UTC | #2
Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

> Am Mittwoch, dem 08.02.2023 um 10:37 +0800 schrieb iyzsong@envs.net:
>> From: 宋文武 <iyzsong@member.fsf.org>
>> 
>> Fixes <https://issues.guix/gnu.org/20255>.
>> 
>> * gnu/system/shadow.scm (default-skeletons)[bash_profile, zprofile]:
>> Merge search-paths from multiple profiles via "guix package".
>> ---
>>  gnu/system/shadow.scm | 24 ++++++++++++++++++++++--
>>  1 file changed, 22 insertions(+), 2 deletions(-)
>>  [...]

> Why not do this in /etc/profile?

It's easier to modify ~/.bash_profile If you don't like the way (eval!
and speed as disscussed in #20255).

Also this doesn't include home profiles, which a user likely want to add
them into "guix package -p ..." too.
宋文武 May 12, 2023, 12:30 p.m. UTC | #3
Pushed now!
diff mbox series

Patch

diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 2e87928368..a46f53e784 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -152,11 +152,31 @@  (define (default-skeletons)
 
   (let ((profile (plain-file "bash_profile" "\
 # Honor per-interactive-shell startup file
-if [ -f ~/.bashrc ]; then . ~/.bashrc; fi\n"))
+if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
+
+# Merge search-paths from multiple profiles, the order matters.
+eval \"$(guix package --search-paths \\
+-p $HOME/.config/guix/current \\
+-p $HOME/.guix-profile \\
+-p /run/current-system/profile)\"
+
+# Prepend setuid programs.
+export PATH=/run/setuid-programs:$PATH
+"))
         (bashrc  %default-bashrc)
         (zprofile    (plain-file "zprofile" "\
 # Honor system-wide environment variables
-source /etc/profile\n"))
+source /etc/profile
+
+# Merge search-paths from multiple profiles, the order matters.
+eval \"$(guix package --search-paths \\
+-p $HOME/.config/guix/current \\
+-p $HOME/.guix-profile \\
+-p /run/current-system/profile)\"
+
+# Prepend setuid programs.
+export PATH=/run/setuid-programs:$PATH
+"))
         (xdefaults (plain-file "Xdefaults" "\
 XTerm*utf8: always
 XTerm*metaSendsEscape: true\n"))