[bin] Reformat and remove snapcast from setup

This commit is contained in:
2026-02-10 16:27:51 -05:00
parent 2718248341
commit 3245d9585a

View File

@ -9,138 +9,138 @@ PLATFORM=""
# -------- OS detection -------- # -------- OS detection --------
if [[ "$OS" == "Darwin" ]]; then if [[ "$OS" == "Darwin" ]]; then
PLATFORM="macos" PLATFORM="macos"
elif [[ "$OS" == "FreeBSD" ]]; then elif [[ "$OS" == "FreeBSD" ]]; then
PLATFORM="freebsd" PLATFORM="freebsd"
elif [[ "$OS" == "Linux" ]]; then elif [[ "$OS" == "Linux" ]]; then
if [[ -r /etc/os-release ]]; then if [[ -r /etc/os-release ]]; then
# shellcheck disable=SC1091 # shellcheck disable=SC1091
. /etc/os-release . /etc/os-release
fi fi
is_arch=0 is_arch=0
case "${ID:-}" in case "${ID:-}" in
arch|endeavouros) is_arch=1 ;; arch | endeavouros) is_arch=1 ;;
esac esac
if [[ $is_arch -eq 0 && -n "${ID_LIKE:-}" ]] && echo "$ID_LIKE" | grep -qi arch; then if [[ $is_arch -eq 0 && -n "${ID_LIKE:-}" ]] && echo "$ID_LIKE" | grep -qi arch; then
is_arch=1 is_arch=1
fi fi
is_fedora=0 is_fedora=0
case "${ID:-}" in case "${ID:-}" in
fedora) is_fedora=1 ;; fedora) is_fedora=1 ;;
esac esac
if [[ $is_fedora -eq 0 && -n "${ID_LIKE:-}" ]] && echo "$ID_LIKE" | grep -qiE 'fedora|rhel'; then if [[ $is_fedora -eq 0 && -n "${ID_LIKE:-}" ]] && echo "$ID_LIKE" | grep -qiE 'fedora|rhel'; then
is_fedora=1 is_fedora=1
fi fi
if [[ $is_arch -eq 1 ]]; then if [[ $is_arch -eq 1 ]]; then
PLATFORM="arch" PLATFORM="arch"
elif [[ $is_fedora -eq 1 ]]; then elif [[ $is_fedora -eq 1 ]]; then
PLATFORM="fedora" PLATFORM="fedora"
else else
echo "Unsupported Linux distro (ID=${ID:-unknown}, ID_LIKE=${ID_LIKE:-unknown})." echo "Unsupported Linux distro (ID=${ID:-unknown}, ID_LIKE=${ID_LIKE:-unknown})."
exit 1 exit 1
fi fi
else else
echo "Unsupported OS: $OS" echo "Unsupported OS: $OS"
exit 1 exit 1
fi fi
# -------- Helpers -------- # -------- Helpers --------
install_pacman() { install_pacman() {
local pkgs=("$@") local pkgs=("$@")
log "pacman install: ${pkgs[*]}" log "pacman install: ${pkgs[*]}"
sudo pacman -Sy --needed --noconfirm "${pkgs[@]}" sudo pacman -Sy --needed --noconfirm "${pkgs[@]}"
} }
install_dnf() { install_dnf() {
local pkgs=("$@") local pkgs=("$@")
log "dnf install: ${pkgs[*]}" log "dnf install: ${pkgs[*]}"
sudo dnf install -y "${pkgs[@]}" sudo dnf install -y "${pkgs[@]}"
} }
brew_install() { brew_install() {
local pkgs=("$@") local pkgs=("$@")
log "brew install: ${pkgs[*]}" log "brew install: ${pkgs[*]}"
brew install "${pkgs[@]}" brew install "${pkgs[@]}"
} }
brew_cask() { brew_cask() {
local pkgs=("$@") local pkgs=("$@")
log "brew install --cask: ${pkgs[*]}" log "brew install --cask: ${pkgs[*]}"
brew install --cask "${pkgs[@]}" brew install --cask "${pkgs[@]}"
} }
install_pkg() { install_pkg() {
local pkgs=("$@") local pkgs=("$@")
log "pkg install: ${pkgs[*]}" log "pkg install: ${pkgs[*]}"
sudo pkg install -y "${pkgs[@]}" sudo pkg install -y "${pkgs[@]}"
} }
# Best-effort install loops (skip missing packages cleanly) # Best-effort install loops (skip missing packages cleanly)
dnf_install_best_effort() { dnf_install_best_effort() {
local pkgs=("$@") local pkgs=("$@")
for p in "${pkgs[@]}"; do for p in "${pkgs[@]}"; do
if sudo dnf info "$p" >/dev/null 2>&1; then if sudo dnf info "$p" >/dev/null 2>&1; then
install_dnf "$p" install_dnf "$p"
else else
log "Skipping (dnf not found): $p" log "Skipping (dnf not found): $p"
fi fi
done done
} }
pacman_install_best_effort() { pacman_install_best_effort() {
local pkgs=("$@") local pkgs=("$@")
for p in "${pkgs[@]}"; do for p in "${pkgs[@]}"; do
if pacman -Si "$p" >/dev/null 2>&1; then if pacman -Si "$p" >/dev/null 2>&1; then
install_pacman "$p" install_pacman "$p"
else else
log "Skipping (pacman not found): $p" log "Skipping (pacman not found): $p"
fi fi
done done
} }
pkg_install_best_effort() { pkg_install_best_effort() {
local pkgs=("$@") local pkgs=("$@")
for p in "${pkgs[@]}"; do for p in "${pkgs[@]}"; do
if pkg search -q "^${p}$" >/dev/null 2>&1; then if pkg search -q "^${p}$" >/dev/null 2>&1; then
install_pkg "$p" install_pkg "$p"
else else
log "Skipping (pkg not found): $p" log "Skipping (pkg not found): $p"
fi fi
done done
} }
aur_install_if_possible() { aur_install_if_possible() {
local pkgs=("$@") local pkgs=("$@")
if have yay; then if have yay; then
log "AUR install via yay: ${pkgs[*]}" log "AUR install via yay: ${pkgs[*]}"
yay -S --needed --noconfirm "${pkgs[@]}" yay -S --needed --noconfirm "${pkgs[@]}"
else else
log "Skipping AUR packages (yay not found): ${pkgs[*]}" log "Skipping AUR packages (yay not found): ${pkgs[*]}"
fi fi
} }
ensure_brew() { ensure_brew() {
if have brew; then return 0; fi if have brew; then return 0; fi
log "Homebrew not found; installing Homebrew..." log "Homebrew not found; installing Homebrew..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
if [[ -x /opt/homebrew/bin/brew ]]; then if [[ -x /opt/homebrew/bin/brew ]]; then
eval "$(/opt/homebrew/bin/brew shellenv)" eval "$(/opt/homebrew/bin/brew shellenv)"
elif [[ -x /usr/local/bin/brew ]]; then elif [[ -x /usr/local/bin/brew ]]; then
eval "$(/usr/local/bin/brew shellenv)" eval "$(/usr/local/bin/brew shellenv)"
fi fi
} }
ensure_flathub() { ensure_flathub() {
if ! have flatpak; then if ! have flatpak; then
log "flatpak not installed; skipping flathub apps." log "flatpak not installed; skipping flathub apps."
return 0 return 0
fi fi
log "Ensuring Flathub remote exists..." log "Ensuring Flathub remote exists..."
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
} }
# -------- Package sets (portable intent) -------- # -------- Package sets (portable intent) --------
@ -153,54 +153,55 @@ EXTRA_CLI=(fd editorconfig git)
DEV_TOOLS_LINUX=(cmake libtool make gcc gcc-c++) DEV_TOOLS_LINUX=(cmake libtool make gcc gcc-c++)
UTILS_LINUX=(gnuplot graphviz shfmt shellcheck pandoc) UTILS_LINUX=(gnuplot graphviz shfmt shellcheck pandoc)
DESKTOP_LINUX=(kitty alacritty dino syncthing snapcast) DESKTOP_LINUX=(kitty alacritty dino syncthing)
FEDORA_EXTRAS=( FEDORA_EXTRAS=(
gnome-extensions-app gnome-extensions-app
gnome-tweaks gnome-tweaks
spice-vdagent spice-vdagent
kernel-modules-extra kernel-modules-extra
pinentry-tty pinentry-tty
NetworkManager-openvpn-gnome NetworkManager-openvpn-gnome
openvpn openvpn
openvpn3-client openvpn3-client
libpq-devel libpq-devel
postgresql postgresql
pass-otp pass-otp
chromium chromium
google-chrome-stable google-chrome-stable
) )
ARCH_EXTRAS=( ARCH_EXTRAS=(
gnome-extensions-app gnome-extensions-app
gnome-tweaks gnome-tweaks
spice-vdagent spice-vdagent
linux-headers linux-headers
pinentry pinentry
networkmanager-openvpn networkmanager-openvpn
openvpn openvpn
postgresql-libs postgresql-libs
postgresql postgresql
pass-otp pass-otp
chromium chromium
snapcast
) )
MAC_BREW_PKGS=( MAC_BREW_PKGS=(
fzf direnv stow pass just fzf direnv stow pass just
fd editorconfig git fd editorconfig git
cmake libtool cmake libtool
gnuplot graphviz shfmt shellcheck pandoc gnuplot graphviz shfmt shellcheck pandoc
postgresql postgresql
syncthing syncthing
pinentry-mac pinentry-mac
) )
MAC_CASKS=( MAC_CASKS=(
kitty kitty
alacritty alacritty
slack slack
google-chrome google-chrome
chromium chromium
) )
# FreeBSD name mapping (best-effort) # FreeBSD name mapping (best-effort)
@ -213,14 +214,14 @@ MAC_CASKS=(
# - direnv exists. # - direnv exists.
FREEBSD_CORE=(fzf direnv stow just password-store) FREEBSD_CORE=(fzf direnv stow just password-store)
FREEBSD_EXTRA=(fd-find editorconfig-core-c git) FREEBSD_EXTRA=(fd-find editorconfig-core-c git)
FREEBSD_DEV=(cmake libtool gmake llvm) # gmake instead of make; llvm as a sane default toolchain FREEBSD_DEV=(cmake libtool gmake llvm) # gmake instead of make; llvm as a sane default toolchain
FREEBSD_UTILS=(gnuplot graphviz shfmt shellcheck pandoc) FREEBSD_UTILS=(gnuplot graphviz shfmt shellcheck pandoc)
FREEBSD_SECURITY=(gnupg pinentry) # helpful for pass FREEBSD_SECURITY=(gnupg pinentry) # helpful for pass
FREEBSD_MISC=(postgresql16-client syncthing) FREEBSD_MISC=(postgresql16-client syncthing)
# -------- Install per-platform -------- # -------- Install per-platform --------
case "$PLATFORM" in case "$PLATFORM" in
fedora) fedora)
log "Platform: Fedora. Refreshing + upgrading..." log "Platform: Fedora. Refreshing + upgrading..."
sudo dnf -y upgrade --refresh || true sudo dnf -y upgrade --refresh || true
@ -232,12 +233,12 @@ case "$PLATFORM" in
ensure_flathub ensure_flathub
if have flatpak; then if have flatpak; then
log "Optional: Slack via Flatpak" log "Optional: Slack via Flatpak"
sudo flatpak install -y flathub com.slack.Slack || true sudo flatpak install -y flathub com.slack.Slack || true
fi fi
;; ;;
arch) arch)
log "Platform: EndeavourOS/Arch. Updating package databases..." log "Platform: EndeavourOS/Arch. Updating package databases..."
sudo pacman -Sy --noconfirm sudo pacman -Sy --noconfirm
@ -250,7 +251,7 @@ case "$PLATFORM" in
aur_install_if_possible google-chrome slack-desktop || true aur_install_if_possible google-chrome slack-desktop || true
;; ;;
macos) macos)
log "Platform: macOS. Ensuring Homebrew..." log "Platform: macOS. Ensuring Homebrew..."
ensure_brew ensure_brew
@ -261,12 +262,12 @@ case "$PLATFORM" in
brew_cask "${MAC_CASKS[@]}" || true brew_cask "${MAC_CASKS[@]}" || true
if [[ -f "$(brew --prefix)/opt/fzf/install" ]]; then if [[ -f "$(brew --prefix)/opt/fzf/install" ]]; then
log "Tip: run fzf install helper if you want keybindings/completion:" log "Tip: run fzf install helper if you want keybindings/completion:"
echo " $(brew --prefix)/opt/fzf/install" echo " $(brew --prefix)/opt/fzf/install"
fi fi
;; ;;
freebsd) freebsd)
log "Platform: FreeBSD. Updating pkg metadata..." log "Platform: FreeBSD. Updating pkg metadata..."
sudo pkg update -f sudo pkg update -f