#!/bin/sh # _ # ___ _ __(_) ___ ___ _ __ _ __ # / _ \ '__| |/ __/ _ \| '_ \| '__| # | __/ | | | (_| (_) | | | | | # \___|_| |_|\___\___/|_| |_|_| # # package installer for Void Linux bold=$(tput bold) normal=$(tput sgr0) print_bold() { printf "%s%s%s" "${bold}" "$1" "${normal}" } print_item() { printf -- "- %s:" "$(print_bold $1)" } nonfree() { [ -z "$NO_NONFREE" ] && echo "$@" } assemble_list() { for name in $1 do eval "echo \"\$$name\"" done } base="chrony elogind iwd wireguard-tools openresolv unbound vsv socklog-void doas font-spleen" base_desc="$(print_item base) Install base system utilities." luks="cryptsetup" luks_desc="$(print_item luks) Install support for LUKS." uefi_bundle="binutils gummiboot sbsigntool" uefi_bundle_desc="$(print_item uefi_bundle) Install tools for creating UEFI bundles." disk_tools="fscrypt udisks2" disk_tools_desc="$(print_item disk_tools) Install fscrypt and UDisks2." su_disk_tools="autofs hdparm" su_disk_tools_desc="$(print_item su_disk_tools) Install AutoFS and hdparm" refind="refind" refind_desc="$(print_item refind) Install the rEFInd boot manager." zfs="zfs zfsbootmenu zfs-auto-snapshot" zfs_desc="$(print_item zfs) Install support for ZFS." security="apparmor" security_desc="$(print_item security) Install AppArmor related packages." popcorn="PopCorn" popcorn_desc="$(print_item popcorn) Install PopCorn usage statistics." _browser="ncdu ranger fzf" _device="usbutils" _monitor="bmon htop" _net="curl wget git aerc asciinema lynx weechat" _crypto="gnupg2 outils minisign" _shell="fish-shell lolcat-c tmux xxd neovim tree-sitter-devel" _tools="bsdtar fd lowdown p7zip parallel ripgrep ugrep stow execline s6 fswatch moreutils" _boxes="toybox toybox.static busybox" _void="vsv xtools fuzzypkg graphviz" _info="man-pages-devel man-pages-posix" _fortune="cowsay fortune-mod-void" _otp="bearssl-devel oath-toolkit libargon2-devel jq" term="python3 ${_browser} ${_device} ${_monitor} ${_net} ${_crypto} ${_shell} ${_tools} ${_boxes} ${_void} ${_info} ${_fortune} ${_otp}" term_desc="$(print_item term) Install basic terminal utilities." ssh="fuse-sshfs rsync" ssh_desc="$(print_item ssh) Install SSH utilities." intel="intel-gpu-tools libva-intel-driver intel-media-driver mesa-intel-dri intel-undervolt $(nonfree intel-ucode)" intel_desc="$(print_item intel) Install packages for media decode and GPU stuff in Intel-land." nvidia="$(nonfree nvidia nvidia-opencl)" nvidia_desc="$(print_item nvidia) Install NVIDIA drivers." graphics="Vulkan-Tools clinfo mesa-demos" graphics_desc="$(print_item graphics) Install graphics stack testing tools." fonts="font-awesome5 font-fira-ttf font-ibm-plex-ttf liberation-fonts-ttf noto-fonts-ttf noto-fonts-emoji ttf-bitstream-vera font-cozette" fonts_desc="$(print_item fonts) Basic fonts necessary for browsing the web and normal GUIs." themes="breeze-snow-cursor-theme breeze-amber-cursor-theme" themes_desc="$(print_item themes) Color and mouse themes for a good color setup." _util="brightnessctl grim slurp swayidle swaylock wl-clipboard gammastep poweralertd" _gui="Waybar foot fuzzel nwg-launchers mako kanshi" wm="${_util} ${gui} wayfire wf-shell wcm wayfire-plugins-extra" wm_desc="$(print_item wm) Install Wayfire and supporting packages. Depends on fonts and themes." wayland="wf-recorder cage sway waypipe xdg-desktop-portal-wlr" wayland_desc="$(print_item wayland) Install other Wayland compositors and tools." xorg="xfce4 xorg" xorg_desc="$(print_item xorg) Install XFCE4 and Xorg." _pipewire="pipewire wireplumber libspa-bluetooth alsa-pipewire libjack-pipewire" audio="alsa-utils playerctl pulseaudio-utils pavucontrol ${_pipewire}" audio_desc="$(print_item audio) Install PipeWire and ALSA." sndio="sndio aucatctl alsa-sndio" sndio_desc="$(print_item sndio) Install sndio." media="bluez mpv mpv-mpris yt-dlp imv ImageMagick exiftool wildmidi droidcam" media_desc="$(print_item media) Install media software." spotify="spotifyd spotify-tui" spotify_desc="$(print_item spotify) Install spotify CLI programs." dev="cmake make meson ninja valgrind gdb strace extrace go github-cli" dev_desc="$(print_item dev) Install build systems, debug tools, Go." further_dev="racket zeal" further_dev_desc="$(print_item further_dev) Install references and more languages." containers="podman" containers_desc="$(print_item containers) Install Podman." emacs="emacs-gtk3 hunspell hunspell-en_US hunspell-pt_BR shellcheck zstd" emacs_desc="$(print_item emacs) Install the GUI version of Emacs." qute="qt5-wayland qutebrowser pdf.js" qute_desc="$(print_item qute) Install Qt5 for Wayland and Qutebrowser." qt5="qt5-wayland qbittorrent" qt5_desc="$(print_item qt5) Install Qt5 for Wayland and qBittorrent." mozilla="firefox thunderbird" mozilla_desc="$(print_item mozilla) Install Firefox and Thunderbird." gemini="castor lagrange python3-md2gemini" gemini_desc="$(print_item gemini) Install Gemini related software." matrix="nheko gnome-keyring" matrix_desc="$(print_item matrix) Install nheko for Matrix." office="libreoffice libreoffice-i18n-en-US libreoffice-i18n-pt-BR" office_desc="$(print_item office) Install Libreoffice." pdf="zathura zathura-pdf-poppler zathura-cb" pdf_desc="$(print_item pdf) Install Zathura." flatpak="flatpak xdg-desktop-portal xdg-desktop-portal-gtk xdg-user-dirs xdg-user-dirs-gtk xdg-utils" flatpak_desc="$(print_item flatpak) Install Flatpak and supporting packages." embedded="arduino-cli cross-arm-none-eabi cross-arm-none-eabi-gdb python3-pyserial openocd screen sdcc ugdb gef" embedded_desc="$(print_item embedded) Install embedded toolchain and programmer/debugger software." qemu="qemu proot qemu-user-static" qemu_desc="$(print_item qemu) Install QEMU, proot." kicad="kicad kicad-footprints kicad-library kicad-packages3D kicad-symbols kicad-templates" kicad_desc="$(print_item kicad) Install KiCad EDA and its resource packages." void_docs="mdBook mdbook-linkcheck pandoc vmdfmt" void_docs_desc="$(print_item void_docs) Install development tools for Void Docs." xbps_devel="zlib-devel libressl-devel libarchive-devel" xbps_devel_desc="$(print_item xbps_devel) Install development dependencies for XBPS." base_env_list="base term ssh intel fonts themes wm sndio media qute popcorn mozilla pdf emacs security su_disk_tools" base_env="$(assemble_list "$base_env_list")" base_env_desc="$(print_item base_env) $base_env_list" current_system_list="base_env_list zfs wayland uefi_bundle" current_system="$(assemble_list "$current_system_list")" current_system_desc="$(print_item current_system) $current_system_desc" all_list="$base_env_list luks uefi_bundle disk_tools refind zfs dev further_dev office flatpak embedded kicad ate void_docs xbps_devel xorg nvidia graphics qt5 audio wayland gemini containers spotify matrix" all="$(assemble_list "$all_list")" all_desc="$(print_item all) $all_list" print_all_descs() { for name in $1 do eval "echo \"\$${name}_desc\"" done } print_help () { cat </dev/null ; then $XBPS_INSTALL -S void-repo-nonfree $XBPS_INSTALL -S fi else echo "Non-free packages are disabled" fi } if [ -z "$1" ] ; then print_help else if [ "$BOOTSTRAP" ]; then $XBPS_INSTALL -S base-system else $XBPS_INSTALL -S $XBPS_INSTALL -u xbps fi check_nonfree echo "Collections: $@" for coll in "$@" do if [ -z "${coll}" ] ; then echo "$coll doesn't exist" exit fi eval "new_packages=\"\$$coll\"" packages="${packages} ${new_packages}" done packages="${packages} $ADDITIONAL_PACKAGES" echo "Packages: ${packages}" $XBPS_INSTALL $packages for coll in "$@" do if [ -r "void.sh.hooks/$coll" ] ; then command "void.sh.hooks/$coll" fi done fi