Guix workflows?

Hi there, since we are already here, I am wondering about you use cases and workflows if you use Guix.
Personally, I can’t yet think of a particular reason to use / focus on Guix more intensely. I do “customize” my workflows and development environment mostly based on a particular idea.
In general, I am focussing on getting information, reference material, executing some workload, as quickly as possible, with “one click”. Or better: one command.
For example:

  • When working on the terminal, and needing to reference my current Jira ticket, I want to either:

    • open it in the browser
    • fetch its link/title
    • fetch more fine granular contents
  • When working on code, in an editor:

    • I want to know which PR introduced a certain change (and open the PR in the browser)
    • I want to open a referenced file, class, definition, module (which you often haven in full flegdes IDEs, but I’m using VIM and DOOM Emacs, so I kind of need to create some features myself).
    • I want to copy a given segment of code into a note, such that I can have it for reference, or as an example in my note folder.
    • I want to run specs, for the currently open file
  • Starting my VPN from the terminal and opening the required auth page directly

  • When documenting, I want to directly insert a link to a page open in the browser. A candidate oculd be Nyxt, which does even support extra annotation/tags for a particular page of text on a page. Having that chooseable at the click of a button, would be amazing.

There is of course more, but these examples are addressed via tooling and integration with my editor(s), and can be installed on any Linux distribution. With regards to Guix though, I am wondering what workflows you use or imagine/plan to implement that requires Guix’ level of customization.

Reproducablity is of course a huge selling factor, but there are other distros for that as well. Guix using scheme for configuration is of course a unique selling factor, but my previous question is related to workflows apart from reproducablity, stability, rolling-back, maybe even testing packages in isolation. Think, what does Guix bring to the table for you, if you have a stable development environment/tools already? What simple or complex tasks do you automate that are either easy to do with Guix, or even require Guix?

2 Likes

I am using Guix as my daily OS for everything I do online because of privacy reasons, not professionally and it works great. I would like to discover how to use it also for that purpose as I am getting into IT as a developer.

4 Likes

Hey, so first off, I was sold on Guix when I watched the video “The Emacs of Linux Distributions”… you tell me that something is as customizable as Emacs and I’m sold!

But what finally got me started using and exploring Guix was guix-home. I really like that I can set up a home configuration that pulls in all dependencies that it needs to work. I don’t have to remember that using package X in emacs also requires package Y in Archlinux and have it set up in Z way so that they know to work together. This is my main use-case for guix that I can’t reproduce with just any other distribution. (I know Nix has a similar system, or a couple, but I’d rather use Scheme than its custom language).

Another thing I think is really cool is the option to run it on a foreign distro. So right now I’m running Guix on top of Archlinux, and it’s a nice way for me to get familiar with Guix while not committing fully to something completely different from other distros.

I also love the idea for both home and system configurations to be submitted to Git.

One more thing that I really like is the ability to set up environments so that I can specify for projects that I work on specifically which dependencies it needs, and the fact that Guix is able to handle having more than one version of anything installed makes it really nice to make development environments. Although I need to explore this more.

And the last thing I think is the fact that the package manager and its build system are very integrated. Downloading binary packages is basically an optimization. I have all of the package descriptions on my machine, I can read them, modify them, extend them. For example I use stumpwm and I use slime, not sly, but there was no stumpwm+swank package, only stumpwm+sly. So I read how they do it and just modify it to use swank. It also lets me make custom versions of packages and use package transforms to specify that I want my custom package to be used whenever the main one is specified as a dependency (although this can cause a lot of rebuilds to happen).

And I haven’t even really looked at guix-deploy, inferiors, and I’m sure a lot of other things too. These are just some of the use-cases I have and reasons I love using Guix.

Edit: Oh, and of course the fact that for both system and home configuration I can just do a rollback if something goes wrong. More than once has this saved me from having to spend time during work to figure out why something broke and how to fix it :slight_smile:

4 Likes