Featured image of post Install Void Linux with a desktop environment + Flatpaks

Install Void Linux with a desktop environment + Flatpaks

Void Linux is an awesome Linux distro that uses runit instead of systemd, and uses it's own superfast package manager called XBPS. This post will tell you how to install it and set it up with a desktop environment.

Last updated on Jan 15, 2025 01:25 CET

Yapping about Void Linux first

Sometime ago, i watched videos about Void Linux from both DistroTube and Mental Outlaw, and was very fascinated by it. I’ve wanted to use it on my main desktop for a long time, but every time i tried to main a Linux distro, i always had some issue that made me boot back into my Windows install or had to play a Anti-Cheat enabled game. Also my GTX 750 Ti seems to really work best on Windows for whatever reason. I should probably get a RX 580 and retire my 750 Ti for good not just so i can have a better experience with using Linux but also so my games run better and also be able to play DX12 only games.

Now that i’ve pretty much moved away from Windows, i can finally use Linux in peace and not ever think about switching back to that piece of shit!

Anyways, Void Linux yeah.

It’s an independant Linux distro, not based on Debian or Arch, just based. It gives you the option to use either glibc or musl C libraries, uses ‘runit’ instead of ‘systemd’ which, let’s be real, no normal Linux user cares what init system you use. Systemd works, OpenRC works, runit works, they all work and that’s the only thing that should matter, not how bloated they are.

It uses it’s own ‘XBPS’ package manager, which is super super fast, but also very weirdly named. It’s definitely gonna take some time to get used to typing XBPS when you first use it, not to mention that the commands used aren’t:

  • sudo xbps install
  • sudo xbps remove
  • sudo xbps update

etc, but are all a single word:

  • sudo xbps-install <pkgname> for installing,
  • sudo xbps-remove -o <pkgname> for removing packages and their dependencies
  • sudo xbps-install -Su for synchronizing repos (-S) and updating the system (-u).

Of course you can alias all of those command in your .bashrc or whatever shell you prefer to speed things up if you want:

1
2
3
4
5
6
#!/bin/bash
# Don't include comments

alias xi='sudo xbps-install'
alias xr='sudo xbps-remove'
alias sysup='sudo xbps-install -Su'

⚠️ Update: xi is a tool included with the xtools package. If you’re planning to install xtools, keep in mind that you won’t be able to use it because of the alias!

I can go on and on and on about Void, i genuinely enjoy using the distro, but i should probably stop writing about it and move to actually installing it and trying it out.

Booting up Void Linux

Void unfortunately only ships with a plain XFCE ISO for desktop choices, but that’s okay because we can use it to at least first try and see if everything works out of the box, then we can install it and then chroot into the install to prepare our system for first time boot, like installing necessary services like dbus, elogind, NetworkManager, a display manager, bluetooth etc, window manager or desktop environment, all the applications you need and apply any system tweaks, like configuring LightDM with a proper theme and wallpaper before we even boot into the install!

Head over to the download page and download the XFCE image, or the base image if you’re okay with just a tty prompt.

Either create a virtual machine or use Etcher or dd and put the ISO onto a USB flash drive and boot it up.

Live boot screen

Live desktop

The installer

As you might have noticed, there is no ‘Install Void Linux’ desktop icon to install the distro. The installer is entirely in ncurses, so we have to bring up a terminal to launch the installer.

Simply type in sudo void-installer and it should launch.

The installer

From here, simply go through each step of the installer until you reach ‘Source’.

You will be given a choice of installing ‘Local’ or ‘Network’.

The ‘Local’ option will install all packages that are in the live system, including the desktop environment. So if you want to use the XFCE desktop or don’t really care and just want to get Void up and running, choose ‘Local’.

⚠️ Make sure to update the system after installing if you pick ‘Local’ install!

If you’re planning to install a different desktop or window manager, choose ‘Network’. This will install a fresh and up to date system with only a tty prompt.
For this tutorial, i’m going to pick Network and install KDE.

Continue going through the install until you need to partition the drive.

