guix-install.sh: Create an init profile for better out-of-the-box experience on foreign distros

DoneSubmitted by Prafulla Giri.
Details
2 participants
  • Ludovic Courtès
  • Prafulla Giri
Owner
unassigned
Severity
normal
P
P
Prafulla Giri wrote on 9 Jan 2020 08:23
(address . guix-patches@gnu.org)
CAFw+=j2HrBvUKp0WVeQMwxHyFih-azaK1zywKq9krxrN7h3bJw@mail.gmail.com
Esteemed maintainers,
Attached is a patch that I think improves the guix user experience on aforeign distro. It creates a guix.sh init profile at /etc/profile.d (in thesame vein as flatpak with it's /etc/profile.d/flatpak.sh). I have beenusing the init file on few of my friends computers with no regressions.
I have tried my best to emulate the commit-logs as seen from `git logetc/guix-install.sh`. Please do let me know if I am doing anything wrong.This is my first real contribution to a GNU project, ever. I am still an00b, and only have had experiences with GitHub based PRs so far, and stillhave a lot to learn. Please forgive my klutzes.
Attachment: file
From 527d82c66a1e80779f75a16cfdd65634d55f32c1 Mon Sep 17 00:00:00 2001From: Prafulla Giri <pratheblackdiamond@gmail.com>Date: Sat, 28 Dec 2019 12:48:52 +0545Subject: [PATCH] guix-install.sh: Create an init profile during installation
Create an init profile (/etc/profile.d/guix.sh) during installation forbetter integration with foreign distros. This file, read by login-shellssets a few environment variables (PATH, GUIX_PROFILE, GUIX_LOCALE, alongwith XDG_DATA_DIRS) and makes guix-installed packages readily availablefor the users. Other environment variables, as listed by `guix package--search-paths=prefix`, are also exported.
Checks are in place to prevent the init profile from needlessly pollutingthe user's environment.
* etc/guix-install.sh (sys_create_init_profile): New function to create/etc/profile.d/guix.sh init profile.--- etc/guix-install.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
Toggle diff (41 lines)diff --git a/etc/guix-install.sh b/etc/guix-install.shindex 111e25fbcb..b57d71981f 100755--- a/etc/guix-install.sh+++ b/etc/guix-install.sh@@ -393,6 +393,26 @@ sys_authorize_build_farms() done } +sys_create_init_profile()+{ # Create /etc/profile.d/guix.sh for better desktop integration+ cat <<"EOF" > /etc/profile.d/guix.sh+# _GUIX_PROFILE: `guix pull` profile+_GUIX_PROFILE="$HOME/.config/guix/current"+[ -L $_GUIX_PROFILE ] && export PATH="$_GUIX_PROFILE/bin${PATH:+:}$PATH"++# GUIX_PROFILE: User's default profile+GUIX_PROFILE="$HOME/.guix-profile"+[ -L $GUIX_PROFILE ] || return+GUIX_LOCPATH="$GUIX_PROFILE/lib/locale"+export GUIX_PROFILE GUIX_LOCPATH++eval `guix package --search-paths=prefix 2> /dev/null`++# set XDG_DATA_DIRS to include Guix installations+export XDG_DATA_DIRS="$GUIX_PROFILE/share${XDG_DATA_DIRS:+:}$XDG_DATA_DIRS"+EOF+}+ welcome() { cat<<"EOF"@@ -449,6 +469,7 @@ main() sys_create_build_user sys_enable_guix_daemon sys_authorize_build_farms+ sys_create_init_profile _msg "${INF}cleaning up ${tmp_path}" rm -r "${tmp_path}"-- 2.24.1
L
L
Ludovic Courtès wrote on 17 Jan 2020 17:29
(name . Prafulla Giri)(address . pratheblackdiamond@gmail.com)(address . 39049@debbugs.gnu.org)
878sm611yh.fsf@gnu.org
Hello Prafulla,
Prafulla Giri <pratheblackdiamond@gmail.com> skribis:
Toggle quote (5 lines)> Attached is a patch that I think improves the guix user experience on a> foreign distro. It creates a guix.sh init profile at /etc/profile.d (in the> same vein as flatpak with it's /etc/profile.d/flatpak.sh). I have been> using the init file on few of my friends computers with no regressions.
That’s a great idea! Do you know how common the /etc/profile.d/*.shconvention is?
Toggle quote (6 lines)> I have tried my best to emulate the commit-logs as seen from `git log> etc/guix-install.sh`. Please do let me know if I am doing anything wrong.> This is my first real contribution to a GNU project, ever. I am still a> n00b, and only have had experiences with GitHub based PRs so far, and still> have a lot to learn. Please forgive my klutzes.
You did very well, no worries! (And it’s normal to need some time todiscover a project’s conventions when one joins it.)
Toggle quote (18 lines)> From 527d82c66a1e80779f75a16cfdd65634d55f32c1 Mon Sep 17 00:00:00 2001> From: Prafulla Giri <pratheblackdiamond@gmail.com>> Date: Sat, 28 Dec 2019 12:48:52 +0545> Subject: [PATCH] guix-install.sh: Create an init profile during installation>> Create an init profile (/etc/profile.d/guix.sh) during installation for> better integration with foreign distros. This file, read by login-shells> sets a few environment variables (PATH, GUIX_PROFILE, GUIX_LOCALE, along> with XDG_DATA_DIRS) and makes guix-installed packages readily available> for the users. Other environment variables, as listed by `guix package> --search-paths=prefix`, are also exported.>> Checks are in place to prevent the init profile from needlessly polluting> the user's environment.>> * etc/guix-install.sh (sys_create_init_profile): New function to create> /etc/profile.d/guix.sh init profile.
Applied, thanks!
Ludo’.
L
L
Ludovic Courtès wrote on 17 Jan 2020 17:29
control message for bug #39049
(address . control@debbugs.gnu.org)
877e1q11y5.fsf@gnu.org
tags 39049 fixedclose 39049 quit
P
P
Prafulla Giri wrote on 19 Jan 2020 17:54
Re: [bug#39049] guix-install.sh: Create an init profile for better out-of-the-box experience on foreign distros
(name . Ludovic Courtès)(address . ludo@gnu.org)
CAFw+=j1GvNd0Mi1q5cB9W11gsgZ42HTMD=r_Y=_ZW7wYThfA_Q@mail.gmail.com
Wow. Mr. Courtes, it is an honour, sir. Thank you very much.
/etc/profile.d/*.sh seems to be the norm these days. All the debian-baseddistros that I have used seem to have it (Mint, Elementary, Ubuntu, etc.)and even Alpine Linux's docker containers support them.
I didn't really think this patch will get merged in one go. I did findanother thing that I could add to this patch the other day but had notgotten around to updating this. It is regarding the infopath: setting it tocontain _GUIX_PROFILE/share/info seems to be a good default to have, esp.because it isn't exported by `guix package --search-paths`. I ran into thisissue just the other day, myself. I wish I had made haste to send in anupdate.
Should I send in a patch, sir? And do I send it in this thread or should Ido it in another one, please?


On Fri, Jan 17, 2020 at 10:14 PM Ludovic Courtès <ludo@gnu.org> wrote:
Toggle quote (46 lines)> Hello Prafulla,>> Prafulla Giri <pratheblackdiamond@gmail.com> skribis:>> > Attached is a patch that I think improves the guix user experience on a> > foreign distro. It creates a guix.sh init profile at /etc/profile.d (in> the> > same vein as flatpak with it's /etc/profile.d/flatpak.sh). I have been> > using the init file on few of my friends computers with no regressions.>> That’s a great idea! Do you know how common the /etc/profile.d/*.sh> convention is?>> > I have tried my best to emulate the commit-logs as seen from `git log> > etc/guix-install.sh`. Please do let me know if I am doing anything wrong.> > This is my first real contribution to a GNU project, ever. I am still a> > n00b, and only have had experiences with GitHub based PRs so far, and> still> > have a lot to learn. Please forgive my klutzes.>> You did very well, no worries! (And it’s normal to need some time to> discover a project’s conventions when one joins it.)>> > From 527d82c66a1e80779f75a16cfdd65634d55f32c1 Mon Sep 17 00:00:00 2001> > From: Prafulla Giri <pratheblackdiamond@gmail.com>> > Date: Sat, 28 Dec 2019 12:48:52 +0545> > Subject: [PATCH] guix-install.sh: Create an init profile during> installation> >> > Create an init profile (/etc/profile.d/guix.sh) during installation for> > better integration with foreign distros. This file, read by login-shells> > sets a few environment variables (PATH, GUIX_PROFILE, GUIX_LOCALE, along> > with XDG_DATA_DIRS) and makes guix-installed packages readily available> > for the users. Other environment variables, as listed by `guix package> > --search-paths=prefix`, are also exported.> >> > Checks are in place to prevent the init profile from needlessly polluting> > the user's environment.> >> > * etc/guix-install.sh (sys_create_init_profile): New function to create> > /etc/profile.d/guix.sh init profile.>> Applied, thanks!>> Ludo’.>
Attachment: file
L
L
Ludovic Courtès wrote on 20 Jan 2020 09:38
(name . Prafulla Giri)(address . pratheblackdiamond@gmail.com)(address . 39049@debbugs.gnu.org)
874kwqjzef.fsf@gnu.org
Hello,
Prafulla Giri <pratheblackdiamond@gmail.com> skribis:
Toggle quote (4 lines)> /etc/profile.d/*.sh seems to be the norm these days. All the debian-based> distros that I have used seem to have it (Mint, Elementary, Ubuntu, etc.)> and even Alpine Linux's docker containers support them.
OK, great.
Toggle quote (8 lines)> I didn't really think this patch will get merged in one go. I did find> another thing that I could add to this patch the other day but had not> gotten around to updating this. It is regarding the infopath: setting it to> contain _GUIX_PROFILE/share/info seems to be a good default to have, esp.> because it isn't exported by `guix package --search-paths`. I ran into this> issue just the other day, myself. I wish I had made haste to send in an> update.
I agree that it’d be nice!
Toggle quote (3 lines)> Should I send in a patch, sir? And do I send it in this thread or should I> do it in another one, please?
Could you send another patch to guix-patches@gnu.org?
Thank you,Ludo’.
?
Your comment

This issue is archived.

To comment on this conversation send email to 39049@debbugs.gnu.org