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