Ludovic Courtès (2016-09-19 23:08 +0900) wrote: > Alex Kost <alez...@gmail.com> skribis: > >> Ludovic Courtès (2016-09-14 16:58 +0200) wrote: [...] >>> However, we failed to build consensus around the approach of this patch, >>> so we did not apply it. If you have ideas, please email >>> 20...@debbugs.gnu.org. :-) >> >> I think I was the one who prevents the consensus. To make it clear, I'm >> for the suggested solution, but only *after* giving a user a freedom to >> avoid loading such a heavy command as "guix package --search-paths". On >> a "usual" GNU/Linux distro a user can edit /etc/profile, but on GuixSD >> it is not possible currently. That's why I think there should be >> provided a possibility to override /etc/profile at first. > > Indeed, thanks for the reminder! > > In fact, we have this through ‘etc-service-type’, except that currently > /etc/profile is systematically added. > > So an idea that comes to mind is to allow ‘etc-service-type’ to be > extended with procedures that would be able to filter or otherwise > change the /etc entries (similar to what we do for PAM): > > diff --git a/gnu/services.scm b/gnu/services.scm > index 7e322c5..9397232 100644 > --- a/gnu/services.scm > +++ b/gnu/services.scm > @@ -426,9 +426,13 @@ directory." > (extensions > (list > (service-extension activation-service-type > - (lambda (files) > - (let ((etc > - (files->etc-directory files))) > + (lambda (files+procs) > + (let* ((proc (apply compose > + (filter procedure? > + > files+procs))) > + (files (filter pair? > files+procs)) > + (etc > + (files->etc-directory (proc > files)))) > #~(activate-etc #$etc)))) > (service-extension system-service-type etc-entry))) > (compose concatenate) > > > In your config, you could have something like: > > (services (cons (simple-service 'rm-/etc/profile etc-service-type > (const (lambda (files) > (assoc-delete "profile" files)))) > %base-services)) > > WDYT?
I think it would be great! I didn't realize it can be implemented this way. > In fact I think we would need to have a more generic mechanism to hook > into ‘fold-services’, but I’m not sure what it should look like. Yeah, a more generic way would be better of course, but I think this mixing of files and procedures is already good enough for now, as it provides a freedom in customizing a system that we didn't have before. Besides I will no longer object against the "search-paths" fix for the bug 20255 :-) -- Alex