Partitioning

Select ‘cfdisk’.

Now, depending on how old your computer is, you either choose ‘gpt’ for UEFI or ‘dos’ for legacy BIOS.
If you’re running Void in a virtual machine, pick ‘dos’ since that’s usually the default option in VMs.

If you’re running Void on real hardware, to check which BIOS type your computer uses, open another terminal window and type ls /sys/firmware.

If there’s a folder called ’efi’, then you’re using a UEFI BIOS and you can pick ‘gpt’. If not, select ‘dos’.

BIOS partitioning

If you’re in a VM/using legacy BIOS, you only need to create one partition that takes up the entire drive and is type ‘Linux’

If you’re running on real hardware, create a partition for Void and leave some space for a swap partition, usually either as much RAM you have, or twice that amount.
A swap partition is usually unnecessary when running inside VMs.

This is how it should look like.

UEFI partitioning

If you’re using a UEFI BIOS, you need to create a extra 512M-1GB partition with a type ‘EFI System’. This is necessary for booting the system, otherwise it won’t boot.
The rest you can freely allocate for Void and swap.

This is how it should look like.

File systems

For file systems, things are pretty straight forward:

  • If on UEFI, the ‘EFI System’ partition needs to be formatted with vfat (FAT32), and it’s mount point set to /boot/efi,
  • the Linux partition can be formatted with either btrfs or ext4, and it’s mount point set to /
  • and the swap partition need to be formatted with… swap.

I’m going to choose BTRFS since, again it doesn’t really matter what you use as long as it’s one of the two formats i mentioned above.

Hit ‘Done’.

Installing Void

From here, select Install, and confirm that you want to erase the partitions we created.

Now for a bit of fun, prepare a stopwatch and run it through the install to count how long the install takes.
you’d be blown away :3c

Oh and also, if you chose the ‘Network’ install, you’re gonna have to press OK at one point to continue with the install.

I’d say that took like 2 minutes, more or less.

:3c

If you chose the ‘Local’ install, feel free to reboot from here and afterwards, install and configure everything you need, but since i chose the ‘Network’ install, i’m gonna pick No and chroot into the system to install KDE and enable services.

Just pick Exit from the step list and you’re back to a bash prompt.

(Network) Installing a desktop/window manager

This is where the fun begins!

When you exit out of the installer, it automatically un-mounts the partitions, but we can simply just re-mount the Linux partition and chroot into it:

1
2
3
4
5
6
7
8
#!/bin/bash
# Don't include comments

# Replace X with the partition number for the Linux partition

sudo mount /dev/sdaX /mnt/target
chroot /mnt/target
bash

From here we can start installing the packages we need for a desktop.

These are the essential packages we need for getting any GUI up and running:

vim nano dbus elogind polkit xorg xorg-fonts xorg-video-drivers xorg-input-drivers dejavu-fonts-ttf terminus-font NetworkManager pipewire alsa-pipewire wireplumber xdg-user-dirs unzip gzip xz 7zip

Choice of desktop

If you head over to the packages page on their website, you can search for any package available in their repository.

Here you can check if your window manager or specific program is available for install.

lol, lmao even

For real though i’m actually a bit shocked that hyprland isn’t in the repos.
But obviously things like GNOME, KDE, Cinnamon, XFCE, LXQt, MATE, i3/sway, dwm, openbox etc. are there and can be installed.

Here is a list of which desktop environments are installable and how to install them:

GNOME:

1
# xbps-install gnome-core gnome-console gnome-text-editor firefox loupe celluloid ffmpegthumbs file-roller

or a full install:

1
# xbps-install gnome firefox ffmpegthumbs

KDE:

1
# xbps-install kde-plasma dolphin konsole firefox kdegraphics-thumbnailers ffmpegthumbs vlc ark kwrite

Cinnamon:

1
# xbps-install lightdm lightdm-gtk3-greeter cinnamon gnome-keyring colord gnome-terminal gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox engrampa mousepad

XFCE:

