FSF40 Hackathon

November 24, 2025

This past weekend, Guixotic participated in the FSF40 Hackathon, a Free Software Foundation (FSF) organized event in celebration of their 40th anniversary. The hackathon was held virtually over the course of three days via a Galene video conference server instance provided by the FSF, and the GNU Guix participants had a dedicated room.

At its peak, we were more than ten hackers joined by our common love for creatively solving problems, spread across various time zones. It was motivating and great fun to see what others were up to, and try to help one another. Below are some of the things that were hacked on during this buzzing weekend:

New guix shell support for Emacs-Guix

tusharhero continued their ongoing effort adding support for guix shell to Emacs-Guix, so that you can M-x guix-shell to set the environment of the current project to a list of user-provided packages or a local manifest.scm file. You can see it in action in this video. To try it locally, you can use the following environment:

guix shell emacs-pgtk emacs-guix \
 --with-git-url=emacs-guix=https://codeberg.org/tusharhero/emacs-guix \
 --with-branch=emacs-guix=add-guix-shell -- emacs -q

New (guix home services foot) home service

platfott and thunktone teamed up to implement a new Guix Home service for configuring the foot terminal emulator. You can follow their progress on this feature branch.

HaeckseAlexandra added a few VR related packages, such as libsurvive, overte and minetest-paradust-xr. You can review these packages on this feature branch.

Finding missing GNU packages in Guix

GCaggianese and apteryx teamed up to devise a Guile script able to compute which GNU packages are missing from the Guix collection. The script makes use of the Guix API, for example using the pre-existing official-gnu-packages procedure from the (guix gnu-maintenance) module to retrieve the list of GNU packages, and the find-packages-by-name as well as a locally defined find-packages-by-regexp procedures to check whether they are already packaged in Guix.

Thanks to this script, we found that there were 151 missing GNU packages in Guix. The full listing is available in the script as a comment. That's a lot of packages, so the next question we pondered over was: which of these packages should we prioritize? To help answering that question, a Debian popularity contest (popcon) file parser was implemented using Parsing Expression Grammar (PEG) via the (ice-9 peg) Guile module.

You can run the gnu-packages.scm script locally like this:

guile -L . gnu-packages.scm

After about 2 minutes, the execution completes and outputs something like:

151 missing GNU packages in total

29 missing GNU packages sorted by Debian popcon votes:

votes      name
1026       vcdimager
349        shtool
38         userv
37         gtick
33         spell
23         electric
15         hp2xx
14         gretl
13         gnuit
7          gnubiff
4          acm
4          gprofng-gui
4          jwhois
3          ferret
3          melting
2          cfengine
2          gmediaserver
2          gnats
2          pexec
1          gnump3d
1          gnusound
1          oleo
1          teseq
0          bayonne
0          gift
0          gnurobots
0          gnustep
0          nana
0          sysutils

Adding missing GNU packages

Equipped with the list of missing GNU packages, we can try guix import to produce a template to speed up the process of writing a package definition for them (as long as they have their release tarballs uploaded to the GNU FTP). A small issue was fixed in commit e46b6027d0f, so you should run guix pull to ensure you have the fix, after which you can try for example:

guix import gnu gnurobots

which produces the following template:

(define-public gnurobots
  (package
    (name "gnurobots")
    (version "1.2.0")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/gnurobots/gnurobots-" version
                           ".tar.gz"))
       (sha256
        (base32 (guix-hash-url tarball)))))
    (build-system gnu-build-system)
    (synopsis "Program a little robot and watch him explore a world")
    (description
     "GNU Robots is a game in which you program a robot to explore a world full of
enemies that can hurt it, obstacles and food to be eaten.  The goal of the game
is to stay alive and collect prizes.  The robot program conveniently may be
written in a plain text file in the Scheme programming language.")
    (home-page "http://www.gnu.org/software/gnurobots/readme.html")
    (license find-by-yourself!)))

The GNU VCDImager, GNU shtool, GTick and GNU spell packages have already been packaged and are awaiting review, while work has started on GNU epsilon and a blueprint has been devised for packaging GNU 3DLDF. If you'd like to continue this effort, your help is much welcome! Perhaps Guix could become the first distribution able to claim to have the whole of GNU available?


(define guixotic ...)

November 11, 2025

It seems we are a bit overdue to say hello! We're very excited to announce Guixotic, a consultancy cooperative specializing in GNU Guix and Guile. We offer a wide range of services, from commercial support and DevOps to training and feature development. You can read our first announcement to the world on the guix-devel mailing list.

So, what have we been up to in the past 4 months? We've been busy taking care of all the official stuff one needs to do to start a business, complicated a bit by us starting this cooperative internationally. We are currently three co-founders and members, spread out in the US and Japan. We've also worked with our first clients, contributed to Guix and related projects, and hacked away at other projects along the way. Here are some highlights:

  • Client projects: Pharo (Smalltalk language) packaging, Icinga Web 2 monitoring services, one-on-one support
  • Guix: contributed major updates to the Mesa graphics library and related packages, IceCat and Icedove, libxml2 (recent CVE), and Qt libraries and programs; fixed a hard-to-reproduce crash in guix shell and other minor bugs; and made many more smaller contributions
  • Other hacking: learned and hacked on Haunt, a Guile-based static site generator powering this very website; started work on mmap support (kernel-backed memory mapping) in Guix/Guile

On the business side, we became e-residents of Estonia and registered Guixotic there with the help of Gate to Baltics. We have all the basics we need to run and expand our business, including being able to take donations with Liberapay and take various forms of payment almost anywhere in the world (via Wise, and Stripe). In future articles, we will explore why we chose to do this via e-residency in Estonia, to form as a cooperative, and the various bumps we've encountered.

Business paperwork aside, we've been thrilled to work with our first clients. They have reached out to us about adding and fixing packages in Guix, fixing bugs, developing a Guix environment for their work, and more. Between that, we've kept busy doing more of what we love, encouraged by the warm welcome we've received and even a few donations on Liberapay! This means continuing to hack on Guix and Guile and helping others do the same.

So, what's next for us? We're at a point now where the main goal is, in brief, to be busy! We need to find more clients, work more in the commercial business space, develop and offer training courses, and generally make this a self-sustaining business. We hope to bring in new members to our cooperative soon. People have reached out already, so we know there are people eager to do this work with us.

Look for more from us in this space soon, on what we've learned starting this business, the life of a cooperative, and especially articles on cool hacks and projects with Guix and Guile. Until then, happy hacking and keep those parentheses paired!