guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Improving the speed of guix time-machine for development environment


From: jbranso
Subject: Re: Improving the speed of guix time-machine for development environments
Date: Fri, 31 May 2024 09:58:05 +0000

May 26, 2024 at 10:00 PM, "Richard Sent" <richard@freakingpenguin.com> wrote:



> 
> Hi Guix!
> 
> > 
> > I think channels listed in channels.scm files should optionally support
> > 
> >  using whatever channel version is already in the user's profile, if
> > 
> >  present. This would significantly speed up entering development
> > 
> >  environments composed of Guix channels.
> > 
> >  Unfortunately, *I may be delayed every time I enter the development
> > 
> >  environment by several minutes while Guix computes a new derivation
> > 
> >  due to an update in %default-channels*.
> > 
> 
> I wound up implementing a proof of concept for this idea here:
> 
> https://www.freakingpenguin.com/blog/guix-tricks-self-referential-channelsscm-files.html
> 
> --8<---------------cut here---------------start------------->8---
> 
> (define (soft-pin-channel input-channel)
> 
>  "Given @var{channel}, return a new version of channel that uses the
> 
> current profile's commit of said channel. If the channel is not present,
> 
> commit is #f."
> 
>  (define (desired-channel? channel)
> 
>  (equal? (channel-name input-channel)
> 
>  (channel-name channel)))
> 
>  (define (profile-commit input-channel)
> 
>  (call/ec
> 
>  (lambda (return)
> 
>  (map (lambda (x)
> 
>  (when (desired-channel? x)
> 
>  (return (channel-commit x))))
> 
>  (current-channels))
> 
>  #f)))
> 
>  (channel
> 
>  (inherit input-channel)
> 
>  (commit (profile-commit input-channel))))
> 
> --8<---------------cut here---------------end--------------->8---
> 
> If people think this is useful, I'm happy to flesh out the idea more and
> 
> submit a proper patch. In my experience this does improve the
> 
> development experience when setting up developer tools that rely on
> 
> custom channels. At least when there's a new Guix commit, I don't have
> 
> to wait several minutes for a new Guix channel collection to build, but
> 
> without pinning it to a specific commit.
> 
> At present I can think of soft-pinning a list of channels by name being
> 
> useful. I can also see an option to only fetch dependencies of a
> 
> channel, not the channel itself, being useful. I would definitely
> 
> appreciate feedback or use cases! :)

Sounds worthwhile.  I would submit the patch as-is, so it is not lost.

:)

> 
> -- 
> 
> Take it easy,
> 
> Richard Sent
> 
> Making my computer weirder one commit at a time.
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]