1
# xbps-install lightdm lightdm-gtk3-greeter xfce4 gnome-themes-standard gnome-keyring network-manager-applet gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox xfce4-pulseaudio-plugin engrampa mousepad

MATE:

1
# xbps-install lightdm lightdm-gtk3-greeter mate mate-extra gnome-keyring network-manager-applet gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox engrampa pluma

LXQt:

1
# xbps-install lxqt sddm gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox nm-tray pcmanfm-qt FeatherPad qterminal

Aswell as these, it is possible to install:

  • Budgie
  • Enlightenment
  • LXDE
  • AwesomeWM (i dunno how to categorize this,,,,,)
  • Stacking window managers, like Openbox, Fluxbox, JWM, IceWM etc.
  • Tiling window managers, like i3/sway, dwm, qtile, herbstluftwm etc.
  • And many others that i can’t remember :P

Getting everything up and running

Did you install everything you need? Great!
Now it’s time to get everything up and running.

We need to enable quite a few services and have Pipewire start on login.

Since Void uses runit, the way you enable services is different than on a distro running systemd, even openrc! Because to enable services in runit, you create a symbolic link from any service in /etc/sv into /etc/runit/runsvdir/default/.

So to enable for example dbus:

1
ln -s /etc/sv/dbus /etc/runit/runsvdir/default/

And then we make sure it’s running by executing:

1
sv status dbus

DBus is enabled and running!

So here is a extensive list of all services we need to enable in order to get a desktop running:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash
# Don't include comments

ln -s /etc/sv/NetworkManager /etc/runit/runsvdir/default/
ln -s /etc/sv/dbus /etc/runit/runsvdir/default/ # If you haven't already
ln -s /etc/sv/udevd /etc/runit/runsvdir/default/
ln -s /etc/sv/polkitd /etc/runit/runsvdir/default/

# If you installed GNOME, replace 'lightdm' with 'gdm'
# If you installed KDE or LXQt, replace 'lightdm with 'sddm'

ln -s /etc/sv/lightdm /etc/runit/runsvdir/default/

Now to configure Pipewire for audio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash
# Don't include comments

mkdir -p /etc/xdg/autostart
ln -sf /usr/share/applications/pipewire.desktop /etc/xdg/autostart/
mkdir -p /etc/pipewire/pipewire.conf.d
ln -sf /usr/share/examples/wireplumber/10-wireplumber.conf /etc/pipewire/pipewire.conf.d/
ln -sf /usr/share/examples/pipewire/20-pipewire-pulse.conf /etc/pipewire/pipewire.conf.d/
mkdir -p /etc/alsa/conf.d
ln -sf /usr/share/alsa/alsa.conf.d/50-pipewire.conf /etc/alsa/conf.d
ln -sf /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf /etc/alsa/conf.d

ℹ️ If you’re using a window manager or you’re getting an error that says dbus isn’t running,
you need to edit the xsession .desktop file of the WM or DE that you’re using
located in /usr/share/xsessions/ and add dbus-launch to the beginning of
the Exec= line in the file in order for dbus to work properly.

Now type exit a bunch of times until you close the terminal and reboot the system.

If all went well, you should see a regular GRUB boot menu and after selecting Void Linux installed on your drive…

It works!

Logging in

And on the desktop!

And running pretty smoothly even in a VM with the QXL video card.

If the Internet is working properly, you should probably disable dhcpcd since it’s not used anymore:

1
2
3
4
5
#!/bin/bash
# Don't include comments

# Assuming you're logged in as root or use sudo
rm /etc/runit/runsvdir/default/dhcpcd

NVIDIA

One more thing before moving on to :3c-ing our perfectly clean and vanilla desktop.
If you’re using an NVIDIA GPU, you need to enable the nonfree repository in order to install the driver.

This also allows us to install Steam but not Discord (probably because Void devs and contributors don’t want to ship bulky electron apps,,,,,)

