unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: Alex Kost <alezost@gmail.com>
Cc: guix-devel@gnu.org
Subject: Re: Adding operating-system field for a custom /etc/profile.
Date: Tue, 24 Nov 2015 13:48:47 +0100	[thread overview]
Message-ID: <87wpt7d0ls.fsf@gnu.org> (raw)
In-Reply-To: <87y4doscmg.fsf_-_@gmail.com> (Alex Kost's message of "Mon, 23 Nov 2015 23:07:51 +0300")

Alex Kost <alezost@gmail.com> skribis:

> Ludovic Courtès (2015-11-23 17:31 +0300) wrote:

[...]

>>> Great!  So is it OK to send a patch for adding ‘profile-file’ field?
>>
>> Hmm, I’m not sure if we want to give direct access to /etc/profile like
>> this.
>
> Oh, no!  If there is one person (me) who wants to have a full control on
> his /etc/profile, there may be the others with the same wish.
>
>> The problem is that several things in there are here to make the system
>> work, and to to make it conform to the ‘operating-system’ declaration,
>> such as:
>>
>>
>> export LANG="en_US.utf8"
>> export TZ="Europe/Paris"
>> export TZDIR="/gnu/store/rwvf6xqgsyb8bmpi7rwk9fildnwvzrv5-tzdata-2015c/share/zoneinfo"
>>
>> # Tell 'modprobe' & co. where to look for modules.
>> export LINUX_MODULE_DIRECTORY=/run/booted-system/kernel/lib/modules
>
> Yes, that's why I suggest to add a note to the manual about a danger of
> using this field.
>
>> The risk I see with adding a raw ‘profile-file’ option is that newcomers
>> may end up getting rid of such things without really noticing, and then
>> getting a broken system.
>
> But a newcomer will learn about this option only if (s)he reads the
> manual with the warning I've mentioned.  For me, your phrase sounds
> like: «We will not provide "rm" command, because a newcomer may
> accidentally run "rm -rf ~"».  Please give me an opportunity to shoot
> myself in the foot!
>
> Besides will the system really be broken?

Yes.

> What do you mean?

I can already see the bug reports: “I specified the en_US.utf8 locale in
the declaration, but somehow I end up with the C locale”; “why doesn’t
modprobe find modules?”; “I’m stuck in the GMT timezone”, etc. etc.

And only after 5 messages will we learn that the user wanted to add
*one* line to /etc/profile, did that via the ‘profile-file’ field,
without noticing that this would wipe out all the rest of the useful
stuff from there.

> Even if /etc/profile is empty, the system will boot successfully and a
> user could login, no?

Sure, but merely booting is not sufficient.

>> What about instead giving a way to populate the top and/or bottom of
>> this file?  Controversial parts, if any, could still be turned on and
>> off by adding or removing services that add these lines?
>
> It is better than nothing, but it is not sufficient IMO.  Any part of
> /etc/profile can be controversial (you'll never know what a user would
> like to change), so I think providing an option to change this file
> completely is essential.
>
> But I agree that appending/prepending some lines may also be useful for
> those who like to keep the default /etc/profile and who just want to add
> something to it.

OK.

NixOS apparently takes in approach similar to that:

  https://github.com/NixOS/nixos/blob/master/modules/programs/bash/bash.nix

There’s a bunch of high-level options like ‘shellAliases’, ‘promptInit’,
etc. that get pasted in /etc/profile or /etc/bashrc.  In addition,
/etc/profile sources /etc/profile.local if available, and similarly for
/etc/bashrc.

‘shellInit’ in that file refers to ‘setEnvironment’, as defined here:

  https://github.com/NixOS/nixos/blob/master/modules/programs/environment.nix
  https://github.com/NixOS/nixos/blob/master/modules/config/shells-environment.nix

Interestingly, that part does like ‘guix package --search-paths’ as
suggested at <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20255#41>,
but does it in Bash and without stat’ing files.


Anyway, I think the way forward is to make /etc/profile modular in
similar fashion.  What about starting with an /etc/profile service that
can receive Bash snippets and paste them in the middle of the file,
right before:

  if [ -n "$BASH_VERSION" -a -f /etc/bashrc ]
  then
    # Load Bash-specific initialization code.
    . /etc/bashrc
  fi

Does that make sense?

I can give it a try if you want.

Thanks,
Ludo’.

  reply	other threads:[~2015-11-24 12:48 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <877ftschjt.fsf@gmail.com>
     [not found] ` <87fv8fip01.fsf@gnu.org>
     [not found]   ` <87d23j1bxk.fsf@gmail.com>
     [not found]     ` <871tjyfnl8.fsf@gnu.org>
     [not found]       ` <876199q4z1.fsf@gmail.com>
     [not found]         ` <87ioca4ojo.fsf@gnu.org>
     [not found]           ` <87lh9tvcws.fsf@gnu.org>
     [not found]             ` <87h9kguwc4.fsf@gmail.com>
     [not found]               ` <87ziy7d90z.fsf@gnu.org>
     [not found]                 ` <874mgfkxee.fsf@gmail.com>
     [not found]                   ` <87wptb5d1y.fsf@gnu.org>
     [not found]                     ` <87r3jisc76.fsf@gmail.com>
     [not found]                       ` <87lh9q1f2i.fsf@gnu.org>
     [not found]                         ` <877fl9q3gv.fsf@gmail.com>
     [not found]                           ` <87h9kdy6ty.fsf@gnu.org>
     [not found]                             ` <871tbh53rt.fsf@gmail.com>
     [not found]                               ` <87vb8sss7j.fsf@gnu.org>
2015-11-23 20:07                                 ` Adding operating-system field for a custom /etc/profile Alex Kost
2015-11-24 12:48                                   ` Ludovic Courtès [this message]
2015-11-24 19:36                                     ` Alex Kost
2015-11-24 20:30                                       ` Ludovic Courtès
2015-11-30  9:10                                         ` Alex Kost
2015-11-30 13:00                                           ` Ludovic Courtès
2015-11-24 15:22                                   ` 宋文武
2015-11-24 20:03                                     ` Alex Kost
2015-11-27 14:58                                       ` Customizing /etc Ludovic Courtès
2015-11-30  9:11                                         ` Alex Kost
2015-11-27 14:34                                     ` /etc/environment and /etc/profile Ludovic Courtès
     [not found] ` <CAJ3okZ3pg6q=Z29tfuDtdCwRrC6FYbFma_qAtAb2mVw4CTMW3A@mail.gmail.com>
     [not found]   ` <86v9cyuaev.fsf_-_@gmail.com>
     [not found]     ` <87v8gx91ad.fsf_-_@envs.net>
     [not found]       ` <87jzx9vgzj.fsf@gmail.com>
2023-05-17 14:12         ` bug#20255: 'search-paths' should respect both user and system profile 宋文武

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87wpt7d0ls.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=alezost@gmail.com \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).