From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id gFXtBfkx615OIAAA0tVLHw (envelope-from ) for ; Thu, 18 Jun 2020 09:20:57 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id +CzKAfkx616gDgAAB5/wlQ (envelope-from ) for ; Thu, 18 Jun 2020 09:20:57 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 80774940656 for ; Thu, 18 Jun 2020 09:20:56 +0000 (UTC) Received: from localhost ([::1]:35266 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jlqj9-0005w3-Dw for larch@yhetil.org; Thu, 18 Jun 2020 05:20:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46230) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jlqj1-0005vI-Jg for guix-devel@gnu.org; Thu, 18 Jun 2020 05:20:47 -0400 Received: from m42-5.mailgun.net ([69.72.42.5]:35881) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jlqiz-0001Sd-OI for guix-devel@gnu.org; Thu, 18 Jun 2020 05:20:47 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.wilsonb.com; q=dns/txt; s=krs; t=1592472045; h=Content-Type: MIME-Version: Message-Id: In-Reply-To: References: Subject: From: Cc: To: Date: Sender; bh=YGS+C71HNEaCQkebcLmMgCk7J204bWnqGt/JngZWkEk=; b=gaA5QIiSRUspiJ+gPEbpWzPWkhlCb/bq3hDyOp9xZfWlT6UJMnif01fC8G8LEove8IyHJyNm lcSa8ewOTwivR+MV5YknasA5kRReliNzKVIWk5O+jIuOWMeFk1CjcjdQ8vdN0o6fF3Oq0aEw z6z/y4tpu5CXL4NTCNZfqWOY9LFkFU6ld5dmylxC8KQQ0RnR/O4yJnu2EGLiV0lNFmraLrNy bs4Lnpxed3lMuZf2t/6MWpSbvnKmsTK9d6sDf9m3io3ochYOx6n9RZdVYrF9Ir44VCR4JAZD Hd0vY92wci5CG03xpM2UuKZrsTG8I95HH5aU5sxlKZO4vySSe2CY2A== X-Mailgun-Sending-Ip: 69.72.42.5 X-Mailgun-Sid: WyIyNWJlMSIsICJndWl4LWRldmVsQGdudS5vcmciLCAiMDg1NDdhIl0= Received: from wilsonb.com (wilsonb.com [104.199.203.42]) by smtp-out-n12.prod.us-east-1.postgun.com with SMTP id 5eeb31ec356bcc26ab6da7e5 (version=TLS1.3, cipher=TLS_AES_128_GCM_SHA256); Thu, 18 Jun 2020 09:20:44 GMT Received: from localhost (KD111239192020.au-net.ne.jp [111.239.192.20]) by wilsonb.com (Postfix) with ESMTPSA id 133AEA2B29; Thu, 18 Jun 2020 09:20:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wilsonb.com; s=201703; t=1592472041; bh=YGS+C71HNEaCQkebcLmMgCk7J204bWnqGt/JngZWkEk=; h=Date:To:Cc:From:Subject:References:In-Reply-To:From; b=6hShxHZNEn68rEef3LkwN/7QFBQlTPD+0lUGksE3J2SNjzq+6XMzLDNzk1SFKKNiF Rn9DV7HEUW5VtO32CWoLNunxmdYqSHMe1DHegNaJPPNqrREq11bUdFJHPfZaVCGlHt FUbbcBNgDcT/a5n2jYIlK6+lpURhGofH4lIknJPXzOlFsdbUKM7+CB2JZWwz23FqH/ ntVEL4toLhZueJ8KJ+mPZiv5TdD9jBJ5IeqH2mQWrTqzXC06BEIluO5IIT7+SxVdB4 K/Nd1fVbw5M/DPpVHP1Yg1o7KW+/XOPl03OOi49VfRk0b+FyQHJhyaZueCr/6ptgiw 14Sm7O4f0YyPoSwxnCDx35QBIK2vZTEB1RsURnPWokZ56A8Gs9g1ODBdZPhETFU+5K u9+8UqUtgA0AGid4nDx+Nvg6mYflGqHzjN5E1ZaMCgxmfcG5T8Ll+5nzjSbf6fKu/N Bx078peZulTlTljwSECD/IXuKbW9oF+lX8EAgbPFtgdqNwhdMUHvW/IWNxZZVhskKt v0ljaH6S/pDdj7VuZDFoxlVRS7yF8DjFETiIbT1JSpEVv/Rbq6X/QAxs/Y3iWWqw98 y9Nd4LHqjWbCF/l4SLGokCU49GxyTiMVuNF1uGtrvkTmr2Ir9Yuazs3q7XJMwmmyM9 EXU+ARJPW9TUXlzTEEkct9K8= Date: Thu, 18 Jun 2020 18:20:36 +0900 To: zimoun Cc: Ludovic =?UTF-8?Q?Court=C3=A8s?= , Pierre Neidhardt , guix-devel@gnu.org From: elaexuotee@wilsonb.com Subject: Re: how to "guix pack" a profile? References: <338KGSFKQGP1E.23382XUCMS8T3@wilsonb.com> <87v9juwvn0.fsf@gnu.org> <87d062ne8a.fsf@ambrevar.xyz> <87y2opu0ue.fsf@gnu.org> <86lfko92fj.fsf@gmail.com> <871rmfwdfp.fsf@gnu.org> <2AU8F0YU6YV9A.3KVDEJ754D654@wilsonb.com> <86sgevqg8q.fsf@gmail.com> <268B906X3RZH5.3NHG3ABUCOVPN@wilsonb.com> <861rmexgwf.fsf@gmail.com> In-Reply-To: <861rmexgwf.fsf@gmail.com> Message-Id: <35VODTGT3A8OP.2ZYCBD56EYVPN@wilsonb.com> User-Agent: mblaze/0.7 MIME-Version: 1.0 Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="----_=_094229b014ce788c6e6f4237_=_" Received-SPF: pass client-ip=69.72.42.5; envelope-from=bounce+ec9951.08547a-guix-devel=gnu.org@mg.wilsonb.com; helo=m42-5.mailgun.net X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/18 05:20:44 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list 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+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Scanner: scn0 Authentication-Results: aspmx1.migadu.com; dkim=fail (rsa verify failed) header.d=mg.wilsonb.com header.s=krs header.b=gaA5QIiS; dkim=pass header.d=wilsonb.com header.s=201703 header.b=6hShxHZN; dmarc=pass (policy=quarantine) header.from=wilsonb.com; spf=pass (aspmx1.migadu.com: domain of guix-devel-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-devel-bounces@gnu.org X-Spam-Score: -2.81 X-TUID: Z/t/Y/dF8EhQ This is a multipart message in MIME format. ------_=_094229b014ce788c6e6f4237_=_ MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_0d44bce17d9a2de166aa1bc0_=_" This is a multipart message in MIME format. ------_=_0d44bce17d9a2de166aa1bc0_=_ Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Zimoun, thank you for taking the time to closely read my long emails. > Well, if I re-read correctly the emails and proposal, they are 2 points: >=20 > 1. Easily share a profile via "guix pack" > 2. A mean via recreating "manifest.scm" files Hrm. I agree that point 1 is the immediate goal I have and what prompted me= to create this issue. However, my proposal is more general and orthogonal to p= oint 2. > From my understanding, the way to go is the declarative via manifest.scm Perhaps I am using terminology incorrectly. I completely agree that declara= tive management of a `user profile' is the way to go. But before I go any furthe= r, let me distinguish some terms: By `profile', I mean any store output named like /gnu/store/-profile.= These outputs are created by `guix package' invocations as well as `guix environment' ones. By `user profile', I mean the (non-static) contents pointed to by ~/.guix-profile. These contents get updated on `guix package' invocations (= by updating the ~/.guix-profile symlink). (Do the above two concepts have established nomenclature?) Using this terminology, we both agree than managing your `user profile' via= "manifest.scm" (and "channels.scm") is the way to go. Those two files provi= de a specification which guix *resolves* into a concrete `profile'. The imminently practical issue that you, Ludo, and Pierre seem to be workin= g on is a way of easing the transition from imperative to declarative `user prof= ile' management. In contrast, I am proposing making `profiles' first class. By this I mean a= file under /gnu/store/-profile that contains the code capable of completely and deterministically rebuilding that exact profile, and that profile *only*. Just for the sake of argument, let's call this file "recipe.scm", and let's= choose a profile, /gnu/store/123abc-profile. Then the following should be t= rue: $ guix package --manifest /gnu/store/123abc-profile/recipe.scm $ readlink -f ~/guix-profile /gnu/store/123abc-profile I.e. that `guix package' invocation would have the effect of setting the current user generation to that exact profile. Of course, if we had such a "recipe.scm" then the following would Just Work= : # Containerize a profile. $ guix pack --manifest /gnu/store/123abc-profile/recipe.scm # Share profiles with your Guix friends. $ guix environment --manifest ~/downloads/friends-awesome-profile.scm And it plays well with potential future features: # Copy whole profiles between Guix stores $ guix archive --manifest /gnu/store/123abc-profile/recipe.scm Hopefully my generalized idea is clearer now. So, what do you say? Are "first class profiles" a coherent and interesting concept? What about practicality? ------_=_0d44bce17d9a2de166aa1bc0_=_-- ------_=_094229b014ce788c6e6f4237_=_ Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iI0EABYIADUWIQQ7FdZn/PDWvxE6cmR2pStZ7i7CgQUCXusx4RccZWxhZXh1b3Rl ZUB3aWxzb25iLmNvbQAKCRB2pStZ7i7CgcdBAQD1cqarw8jM9rZQmtlcx6sb5oQZ SJL94Io6HnEpkquAMgD+NGJKkJinmUouoWOsT0v/NDxA1XH072B3GLpcasWzQgE= =tpH8 -----END PGP SIGNATURE----- ------_=_094229b014ce788c6e6f4237_=_--