Whatever, but at home I want to fork it

Reading time: 9 minute(s).
2026-01-18

As the general quality of software, hardware and pretty much everything declines, I have found great solace in setting up my newly-refurbished ThinkPad from scratch.

My Laptop My Rules

I believe your approach to computing has to change when you work and when you are not working. Besides companies policies, whenever you're paid to do something maybe wasting time tinkering is not really worth it. However, when I decide to use my computer autonomously tinkering isn't really a nice-to, it is an essential part of what I want to do with a computer.

And honestly I've been around computers and code for a while but I am not that smart. This is the setup that, at my level, I understand enough to be comfortable in quickly troubleshooting and fixing.

The Setup

The operating system is Void Linux base image. There is a cute ncurses-based installer which launches the right terminal commands for you.

Why Void Linux? I am honestly just used to it and it suits my needs: it's oriented towards scripting and doesn't use Systemd. Not using systemd is not as cool as it used to be, and actually some parts of Systemd (like elogind, currently running on this very laptop) do indeed work on void. A nice thing is that the Void Docs show a few minimalistic alternatives to the systemd-suite software.

I then installed the following (notable) software:

And that is roughly the order in which those tools also launch, and where I spend most of my time on the laptop: My text editor juggling between windows.

I picked most of this software for the same reason: Either I had to read the manual and it was easy, or they are incredibly easy to use and grasp right away.

Some choices might seem weird, like the nu-shell, but we must embrace the unexplored sometimes.

Logging in and Starting User Services

I use emptty because It runs a script in my ~/.config/ after I login and I use that to start niri. I like it because I can manually start my DBus session and save the session ID in a file to retrieve it, which is a weird hack I do to get my session ID outside processes that have inherited it. This is more of a DBus limitation and I don't really understand deeply DBus, but it appears a necessary evil of the Linux desktop.

Then, from my niri config I launch my instance of runit, using runsvdir.

The void wiki suggests making a global, system wide service to spawn your local runit service, but that won't inherit some very useful env variables you usually have in a desktop session. Spawning runsvir form niri ensures I get roughly the same env I have when I launch something from a terminal.

From there I spawn a bunch of programs that actually make niri usable. This might seem like a bad thing, to have software that doesn't work right away when you install it, but I actually like this: I must set it up myself and must understand what I'm doing.

Daemons

Just a short list:

Waybar does the heavy lifting, providing out of the box a LOT of functionality. Just need to read their wiki and turn them on.

In the past, back then I used sway, I had my own bar script written in posix sh. It was kind of a pain to maintain and was very inefficient.

Terminal and Shell Management

This nice setup allows me to manage a lot of browser tabs and terminals, which is what I mostly do on the laptop. I gave up on browser and I just use firefox with a vim-keybindings extension, adblocker and nothing fancy.

My kitty config is also pretty much left intact besides a few theming options.

I keep most of my configuration stuff in the shell, and I'm trying Nushell just because the LSP support looks fancy and I like their take on type strictness. I write lots of scripts in nushell to keep this setup together, and I'm having a nice time doing so.

I use mise to configure environment variables and most dev tools globally and for-project, and I'm keeping my own tldr/cheats with navi.

I take a lot of notes in the terminal, and I'm trying out zk. I don't really care about the Zettelkasten method, I just love that zk provides both LSP support and very powerful and UNIX-ish cli usage.

In the Editor

My helix configuration is surprisingly small. I used to have a massive neovim config that would (quite understandably) break every few updates. I couldn't be bothered with understanding every part of it and found fixing stuff very time consuming. Sometimes I would just break my editor config and wait until a few updates to try and patch it.

Helix has a lot of baked in features that I would install as external plugins. In fact it currently does not support plugins at all currently (work is underway to use a scheme dialect), but it's complete enough I haven't felt the need for plugins yet.

It supports a lot of LSP by default, just install clangd or rust-analyzer and it works.

So I can enjoy most of the features I like from modern editor without the complexity that comes either with configuring neovim/emacs/vim to death or running a GUI editor (VScode? Zed???).

This also means I've been exploring interesting uses of the LSP protocol, for instance I can get very nice grammar and spellchecking in helix with Harper, and I use the aforementioned zk to preview and jump through my personal notes.

Okay FREAK, What Now?

And why bother? You can just download fedora, use vscode, press the big update button and everything mostly works. That's true, and mostly what I do at work where I don't have to necessarily enjoy what I'm doing, it's just a very nice plus worth looking into if it doesn't slow me down. I still use helix and run a similar terminal setup but keep vscode installed for emergencies.

It seems stupid that I went trough all this trouble to get what I already have, working pretty much out of the box on my corporate GNOME powered fedora-workstation. But me having to go trough it means I understand it, I know where to look to fix things, and I know what I can tweak.

Most of all, I picked software considering how much time it would take me to patch it or modify its source code.

I've been looking for more terminal applications, and I've tried out a few tools with very few starts on github or few contributors. Recent maturity of some terminal-ui frameworks (I can think of Textual and Ratatui) have brought about a revolution in amateur terminal project that look stunning and have predictable keybindings.

The best part about these project, and it applies most of the software I mentioned above, is that they have a contained codebase I can quickly understand and patch. They might have rough edges, but I can fix those rough edges in a weekend if I really need to.

Are You Actually Going to? Can't I Just Do that with GNOME and Fedora?

I have quickly patched a few terminal programs I would've developed myself anyway, and I have absolutely read the manual of everything running on my laptop besides pipewire.

You can totally do the same, and should do the same, with any other open source stack: be willing and incentivized to learn about it, contribute or just hack it for yourself.

I just don't have the brains, the spare time, or the courage to dive into SystemD documentation or source code. The entire source code of my SystemD replacement stands at 5455 lines of C + 661 of C headers, which means you can probably read all of it a single sitting.

Why It Matters

Out of unjustified hate for SystemD and complexity, learned from unforgiving communities of Unix extremists I used to think as very wise and principled, I have forced myself to learn a lot of Linux.

Learning how your tools work makes you clearly strictly better at using those tools, and learning continuously (as I'm improving my desktop set up or fixing something that broke) keeps you convinced of the fact you have a brain.

I'm always ashamed to think this out loud, but it's important to remember you have a very capable human brain, in a time where little comforts being sold to you are so abundant and cheaper than thinking. Just let AI do everything. Just buy a product and enjoy the lock in. Just never try to do anything and enjoy some of the most entertaining and addictive form of content ever conceived in the 5 apps on your phone filled with screenshots with the other 4.

You don't need to exercise your working brain by trying obscure linux distributions and carefully ricing your desktop. Maybe you don't care about it: it's just what I gravitated towards my desire to understand and "own" my software and hardware.

top↑ end↓