[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Why does `system reconfigure` need to `pull`?
From: |
45mg |
Subject: |
Why does `system reconfigure` need to `pull`? |
Date: |
Wed, 25 Dec 2024 09:44:06 -0500 |
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'...
- Why does `system reconfigure` need to `pull`?,
45mg <=