From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id 6EstNbIkjWJUDwAAbAwnHQ (envelope-from ) for ; Tue, 24 May 2022 20:32:18 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id YG8PNbIkjWK6bQAA9RJhRA (envelope-from ) for ; Tue, 24 May 2022 20:32:18 +0200 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 5A7D5CC04 for ; Tue, 24 May 2022 20:32:18 +0200 (CEST) Received: from localhost ([::1]:53288 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ntZKL-0007Vn-86 for larch@yhetil.org; Tue, 24 May 2022 14:32:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55262) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ntZJU-0007Ui-Mq for guix-devel@gnu.org; Tue, 24 May 2022 14:31:24 -0400 Received: from mail-ej1-x644.google.com ([2a00:1450:4864:20::644]:43779) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ntZJS-0000fz-DM for guix-devel@gnu.org; Tue, 24 May 2022 14:31:24 -0400 Received: by mail-ej1-x644.google.com with SMTP id m20so37057304ejj.10 for ; Tue, 24 May 2022 11:31:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:subject:from:to:date:in-reply-to:references:user-agent :mime-version:content-transfer-encoding; bh=tU1tqiwz0rZ2p0zy30+twf/qeEKZOQEwNBcxnUtYJ1Y=; b=Q4Fjx3ZVFkUMn15pbHxorVObEX7C06TK2mNy6xrk9xBT+WPqg1JAnv/IuDItIGfxLN aLFTq6RJGrfB/CMmGaljXqYQNCXn/bCRyI5odi4bx4mXbYIN2//UvimtwAiOfMqMrKCI W/vnRs7BIMuikGl68bBsNcHombpl4/Fc+3M7hOF6OM1QeOqGZr25yIfioaMcrMAZDdjs Ak1GGbcc06xB73WfruSu9gj2pJI12objjX2zgI3DROEQP5glJc/rL/1GTIx5nYH0kTeo dAlfVJrKP/39CrxAX+c2OYOV2kucBmT6rtxTfpePmFoXT/vGxJgSzlubZK+j6RC3rYoB i8Wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=tU1tqiwz0rZ2p0zy30+twf/qeEKZOQEwNBcxnUtYJ1Y=; b=M91wQS7v0c5OB3MNh+hGSOLTINn7FFYYlOhCG60CmrkvAiqUPeossJfFH3W94BprlN yU35AcfP/UbQ8OtMJ/1UMsxlBBNTWIBmZn4qdgqJz6QhKtZabhOTRU7LZ6kh+CnbRp+d An2Ru3bpbE0uAoBTyZPQIFg3jbqBzHjYCVM6YH1zbdDRdBX3P18b8nV7L/P1nk+L8K3v 5pTFemjnWvUxzQF/t9lHpa0U3E7Un3wFX7vZdGHSsvPxnjNDG5wcFMbTsLlud1PbCaat Nk2T+85RFGVbiLUENbF6fR/InCQdtQgnSDeOmYy+/QYNc4dvIwKmuzyYmXgrqrdao2dM LMow== X-Gm-Message-State: AOAM530j3sTI3m4ntwKaNaLXmq3CXEVqZBgrPcNKH/U1QsrneRLG2xm5 XI9v/KyF4qxCk2ze5QkPMvw= X-Google-Smtp-Source: ABdhPJzabgRSMcijUW0KAYkQ+cdHyIVvo6bw9dbZPjm8he2Hl21yur/xWGUyF02zQlGqjxGhXsX1Jg== X-Received: by 2002:a17:907:6d9e:b0:6fe:ffd4:dd70 with SMTP id sb30-20020a1709076d9e00b006feffd4dd70mr5349839ejc.115.1653417079705; Tue, 24 May 2022 11:31:19 -0700 (PDT) Received: from nijino.fritz.box (85-127-52-93.dsl.dynamic.surfer.at. [85.127.52.93]) by smtp.gmail.com with ESMTPSA id 10-20020a170906024a00b006f3ef214e5asm7504604ejl.192.2022.05.24.11.31.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 May 2022 11:31:19 -0700 (PDT) Message-ID: <31aad8f29ff43cc27432936227aa7c8edff76265.camel@gmail.com> Subject: Re: Multiple profiles with Guix Home From: Liliana Marie Prikler To: Andrew Tropin , guix-devel@gnu.org Date: Tue, 24 May 2022 20:31:18 +0200 In-Reply-To: <87wnebp2kl.fsf@trop.in> References: <87ilpwpf1b.fsf@trop.in> <7e70064d679274160d62fdc86e7e25879bec7a79.camel@gmail.com> <87wnebp2kl.fsf@trop.in> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.42.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2a00:1450:4864:20::644; envelope-from=liliana.prikler@gmail.com; helo=mail-ej1-x644.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 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-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1653417138; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=tU1tqiwz0rZ2p0zy30+twf/qeEKZOQEwNBcxnUtYJ1Y=; b=eGv0DBecmyG18zvQ16sCKiNqBl5w7ExNApBKWjOlEKFqAfLE46YjO8rvzRyrCpwgpXDrFI ayH1GeLIGjPbnvmkFdKRRxOP2ARBddwnsYV4ok7VR51ZolZ5jYvh9SvxKyGV5AHP8H+yy5 VREiPSmQ5yHodAVElQTzQ1UJykm/sDeGymwC2yTyLK+y55LX2jmlrABgJNWRl1t8seJLf3 UFGE4+AbuE/lmBLsPnKXnTkLwCa7HH9fJD9U6IrMsbrHQPgOnk+RNqfHZHz8VSEMxpa/l8 raVygMGBAZRUQG4tl0ODrtyntyhXch4rFAeGitFd9gmQbynb6ym2PAkC9b/BPQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1653417138; a=rsa-sha256; cv=none; b=fMrEagTbdSVPOmHtliU/Ob69yTj+rbYo4U+fbDgGhWNErcmk/WIlir8iX5IRWXK6WIPSM7 g5kADHExkp8RRJjsbi6nxGumDIzGHvE9iSnBbbmMBsiACP1wzntfhTdhRlxR1zXF5mKOrr Q2AGpAqPNHcZGVPV9WB6qKa7kJdXhJ3lGzzElDOUKlKrK9J5A8uRsYmsIBS1McWhM7m4Zy 9tIluQUrO7xx/Y0XgIPllw4d9ZflyouhLsGVD84igLGRdkzNELvH7NqV4s1KvbKS1Iicnx DM9XRuW+QigRa7XS252zdQ7fKHiFW41OZe+rOZ+MyPUphmAMqos6jpnOzyEKTw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Q4Fjx3ZV; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -5.34 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Q4Fjx3ZV; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 5A7D5CC04 X-Spam-Score: -5.34 X-Migadu-Scanner: scn0.migadu.com X-TUID: nJda06IGumIo Hi, Am Dienstag, dem 24.05.2022 um 14:55 +0300 schrieb Andrew Tropin: > On 2022-05-23 19:05, Liliana Marie Prikler wrote: > > [...] > > I don't think I agree with this choice.  To satisfy both my own use > > case of serving profiles in different locations from another and > > another issue being raised w.r.t. configuring the location of the > > .guix-home profile, I think we should make a triple of location, > > optional short name, and manifest (which may be generated from > > packages implicitly).  WDYT? > > > > This service is intended for profiles managed by Guix Home, so every > profile MUST be a part of home-environment (~/.guix-home is a symlink > to it).  I don't see any meaningful reasons to make it possible to > customize the path inside home-environment. Why though? The decision to restrict Guix Home to dotfiles was already a bad one that has since been overturned, so I think we should carefully evaluate why "~/.guix-home" even is special. In my point of view, any path that is prefixed with the user's home ought to be fair game, as should be constructing intermediate per-user profile symlinks in /var/guix. > If you want to have profiles like ~/work/my-project/guix-profile or > ~/.guix/profiles/my-python-environment managed by Guix Home you can > implement home-external-profiles-service-type, which can extended > activation service or any other impure tricks, but I would advice > against it.  I suggest either manage a profile with > home-[additional-]-profiles or manage them externally and load with > home-profile-paths/home-profile-loader. Pardon me if I was confusing, but I meant to have one service defining the existence of ~/work/my-project/guix-profile (that being home- profiles-service-type) and another to load it (that being home-profile- loader-service-type). Admittedly, the existing way of specifying a profile that is loaded becomes more work then, so perhaps we can add some syntactic sugar to that, so that both services get extended at once. > > Considering the above, I think a rough roadmap would be: > > 1. Implementing home-profiles-service-type (to build the profiles) > > 2. Implementing home-profile-loader-service-type > > This one looks simplier and also independent from #1, so I would > recommend to start with it.  Also, it's very likely that > home-profiles-service-type will be extending > home-profile-loader-service-type I thought about it for some while, but I really don't think either is easier than the other, particularly in the way I described it, where home-profiles-service-type and home-profile-loader-service-type are orthogonal to each other. > > 3. ??? > > 4. Deprecate the existing home-profile-service-type in favor of the > > new profile service type pair and/or implement it in terms of it. > > where (1) and (2) could be done by two people/teams in parallel. > > The migration should be quite simple here. > > JFYI: The design of Guix Home is flexible, essential services can be > completely customized, even symlink-manager can be removed or > substituted with something else (for example to make a read-only home > workflow proposed by Julien Lepiller in guix-home-manager).  This is > also used in rde to substitute home-shell-profile-service-type with > alternative implementation: > https://git.sr.ht/~abcdw/rde/tree/master/item/rde/features.scm#L234 I'm not sure if I'm that fond of this design choice – it reminds me a bit about OOP horrors I was forced to learn. Anyway, I don't think it's relevant, as... > This way you can experiment with multi-profile approach even without > modifying existing code. I was planning to run guix home from checkout with $HOME in /tmp anyway for testing purposes. > > Given that the task has been simplified, I think I might start > > coding on it, but I can't promise any particular deadline.  At the > > moments both my day job and review work delay any other > > contributions towards Guix. > > > > Cheers > > I also advice to treat it as an experiment.  IMO Guix Home should be > relatively conservative, stable and simple.  Other advanced workflows > in most cases should be implemented and maintained separately and be > optionally pluggable in Guix Home by overriding essential services or > any other way.  In cases such workflows demonstrates their benifits > without compromising simplicity, they can be included. I initially planned for the new stuff to be backwards compatible by way of sanitizers. That probably still works for the design we have currently, though YMMV. Cheers