help-guix
[Top][All Lists]
Advanced

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

Re: Preliminary questions before try guix


From: Carlo Zancanaro
Subject: Re: Preliminary questions before try guix
Date: Wed, 05 Feb 2025 10:27:18 +1100
User-agent: Gnus/5.13 (Gnus v5.13)

Hi Carlo,

On Mon, Feb 03 2025, Carlo Ascani via wrote:
> - Use guix on a foreign distro (Debian 12)
> - Use it especially to create isolated development environment

This is how I used to use Guix, so this should work well. I still use
isolated development environments, just not on Debian any more. I use
direnv so that entering the directory automatically brings the
development packages into my environment.

> - How easy is it to install older versions of packages?

There are three cases here, which get harder as we go along:

If the version you want is still packaged in Guix (which sometimes has
multiple versions of a package) then this is easy: just use the version
you want.

If the version you want is not packaged in Guix, but was in the past,
then you can do this by using time-machine, as Cayetano Santos
mentioned. Doing it that way requires all the packages in your
environment to come from the same version of Guix, which might be too
drastic for your use. You can pull a single package from a specific
prior revision of Guix using inferiors (documented in the manual under
"(guix) Inferiors"[1]). Interestingly, it looks like Guix skipped Erlang
22. The upgrade in aa8df16bc5ca99615188b4f1e94a0e13c1e51d3a went from
21.3.8.13 to 23.2.1.

If you can't use time-machine or inferiors (as with Erlang 22) then
another option is to define your own version of a package for your
environment. You can do this in the same manifest.scm/guix.scm file as
you're defining the rest of your dependencies. In the simplest case,
this might be something as simple as:

--8<---------------cut here---------------start------------->8---
(define erlang-22
  ((options->transformation '((with-version . "2.3.4.27"))) erlang))
--8<---------------cut here---------------end--------------->8---

Unfortunately this didn't work for Erlang when I tried it. I don't have
time to dig into why, but at this point I think we're past "easy" and
into merely "possible".

> - Can I specify services to be started in the development
> environments?

I am not aware of a way to do this. There has been interest in this
feature before, but it doesn't exist yet.

Carlo

[1]: https://guix.gnu.org/manual/devel/en/html_node/Inferiors.html



reply via email to

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