Manjaro Linux has been the default Linux install on the Belkast laptops and, over the last few years, it has been a very stable operating system. It has very rarely had an issue, with OS and package updates always working as intended. Many packages have been installed via the AUR (Arch User Repository), and these have worked well too.
Recently, however, the number of Manjaro packages installed from the AUR was getting unwieldy, and I am never really 100% comfortable installing packages that are not fully supported by the OS maintainer.
Over the last few weeks I have been watching YouTube videos about VOID Linux, and it got me thinking. Could I also switch to VOID Linux?
VOID Linux uses runit for managing system services and, after watching all those videos, it certainly appears that it is a system that is easier to understand. Additionally, because systemd is not used, VOID Linux appears to use less system resources. VOID Linux would be perfect for my Acer Chromebook, I thought, and therefore I started with that laptop. Described below is my experience so far.
Prepare to Install
I downloaded the x64 glibc base ISO image from the VOID website.Once the ISO had finished downloading, I wrote the image to a USB stick, which I then proceeded to boot my laptop from.
At the initial command prompt, I entered a username of root and a password of voidlinux.
Installation
The installation is ncurses based and, except for the partitioning section, it is easy to understand and follow. To run the installer, I entered void-installer at the command prompt, and pressed enter.Partitioning
If you decide to do a UEFI install, make sure the efi partition has at least 256MB. This will be mounted at /boot/efi.I made the boot partition 1GB on my Dell 7490 so it can hold a few kernel revisions. The partition on my Chromebook is a bit small; my mistake!
The partition scheme I chose was the GUID Partition Table GPT. The only thing you need to ensure, when using this partition table type, is that the first partition has the bios_grub flag.
I decided to set the size of the /boot partition to 350 MB, as this partition will hold the system Linux kernels. A size of 350 MB ensures that three kernels can be accommodated comfortably.
The configuration for the first two VOID Linux partitions in a GPT scheme are shown in the table below.
Size | Filesystem | Flag | Mount |
5 MB | BIOS boot or ef02 | bios_grub | None |
350 MB | vfat | None | /boot |
Setup
Change default repository
The VOID Linux repositories contain the majority of packages that you would ever want (or need) to install. For everything else, there is flatpak. One of the first things I did was to change the location of the default repository, since the repository that is configured during installation is located in Germany. Therefore I changed the repository to mirror.clarkson.edu/voidlinux/current/, which is located in the United States.
Add three additional repositories:
void-repo-multilib-6_4
void-repo-multilib-nonfree-6_4
void-repo-nonfree-9_6
System Services
The first thing I did was to install the system services that I would need. On the Acer laptop, I found that wpa_supplicant was not stable at all. I therefore installed iwd, which proved to be very stable. I removed wpa_supplicant and configured iwd to start at system boot using sudo ln -s /etc/sv/iwd /var/services/. On a MacBook, wpa_supplicant worked very well, so this configuration step was not required.
I ran in to an issue with the NetworkManager service on a Dell 7490, so make sure the default services match those starting in /var/service.
Linked Location: /etc/sv/cronie/
Package to Install: cronie
Linked Location: /etc/sv/elogind/
Package to Install: elogind
Linked Location: /etc/sv/iwd/
Package to Install: iwd
Linked Location: /etc/sv/lxdm/
Package to Install: lxdm
Linked Location: /etc/sv/netmount/
Package to Install: sv-netmount
Linked Location: /etc/sv/ntpd/
Package to Install: ntp
pipewire
Packages
The list below shows some of the additional packages that I installed on the VOID Linux system. Of course not everything is available, Proton Bridge is one application that I could not install, but I think I can do without reading email on every single laptop that I own (in addition to my phone).
Repository: VOID
Type: Core Tools
Repository: VOID
Type: Core Tools
Repository: VOID
Description: The sv-netmount application allows you to install the netmount service which enables you to mount network filesystems on system boot, and I use this to mount two samba shares on my WDCloud NAS drive. One I use for music, and one I use for backing up my data.
Repository: VOID
Description: I use mpd to handle pyradio and local music, with the local music being accessed via a LAN symbolic link in my Music directory. The Acer Chromebook does not have a very powerful GPU, and therefore it cannot handle 4k video downloaded from YouTube. To watch my YouTube subscriptions, I have written a BASH script that uses yt-dlp to stream the video from YouTube. My ~/.config/mpv/mpv.conf file is shown below.
ao=pulse
ytdl-format="bestvideo[height<=?1080]+bestaudio/best"
[pyradio]
volume=100
Repository: VOID
Description: i3-gaps is a Desktop Environment, and lxdm is a display login manager
Repository: VOID
Description: Image and PDF processing
Repository: VOID
Type: Terminal Apps
Repository: VOID
Type: System Tools
Repository: Not in a repository
Description: An extension for rofi which consists of two files that should be copied in to /usr/lib/rofi/: blezz.la and blezz.so Download:: The two new files are included in the blezz.zip file
Repository: VOID
Description: Add some bling to your VOID Linux desktop with fancy icons
Repository: VOID
Type: I use nextcloud as my cloud backup provider, and the files are stored on a Belkast server hosted by Contabo.
Repository: VOID
Type: Office Application
Repository: VOID
Type: Web Browser
Repository: Flatpak
Type: Web Browser
Repository: Flatpak
Type: Business Application
Repository: Flatpak
Type: Password Manager
Other things
MacBook
I had to add the following lines to the /etc/rc.local file:
modprobe -r usbmouse modprobe -r bcm5974 modprobe bcm5974
Enpass
To use enpass, you need to install it as a flatpak and then edit the flatpak config file to allow access to the local filesystem; otherwise it will not save any of the configured vaults.
[Desktop Entry]
Version=1.0
Type=Application
Name=Enpass
GenericName=Enpass Password manager
Icon=io.enpass.Enpass
Terminal=false
Exec=/usr/bin/flatpak run --branch=stable --arch=x86_64 --filesystem=host --command=enpass --file-forwarding io.enpass.Enpass @@u %U @@
MimeType=x-scheme-handler/enpassauth;x-scheme-handler/enpasscard;x-scheme-handler/enpassstart;x-scheme-handler/enpass;x-scheme-handler/cloudkit-7adb8cc6tf.in.sinew.walletx;application/enpasscard;
Categories=Utility
X-Flatpak-Tags=proprietary;
X-Flatpak=io.enpass.Enpass
runit
Make sure the configured services are also in the default run level.
The directory to check is /etc/runit/runsvdir/default.
acpid ⇒ /etc/sv/acpid
agetty-tty1 ⇒ /etc/sv/agetty-tty1
agetty-tty2 ⇒ /etc/sv/agetty-tty2
agetty-tty3 ⇒ /etc/sv/agetty-tty3
agetty-tty4 ⇒ /etc/sv/agetty-tty4
agetty-tty5 ⇒ /etc/sv/agetty-tty5
agetty-tty6 ⇒ /etc/sv/agetty-tty6
cronie ⇒ /etc/sv/cronie/
dbus ⇒ /etc/sv/dbus
elogind ⇒ /etc/sv/elogind/
iwd ⇒ /etc/sv/iwd
libvirtd ⇒ /etc/sv/libvirtd
lxdm ⇒ /etc/sv/lxdm/
mpd ⇒ /etc/sv/mpd
netmount ⇒ /etc/sv/netmount/
NetworkManager ⇒ /etc/sv/NetworkManager
ntpd ⇒ /etc/sv/ntpd
polkitd ⇒ /etc/sv/polkitd
sshd ⇒ /etc/sv/sshd
tailscaled ⇒ /etc/sv/tailscaled
tlp ⇒ /etc/sv/tlp/
udevd ⇒ /etc/sv/udevd
virtlockd ⇒ /etc/sv/virtlockd
virtlogd ⇒ /etc/sv/virtlogd
Virtual Machines
sudo usermod -a -G libvirt,kvm karmst
Installed Packages List
After installing the base VOID OS, I installed the following packages.
arc-theme-20221218_1
brightnessctl-0.5.1_1
cifs-utils-6.15_1
castero-0.9.5_3
chrony-4.5_2
cifs-utils-6.15_1
cronie-1.7.2_1
cryptsetup-2.7.5_2
curl-8.9.1_1
dejavu-fonts-ttf-2.37_2
dmenu-5.3_1
dunst-1.11.0_1
elogind-252.9_2
exa-0.19.1_1
eza-0.19.1_1
fastfetch-2.37.0_1
feh-3.10.3_1
firefox-129.0_1
flatpak-1.15.10_1
focuswriter-1.8.10_1
font-awesome-4.7.0_3
font-hack-ttf-3.003_2
font-weather-icons-2.0.10_2
fonts-roboto-ttf-2.138_3
fwupd-2.0.3_1
fzf-0.60.2_1
gdu-5.29.0_2
git-2.48.1_1
gnome-keyring-46.2_1
gnupg-2.4.5_1
gocryptfs-2.4.0_2
htop-3.3.0_1
i3-4.23_1
i3-gaps-4.23_1
i3lock-color-2.13.c.4_1
i3status-2.15_1
intellij-idea-community-edition-2024.3.1.1_1
iwd-2.19_1
jgmenu-4.4.1_1
jq-1.7.1_1
kitty-0.36.1_1
kvantum-1.0.10_1
libreoffice-24.2.5.1_1
lsd-1.1.5_2
lxdm-0.5.3_5
maim-5.7.4_7
mc-4.8.31_1
meld-3.22.3_1
mlocate-0.26_7
mpc-0.35_1
mpd-0.23.15_3
mpv-0.38.0_3
mupdf-1.24.9_1
nano-8.1_1
ncmpcpp-0.9.2_11
nerd-fonts-ttf-3.2.1_1
netcat-0.7.1_7
network-manager-applet-1.36.0_1
NetworkManager-1.48.8_1
newsboat-2.36_1
nextcloud-client-3.13.1_1
noto-fonts-emoji-2.042_1
noto-fonts-ttf-24.8.1_2
noto-fonts-ttf-extra-24.8.1_2
ntfs-3g-2022.10.3_1
ntp-4.2.8p15_7
openjdk11-11.0.25+5_1
pass-1.7.4_3
pass-otp-1.2.0_2
pavucontrol-6.1_1
picom-11.2_1
pinentry-1.3.1_1
pinentry-dmenu-0.2.3_1
pinentry-gtk-1.3.1_1
pipewire-1.2.2_1
plocate-1.1.22_1
polkit-124_1
polkit-qt5-0.200.0_1
polybar-3.7.2_1
protonmail-bridge-3.12.0_2
protonvpn-cli-2.2.12_1
pulseaudio-16.1_2
pulseaudio-utils-16.1_2
putty-0.81_1
pyradio-0.9.3.9_1
qalculate-5.2.0_1
qtpass-1.3.2_1
qpdf-11.6.4_1
qt5ct-1.7_1
qemu-9.0.2_1
qutebrowser-3.2.1_1
rclone-1.67.0_2
rofi-1.7.5_1
rofi-calc-2.2.1_1
rofi-emoji-3.3.0_1
rofi-pass-2.0.2_1
rsync-3.3.0_1
screenkey-1.5_3
source-sans-pro-3.046_1
starship-1.20.1_1
sublime-text4-4189_1
sv-netmount-0.1_3
sxhkd-0.6.2_1
tailscale-1.72.1_1
thunderbird-115.12.2_1
tilda-1.5.4_1
tint2-17.0.2_1
tldr-1.0.0.alpha_5
tlp-1.6.1_1
ttf-material-icons-4.0.0_2
ttf-opensans-3.001_1
ttf-ubuntu-font-family-0.83_3
unicode-emoji-14.0_1
unzip-6.0_15
variety-0.8.12_2
viewnior-1.8_2
vifm-0.13_1
vim-9.1.0772_2
virt-manager-4.1.0_3
void-repo-multilib-6_4
void-repo-multilib-nonfree-6_4
void-repo-nonfree-9_6
vscode-1.91.1_1
wget-1.24.5_1
wireplumber-0.5.5_1
xauth-1.1.3_1
xdotool-3.20211022.1_1
xdpyinfo-1.3.4_2
xinput-1.6.4_1
xmlstarlet-1.6.1_2
xorg-fonts-7.6_5
xorg-input-drivers-7.6_4
xorg-minimal-1.2_2
xorg-video-drivers-7.6_23
xournalpp-1.2.3_1
xrandr-1.5.3_1
xrdb-1.2.2_1
xsetroot-1.1.3_1
xwallpaper-0.7.4_1
xwininfo-1.1.6_1
yewtube-2.10.5_2
yt-dlp-2024.08.06_1
zip-3.0_6
zsh-5.9_3
zsh-autosuggestions-0.7.0_1
zsh-completions-0.35.0_2
Copy blezz files from backup
Copy warp (wd) from backup
Import GPG keys (keys.asc)
Make sure pinenty is configured correctly
Generate goCryptFS configuration file
wget -q https://raw.githubusercontent.com/ivan-hc/AM/main/AM-INSTALLER && chmod a+x ./AM-INSTALLER && ./AM-INSTALLER
*/15 * * * * /home/karmst/scripts/iPlayer/bbc_update.sh >/dev/null 2>&1
perl-Mojolicious
perl-HTML-Parser
perl-HTTP-Cookies
perl-LWP
perl-XML-LibXML
perl-LWP-Protocol-https
Add the following to /etc/environment:
QT_QPA_PLATFORMTHEME=qt5ct
QT_STYLE_OVERRIDE=kvantum