Itâs the little things that make me feel comfy.
Services are Simple
Systemd is fine, but I have to look up how to make a new unit file every time, and then input the path to the executable, which is generally some script Iâve written. With Voidâs runit, the service file is the script. Thereâs nothing to learn or look up - you just write out a normal script, put it in a file called run, and runit will run that script.
Here we have the at service in its entirety:
And the network time protocol daemon, running as the ntpd user:
And while this is a difference that really makes no difference, itâs nice that the service executable itself is called sv, rather than systemctl. Itâs easier to type, and fits in with the other traditional Unix utilities.
XBPS
AUR Comparison
Thereâs a lot of good things to be said for the AUR, but speed isnât one of them. It can take an hour to update once you have a few packages (especially if one is a browser), and you can either baby-sit the build by repeatedly typing in your password, or look up all the --no-babysit flags for that particular AUR installer.
The compiled packages occasionally require manual intervention, and while itâs not a great hassle to see that somethingâs gone wrong, then compile it cleanly, it also seems a bit pointless for everyone to compile their own packages. The binary packages just download and run - no hassle.
The AUR has everything that any nerd has ever wanted. Once someone shares their WiP idea for a new music player on Reddit, itâs on the AUR within an hour. XBPS is far more selective; it wonât always have what you want.
- hyprland was not available for over a year because one library used was marked as not stable by the maintainer, so all of hyprland was also considered not stable during that time.
- graph-easy is an old perl script that uses old perl libraries. It will never be available unless someone updates it.
But if Void does have something, then the package will be up-to-date and stable.
Has the Stuff I Like
Void doesnât have huge numbers of packages, but thereâs something comforting about the fact that it has all the packages I care about. Things like sc-im (the terminal spreadsheet editor), typst, and glab-cli suggest that the people maintaining Void Linux have a similar workflow to me.
Proprietary PackagesâŚbut separate
Iâve never used Voidâs proprietary repositories, but I appreciate that theyâre there in case I need one. However, while I donât need any, itâs nice to feel the separation. When proprietary packages sit next to the others, the only way to know what youâre getting is to enquire about the licence for each package, which nobody wants to do.
Small Packages
When you first fire up Void, a lot of packages which you might consider basic arenât there. However, the name of the package is typically the name of the program, so a simple xbps-install ifconfig iw sorts the problem immediately. Installing some âbasicâ packages serves as a nice reminder that there are plenty of other âbasicâ packages which you donât need and arenât on your system.
The x-binary packaging system also has lots of sensible defaults built into the commands. On Arch, if you want to remove orphaned packages, you need to type sudo pacman -Rsn "$(pacman -Qdtq)" - an unreasonable mouthful by any benchmark. On Void, itâs just sudo xbps-remove -O.
If you still use X for display, it has xorg-minimal - a meta-package to make sure you get all the X you need, and no more.
Going even smaller, you can see small package splits. w3m comes in two parts - w3m browser, and w3m-img (for those that donât need pictures in their terminal).
And instead of lolcat, Void carries lolcat-c. It works the same, but itâs 23KB instead of the standard 134KB.
Architectures & Compilers
Thereâs a time and a place for musl, but when people are using systemd, thereâs no option to try out different compilers. Void is agnostic towards architectures and compilers, so you can make any selection, and find broadly the same packages in the repositories.
This also means the community is less fractured. On Ubuntu, youâll be running Ubuntu on the main machine, and Raspbian on your raspberry pi. With Arch, youâll be on Arch Arm, and woe betide anyone who goes onto the Arch Linux.org forums and requests help for Arch Arm because it is âa totally different operating systemâ. Despite this, Arch Arm uses the standard AUR, and just tries to build packages in the normal x86 way. For most packages, this succeeds, but for others (e.g. gitlab-cli, it fails). Void often just fails to have a package for the x86 architecture, but I think I prefer missing packages to watching a compiler like a gambler at the dog-races.
Then we have the alternative flavours of Arch, which have their own default desktops, along with Ubuntu derivatives, such as Kubuntu, Xubuntu, et c., each with their own communities. Voidâs a lot easier; itâs just Void. If you want a Void ISO with a pre-installed desktop, one is available, and if anyone wants to build something on top of Void, they could add another version with a few things preloaded.
Stable
Iâve run Arch and Void for about eight years. Void is the most stable system Iâve ever run. No random X problems, no grub nonsense, no nonsense with the wrong glibc version with all those Haskell packages. The maintainers test everything before anything goes out.
Void also avoids the problems people find on Debian, where the system is only stable until you want to run something thatâs not so out-of-date that it simply doesnât work with the outside world, and have to create a hybrid machine, with some modern programs stuffed into /opt/ and maybe some modern libraries.
Small is Fast
Void and Arch have roughly the same idling RAM and CPU usage, but Void is just a tad faster. It doesnât come with automatic system logging, has fewer binaries installed from the outset.
When running a Void Linux server on a Raspberry pi, the start-up RAM was 35MB.
Problems
Documentation
The documentation might be better. This hasnât been a real problem, since one can usually just use the developerâs documentation for non-obvious items, like lxc or nginx. Void has a website with documentation, and you can download that site as a package with xbps. However, this package is very out of date, and the developers on IRC think that this is not a problem. I have no idea why.
Limited Packages
The biggest surprise was nmap. This is not in the main repository because it is non-free software. (seriously)
End Notes
I canât imagine recommending Void to anyone, given the obscurity, and the fact that most people donât really care about losing 2-seconds start-up time, and 10 MB RAM. But Iâll be sticking with it, as itâs been comfy as all heck.