From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Customizing /etc Date: Mon, 19 Sep 2016 23:08:43 +0900 Message-ID: <87eg4g7zis.fsf_-_@gnu.org> References: <7tpoo7kk73.fsf@gmail.com> <87eg4mo7dp.fsf@gnu.org> <87twdhobnp.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:53805) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1blzFd-0000do-Ac for guix-devel@gnu.org; Mon, 19 Sep 2016 10:08:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1blzFZ-0003Bq-JY for guix-devel@gnu.org; Mon, 19 Sep 2016 10:08:52 -0400 In-Reply-To: <87twdhobnp.fsf@gmail.com> (Alex Kost's message of "Thu, 15 Sep 2016 10:38:34 +0300") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Alex Kost Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Alex Kost skribis: > Ludovic Court=C3=A8s (2016-09-14 16:58 +0200) wrote: > >> Hello, >> >> csanchezdll@gmail.com (Carlos S=C3=A1nchez de La Lama) skribis: >> >>> I have an interesting case here. I have guile installed in my system >>> profile, so that >>> >>> /var/guix/profiles/system/profile/share/aclocal/guile.m4 >>> >>> is there. However, autoconf is installed in my *user* profile, so >>> ACLOCAL_PATH is augmented in ~/.guix-profile/etc/profile to include >>> >>> ~/.guix-profile/share/aclocal >>> >>> But not the system-profile aclocal directory, which would be put into >>> ACLOCAL_PATH by /var/guix/profiles/system/profile/etc/profile if >>> autoconf was installed in the systme profile as well. >>> >>> Is this the intended behaviour? I am wondering whether packages with >>> search paths should include both the user-profile directories and the >>> system-profile ones. >> >> I think you=E2=80=99re right. This was discussed at >> , leading to a patch (for GuixSD). >> >> However, we failed to build consensus around the approach of this patch, >> so we did not apply it. If you have ideas, please email >> 20255@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 =E2=80=98etc-service-type=E2=80=99, except th= at currently /etc/profile is systematically added. So an idea that comes to mind is to allow =E2=80=98etc-service-type=E2=80= =99 to be extended with procedures that would be able to filter or otherwise change the /etc entries (similar to what we do for PAM): --=-=-= Content-Type: text/x-patch Content-Disposition: inline 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) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable 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? In fact I think we would need to have a more generic mechanism to hook into =E2=80=98fold-services=E2=80=99, but I=E2=80=99m not sure what it shou= ld look like. Ludo=E2=80=99. --=-=-=--