116 lines
3.4 KiB
Bash
Executable File
116 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PACKAGES_FILE="$SCRIPT_DIR/packages.txt"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Read packages.txt, split into pacman / aur / npm sections.
|
|
# ---------------------------------------------------------------------------
|
|
read_packages() {
|
|
local section="pacman"
|
|
local current
|
|
current=""
|
|
while IFS= read -r line || [[ -n "$line" ]]; do
|
|
current="${line%%#*}"
|
|
current="${current##*( )}"
|
|
current="${current%%*( )}"
|
|
[[ -z "$current" ]] && continue
|
|
case "$current" in
|
|
@pacman) section="pacman" ;;
|
|
@aur) section="aur" ;;
|
|
@npm) section="npm" ;;
|
|
*)
|
|
case "$section" in
|
|
pacman) pacman_pkgs+=("$current") ;;
|
|
aur) aur_pkgs+=("$current") ;;
|
|
npm) npm_pkgs+=("$current") ;;
|
|
esac
|
|
;;
|
|
esac
|
|
done < "$PACKAGES_FILE"
|
|
}
|
|
|
|
declare -a pacman_pkgs=() aur_pkgs=() npm_pkgs=()
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Install sections.
|
|
# ---------------------------------------------------------------------------
|
|
install_pacman() {
|
|
if ((${#pacman_pkgs[@]})); then
|
|
echo "==> Installiere Pacman-Pakete: ${pacman_pkgs[*]}"
|
|
yay -S --needed "${pacman_pkgs[@]}"
|
|
fi
|
|
}
|
|
|
|
install_aur() {
|
|
if ((${#aur_pkgs[@]})); then
|
|
echo "==> Installiere AUR-Pakete: ${aur_pkgs[*]}"
|
|
yay -S --needed "${aur_pkgs[@]}"
|
|
fi
|
|
}
|
|
|
|
install_npm() {
|
|
if ((${#npm_pkgs[@]})); then
|
|
echo "==> Installiere globale npm-Pakete: ${npm_pkgs[*]}"
|
|
npm install -g "${npm_pkgs[@]}"
|
|
fi
|
|
}
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Post-install configuration.
|
|
# ---------------------------------------------------------------------------
|
|
set_fish_default_shell() {
|
|
if command -v fish >/dev/null 2>&1; then
|
|
if [[ "$SHELL" != "/usr/bin/fish" ]]; then
|
|
echo "Setze fish als Standard-Shell ..."
|
|
chsh -s /usr/bin/fish
|
|
else
|
|
echo "fish ist bereits die Standard-Shell."
|
|
fi
|
|
else
|
|
echo "Warnung: fish wurde nicht installiert; ueberspringe chsh."
|
|
fi
|
|
}
|
|
|
|
install_tmuxifier() {
|
|
if [[ -d "$HOME/.tmuxifier" ]]; then
|
|
echo "tmuxifier bereits installiert; fahre fort."
|
|
else
|
|
echo "Klone tmuxifier ..."
|
|
git clone https://github.com/jimeh/tmuxifier.git "$HOME/.tmuxifier"
|
|
fi
|
|
}
|
|
|
|
add_yazi_git_plugin() {
|
|
if command -v yazi >/dev/null 2>&1 && command -v ya >/dev/null 2>&1; then
|
|
echo "Fuege yazi git-Plugin hinzu ..."
|
|
ya pkg add yazi-rs/plugins:git
|
|
fi
|
|
}
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Main
|
|
# ---------------------------------------------------------------------------
|
|
main() {
|
|
# Hinweis: multilib, yay und das System-Update werden von
|
|
# basic/setup.sh uebernommen (laeuft vor term im Makefile).
|
|
echo "==> Lese Paketliste: $PACKAGES_FILE"
|
|
read_packages
|
|
|
|
install_pacman
|
|
install_aur
|
|
install_npm
|
|
|
|
set_fish_default_shell
|
|
install_tmuxifier
|
|
add_yazi_git_plugin
|
|
|
|
echo "==> Aktualisiere locate-Datenbank ..."
|
|
sudo updatedb
|
|
|
|
echo "Fertig. Starte ein neues Terminal, damit fish und die Umgebung greifen."
|
|
}
|
|
|
|
main
|