Void Linux Post-Installation Script for Wayland
June 19, 2025 · View on GitHub
#!/bin/sh
Void Linux Post-Installation Script for Wayland
Author: Speyll
Last-update: 20-03-2025
Enable debugging output and exit on error
set -x
Add multilib and nonfree repositories
sudo xbps-install -Sy void-repo-nonfree
Update package lists and upgrade existing packages
sudo xbps-install -Syu
Install GPU drivers
install_gpu_driver() { gpu_driver="" case "gpu_driver; do [ -n "pkg" ] && sudo xbps-install -y "pkg" done }
install_gpu_driver
Install CPU microcode updates
if lspci | grep -q 'Intel'; then sudo xbps-install -y intel-ucode sudo xbps-reconfigure -f linux-$(uname -r) fi
Install other packages
install_core_packages() {
for pkg in git tmux wayland dbus dbus-glib curl elogind polkit polkit-gnome chrony
xdg-utils xdg-desktop-portal-gtk xdg-desktop-portal-gnome xdg-desktop-portal-wlr xdg-desktop-portal
pipewire gstreamer1-pipewire libspa-bluetooth rtkit pavucontrol wlr-randr
noto-fonts-emoji noto-fonts-cjk-sans noto-fonts-ttf nerd-fonts-symbols-ttf
grim slurp wl-clipboard cliphist wvkbd
swayimg imv swaybg mpv mpvpaper ffmpeg yt-dlp
fnott libnotify
yazi unzip p7zip unrar xz pcmanfm-qt ffmpegthumbnailer webp-pixbuf-loader tumbler lxqt-archiver gvfs-smb gvfs-afc gvfs-mtp udisks2
flavours breeze-gtk breeze-snow-cursor-theme breeze-icons
qt5-wayland bluez
labwc neovim foot Waybar wlsunset fuzzel brightnessctl bash-completion; do
sudo xbps-install -y "pkg"
done
}
install_networking_packages() { for pkg in fuse-sshfs lynx rsync wireguard; do sudo xbps-install -y "$pkg" done }
install_flatpak_packages() { sudo xbps-install -y flatpak flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo flatpak install flathub io.gitlab.librewolf-community flatpak install flathub com.github.tchx84.Flatseal flatpak install org.gtk.Gtk3theme.Adwaita-dark
System scope
sudo flatpak override --system
--filesystem=xdg-config/gtk-3.0:ro
--filesystem=xdg-config/gtk-4.0:ro
--filesystem=xdg-data/icons:ro
--filesystem=~/.local/share/themes
--filesystem=xdg-data/themes:ro
User scope
flatpak override --user
--device=dri
--env=ICON_THEME=Kaela-Kovalskia-v2
--env=GTK_THEME=Adwaita-dark
--env=GNOME_THEME=prefer-dark
--env=_JAVA_OPTIONS=-Dawt.useSystemAAFontSettings=on
--filesystem=/.icons:ro /.local/share/icons:ro
}
--filesystem=xdg-config/fontconfig:ro
--filesystem=
install_flatpak_gaming() { flatpak install flathub com.usebottles.bottles flatpak install flathub org.freedesktop.Platform.VulkanLayer.MangoHud flatpak install flathub org.freedesktop.Platform.VulkanLayer.gamescope flatpak install flathub com.valvesoftware.Steam.CompatibilityTool.Proton-GE flatpak install flathub com.obsproject.Studio.Plugin.OBSVkCapture flatpak install flathub org.freedesktop.Platform.VulkanLayer.OBSVkCapture }
install_gaming_packages() {
for pkg in void-repo-multilib-nonfree
libgcc-32bit libstdc++-32bit libdrm-32bit libglvnd-32bit wine wine-mono gamemode MangoHud gamescope; do
sudo xbps-install -y "USER
}
!IMPORTANT! here you can select what gets installed and what not by commenting
install_core_packages install_networking_packages install_flatpak_packages #install_flatpak_gaming #install_gaming_packages
Set up PipeWire
sudo ln -s /usr/share/applications/pipewire.desktop /etc/xdg/autostart/pipewire.desktop sudo mkdir -p /etc/alsa/conf.d sudo ln -s /usr/share/alsa/alsa.conf.d/50-pipewire.conf /etc/alsa/conf.d sudo ln -s /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf /etc/alsa/conf.d
Set up bluetooth autostart
sudo ln -s /etc/sv/bluetoothd /var/service/
Set up chrony
sudo ln -s /etc/sv/chronyd /var/service/
Set up polkitd
sudo ln -s /etc/sv/polkitd /var/service/
Set up rtkit
sudo ln -s /etc/sv/rtkit /var/service/
Remove unused services (TTYs)
for tty in 3 4 5 6; do sudo rm -rf /var/service/agetty-tty"$tty" done
Set up ACPI
sudo ln -s /etc/sv/acpid/ /var/service/ sudo sv enable acpid sudo sv start acpid
Improve font rendering
for conf in 11-lcdfilter-default.conf 10-sub-pixel-rgb.conf 10-hinting-slight.conf; do sudo ln -s /etc/fonts/conf.avail/"$conf" /etc/fonts/conf.d done
Set up NetworkManager
sudo xbps-install -Sy NetworkManager dbus if sudo sv status wpa_supplicant >/dev/null 2>&1; then sudo sv stop wpa_supplicant fi
sudo rm -rf /var/services/wpa_supplicant 2>/dev/null sudo ln -s /etc/sv/dbus /var/service sudo ln -s /etc/sv/NetworkManager /var/service sudo sv start NetworkManager
Clone and set up dotfiles
git clone https://github.com/speyll/dotfiles "HOME/dotfiles/."* "HOME/dotfiles"
chmod -R +X "HOME/.local/share/applications" "HOME/.config/autostart/" # Adjust permissions ln -s "HOME/.config/mimeapps.list" "HOME/.local/share/applications/" # Create symbolic link for mimeapps.list dash "HOME/.local/share/fonts/git-fonts.sh" # Run the font installation script dash "$HOME/.local/share/icons/git-cursors.sh" # Run the cursors installation script
Add user to wheel group for sudo access
echo "%sudo ALL=(ALL:ALL) NOPASSWD: /usr/bin/halt, /usr/bin/poweroff, /usr/bin/reboot, /usr/bin/shutdown, /usr/bin/zzz, /usr/bin/ZZZ" | sudo tee -a /etc/sudoers.d/wheel