Choosing Void Linux
Notes on installing Void Linux
I've now been using Void for a bit over a month. I really enjoy it and want to convert my last Ubuntu computer to Void. I'm going to wait another few weeks, just to confirm stability, and then make the full switch, but mostly I think it'll just be fine. But Void isn't a simple works-out-of-the-box install, so this is a document of my own work in order to be able to reproduce it.
Below are my notes and a collection of useful snippets. To be honest, I don't feel confident this is a 'final' level of configuration. Maybe a first step. For example, I didn't try to set up a printer, bluetooth, and the like, and I want to try some machine learning work to later on with the machine. At the end of this post I'll link to some info on others' more extensive post-install scripts and guides.
In general, I like Void because it's fast, minimal, and gets out of your way. If I need more functionality or programs, I can install it within seconds usually. I've found almost all my usual packages are available via Void's main and non-free repositories. For the occasional program that's not, I've been able to install dependencies and install and compile downloaded programs to run, or just run the provided binary, or use xdeb to repackage debian packages for void.
All that said, I've had the occasional bug pop up. Occasionally, I'll turn on my computer and the wifi isn't working. Has happened maybe 3 times. In those cases I had to restart and things then worked fine. No idea why. Currently, setting up the clock to sync correctly must be done manually. Setting up audio must be done manually. That seems bizarre to me and everyone else I've seen review Void, except for the Void maintainers who always push back saying that they need to maintain a balance between minimalism and bloated or preconfigured software. Fair enough, I hear that, I just can't understand the lack of fully working sound or clock. Having said that, this point was made in a friendly manner, as a difference of opinion. I think these two things just working would make this a friendlier distro to those trying it out, but in the scheme of things I figured it out.
By the way, anytime I've had a bug I couldn't quite solve I found that posting to the voidlinux subreddit would quickly get responses from the community or the Void developer team. I'm not a reddit user other than this, so was annoyed I had to sign up but in general in every case the community has been able to quickly help me solve the problem and I've found they are mostly very friendly and responsive. They want to encourage more people to find success with the distro.
I wrote about this in a previous post. Through a combo of laziness, simplification and 'who cares' I've decided not to memorize the random-seeming xbps programs and flags and instead just use the intuitive vpm program which is a wrapper around xbps package manager programs.
sudo xbps-install -S vpm
Thereafter installing something is as simple as
sudo vpm install package
Occasionally I'll run autoremove to clean out old package dependencies off my hard drive from packages I may have removed.
sudo vpm autoremove
In the commands below, feel free to modify vpm to xbps-install if you desire.
Void does not come with default file manager beyond the command line. Many folks recommend and use Thunar but I like the Gnome file manager/viewer much better than thunar. It's styled simpler, less visual clutter. Its old name was Nautilus and they're in the process of renaming it to just "Files" I believe, but the install name is nautilus. If you use dmenu to launch programs, you'll launch it with the word nautilus. If you use ulancher (which is the launcher i've installed), then it can be found via typing Files in the ulauncher search.
sudo vpm install nautilus
If you have previous experience or want to try thunar, you can install that. For CLI file managers I use nnn, fff and lf occasionally.
Many folks have complained about how audio is not setup automatically in Void. I agree, it's a little annoying. I explained in a previous post how I got audio working on Void. With the below command I can add audio to the system tray, but there still isn't a volume mixer in the status bar. Instead it just opens up pulse audio and I can manually set the volume in the settings. Setting alsa in the runit services does a minor thing: maintains volume level across system restarts.
sudo vpm install pavucontrol xfce4-pulseaudio-plugin sudo ln -s /etc/sv/alsa /var/service
Reboot after. Note if you are using alsa without pulseaudio then you need to install alsa-utils and volumeicon instead.
Launch from dmenu with pavucontrol or in ulauncher it's called Pulse Audio Volume Controller.
Audio problems for noobs (Reddit)
I think this is a weird one. To be honest, I don't understand why the clock isn't set to 'just work' on Void correctly, though potentially this is a recent issue for Void as I don't see many questions about it in the past. Basically, randomly I would turn on my computer and the clock wasn't correct, either off by several hours, or an hour ahead, so I needed to sync the clock manually. The hardware clock varies by computer but is usually set as UTC. In software you need to specify your timezone, which is an offset from this hardware clock. You can do this with a symlink or by manually setting the TIMEZONE="America/New_York" or your locale in the rc.conf. But then you also need to use NTP to set proper time. I read that NTP is buggy and there were alternatives, so following a brief tutorial on Reddit I installed chrony and ended up using that. At least so far, this has worked well for me.
sudo vpm install chrony sudo ln -s /etc/sv/chronyd /var/service
Tutorial: How to sync the time on Void Linux (Reddit)
I'm using i3 window manager which includes dmenu application launcher in its default. Dmenu is minimal and can be configured by adding patches and recompiling. I didn't want to mess with that. I prefer 'good defaults' in lots of my software, which is why I use fish shell instead of Bash for example. After using Regolith Linux, an i3-based distribution on Ubuntu with gorgeous defaults, I was spoiled by the beautiful app launcher ilia, which itself is inspired by rofi. I tried rofi. I thought it was okay but didn't want to configure it. I then came across ulauncher. I found it worked really well with great defaults out of the box. I type Ctrl-Space and ulauncher opens and I start typing the name of a program and it opens. I still have dmenu installed simultaneously (Mod+D) but I haven't been using it.
sudo vpm install ulauncher
After installing ulauncher I had to add it to my i3 config to start on boot.
# ~/.config/i3/config exec --no-startup-id ulauncher
There is a minor bug that after login the ulauncher prompt opens and I have to hit escape. I couldn't figure out a way to get it to launch in the background and close on i3, but I gave up as 'it's good enough.' This is an i3-related issue I believe.
There are a few i3 window manager tweaks I like to add to my i3 config file, but that isn't specific to Void, so I won't post about that here. The key things I set in i3 are setting a workspace background image, setting Dvorak keyboard, remapping Caps Lock to Escape, having volume up and volume down buttons.
Not everything is available in the Void repos. You can install another package manager and library like flatpak or nix. You can also build packages from source. Or you can use xbps-src. Here's yet one more option: xdeb.
xdeb is a "simple utility to convert deb(ian) packages to xbps packages." I wanted to, for example, download and run rogue, the original roguelike. But I couldn't seem to find all the dependencies, and get them to work in the right combination. So I was frustrated. Using xdeb it was a matter of a minute to install.
Unfortunately, Void's maintainers don't want to add it to the nonfree packages repo but thankfully there are straightforward fast ways to install xdeb on your system explained on its github page. I'll link to it below, as it gives a few options.
I wanted xdeb to be able to run everywhere, so I moved it to /usr/local/bin so it would be available everywhere. After I used xdeb to package rogue I then moved rogue to my /usr/games folder so that would be available everywhere.
As mentioned, I think my post-install tweaks may just be a first step. There are many other Void Linux post-install suggestions and scripts online. Below I'll link to a couple that I think are worth perusing:
bastomiadi's post-installation notes (github gist)
CTZxVULKAN's post-installation notes (github)
If you have any other Void tips or tutorials you recommend checking out, I'd be open to hearing that.---
To leave a comment email lettuce at the current domain and put comment in the subject line and the name of the post you're referencing. Be sure to list the name you'd like listed publicly as well.