Contributing to Guix

Today I got my name in the GNU Guix log.

I like tiling window managers. Being influenced by the meme, I started with i3 on Arch. I saw other people's rices on r/unixporn and a lot of them had gaps around the windows. I think gaps look nice. I know people have mixed opinions on this but I personally like to see a bit of my wallpapers ("stolen" from Luke Smith).

Recently I installed the GNU Guix System on my laptop. They had an i3-wm package but no i3-gaps. I don't really like working in a Desktop Environment and I don't have the time to try out other Window Managers so I installed i3-wm, it being the only one I know my way around.

But I wanted my gaps back.

So I looked up on how to package stuff for Guix. It's pretty simple. The Guile API for packaging in extremely nice. I also had a bit of luck because i3-gaps has the same build requirements and process as i3-wm so I could take a part of the code from the vanilla i3 package definition.

The Contributing section of the Guix manual has pretty much all you need to setup the repository and make a contribution.

With this occasion, I also learned how git send-email works.

My code wasn't ideal, as it just copied a lot from the i3-wm definition, but Brett Gilio (a long time contributor to Guix, admin of a GNU Telegram group and a very nice person) taught me about the inheritance mechanism.

I want to offer you some kind advice. You may not be familiar with our inheritance mechanism. Since i3-gaps is really just a derivative form of core i3, we can actually just inherit the package parameters, arguments, inputs, etc. modifying only what we need to.
– Brett in his reply to the patch I sent

He modified the patch to use (inherit i3-wm) and pushed it to master.

I hope this proves useful to other people rather than me too.

Contributing to Free Software fills my heart with joy.