@picnoir@social.alternativebit.fr External channels can be added to the load paths as well! Just note to set the load paths after using Guix' pre-inst-env script.

This script can be adapted and used in any channel:
https://codeberg.org/hako/Rosenthal/src/branch/trunk/pre-inst-env

And how I use them in my configurations:
https://codeberg.org/hako/Testament/src/commit/0eacd34ed6173b371115fc3cb8ee5157e4388772/pre-inst-env

(without using pre-inst-env scripts)
https://codeberg.org/hako/Testament/src/commit/9a8e39e32999c220f61fb4927c9893b0f5c7cb87/.envrc

#guix

I've been reading https://tazj.in/blog/trying-guix.

I also went in a #guix sidequest last year, and found a solution to
untangle Guix from the Guix pull modules. I realize I never documented
that publicly. Here we go

There's this popular workflow in the Nix space: using a local git
Nixpkgs checkout to override your system Nixpkgs. This is super useful
when hacking on NixOS modules, you can iteratively load them to your
desktop/servers. It also pretty useful when you quickly want to apply
a patch that is not merged upstream yet.

On Guix, this is a bit tricky to do. By default, Guix itself is tying
your system config with the different channels (guix, nonguix). The
trick is to leverage the pre-inst-env script to load the local guix
checkout. I did that through a small wrapper script I run when I want
to run guix system reconfigure.

See
https://codeberg.org/picnoir/guix-config/src/branch/master/home/bin/guix-rebuild-all#L5.

This works great, however, this will rewrite the guile load path, and
using this, you won't be able to use your extra channels (like
nonguix).

To work around that, the trick is to wrap your channels in a inferior
(see
https://codeberg.org/picnoir/guix-config/src/branch/master/systems/framework.scm#L29)
and combine them with the guix channel itself (loaded from your local
checkout).

Then use the lookup-inferior-packages function to retrieve packages
from this inferior
https://codeberg.org/picnoir/guix-config/src/branch/master/systems/framework.scm#L81.

Doing this makes hacking on Guix as I hack on NixOS. I can cherry pick
patches, apply them in my guix setup and transparently deploy them on
my host system if I need to.

There's an extra accidental benefit: incremental compilation. Since
we're evaluating Guix on a long-living repository, we don't have to
rebuild the channel from scratch on each pull. There's a caveat
though: incremental recompilation is somewhat buggy, I had to manually
clean the compiled files a couple of times. The error message was
super puzzling, took me a while to figure that out.

Kudos goes to cbaines, he helped me figuring out the inferior part of
this setup!

we're pleased to announce https://guixotic.coop, a new free software cooperative focused on gnu guix and guile cofounded by @podiki, maxim cournoyer and me. we offer services including training, commercial support, development, system administration (CI/CD, HPC), packaging -- in short, everything guix and guile.

our goal is to strengthen & expand the community, bringing in new people and organizations (our clients), supporting development work, and growing the network of organizations supporting these technologies.

could you or an organization you know of benefit from our services? email contact@guixotic.coop or contact us here!

full announcement: https://lists.gnu.org/r/guix-devel/2025-07/msg00113.html

#gnu #guix #guile #lisp #cooperatives

I am currently looking for a #job . I am an experienced (senior) software developer/engineer with 7y of experience. If someone is looking for a capable software engineer or knows someone looking for engineers, please let me know.

I do #python #scheme #django #docker and aim for reproducible software. I learned some #devops and #ansible and can manage servers. Used to do #fullstack dev work, before everything needed to be an SPA.

I am looking for #remote work or work in #berlin or #potsdam .

I also got experience with the following (5 = a lot, 1 = a little) :

#machinelearning #ml (3) (I have implemented some ML models myself in the past, for learning purposes.)
#guix (3) (Using it for reproducible setups of projects.)
#functionalprogramming #fp (5) (Doing it in my own projects.)
#objectorientedprogramming #oop (4) (last job and past 😜 in my own projects.)
#CI / #CD (3) (Last job)
#make (4) (using it for my own project setups and convenience)
#testing (4) (last job, own projects)