Quick Links
- Installation
- Network configuration - Part 1 (wpa_supplicant)
- Update the System
- Add non-free repository
- Install recommended packages
- Install development packages
- Desktop environment (GNOME)
- Enable required services
- Network configuration - Part 2 (Network Manager)
- Audio configuration (PulseAudio)
- Bluetooth configuration (BlueZ)
- Printing support configuration
- Cron configuration (cronie)
- Notebook Power Saving configuration
- Fonts installation
- Office suite (LibreOffice)
- Internet browser installation (Firefox)
- Media player (VLC)
- Backup software (Timeshift)
- Logging Daemon activation
- Profile Sync Daemon (PSD)
- Bash aliases
Optional
- Tilix (tiling terminal)
- Fzf (fuzzy finder)
- Zoxide (smarter cd command)
- Bat (cat clone with wings)
- Ripgrep (grep alternative)
- Exa (modern replacement for ‘ls’)
- Dust (intuitive version of du)
- Lazygit (git tui)
- Neovim + AstroNvim
- OctoXBPS (xbps frontend)
- VSV (Void Service Manager)
- Docker
- Flatpak
- Nix package manager
- Alternative Browser (Brave)
- Dconf Editor
- Nautilus embedded terminal
- Syncthing (peer-to-peer file synchronization)
- Sushi (Quick Look)
- Intel's Microcode
- Fonts, Theme, Icons, Cursor, Extensions, Wallpaper
Installation
Void Linux installation was done following the official guide.
Network configuration - Part 1 (wpa_supplicant)
-
Check the name of our interface:
ip a
In my case, “wlp3s0” is the name of the Wi-Fi interface.
-
Create a configuration file to connect to Wi-Fi:
sudo vi /etc/wpa_supplicant/wpa_supplicant-wlp3s0.conf
Write these lines into the file and then save it:
ctrl_interface=DIR=/run/wpa_supplicant update_config=1
-
Add the information about your wireless network to the file:
wpa_passphrase SSID PASSWORD >> /etc/wpa_supplicant/wpa_supplicant-wlp3s0.conf
-
Enable dhcpd and wpa_supplicant
sudo ln -s /etc/sv/dhcpcd /var/service sudo ln -s /etc/sv/wpa_supplicant /var/service sudo sv up dhcpcd sudo sv up wpa_supplicant
-
Run this last command:
wpa_supplicant -B -i wlp1s0 -c /etc/wpa_supplicant/wpa_supplicant-wlp3s0.conf
To check your connection run:
ping google.com
Update the System
sudo xbps-install -Suv
Add non-free repository
sudo xbps-install -Rs void-repo-nonfree
Install recommended packages
sudo xbps-install curl wget git xz unzip zip nano vim gptfdisk xtools mtools mlocate ntfs-3g fuse-exfat bash-completion linux-headers gtksourceview4 ffmpeg mesa-vdpau mesa-vaapi htop
Install development packages
sudo xbps-install autoconf automake bison m4 make libtool flex meson ninja optipng sassc
Desktop environment (GNOME)
-
Install the X Window System:
sudo xbps-install xorg
-
Install desktop environment:
sudo xbps-install gnome
-
Install display manager
sudo xbps-install gdm
Enable gdm service:
sudo ln -s /etc/sv/gdm /var/service
-
Install xdg utilites:
sudo xbps-install -Rs xdg-desktop-portal xdg-desktop-portal-gtk xdg-user-dirs xdg-user-dirs-gtk xdg-utils
-
Install gnome-browser-connector (prevously known as chrome-gnome-shell):
sudo xbps-install gnome-browser-connector
Enable required services
-
Install dbus:
sudo xbps-install -y dbus
Enable dbus service:
sudo ln -s /etc/sv/dbus /var/service
-
Install elogind:
sudo xbps-install -y elogind
Enable elogind service:
sudo ln -s /etc/sv/elogind /var/service
Network configuration - Part 2 (Network Manager)
-
Install Network Manager:
sudo xbps-install NetworkManager NetworkManager-openvpn NetworkManager-openconnect NetworkManager-vpnc NetworkManager-l2tp
-
Enable Network Manager service:
sudo ln -sv /etc/sv/NetworkManager /var/service
Before enabling the NetworkManager daemon, disable any other network management services, such as dhcpcd, wpa_supplicant.
Audio configuration
-
Install PulseAudio:
sudo xbps-install pulseaudio pulseaudio-utils pulsemixer alsa-plugins-pulseaudio
Had some issues with pipewire, maybe will give a try in the future...
Bluetooth configuration
-
Install BlueZ:
sudo xbps-install bluez
-
Enable Bluetooth service:
sudo ln -sv /etc/sv/bluetoothd /var/service
-
Add user to the group:
sudo useradd -G bluetooth ${USER}
Printing support configuration
-
Install CUPS:
sudo xbps-install cups cups-pk-helper cups-filters foomatic-db foomatic-db-engine
-
Enable CUPS service:
sudo ln -sv /etc/sv/cupsd /var/service
Optional:
-
Epson Printer:
sudo xbps-install -Rs epson-inkjet-printer-escpr imagescan iscan-data
-
HP Printer:
sudo xbps-install -Rs hplip-gui
-
Canon Printer:
sudo xbps-install -Rs cnijfilter2
-
Brother Printer:
sudo xbps-install -Rs brother-brlaser # SANE scanner driver for brscan3-compatible Brother scanners sudo xbps-install brother-brscan3 # SANE scanner driver for brscan4-compatible printers sudo xbps-install brother-brscan4 # CUPS wrapper driver for the brother DCP-197C printer/scanner sudo xbps-install brother-dcp197c-cupswrapper # LPR driver for the brother DCP-197C printer/scanner sudo xbps-install brother-dcp197c-lpr
Cron configuration
-
Install cronie:
sudo xbps-install -y cronie
-
Enable cronie service:
sudo ln -sv /etc/sv/cronie /var/service
Notebook Power Saving configuration
-
Install TLP and PowerTop:
sudo xbps-install tlp tlp-rdw powertop
-
Enable TLP service:
sudo ln -sv /etc/sv/tlp /var/service
Fonts installation
-
Install Noto fonts:
sudo xbps-install -Rs noto-fonts-emoji noto-fonts-ttf noto-fonts-ttf-extra
-
Install microsoft fonts:
git clone https://github.com/void-linux/void-packages cd void-packages ./xbps-src binary-bootstrap echo "XBPS_ALLOW_RESTRICTED=yes" >> etc/conf
Installation:
./xbps-src pkg -f msttcorefonts xi msttcorefonts
Office suite
-
Install LibreOffice:
sudo xbps-install libreoffice-writer libreoffice-calc libreoffice-impress libreoffice-draw libreoffice-math libreoffice-base libreoffice-gnome libreoffice-i18n-en-US
Internet browser installation
-
Install Firefox:
sudo xbps-install firefox firefox-i18n-en-US
-
Set better font for firefox:
sudo ln -s /usr/share/fontconfig/conf.avail/70-no-bitmaps.conf /etc/fonts/conf.d/ sudo xbps-reconfigure -f fontconfig
Media player
-
Install VLC Media Player:
sudo xbps-install vlc
Backup software
-
Install Timeshift:
sudo xbps-install timeshift
Logging Daemon activation
-
By default, Void comes with no logging daemon:
sudo xbps-install -Rs socklog-void sudo ln -s /etc/sv/socklog-unix /var/service/ sudo ln -s /etc/sv/nanoklogd /var/service/
Profile Sync Daemon (PSD)
-
PSD is a service that symlinks & syncs browser profile directories to RAM, thus reducing HDD/SSD calls & speeding up browsers. You can get it from here. This helps Firefox & Chromium reduce ram usage.
git clone https://github.com/madand/runit-services cd runit-services sudo mv psd /etc/sv/ sudo ln -s /etc/sv/psd /var/service/ sudo chmod +x etc/sv/psd/*
Bash aliases
-
Create bash aliases:
sudo nano ~/.bash_aliases
-
Add this script:
alias xu='sudo xbps-install xbps && sudo xbps-install -Suv' alias xin='sudo xbps-install' alias xr='sudo xbps-remove -Rcon' alias xl='xbps-query -l' alias xf='xl | grep' alias xs='xbps-query -Rs' alias xd='xbps-query -x' alias clrk='sudo vkpurge rm all && sudo rm -rf /var/cache/xbps/*' alias halt='sudo halt' alias poweroff='sudo poweroff' alias reboot='sudo reboot' alias shutdown='sudo shutdown'
-
Open bash config file:
sudo nano ~/.bashrc
-
Add this line:
if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases; fi
-
In the end:
source ~/.bashrc
Optional
Tilix
-
Tiling terminal emulator
sudo xbps-install tilix
-
To use in quake mode (wayland not supported), create custom shortcut and add this command:
tilix --quake
Fzf
-
A command-line fuzzy finder
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install
Zoxide
-
zoxide is a smarter cd command, inspired by z and autojump:
sudo xbps-install -S zoxide
-
Add this to your configuration (usually ~/.bashrc):
eval "$(zoxide init bash)"
Bat
-
A cat(1) clone with wings:
sudo xbps-install -Su bat
-
Add alias to the previously create bash_aliases file:
alias cat='bat'
Ripgrep
-
Grep alternative:
sudo xbps-install -Su ripgrep
-
Add alias to the previously create bash_aliases file:
alias grep='rg'
Exa
-
A modern replacement for ‘ls’:
sudo xbps-install -Su exa
-
Add alias to the previously create bash_aliases file:
alias ls='exa --icons'
Dust
-
A more intuitive version of du in rust:
sudo xbps-install -Su dust
-
Add alias to the previously create bash_aliases file:
alias du='dust'
Lazygit
-
Simple terminal UI for git commands:
sudo xbps-install -Su lazygit
Neovim + AstroNvim
-
Install Neovim:
sudo xbps-install -Su neovim
-
Install AstroNvim:
git clone https://github.com/AstroNvim/AstroNvim ~/.config/nvim nvim +PackerSync
OctoXBPS
-
XBPS front end
sudo xbps-install -S octoxbps
VSV
-
Manage and view runit services:
sudo xbps-install vsv
Docker
-
Install docker:
sudo xbps-install -Su docker
-
Enable required services:
sudo ln -s /etc/sv/containerd /var/service sudo ln -s /etc/sv/docker /var/service
-
Add user to group:
sudo groupadd docker sudo usermod -aG docker ${USER}
-
Set respective permissions:
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R sudo chmod g+rwx "$HOME/.docker" -R
Flatpak
-
Install Flatpak:
sudo xbps-install -S flatpak
-
Add the Flathub repository:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Restart.
Nix package manager
-
Install Nix:
sudo xbps-install -Sy nix
-
Activate Nix Daemon:
sudo ln -s /etc/sv/nix-daemon /var/service/ source /etc/profile
-
Add channels:
# Unstable nix-channel --add https://nixos.org/channels/nixpkgs-unstable unstable # NixOS 22.05 nix-channel --add https://nixos.org/channels/nixos-22.05 nixpkgs # Update channels nix-channel --update # List channels nix-channel --list
-
To see installed applications in the launcher create a symlink to Nix applications directory:
sudo ln -s "$HOME/.nix-profile/share/applications" "$HOME/.local/share/applications/nix-env"
Alternative Browser (Brave)
-
Install Brave browser using nix:
nix-env -iA nixpkgs.brave
Dconf Editor
-
Applications internal settings viewer and editor:
sudo xbps-install dconf-editor
Nautilus embedded terminal
-
Install dependencies:
sudo xbps-install python3 python3-pip python3-psutil
-
Install Nautilus Terminal:
sudo xbps-install nautilus-python
-
Check that the extension is properly installed:
nautilus-terminal --check python3 -m nautilus_terminal --check
-
If everything is OK, the output should be:
Nautilus Python: Installed Nautilus Terminal Extension: Installed
-
To edit extension configs run:
dconf-editor /org/flozz/nautilus-terminal
Syncthing
-
Install Syncthing:
sudo xbps-install -Rs syncthing
-
Starting Syncthing automatically when system starts:
sudo cp /usr/share/applications/syncthing-start.desktop ~/.config/autostart/
Gnome Sushi
-
File previewer for the GNOME desktop (macOS Quick Look):
sudo xbps-install -Rs sushi
Intel's Microcode
-
Install Intel's Microcode:
sudo xbps-install -Rs intel-ucode
-
Reconfigure your kernel, according your kernel name:
sudo xbps-reconfigure -f linux<kernel_version>
To find your Linux kernel version, you can use
sudo xbps-query -l | grep linux
Fonts, Theme, Icons, Cursor, Extensions, Wallpaper
System Fonts:
- Interface Text: Inter Regular
- Document Text: Inter Regular
- Monospace Text: JetBrains Mono Regular
- Legacy Window Titles: Inter Medium
Terminal Font: ShureTechMono Nerd Font Mono Regular
Prompt Theme Engine: Oh My Posh
Theme: Fluent GTK Theme (use --icon void
flag to replace Activities with Void icon)
Icons: Fluent Icon Theme (color Grey)
Cursor: Borealis Cursors
Wallpaper: VOID LINUX
Extensions:
- AppIndicator and KStatusNotifierItem Support
- Bluetooth Quick Connect
-
Clipboard History or Pano - Clipboard Manager (Dependencies:
sudo xbps-install libgda gsound
) - Color Picker
- Dash to Dock
- Disconnect Wifi
- Easy Docker Containers
- Espresso
- Frippery Move Clock
- Mute/Unmute
- No Overview at Startup
- Notification Banner Position
- Printers
- Resource Monitor
- Sound Output Device Chooser
- Status Area Horizontal Spacing
- Syncthing Icon
- Tiling Assistant
- Toggle Night Light
- Top Panel Workspace Scroll
- Transparent Window Moving
- Tweaks & Extensions in System Menu
- User Themes
- Window Is Ready - Notification Remover
Oldest comments (5)
Created account just to like this. Thank you for this guide!
I love VoidLinux, but prefer xfce. One thing that for me worth mentioning is the void-packages repository on GitHub that allows you to comfortably create your own packages in a secure, simple and repeatable way. This makes VoidLinux as hackable as Gentoo, without breaking the comfort of binary packages and the freshness of a rolling releases distro.
Also, you might find some of the packages in pull requests of that repo that are otherwise unavailable. I myself have a PR for lapce open, a fast rust-based IDE in early development, though mostly usable.
I also prefer xfce as de just was curious how void will go with gnome.
Maybe I will add void-packages part later to the article thanks for the suggestion.
This post is essential to all people installing Gnome on Void Linux. Super easy to follow and perfectly divided per sections
Joined just to thank you for this effort. Works like a charm. Void + Gnome = Woohoo