FSF40 Hackathon
November 24, 2025This 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 -qNew (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.
New virtual reality (VR) related packages and games
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.scmAfter 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 sysutilsAdding 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 gnurobotswhich 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, 2025It 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 shelland 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!