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 qOV9JpqW3l9SCAAA0tVLHw (envelope-from ) for ; Sun, 20 Dec 2020 00:11:06 +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 IJpLIpqW3l82BgAAB5/wlQ (envelope-from ) for ; Sun, 20 Dec 2020 00:11:06 +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 F173B940820 for ; Sun, 20 Dec 2020 00:11:05 +0000 (UTC) Received: from localhost ([::1]:34388 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kqmJT-0003Ns-Oq for larch@yhetil.org; Sat, 19 Dec 2020 19:11:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55784) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kqmJI-0003Nj-Ov for help-guix@gnu.org; Sat, 19 Dec 2020 19:10:53 -0500 Received: from mout01.posteo.de ([185.67.36.65]:42111) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kqmJF-0004Sj-Md for help-guix@gnu.org; Sat, 19 Dec 2020 19:10:52 -0500 Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id AE96F16005C for ; Sun, 20 Dec 2020 01:10:45 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1608423045; bh=XuJrK1lM5LRqXslYV39V5l+Wc9byoHu0n66B0tswLIE=; h=From:To:Subject:Date:From; b=Muep02txFqN3MyOpGFULyM5V9R26d8SzbBz5eZenpGNpQ0U81mahywpEZjZdpPWMd Tf4cW9yID0a0npioy3tcCYlnNfNJlqtk28BoMt0Q02z9g3zyh5V5j/YkTzuZdcmNKK Bh+XQFRErUeLlzkB6t90bRIaltsDWZr13Q64zzELeQJXPvsH+/w/EF5uFwpRJR6PQR WluplnW9/JHd9Nx3QZh4/2ElEsEiV/hbbufAbBxIrRQHdi3iWYTJt+IfiX+IFGeZ/U NvJkFHcPoKEZBz2AO7PmvMK4c3x1qYiyLSoL59JyNIYEmj+9XzaNWm0AvLuiExCw3U 3yAhetLMqvAmg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Cz30N4l6vz6tmD; Sun, 20 Dec 2020 01:10:44 +0100 (CET) From: Fredrik Salomonsson To: Ricardo Wurmus , help-guix@gnu.org Subject: Re: Emacs use-package: Guix backend? In-Reply-To: <87h7oim8ro.fsf@elephly.net> References: <87h7oim8ro.fsf@elephly.net> Date: Sat, 19 Dec 2020 16:10:42 -0800 Message-ID: <87k0tdibgd.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=185.67.36.65; envelope-from=plattfot@posteo.net; helo=mout01.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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_MED=-2.3, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-guix@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: "Help-Guix" X-Migadu-Flow: FLOW_IN X-Migadu-Spam-Score: -0.52 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=Muep02tx; dmarc=pass (policy=none) header.from=posteo.net; spf=pass (aspmx1.migadu.com: domain of help-guix-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=help-guix-bounces@gnu.org X-Migadu-Queue-Id: F173B940820 X-Spam-Score: -0.52 X-Migadu-Scanner: scn0.migadu.com X-TUID: 4hWpkfffOuHj Hi Ricardo, Ricardo Wurmus writes: > I recently moved all my Emacs packages to a separate profile, which is > controlled by a manifest that=E2=80=99s generated from my init.org config= uration > file. I like this, because I can separately upgrade packages from my > main profile and keep my Emacs configuration self-contained. > > What still annoys me, though, is that package installation is separate > from configuration. I don=E2=80=99t really want to be forced to update t= he > manifest at the top of my init.org before I can configure the package > somewhere at the bottom of the init.org. > > The =E2=80=9Cuse-package=E2=80=9D macro was designed to allow for both in= stallation and > configuration in the same place. By default it uses package.el to > install packages when they aren=E2=80=99t available yet. I=E2=80=99d lik= e to use > =E2=80=9Cuse-package=E2=80=9D, but I=E2=80=99d like it to install package= s with Guix and also > install to a separate Guix profile, preferably via a manifest. > > Package managers are supposed to override =E2=80=9Cuse-package-ensure-fun= ction=E2=80=9D > and/or =E2=80=9Cuse-package-pre-ensure-function=E2=80=9D to use something= other than > package.el. > > Before I embark on this journey, do any of you have travel reports to > share? My 2 cents. I got multiple profiles; one for emacs, nyxt, git and guile for example. I wrote a small bash script to make it easy for me to upgrade all of them or just a subset. What I like about this is that upgrading emacs and all of its packages are the same as upgrading any of the other profiles. I.e. I don't have to remember to run `list-packages`=C2=A0->=C2=A0`U`=C2=A0->=C2=A0`x` to update my emacs packag= es anymore. Plus I get the bonus of anything goes wrong I can just rollback the emacs profile. My emacs manifest is completely decoupled from my configuration. There are potential of them becoming out of sync. But in practice I haven't notice anything of that. I haven't found it annoying (yet) to update my emacs manifest before adding the configuration. Mostly because my package configuration has been quite stable. It's just recently I've been starting testing some new packages (after seeing all the cool stuff from the emacsconf). > Do you think this is worth doing? Yes, would be great to have use-package directly feed the manifest and have some tighter coupling between the configuration and guix. There are some speed bumps that I can see, one being for example emacs-flymake-shellcheck does not give you shellcheck so in my manifest I list both emacs-flymake-shellcheck and shellcheck for that to work. Maybe keyword-extension[0] can handle cases like these? I.e. you have a keyword where you can specify external dependencies. Something like: (use-package flymake-shellcheck :guix-install '("shellcheck")) [0] https://github.com/jwiegley/use-package/tree/master#keyword-extensions Also, at least for me, I would still like to be able to upgrade/rollback the emacs profile together with the rest of guix. Instead of that being yet another step to update your whole system. > If so, where could we add this feature so that all Guix users benefit > from it? Emacs-Guix? That is a good question :). Emacs-Guix seems like a good fit to me as it already has the logic to talk to guix from emacs. --=20 s/Fred[re]+i[ck]+/Fredrik/g