From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:c151::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id 8H4jOz60SWA0GAAA0tVLHw (envelope-from ) for ; Thu, 11 Mar 2021 06:10:06 +0000 Received: from aspmx2.migadu.com ([2001:41d0:2:c151::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id 8GvWNj60SWDzIgAAbx9fmQ (envelope-from ) for ; Thu, 11 Mar 2021 06:10: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 aspmx2.migadu.com (Postfix) with ESMTPS id 5CA9FBD9C for ; Thu, 11 Mar 2021 07:10:06 +0100 (CET) Received: from localhost ([::1]:60334 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKEWL-0006EX-7y for larch@yhetil.org; Thu, 11 Mar 2021 01:10:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37926) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKEW7-0006E7-C0 for guix-devel@gnu.org; Thu, 11 Mar 2021 01:09:51 -0500 Received: from mail-lj1-x236.google.com ([2a00:1450:4864:20::236]:43953) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKEW5-0006zc-8v for guix-devel@gnu.org; Thu, 11 Mar 2021 01:09:51 -0500 Received: by mail-lj1-x236.google.com with SMTP id y1so643397ljm.10 for ; Wed, 10 Mar 2021 22:09:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=trop-in.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:mime-version; bh=S2gnG2c4aZbsEez7ftzSJhg2OfY9VrI9jTWhoACUQk8=; b=hQxwY01c01TZ6UH+wAaXXQq8UNpHbkEOnqkBJT1i/Yr6l8b07MVAIoFN9zeheRsz/v 43PLTNQCDhNeLZugJ74lywwPGCeRWrAtaNHnJjWdrTwK4mBqQdTFywe56hY9FKN0g4+U zZPR5LqVjMCJ8fquthbDH22kTLmYr2U6I1GLb3wy2P3Cqm69M11wfp8AoXbGzVswq8Gz v+1bFhyotYtibaroy9NgQymJbb7oGQ+WQEy5/cpz1YUpNU4rjUIl8NOIdF54/x0j8cjn mMuzwJMZOZWieeBMmkRDvEGosO6QDKDkOT5iteDMlrvMcmgWQit/HlQ2PzBB1NN+QC9w 1wPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=S2gnG2c4aZbsEez7ftzSJhg2OfY9VrI9jTWhoACUQk8=; b=YiSlh7Vu2CvMuKq6v4ti630F2oswPi7444GdOiv6hAaZa4fRRn8YKaDx4DZCH/0L+Z hrNwxt4OP9+aqGsofY159yiqwbXrdnpGPf4x55T/mRnmQEyOZQONTWTc2XJ51sEV47rW fKBefr+xZ5w5g+e49mRJxveWpkR51jgksHL2fyX9xNc/meAlfeWSp/WHr8wViillHXD+ aigaLL6IaGXbLAQQ0sWBf/AyZyPQGLFzWpjPxt3nfrRTQCR+2Myn+jmQpG208Al+0ZQR aVjXL7guff/uVlxVc8BB9YX5cT8EfpA4MzWgC3ijn+4PBEJ8whk9CL/qTFMjmOhxO97k 8VEA== X-Gm-Message-State: AOAM531DiJXm868jLPMhfZXdm1jet4eok8XVMH3WSRvwlHTA1sRItX8x PZnbeg5ZVI9b4E55843TmIDd0WLSiZ9YNw== X-Google-Smtp-Source: ABdhPJzUusFDzFBqsNVCObRMp3is86G3+HfDjjn4OyVF+1RcBXR7qTM0oD+JuPVwUUXlRoLBYqG8zg== X-Received: by 2002:a05:651c:2125:: with SMTP id a37mr4004559ljq.19.1615442985583; Wed, 10 Mar 2021 22:09:45 -0800 (PST) Received: from ixy (109-252-117-255.nat.spd-mgts.ru. [109.252.117.255]) by smtp.gmail.com with ESMTPSA id y3sm515087lfg.6.2021.03.10.22.09.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Mar 2021 22:09:45 -0800 (PST) From: Andrew Tropin To: guix-devel@gnu.org Subject: guix home Date: Thu, 11 Mar 2021 09:09:43 +0300 Message-ID: <878s6u2pco.fsf@trop.in> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: none client-ip=2a00:1450:4864:20::236; envelope-from=andrew@trop.in; helo=mail-lj1-x236.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no 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-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1615443006; 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:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=S2gnG2c4aZbsEez7ftzSJhg2OfY9VrI9jTWhoACUQk8=; b=QKcl2OEE1wfTtypsGA32ix0960fN4e5//pZjm6pYV2FQprdI8aOVLfw+XA3wiVWRuQjDNY 98AL2NpgbQQP1+sHxHKBLMoNAyiscuO0XjTWbTR5HEWI1gBjQUWgsxhHP+x+XIn5AL1gaz JR3mGh9+Sbctr1axGdxApgMpw7+ky22l3Jq+JuW5xz1Xk+k/Bs5Zq0gzvVXT+qJet75F7V xw+0xPKF58xQwykaJqT2BnH368vivru8bI4vEiL0nlmvuMjmjDHXKBUJR43f8444g9VmJT b6faaX6sy5AnLfIgyBTezxucdKBvzQ8wkjlOHeZr+zYiv5eMtij1ZsYE69PETA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1615443006; a=rsa-sha256; cv=none; b=DLZfeMr6lEU9ZKAYqiCMNcSDjlnQBuLm2FwHbsXNIFW/pXjyX9Bq9XRD8upy1oU+e4mUQ2 bV9xadpKCjQUSZ2giqmWnfTtea+e6QWgc282rKfwscV00msbvLmKyDTo9MxwQU311nFqKq 07OTfpyw2IXa3xsHYDVtKP80MyIPvh2ywSuDQND6NXdsilkxjCJLZ1uybNHADssv1U7iNg EaY0/kfgR3TKdgXUJOARdWpXEZAEethrLJ701pZGpaaJDsMfKuuodfb/Gf3TCIQG86H2mN kMUhwCvYqBduyrnvD1s4qDwhmNAT/bstJ3bDz/o5pCUnORFgCnnTQ2hM1/wI0g== ARC-Authentication-Results: i=1; aspmx2.migadu.com; dkim=pass header.d=trop-in.20150623.gappssmtp.com header.s=20150623 header.b=hQxwY01c; dmarc=none; spf=pass (aspmx2.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.59 Authentication-Results: aspmx2.migadu.com; dkim=pass header.d=trop-in.20150623.gappssmtp.com header.s=20150623 header.b=hQxwY01c; dmarc=none; spf=pass (aspmx2.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: 5CA9FBD9C X-Spam-Score: -2.59 X-Migadu-Scanner: scn0.migadu.com X-TUID: Bbztn6s5tf22 Hi guix! There is an implementation of `guix home` subcommand, which behaves similar to `guix system`, allowing declaratively manage applications and their configurations, but for a particular user, not the whole OS: https://git.sr.ht/~abcdw/rde/tree/master/item/gnu * Overview It possible to define the desired environment with home-environment record, which contains a list of home-services and few other configuration options and build and install it with `guix home reconfigure`. The service extension mechanism works the same way as in operating-system and utilize fold-services from (gnu services). Current set of implemented essential services: - home-service :: return the derivation - home-profile :: manages a separate profile with packages provided by user or other services - home-environment-vars :: allows to set env vars for user's shell - home-shepherd :: manages user's shepherd, can be extended by other services - home-run-on-first-login :: launches shepherd and some other one-time actions - home-run-on-reconfigure :: update shepherd configuration and update symlinks from ~/ and ~/.config to guix-home-environment/files - home-symlink-manager :: extends on-reconfigure with a update-symlinks script For now I personally manage just a few applications on my system and it seems that everything works as expected, but I plan to migrate all the "dotfiles" to it in nearest future. AFAIK, some people succesfully use it on other GNU/Linux distributions. * Alternative solutions In contrast to guix-home-manager, `guix home` doesn't introduce any too innovative approaches (those ideas are cool, but in some use cases are too radical), `guix home` uses the same extension mechanism [fn:1] as guix system services and doesn't require to make HOME read-only. Thus, it's possible to start using `guix home` gradually, along with other tools and workflows (stow, guix package, chezmoi, yadm, etc). Talking about Nix's home-manager: it's a nice software, but maintained separately from nix package manager and kinda disconnected from Nix itself, which introduce a lot of duplications between NixOS modules and home-manager modules, requires additional installation steps and overall makes it harder to use for not very experienced nix users. Probably, we can learn from it and do better here. * Future steps `guix home` still under active development, but already complete enough for exloration and early adoption. There is no any documentation yet, because things were changing often and probably will change one more time during comming cleanup, however there were few video streams, explaining internals of `guix home`: mpv https://youtu.be/t3zRzQnarUI mpv https://youtu.be/4lJaVzxO_Bs mpv https://youtu.be/ZRQtCvo8MoM In addition to documentation it will be necessary to implement a lot of home-services for different tools, add rollback, shepherd-graph, extension-graph and other actions, but before doing it I would like to spend some time polishing essential services and decide on upstreaming the tool to guix itself. The question is: do we want and need at all `guix home` to be a part of the guix? As for me, the tool seems like a natural addition to guix's declarative configuration management approach and covers the missing piece of user space software management and as I mentioned early upstreaming will allow to make it better integrated with the rest of the guix and easier to use for newcommers and casual users, but my perception is obviously biased. Dear maintainers and users, what do you think about making `guix home` a part of guix? * Footnotes [fn:1] https://lists.sr.ht/~abcdw/rde-devel/%3C87sg56g97i.fsf%40trop.in%3E -- Best regards, Andrew Tropin