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?