all messages for Guix-related lists mirrored at yhetil.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
  2024-12-26 21:48 ` Christopher Baines
  0 siblings, 2 replies; 4+ 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] 4+ messages in thread

* Re: Why does `system reconfigure` need to `pull`?
@ 2024-12-26 12:56 František Boháček
  0 siblings, 0 replies; 4+ messages in thread
From: František Boháček @ 2024-12-26 12:56 UTC (permalink / raw)
  To: 45mg.writes; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 223 bytes --]

Hello,

normally you dont pull channels as part of system build, unless you configured it explicitely. So it would be good if you sent your config if you cannot identify what fetches new channels.

Regards,
Rutherther 

[-- Attachment #2: Type: text/html, Size: 296 bytes --]

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

* Re: Why does `system reconfigure` need to `pull`?
  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
  1 sibling, 0 replies; 4+ messages in thread
From: Ian Eure @ 2024-12-26 18:41 UTC (permalink / raw)
  To: 45mg; +Cc: Guix Devel

Hi 45mg,

45mg <45mg.writes@gmail.com> writes:

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

I’ve also noticed this, and wondered why it always pulls 
first. Even
if you have an internet connection, the pull makes the reconfigure
slower than it could be.

> 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?
>

I dug around in the --help output, but I didn’t see anything that
looked like it’d skip the pull.  It’d definitely be nice to have 
an
--offline or --no-pull option when reconfiguring.

The simplest path forward for you is to replace your Guix channels
with local clones of them, so `guix pull' uses your filesystem 
instead
of the network.  You can then `git pull' in your clone to get new
commits when you like, and `guix pull' after that to update Guix 
to
use them.

I’ve heard of Guix getting used in places without much 
connectivity
before, though I don’t know how it was accomplished. Maybe someone 
can
chime in with their workflow.

 -- Ian


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

* Re: Why does `system reconfigure` need to `pull`?
  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
  1 sibling, 0 replies; 4+ messages in thread
From: Christopher Baines @ 2024-12-26 21:48 UTC (permalink / raw)
  To: 45mg; +Cc: Guix Devel

[-- Attachment #1: Type: text/plain, Size: 995 bytes --]

45mg <45mg.writes@gmail.com> writes:

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

Do you have (current-guix) in your configuration?

The behaviour of (current-guix) can be changed, but I think it might use
the network.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]

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

end of thread, other threads:[~2024-12-26 21:49 UTC | newest]

Thread overview: 4+ 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
  -- strict thread matches above, loose matches on Subject: below --
2024-12-26 12:56 František Boháček

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.