unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Why does `system reconfigure` need to `pull`?
@ 2024-12-25 14:44 45mg
  2024-12-26 18:41 ` Ian Eure
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: 45mg @ 2024-12-25 14:44 UTC (permalink / raw)
  To: Guix Devel

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'...



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-12-28 12:57 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-25 14:44 Why does `system reconfigure` need to `pull`? 45mg
2024-12-26 18:41 ` 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
2024-12-28 12:56       ` Tomas Volf

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).