jhnmcknght: Professional Amateur

Void Linux: Serious Contender

I'm what I consider myself to be a legacy Linux user. I've seen it all. The bad trends that I'm happy are long gone or on their way out and the good ones that continue to get better but still need improvement. Today we're going to discuss why Void Linux may potentially be a distro I switch to after being a Debian user for many years. We'll also go through the steps involved in getting it setup to be usable for my workflow on a daily basis.

Before we get too far, what is Void Linux? Their website describes it as the following:

Void is a general purpose operating system, based on the monolithic Linux kernel. Its package system allows you to quickly install, update and remove software; software is provided in binary packages or can be built directly from sources with the help of the XBPS source packages collection.


I won't even attempt to get into this as their handy guide walks you through the process. If you've installed Debian, Slackware, or FreeBSD you should mostly be at home as it appears the installer is ncurses-based.

It's worth mentioning that I'm an XFCE desktop user so I install from the relevant live image. Some of the graphical packages you'll see I choose are either XFCE specific or at least GTK-based.


Sync Remote Repository and Update System

First let's switch to a faster and more local mirror then sync.

sudo cp /usr/share/xbps.d/00-repository-main.conf /etc/xbps.d/
sudo sed -i 's|alpha.de.repo.voidlinux.org|mirrors.servercentral.com/voidlinux|' /etc/xbps.d/00-repository-main.conf
sudo xbps-install -S

At this point it's a good idea to update xbps before going any further.

sudo xbps-install -u xbps

Now we update the system.

sudo xbps-install -Su

There's almost guaranteed to be a kernel update involved so we'll reboot the system once packages finish updating.

Purge Old Kernel(s)

At this point for me it leaves three different kernels installed when you should only need two. Thankfully Void provides a handy tool called vkpurge for this.

sudo vkpurge list

The output of this shows available candidates for kernels that can be safely removed. Let's remove it.

sudo vkpurge rm all

You can also remove kernels by specifying the version that gets returned by the sudo vkpurge list command instead of specifying all when running sudo vkpurge rm.

Enable nonfree Repository

We'll also switch to a faster and more local mirror then sync.

sudo xbps-install void-repo-nonfree
sudo cp /usr/share/xbps.d/10-repository-nonfree.conf /etc/xbps.d/
sudo sed -i 's|alpha.de.repo.voidlinux.org|mirrors.servercentral.com/voidlinux|' /etc/xbps.d/10-repository-nonfree.conf
sudo xbps-install -S

Install Packages


sudo xbps-install intel-ucode htop nano nmap tmux memtest86+ mlocate gamin zsh vim gvim chrony cpufrequtils haveged uptimed bzr git subversion mercurial hugo argyllcms galculator-gtk3 xfce4-places-plugin xfce4-pulseaudio-plugin xfce4-whiskermenu-plugin vscode conky faba-icon-theme papirus-icon-theme greybird-themes

Graphics and Printing

sudo xbps-install cups cups-filters system-config-printer system-config-printer-udev gutenprint gimp inkscape darktable


sudo xbps-install chromium chromium-widevine filezilla geary hexchat transmission-gtk


sudo xbps-install asunder audacious audacious-plugins audacity guvcview handbrake xfburn beets mpg123 mpg123-pulseaudio mpv youtube-dl gstreamer-vaapi cmus cmus-faad cmus-ffmpeg cmus-flac cmus-pulseaudio


sudo xbps-install libreoffice xfce4-dict xreader


sudo xbps-install libvirt qemu virt-manager

Grant Access to libvirt Group for Virtualization

sudo usermod -aG kvm,libvirt yourusername

A logout is needed here to reflect the permission changes for running libvirt utilities.


Install and Enable

sudo xbps-install flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

A reboot is needed here before being able to install anything from Flathub.

Install Signal and Spotify

flatpak install flathub org.signal.Signal
flatpak install flathub com.spotify.Client

Set Default Cursor Theme

As this isn't defined, the login manager will show the ugly default Xorg pointer. Since the XFCE media installs GNOME's Adwaita theme by default, let's use that.

sudo mkdir -p /usr/share/icons/default
sudo sh -c 'echo "[Icon Theme]\nInherits=Adwaita" > /usr/share/icons/default/index.theme'

Fix VSCode Icon

mkdir -p ~/.local/share/applications
cp /usr/share/applications/code-oss.desktop ~/.local/share/applications
sed -i 's|Icon=code-oss|Icon=com.visualstudio.code-oss|' ~/.local/share/applications/code-oss.desktop


Here's one of Void's strong points; it's a rare example of a distro that doesn't use systemd or even legacy sysvinit, instead using runit.

I won't go into the benefits of any of these init systems as there's an exhaustive amount of hate and praise already so feel free to Google that if you're prepared for the wild ride that is people getting really mad about free software.

Let's move on.

sudo rm /var/service/sshd
sudo ln -s /etc/sv/chronyd /var/service/
sudo ln -s /etc/sv/cupsd /var/service/
sudo ln -s /etc/sv/haveged /var/service/
sudo ln -s /etc/sv/uptimed /var/service/
sudo ln -s /etc/sv/libvirtd /var/service/
sudo ln -s /etv/sv/virtlockd /var/service/
sudo ln -s /etc/sv/virtlogd /var/service/


After getting my hands dirty with Void in virtual machines, on my laptop, and a trusty old ASUS EEEPC 1000H netbook (yes, Void also supports legacy x86), will I end up switching to it from Debian on my workstation? I'm actually leaning more toward doing it. My biggest reservation is I'm mostly not crazy about rolling release distros as I find there are too many moving parts for my liking but I've found that Void's approach to rolling release is similar to openSUSE's Tumbleweed branch. It's rolling release but also stable and well tested.

If I do make the jump it'll coincide with a workstation rebuild and fresh Linux install. I'll be sure to follow that up with a far less wordy and thorough post.

Also, get vaccinated if you haven't already.

Tags: #linux #void