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