From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id QACEGAE002AkGgAAgWs5BA (envelope-from ) for ; Wed, 23 Jun 2021 15:15:45 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id oDw8FAE002AQSgAA1q6Kng (envelope-from ) for ; Wed, 23 Jun 2021 13:15:45 +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 094661B905 for ; Wed, 23 Jun 2021 15:15:45 +0200 (CEST) Received: from localhost ([::1]:32816 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lw2jH-0003YI-H6 for larch@yhetil.org; Wed, 23 Jun 2021 09:15:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59540) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lw2ir-0003Xp-18 for guix-devel@gnu.org; Wed, 23 Jun 2021 09:15:17 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:36580) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lw2ip-00060Y-Ps; Wed, 23 Jun 2021 09:15:15 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=33462 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lw2ip-0001ge-IM; Wed, 23 Jun 2021 09:15:15 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Andrew Tropin , Xinglu Chen Subject: Early feedback on Guix Home X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 5 Messidor an 229 de la =?utf-8?Q?R=C3=A9volution?= X-PGP-Key-ID: 0x090B11993D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-pc-linux-gnu Date: Wed, 23 Jun 2021 15:15:12 +0200 Message-ID: <87tuloyb6n.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable 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: , Cc: guix-devel Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1624454145; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=i8NE68T8/kRUPz/W7zP2nY6booVRlZ3R8YZKr0qJLyA=; b=g6sfy6dZ7x5KrvdiiyMP3guO+a2vUXP0DpA/BBR1lpYUhx19Aa89H+gQ8QEjsT35PenpaQ Qqmd+NLsNRClcGP3KJ6gBnV5w1HgXESTfPSCSkkzSagVOLTQgXUn4ejrOQPaTe2Rx8V5qw b8qvwolTcoI4yMZZxqN5iB5egizmBYAc1MbSc38chp0XdgMxcKWa1I57/PVXjcvRSvztsd FEz+F5PL8e5N5ujIeCc6xeaEAQidG/ly2O8KrPctlq2Qs7bszhUlMKX0wzYAiTa4vy6nPa Q/FgkU4xjx/XTGAFk7dAetTZkw6mrg/zLGGAJ3dSDcTM2W6jpiM2PXho+7sZ+g== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1624454145; a=rsa-sha256; cv=none; b=n1HUXiGO8hVlg2K6Y6hNHoaRX5o+BPprhm2eZas5Xtep7W7qFvNjBv21lkTTvr9bnSygRI XWk+/0FmKJX2OEG1PmDsKkOF3W50XXXMtXntCSaTdZe4DQvLEG7ZtrT+tNjf0WuuDtI/fD 4dADifJ9zoK66DAj2iq2J6T8S5cJO/XEtZkpIg1XnmQyPK9T/e6YjHcleMkLTtjU4v0pIm 7yvVzYmo/PuP0mPAX1am5WjvB26kV5WartRqLFTWKgut8CNavV08PTs+nGR+Ra1GHIOv0Z tQsgiQkzYY7FZsOsAQQm3GRrSy5cNzFgUOhRIrESXQ8HGWs0IDRFAYRP/qu4ug== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=pass (policy=none) header.from=gnu.org; 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-Migadu-Spam-Score: -2.93 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=pass (policy=none) header.from=gnu.org; 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-Migadu-Queue-Id: 094661B905 X-Spam-Score: -2.93 X-Migadu-Scanner: scn0.migadu.com X-TUID: ypGty3t446rA Hello! As discussed on IRC a few days ago, I finally gave Guix Home a try and I like it! I thought I=E2=80=99d share my first impressions so we can try and address = them in the process of getting it merged. First, I think one of the main reasons why it took me so long to try it out is that I was afraid of what would happen at =E2=80=9Cactivation time= =E2=80=9D (upon reconfigure). Were my dot files going to be deleted? If so, which ones exactly should I back up? That led me to look more closely at the code to better understand what was going to happen. I found =E2=80=98symlink-manager.scm=E2=80=99, which is what I was looking for, but= that code is fairly complex. Anyway, I backed up a bunch of files :-) and eventually gave it a try, just to notice that =E2=80=98guix home reconfigure=E2=80=99 was very carefu= l about creating backups of any files it was going to overwrite, and it was also explicitly saying what it=E2=80=99s doing. Perfect. I see two possible improvements: 1. Make the manual very upfront about that: don=E2=80=99t be afraid, conf= ig files are backed up at that location, etc. 2. Review =E2=80=98symlink-manager.scm=E2=80=99 and work on simplifying i= t to make it easier to understand what=E2=80=99s going on. Second, the other thing that stopped me from getting started is the initial config. How could I move from all my undisciplined dotfiles to the single explicit config? Eventually, I found that starting with nothing but packages, =E2=80=98home-bash-service-type=E2=80=99, and =E2=80=98home-ssh-service-type=E2=80=99 was the most reasonable option to b= egin with. Unfortunately, even =E2=80=98home-ssh-service-type=E2=80=99 was difficult t= o handle: I have a long =E2=80=98.ssh/config=E2=80=99 file and I wasn=E2=80=99t going t= o turn that into =E2=80=98ssh-host=E2=80=99 lines by hand. Possible actions: 1. Provide a =E2=80=98guix home init=E2=80=99 command (or similar) that c= reates an initial Home config based on existing config. 2. In some cases, such as OpenSSH, provide converters from the native format to its Scheme equivalent (maybe?). 3. For each service, provide an escape hatch: a way for users to provide a raw config file. We do that for all or most of the Guix System services, and it helps a lot when people are starting from an existing config. In terms of API, I noticed that in places such as =E2=80=98home-bash-configuration=E2=80=99, config snippets are represented = as a list of strings (internally passed to =E2=80=98mixed-text-file=E2=80=99). That for= ces users to mix different languages in their .scm file=E2=80=94e.g., half of my Home co= nfig is .bash{rc,_profile} snippets embedded in Scheme strings. That=E2=80=99s inconvenient. Possible action: 1. Change config records to accept file-like objects instead of strings. That way, users can choose to have snippets inlined (in a =E2=80=98plain-file=E2=80=99 object) or separate (via =E2=80=98local-f= ile=E2=80=99). See for example how =E2=80=98tor-configuration->torrc=E2=80=99 does it. That=E2=80=99s it. I hope it makes sense to you! I encourage everyone to give it a spin, fearlessly! What I did was (roughly): git clone https://git.sr.ht/~abcdw/rde guix git authenticate \ "257cebd587b66e4d865b3537a9a88cccd7107c95" \ "2841 9AC6 5038 7440 C7E9 2FFA 2208 D209 58C1 DEB0" \ -k origin/keyring ./pre-inst-env guix home reconfigure /path/to/home-config.scm Thanks, Ludo=E2=80=99.