1
0
This commit is contained in:
Jeff LANCE
2024-08-03 17:21:54 +02:00
parent f5f003e605
commit 66980f428f
9 changed files with 244 additions and 270 deletions

View File

@@ -4,38 +4,112 @@
. ${CHEZMOI_WORKING_TREE}/scripts/utils.sh
# Packages to install
packages=(
bubblewrap
curl
fzf
pass
libyaml
ranger
tmux
trash-cli
ueberzug
unzip
wget
zip
zoxide
)
# usage
usage() {
printf "\nUsage:\n"
echo " --base Install base pacakges"
echo " --nvim Install deps for NeoVim"
echo " --zsh Install deps for zsh"
echo " --latex Install deps for latex"
}
# packages to install
install_base() {
packages=(
bubblewrap
curl
fzf
pass
libyaml
ranger
tmux
trash-cli
ueberzug
unzip
wget
zip
zoxide
)
}
## Update system
inf "updating system..."
sudo pacman -Syu --noconfirm --quiet
install_nvim() {
packages+=(
neovim
python-pip
python-pynvim
ripgrep
)
}
## Install yay
if [ ! $(command -v yay) ]; then
install_binary "yay"
install_zsh() {
packages+=(
zsh
)
}
install_latex() {
packages+=(
texlive-basic
texlive-latex
texlive-latexrecommended
texlive-latexextra
texlive-fontsrecommended
texlive-fontsextre
texlive-luatex
texlive-mathscience
texlive-lang
)
}
# cli options
BASE=false
NVIM=false
ZSH=false
LATEX=false
if [ "$#" -eq 0 ]; then
usage
exit 1
fi
## Install packages
for package in ${packages[@]}; do
if [ "$(yay -Qq $package 2> /dev/null)" != $package ]; then
install_binary $package "yay"
else
inf "${package} already installed."
fi
while [ "$#" -gt 0 ]; do
case "$1" in
--base) BASE=true ;;
--nvim) NVIM=true ;;
--zsh) ZSH=true ;;
--latex) LATEX=true ;;
*)
usage
exit 1
;;
esac
shift
done
main() {
"$BASE" && install_base
"$NVIM" && install_nvim
"$ZSH" && install_zsh
"$LATEX" && install_latex
## Update system
update_system
## Install yay
if [ ! $(command -v yay) ]; then
install_binary "yay"
fi
## Install packages
for package in ${packages[@]}; do
if [ "$(yay -Qq $package 2> /dev/null)" != $package ]; then
install_binary $package "yay"
else
inf "${package} already installed."
fi
done
exit 0
}
main "$@"

View File

@@ -13,9 +13,24 @@ err() {
printf "$(tput setaf 9)$(tput bold)>>>>> %s ! <<<<<$(tput sgr0)\n" "$1"
}
# Function to determine the package manager if not specified
determine_package_manager() {
if [ command -v apt-get &>/dev/null ]; then
echo "apt"
elif [ command -v pamac &>/dev/null ]; then
echo "pamac"
elif [ command -v yay &>/dev/null ]; then
echo "yay"
elif [ command -v pacman &>/dev/null ]; then
echo "pacman"
else
err "No supported package manager found."
exit 1
fi
}
# Simple abstraction to install a binary using a supported package manager
install_binary() {
##
# Simple abstraction to install a binary using a supported package manager
# Example usage:
# install_binary "fzf"
# install_binary "fzf" "dnf"
@@ -23,61 +38,89 @@ install_binary() {
local package_name="${1}"
local package_manager="${2}"
# Function to determine the package manager if not specified
determine_package_manager() {
if [ command -v apt-get &>/dev/null ]; then
echo "apt-get"
elif [ command -v pamac &>/dev/null ]; then
echo "pamac"
elif [ command -v yay &>/dev/null ]; then
echo "yay"
elif [ command -v pacman &>/dev/null ]; then
echo "pacman"
else
err "No supported package manager found."
# If the package manager is not specified, determine it
if [[ -z "${package_manager}" ]]; then
package_manager=$(determine_package_manager)
fi
# Install the package using the determined or specified package manager
inf "installing ${package_name} using ${package_manager}..."
case "${package_manager}" in
apt)
sudo apt-get install --yes --no-install-recommends --ignore-missing --fix-broken -qq "${package_name}" || {
err "Installation failed."
exit 1
}
;;
pacman)
sudo pacman -S --needed --noconfirm --quiet "${package_name}" || {
err "Installation failed."
exit 1
}
;;
pamac)
sudo pamac --no-confirm "${package_name}" || {
err "Installation failed."
exit 1
}
;;
yay)
yay -S --noconfirm --removemake --quiet "${package_name}" || {
err "Installation failed."
exit 1
}
;;
*)
err "Unsupported package manager: ${package_manager}"
exit 1
fi
}
;;
esac
inf "installation of ${package_name} completed successfully."
}
update_system() {
local package_manager="${1}"
# If the package manager is not specified, determine it
if [[ -z "${package_manager}" ]]; then
package_manager=$(determine_package_manager)
fi
# Install the package using the determined or specified package manager
inf "installing ${package_name} using ${package_manager}..."
# Install the package using the determined or specified package manager
inf "updating system using ${package_manager}..."
case "${package_manager}" in
apt-get)
sudo apt-get install --yes --no-install-recommends --ignore-missing --fix-broken -qq "${package_name}" || {
err "Installation failed."
exit 1
}
apt)
sudo -E apt update -qq && sudo -E apt upgrade --yes -qq || {
err "Installation failed."
exit 1
}
;;
pacman)
sudo pacman -S --needed --noconfirm --quiet "${package_name}" || {
err "Installation failed."
exit 1
}
pacman)
sudo pacman -Syu --noconfirm --removemake --quiet || {
err "Installation failed."
exit 1
}
;;
pamac)
sudo pamac --no-confirm "${package_name}" || {
err "Installation failed."
exit 1
}
pamac)
sudo pamac update --aur --no-confirm && sudo pamac upgrade --aur --no-confirm || {
err "Installation failed."
exit 1
}
;;
yay)
yay -S --noconfirm --removemake --quiet "${package_name}" || {
err "Installation failed."
exit 1
}
yay)
yay -Syu --noconfirm --removemake --quiet || {
err "Installation failed."
exit 1
}
;;
*)
err "Unsupported package manager: ${package_manager}"
exit 1
*)
err "Unsupported package manager: ${package_manager}"
exit 1
;;
esac
inf "installation of ${package_name} completed successfully."
inf "system update completed successfully."
}