From patchwork Tue Aug 31 12:47:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrew Tropin X-Patchwork-Id: 32443 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 1C63027BBE3; Tue, 31 Aug 2021 14:17:13 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,T_DKIM_INVALID, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 12A9227BBE1 for ; Tue, 31 Aug 2021 14:17:12 +0100 (BST) Received: from localhost ([::1]:55966 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mL3dX-0007NN-5R for patchwork@mira.cbaines.net; Tue, 31 Aug 2021 09:17:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38322) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mL3BK-0006cU-TW for guix-patches@gnu.org; Tue, 31 Aug 2021 08:48:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:49951) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mL3BK-0000OE-Lx for guix-patches@gnu.org; Tue, 31 Aug 2021 08:48:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mL3BK-0002uS-IK for guix-patches@gnu.org; Tue, 31 Aug 2021 08:48:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#50296] [PATCH 0/2] Add 'guix home' command. Resent-From: Andrew Tropin Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 31 Aug 2021 12:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50296 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Oleg Pykhalov Cc: 50296-done@debbugs.gnu.org Received: via spool by 50296-done@debbugs.gnu.org id=D50296.163041403810313 (code D ref 50296); Tue, 31 Aug 2021 12:48:02 +0000 Received: (at 50296-done) by debbugs.gnu.org; 31 Aug 2021 12:47:18 +0000 Received: from localhost ([127.0.0.1]:33263 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mL3Ab-0002ff-Db for submit@debbugs.gnu.org; Tue, 31 Aug 2021 08:47:18 -0400 Received: from mail-lf1-f50.google.com ([209.85.167.50]:45038) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mL3AY-0002Yw-10 for 50296-done@debbugs.gnu.org; Tue, 31 Aug 2021 08:47:16 -0400 Received: by mail-lf1-f50.google.com with SMTP id s10so13408856lfr.11 for <50296-done@debbugs.gnu.org>; Tue, 31 Aug 2021 05:47:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=trop-in.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=Cmm/VprkPXUHBIWLN1aunXlh+kj8Qo8z/SdxkqxU858=; b=rfKGbIvf+TDw4RCa0BWUgIB96MCLIJHht2S5yRwqOVKeWVgRD7JHY06Z5CTNUFmFLv Y59cSrkHfG6dTXl92bF0yrrnoqIfuEQPeHvKyr82RukCL9D/Hcc0KqEuddcJ0vGpclBX 1u6DRc4rbj7Y/ECFTsGKbjgBJ/11hz83rvOu0OKdIVklff1XaLdPzm4tat/5Vkjvw7EQ Tqq6pCapF2Zo8GftZRGMI/+Bk1CC61HCDAvy1RIYh2xkH0Kk9es0dVjLcZ2gDbxIyK/1 vw7bAIkCJpLYoMLeepLVZ8Jk93f+Vp8nErTn3xXjtgMt26u2BLCzY2DeuFu4UThv0oXS F7YQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version; bh=Cmm/VprkPXUHBIWLN1aunXlh+kj8Qo8z/SdxkqxU858=; b=gSZZOf+2wY5ZFgUwL7TBQGape8gDd1WtSuIQuILWzqsn3llkTYRNTi1c3Rzkp/s2RJ cFb79rEmNK6niNq4GXvFfZsHbq5b3Pr1di2NAPR53gBD7COmvfLYa5JB8kBfVi8PvvJ5 4GaNjEf4mazha+N5cqtvqiOf7KrohGyhqF2oumdHEH8Yh6OdYL39KHwqKRigIiPx+K2X 0W8J+Xms9SewkkO6oZT7tCjcjBBo6X5e0kB3lZ5lHsRqCOQHapIttpLai0ACLONWLxqx WGg06br+GK3SBryLnZCPM9fLs/3RWb8ZnVg2vAp7Far769eMetDgSmQrX62AqZCnphwq ZMiQ== X-Gm-Message-State: AOAM530+TmvI0EMPxg8pA8KJv9bhJfSlTF8uRXx7/mWIYAWRDQKgO4s8 Z+m4Q7MSZ9S57UtinB96vzUqJw== X-Google-Smtp-Source: ABdhPJyCH8bW2NbsSvfzECXI2W0L4cl4Ad5XFI0dqYZUWooS9obnU3MMMKENXlb31v1aIAm/90mJXQ== X-Received: by 2002:a05:6512:3d9f:: with SMTP id k31mr20842490lfv.137.1630414027876; Tue, 31 Aug 2021 05:47:07 -0700 (PDT) Received: from localhost (109-252-93-92.nat.spd-mgts.ru. [109.252.93.92]) by smtp.gmail.com with ESMTPSA id e4sm1076692lfc.141.2021.08.31.05.47.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Aug 2021 05:47:06 -0700 (PDT) From: Andrew Tropin In-Reply-To: <87sfypj0qk.fsf@trop.in> References: <874kb6j718.fsf@trop.in> <87tuj598an.fsf@gmail.com> <87sfypj0qk.fsf@trop.in> Date: Tue, 31 Aug 2021 15:47:03 +0300 Message-ID: <87eea9ixx4.fsf@trop.in> MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches On 2021-08-31 14:46, Andrew Tropin wrote: > On 2021-08-31 14:13, Oleg Pykhalov wrote: > >> Hi Andrew, >> >> Andrew Tropin writes: >> >>> Command and subbcommands allowing to manage home environment with guix. >>> >>> Andrew Tropin (2): >>> scripts: Add 'guix home'. >>> scripts: home: Add import subcommand. >>> >>> Makefile.am | 3 + >>> guix/scripts/home.scm | 512 +++++++++++++++++++++++++++++++++++ >>> guix/scripts/home/import.scm | 241 +++++++++++++++++ >>> 3 files changed, 756 insertions(+) >>> create mode 100644 guix/scripts/home.scm >>> create mode 100644 guix/scripts/home/import.scm >> >> I applied your patches and also fixed a typo in >> gnu/home-services/xdg.scm file, which I noticed during Geiser entering >> (guix scripts home) module about missing ‘home-services-utils’, which >> should be ‘home-services utils’. >> > > In rde we have home-services-utils, during recent refactoring I took > parts of it and split into home-services utils and home-services > configure modules. For some reason I missed that xdg still uses it and > I didn't get rid of this import, I'll update xdg module and send patches > for it, thank you for noticing the issue. > The functions from home-services-utils used by xdg now in home-services utils: > >> >> Pushed to wip-guix-home. >> >> Also, I tried to use guix home for the first time as documented at site >> [1], and got an error: >> --8<---------------cut here---------------start------------->8--- >> (string-append #f "/" "profile/share/fonts") >> In procedure string-append: Wrong type (expecting string): #f >> --8<---------------cut here---------------end--------------->8--- >> >> [1] https://guix-home.trop.in/Declaring-the-Home-Environment.html >> >> >> The following text in the message is only about the error. >> >> oleg@guixsd ~/src/guix-wip-guix-home$ mkdir /tmp/guix >> >> oleg@guixsd ~/src/guix-wip-guix-home$ guix pull --url=file:///home/oleg/src/guix-wip-guix-home --branch=wip-guix-home -p /tmp/guix/guix >> >> ~/.local/share/chezmoi/dotfiles/guixsd/home.scm: >> --8<---------------cut here---------------start------------->8--- >> (use-modules (gnu home) >> (gnu home-services) >> ;; (gnu home-services ssh) >> (gnu home-services shells) >> ;; (gnu home-services files) >> (gnu services) >> (gnu packages admin) >> (guix gexp) >> >> (ice-9 rdelim)) >> >> (define %home >> (and=> (getenv "HOME") >> (lambda (home) >> home))) >> >> (define .bash_profile >> (string-append %home "/.local/share/chezmoi/dot_bash_profile")) >> >> (home-environment >> >> ;; (packages (list htop)) >> >> (services >> (list >> >> (service home-bash-service-type >> (home-bash-configuration >> (guix-defaults? #t) >> (bash-profile >> (list >> (with-input-from-file .bash_profile read-string))))) >> >> ;; XXX: missing home-files-service-type >> ;; (simple-service 'test-config >> ;; home-files-service-type >> ;; (list `("config/test.conf" >> ;; ,(plain-file "tmp-file.txt" >> ;; "the content of ~/.config/test.conf")))) >> >> ;; XXX: missing home-ssh-configuration >> ;; (service home-ssh-service-type >> ;; (home-ssh-configuration >> ;; (extra-config >> ;; (list >> ;; (ssh-host "savannah" >> ;; '((compression . #f))))))) >> >> ))) >> --8<---------------cut here---------------end--------------->8--- >> >> My first guix home reconfigure launch: >> --8<---------------cut here---------------start------------->8--- >> oleg@guixsd ~/src/guix-wip-guix-home$ /tmp/guix/guix/bin/guix home reconfigure ~/.local/share/chezmoi/dotfiles/guixsd/home.scm >> /gnu/store/xl4igqm0jjy7gfbganz9061ivdgzfpdk-home >> New symlinks to home-environment will be created soon. >> All conflicting files will go to /home/oleg/1630407324-guix-home-legacy-configs-backup. >> >> Skipping /home/oleg/.config (directory already exists)... done >> Creating /home/oleg/.config/fontconfig... done >> Symlinking /home/oleg/.config/fontconfig/fonts.conf -> /gnu/store/phj2z2iiqdhryfy7mqral0b9qz3hlva6-fonts.conf... done >> Backing up /home/oleg/.bashrc... done >> Symlinking /home/oleg/.bashrc -> /gnu/store/513j2xkszmcmv7fiawh59mr0i1fmin55-bashrc... done >> Symlinking /home/oleg/.profile -> /gnu/store/fxbppk3pqzdi3zzy0xl5vg1ir6c5jzq5-shell-profile... done >> Backing up /home/oleg/.bash_profile... done >> Symlinking /home/oleg/.bash_profile -> /gnu/store/2c3yva8vj5ikb0gspmjvzw0r9g9i1cxc-bash_profile... done >> done >> Finished updating symlinks. >> >> Backtrace: >> In guix/ui.scm: >> 2185:7 19 (run-guix . _) >> 2148:10 18 (run-guix-command _ . _) >> In ice-9/boot-9.scm: >> 1752:10 17 (with-exception-handler _ _ #:unwind? _ # _) >> In guix/status.scm: >> 820:3 16 (_) >> 800:4 15 (call-with-status-report _ _) >> In guix/scripts/home.scm: >> 214:4 14 (_) >> In ice-9/boot-9.scm: >> 1752:10 13 (with-exception-handler _ _ #:unwind? _ # _) >> In guix/store.scm: >> 658:37 12 (thunk) >> 1320:8 11 (call-with-build-handler _ _) >> 1320:8 10 (call-with-build-handler # …) >> 2108:24 9 (run-with-store # …) >> In guix/scripts/home.scm: >> 169:15 8 (_ _) >> In unknown file: >> 7 (primitive-load "/gnu/store/xl4igqm0jjy7gfbganz9061ivdg…") >> In ice-9/eval.scm: >> 619:8 6 (_ #(#(#(#(#(#(#(#(#(#(#<…> …) …) …) …) …) …) …) …) …) …)) >> 626:19 5 (_ #(#(#(#(#(#(#(#(#(#(#<…> …) …) …) …) …) …) …) …) …) …)) >> In srfi/srfi-1.scm: >> 586:17 4 (map1 (("profile/share/fonts" (system* "/gnu/stor…" …)))) >> In ice-9/eval.scm: >> 293:34 3 (_ #(#(# #) #)) >> In unknown file: >> 2 (string-append #f "/" "profile/share/fonts") >> In ice-9/boot-9.scm: >> 1685:16 1 (raise-exception _ #:continuable? _) >> 1685:16 0 (raise-exception _ #:continuable? _) >> >> ice-9/boot-9.scm:1685:16: In procedure raise-exception: >> In procedure string-append: Wrong type (expecting string): #f > > run-on-change service doesn't handle the case, where the previous > generation doesn't exists. Fix should be pretty simple, will send a > patch once it done. Thank you for catching this) > The fix: > >> --8<---------------cut here---------------end--------------->8--- >> >> I skipped the error and tried to configure Bash more: >> --8<---------------cut here---------------start------------->8--- >> (define .bashrc >> (string-append %home "/.local/share/chezmoi/dot_bashrc")) >> >> ;; ... >> >> (home-bash-configuration >> ;; ... >> (bashrc >> (list >> (with-input-from-file .bashrc read-string)))) >> --8<---------------cut here---------------end--------------->8--- >> >> Another launch, no errors this time: >> --8<---------------cut here---------------start------------->8--- >> oleg@guixsd ~/src/guix-wip-guix-home$ /tmp/guix/guix/bin/guix home reconfigure ~/.local/share/chezmoi/dotfiles/guixsd/home.scm >> substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% >> substitute: updating substitutes from 'https://bordeaux.guix.gnu.org'... 100.0% >> The following derivations will be built: >> /gnu/store/fn1hzpyic1k32pamyf45vwa0x3lw046g-home.drv >> /gnu/store/akdwz30lx0widqvyqmnkya45cb78f74d-files.drv >> /gnu/store/xcvi7n1l0fvsm099x2vyg6xci0qkayzp-bashrc.drv >> /gnu/store/pm1gw2xakkqj0zxsbbq0jnwgv3v95ajj-provenance.drv >> building /gnu/store/pm1gw2xakkqj0zxsbbq0jnwgv3v95ajj-provenance.drv... >> successfully built /gnu/store/pm1gw2xakkqj0zxsbbq0jnwgv3v95ajj-provenance.drv >> building /gnu/store/xcvi7n1l0fvsm099x2vyg6xci0qkayzp-bashrc.drv... >> successfully built /gnu/store/xcvi7n1l0fvsm099x2vyg6xci0qkayzp-bashrc.drv >> building /gnu/store/akdwz30lx0widqvyqmnkya45cb78f74d-files.drv... >> successfully built /gnu/store/akdwz30lx0widqvyqmnkya45cb78f74d-files.drv >> building /gnu/store/fn1hzpyic1k32pamyf45vwa0x3lw046g-home.drv... >> successfully built /gnu/store/fn1hzpyic1k32pamyf45vwa0x3lw046g-home.drv >> /gnu/store/1y84hzz1m1c3jw03n2g8hn9wwyxngab3-home >> Cleaning up symlinks from previous home-environment. >> >> Removing /home/oleg/.config/fontconfig/fonts.conf... done >> Removing /home/oleg/.config/fontconfig... done >> Skipping /home/oleg/.config (not an empty directory)... done >> Removing /home/oleg/.bashrc... done >> Removing /home/oleg/.profile... done >> Removing /home/oleg/.bash_profile... done >> Cleanup finished. >> >> New symlinks to home-environment will be created soon. >> All conflicting files will go to /home/oleg/1630407412-guix-home-legacy-configs-backup. >> >> Skipping /home/oleg/.config (directory already exists)... done >> Creating /home/oleg/.config/fontconfig... done >> Symlinking /home/oleg/.config/fontconfig/fonts.conf -> /gnu/store/phj2z2iiqdhryfy7mqral0b9qz3hlva6-fonts.conf... done >> Symlinking /home/oleg/.bashrc -> /gnu/store/lf51wflmvx91m2jx8hx3j34qs9x1k153-bashrc... done >> Symlinking /home/oleg/.profile -> /gnu/store/fxbppk3pqzdi3zzy0xl5vg1ir6c5jzq5-shell-profile... done >> Symlinking /home/oleg/.bash_profile -> /gnu/store/2c3yva8vj5ikb0gspmjvzw0r9g9i1cxc-bash_profile... done >> done >> Finished updating symlinks. >> >> Comparing /gnu/store/xl4igqm0jjy7gfbganz9061ivdgzfpdk-home/profile/share/fonts and >> /gnu/store/1y84hzz1m1c3jw03n2g8hn9wwyxngab3-home/profile/share/fonts... done (same) >> Evaling on-change gexps. >> >> On-change gexps evaluation finished. >> --8<---------------cut here---------------end--------------->8--- >> >> Oleg. From a07541380d412b33c504e5811776062af4e38582 Mon Sep 17 00:00:00 2001 From: Andrew Tropin Date: Tue, 31 Aug 2021 15:24:25 +0300 Subject: [PATCH 1/2] home-services: run-on-change: Handle first generation case. --- gnu/home-services.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/home-services.scm b/gnu/home-services.scm index 2a773496f0..5608c65175 100644 --- a/gnu/home-services.scm +++ b/gnu/home-services.scm @@ -448,13 +448,14 @@ with one gexp, but many times, and all gexps must be idempotent."))) (if any-changes? (cadr x) ""))) '#$pattern-gexp-tuples)) - (if #$eval-gexps? + (if (and #$eval-gexps? (getenv "GUIX_OLD_HOME")) (begin (display "Evaling on-change gexps.\n\n") (for-each primitive-eval expressions-to-eval) (display "On-change gexps evaluation finished.\n\n")) (display "\ -On-change gexps won't evaluated, disabled by service configuration.\n")))) +On-change gexps won't evaluated, disabled by service configuration or +there are no previos generations.\n")))) (define home-run-on-change-service-type (service-type (name 'home-run-on-change) -- 2.33.0