From: 45mg <45mg.writes@gmail.com>
To: Guix Devel <guix-devel@gnu.org>
Subject: Why does `system reconfigure` need to `pull`?
Date: Wed, 25 Dec 2024 09:44:06 -0500 [thread overview]
Message-ID: <8734ibx1op.fsf@gmail.com> (raw)
Hi Guix,
So I've just installed Guix System on my main machine, and right off the
bat, I want to thank everyone here for spending their time on this
amazing project. While there have been a few pain points (expect some
(minor) patches, hopefully!), the feeling of finally getting `guix
system init` to work and then instantly rebooting into the /exact same
system/ that I built in a VM over weeks is downright magical.
I'm writing to discuss one of the aforementioned pain points. It's one
of those things that seems insignificant at first, but I fear it may
impact my ability to keep using Guix. Let me explain.
Whenever I run `guix system reconfigure`, the first output I see from
the command is this:
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
It then says it's fetching and indexing objects, authenticating N new
commits, etc. As far as I can tell, this stage is equivalent to `guix
pull`. It sometimes repeats this several times during the course of the
`reconfigure`.
I didn't think much of this at first, although I thought it was odd that
the manual did not mention a 'pull' stage [1].
However, I quickly realised that *this makes it impossible to
reconfigure without an internet connection*. The command will exit
unsuccessfully when it fails to pull [2].
This means that I cannot tweak my system *at all* without an internet
connection. Even to do something that doesn't require Guix to download
anything - like add a new user, or tweak my `bootloader-configuration`,
or fix my `network-manager-configuration` so I can connect to the
internet (see the chicken-and-egg issue there?), I must be connected to
the internet.
For me, this is a huge step backwards from conventional GNU/Linux
distributions in terms of usability. My internet connection tends to be
extremely flaky, with frequent outages for days or more. This will mean
I won't be able to make changes to my system at all during this period.
Now, I really want to believe that there's a way around this; that I
haven't read the docs enough, and there's some option or command to
reconfigure my system without pulling new commits. But I can't seem to
find any such thing. (`guix time-machine` has the same problem [3].)
Is there really no way to reconfigure my system without an internet
connection?
P.S. I tried to delve into the source to understand how `reconfigure`
works internally, but I was not able to understand much from
guix/scripts.scm and the associated files... which means I likely won't
be able to address this myself any time soon. Which concerns me all the
more, because while I have a stable connection for the next week or so,
I don't know how I'll continue using my system once this is no longer
the case...
---
[1] From '(guix) Invoking guix system':
‘reconfigure’
Build the operating system described in FILE, activate it, and
switch to it.
[2]
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Backtrace:
In guix/gexp.scm:
926:4 19 (_ _)
In guix/store.scm:
2095:12 18 (_ #<store-connection 256.100 7f389f90d2d0>)
1412:11 17 (map/accumulate-builds #<store-connection 256.100 7f38…> …)
1330:8 16 (call-with-build-handler #<procedure 7f388b8988a0 at g…> …)
2210:25 15 (run-with-store #<store-connection 256.100 7f389f90d2d0> …)
In guix/gexp.scm:
931:13 14 (_ _)
In guix/store.scm:
2038:8 13 (_ _)
In guix/gexp.scm:
300:22 12 (_ _)
In guix/store.scm:
2038:8 11 (_ _)
In guix/gexp.scm:
300:22 10 (_ _)
In guix/store.scm:
2038:8 9 (_ _)
In guix/packages.scm:
2050:11 8 (_ _)
In guix/build-system/channel.scm:
43:2 7 (_ _)
In guix/store.scm:
2082:38 6 (_ #<store-connection 256.100 7f389f90d2d0>)
In guix/channels.scm:
559:23 5 (latest-channel-instances #<store-connection 256.100 7…> …)
422:18 4 (latest-channel-instance #<store-connection 256.100 7f…> …)
In guix/git.scm:
586:7 3 (update-cached-checkout _ #:connection-timeout _ # _ # _ …)
In git/bindings.scm:
77:2 2 (raise-git-error _)
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:
Git error: failed to resolve address for git.savannah.gnu.org: Name or service not known
[3]
$ guix describe -f channels > channels.scm
$ sudo guix time-machine -C channels.scm -- system reconfigure -L /etc/guix-system/ /etc/guix-system/config.scm
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
next reply other threads:[~2024-12-25 20:12 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-25 14:44 45mg [this message]
2024-12-26 18:41 ` Why does `system reconfigure` need to `pull`? Ian Eure
2024-12-26 21:48 ` Christopher Baines
2024-12-27 19:58 ` 45mg
2024-12-27 21:29 ` Tomas Volf
2024-12-28 7:14 ` Docs: Clarify use-cases of `guix-for-channels`? 45mg
-- strict thread matches above, loose matches on Subject: below --
2024-12-26 12:56 Why does `system reconfigure` need to `pull`? František Boháček
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8734ibx1op.fsf@gmail.com \
--to=45mg.writes@gmail.com \
--cc=guix-devel@gnu.org \
/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 external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.