unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Ludovic Courtès" <ludo@gnu.org>
To: Andrew Tropin <andrew@trop.in>, Xinglu Chen <public@yoctocell.xyz>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Early feedback on Guix Home
Date: Wed, 23 Jun 2021 15:15:12 +0200	[thread overview]
Message-ID: <87tuloyb6n.fsf@gnu.org> (raw)

Hello!

As discussed on IRC a few days ago, I finally gave Guix Home a try and I
like it!

I thought I’d 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 “activation time” (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
‘symlink-manager.scm’, 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 ‘guix home reconfigure’ was very careful about
creating backups of any files it was going to overwrite, and it was also
explicitly saying what it’s doing.  Perfect.

I see two possible improvements:

  1. Make the manual very upfront about that: don’t be afraid, config
     files are backed up at that location, etc.

  2. Review ‘symlink-manager.scm’ and work on simplifying it to make it
     easier to understand what’s 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, ‘home-bash-service-type’, and
‘home-ssh-service-type’ was the most reasonable option to begin with.

Unfortunately, even ‘home-ssh-service-type’ was difficult to handle: I
have a long ‘.ssh/config’ file and I wasn’t going to turn that into
‘ssh-host’ lines by hand.

Possible actions:

  1. Provide a ‘guix home init’ command (or similar) that creates 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
‘home-bash-configuration’, config snippets are represented as a list of
strings (internally passed to ‘mixed-text-file’).  That forces users to
mix different languages in their .scm file—e.g., half of my Home config
is .bash{rc,_profile} snippets embedded in Scheme strings.  That’s
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
     ‘plain-file’ object) or separate (via ‘local-file’).  See for
     example how ‘tor-configuration->torrc’ does it.

That’s 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’.


             reply	other threads:[~2021-06-23 13:15 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-23 13:15 Ludovic Courtès [this message]
2021-06-24  5:40 ` Early feedback on Guix Home Andrew Tropin
2021-06-29 10:25   ` Ludovic Courtès
2021-06-24  8:14 ` Xinglu Chen
2021-06-24 15:18   ` Andrew Tropin
2021-06-29 10:33   ` Ludovic Courtès
2021-06-30  6:10     ` Andrew Tropin
2021-07-10 14:18       ` Ludovic Courtès
2021-07-20 11:01         ` Andrew Tropin
2021-07-04 13:21     ` Xinglu Chen
2021-06-24 16:50 ` jbranso
2021-06-24 17:42   ` Andrew Tropin
2021-06-24 18:42     ` Leo Prikler
2021-06-25  7:03       ` Andrew Tropin
2021-06-25  4:13     ` Joshua Branson
2021-06-25  7:17       ` Andrew Tropin
2021-06-25 18:08         ` Early feedback on Guix Home and a basic almost complete sway service Joshua Branson
2021-06-30  6:03           ` Andrew Tropin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87tuloyb6n.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=andrew@trop.in \
    --cc=guix-devel@gnu.org \
    --cc=public@yoctocell.xyz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).