dotfiles/install/lib/packages.sh

73 lines
2 KiB
Bash

#!/bin/bash
# apt: system base + GUI apps from vendor repos (WezTerm, Brave Beta).
# All CLI tools come from Homebrew (lib/brew.sh) so they stay current.
APT_PACKAGES=(
# Login shell (system-level so chsh can point at /usr/bin/zsh)
zsh
# Core plumbing + Homebrew prerequisites
git
curl
wget
ca-certificates
gnupg
build-essential
procps
file
unzip
xz-utils
# Mason prerequisites for Python and Lua packages
python3
python3-pip
python3-venv
luarocks
# Wayland clipboard (Pop!_OS Cosmic is Wayland-native)
wl-clipboard
# fc-cache / fc-list for the Nerd Font install (lib/fonts.sh)
fontconfig
)
install_apt_packages() {
apt_update_once
info "Installing apt packages (${#APT_PACKAGES[@]} packages)..."
apt_install "${APT_PACKAGES[@]}"
}
install_wezterm() {
if command -v wezterm >/dev/null 2>&1; then
info "WezTerm already installed"
return
fi
add_apt_repo wezterm-fury \
https://apt.fury.io/wez/gpg.key \
"deb [signed-by=$KEYRINGS_DIR/wezterm-fury.gpg] https://apt.fury.io/wez/ * *" \
"0CA603116C960BAFB2BF310BD7BA31CF90C4B319 82FA179A44D70EEF9CDEB52659C703F427E1A6C9"
apt_update_once
apt_install wezterm
}
install_brave_beta() {
if command -v brave-browser-beta >/dev/null 2>&1; then
info "Brave Beta already installed"
return
fi
# Brave's Beta channel is signed with its own key (C3DE1DD4F661CDCB),
# NOT the stable keyring — the keyring file in the beta bucket includes
# "beta" in the name.
add_apt_repo brave-browser-beta \
https://brave-browser-apt-beta.s3.brave.com/brave-browser-beta-archive-keyring.gpg \
"deb [signed-by=$KEYRINGS_DIR/brave-browser-beta.gpg arch=amd64] https://brave-browser-apt-beta.s3.brave.com/ stable main" \
"56F49901AB19BAF099A95A76C3DE1DD4F661CDCB 8C1F16AB24DF8F75C1CF56595929A141E0E87F1F B721E073B7EF8E56ACC6B23ECBC67D2399225CCF"
apt_update_once
apt_install brave-browser-beta
}
install_all_packages() {
install_apt_packages
install_wezterm
install_brave_beta
}