To install the driver, simply install the void-repo-nonfree package, synchronize the repos with sudo xbps-install -Su and then install the appropriate version of the driver:

  • nvidia for GTX 750 Ti (<3), 800 series and above
  • nvidia470 for 600 and 700 series
  • nvidia390 for 400 and 500 series

And then reboot your system.

If all goes well, you should be booted back into your system with NVIDIA drivers instead of Nouveau.

The :3c-ing in question (:3c)

Now it’s time to customize the desktop!

… tho this already looks good enough
personally if i was using kde instead of xfce i’d be fine with this
probably not with the light theme but even then, the kde desktop by itself with no theme change already looks really good and really nice

hmm…

:3c i love being a menace

In all seriousness though, here are some extra things you can do after installing Void.

Firewall

Uncomplicated Firewall.

Very uncomplicated, and very much a firewall. Definitely what you should be running on a computer for security.

Just install the ufw package (bonus install gufw for a GTK GUI, or plasma-firewall if you’re on KDE), enable the ufw service, then run sudo ufw enable to start it!

Steam

I’ve mentioned Steam before so i will mention it again for those who installed ‘Local’

You first enable multilib, nonfree and multilib-nonfree repositories by installing the void-repo-nonfree void-repo-multilib void-repo-multilib-nonfree packages, then sync the repos with sudo xbps-install -S, and then you can just install the steam package. I’m not entirely sure if the multilib repos are needed but just in case.

Flatpaks

Something not available in the official repos? Missing Discord? (and i know you are >:3)

Flatpaks! Probably the best thing to come out of the GNOME Foundation in my humble opinion.

They were even nice enough to put Void Linux on their setup page which has instructions on how to install and setup Flatpak with the Flathub repo.

But just so you don’t have to open another page, here are the commands you need

1
2
3
4
5
#!/bin/bash
# Don't include comments

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

Afterwards, re-login and you can start installing Flatpaks!

If you’re on GNOME, you can install gnome-software for a GUI to install Flatpaks, or if you’re on KDE, they recently (as of the writing of this post) added Discover (discover kf6-purpose), which you can use for installing Flatpaks.

You can also if you’re on KDE, install flatpak-kcm to manage permissions of each Flatpak right from the settings app! Super convenient!!!

You can also install Warehouse to manage and install Flatpaks which you can use on any desktop, even though it’s a libadwaita app.

OctoXBPS

If you don’t want to bother with opening up a terminal every time you wanna install, remove or update your system, you can install octoxbps and then add ‘OctoXBPS Notifier’ to startup applications and have a system tray that checks for system updates periodically and changes to color red when updates are available.

That is if you’re on a non-KDE based desktop, because in KDE, it appears just like every other update notification icon.

OctoXBPS GUI

Wrapping up

There are a lot more things that can be done and installed on Void. What i mentioned in this post is only just a handful of things i know. There’s also xbps-src, which is basically the distros equivalent of the AUR but more official (i think?). I didn’t cover it since i didn’t really use it that much. And even though that is the official way to get Discord up and running on the distro, i prefer to run Discord from a web browser and use the pipewire-screenshare extension to get audio screenshare working.

Void also isn’t perfect. There were a lot of issues with the distro that i’ve encountered before. For example: the Cinnamon desktop has been orphaned for some time and was a lot of versions behind the official release, and because of that you weren’t able to see wallpapers in the wallpaper settings because of a missing dependency. Even now while making this post and getting Discover running, i wasn’t able to click on any app because kf6-purpose was missing, so i had to install it manually in order for Discover to work.

But once you get everything up and running, it works and it’s great. I’d say better than Arch Linux even, and Arch is already super fast!

Once i get an AMD card, no longer do i have to suffer from issues with the NVIDIA drivers and finally use Wayland with no problems.

I hope this guide helped you and hope you enjoy using Void Linux!

please send me an email if you encounter an oddity in the guide or you hit some weird and arbitrary roadblock.

Maintained on EndeavourOS. Greetings from 🇷🇸
Built with Hugo
Theme Stack designed by Jimmy
Contact me via e-mail!

Feed of cool peeps:
OMG HAIIIIIII :33333333