Up.
This commit is contained in:
@@ -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 "$@"
|
||||
131
scripts/utils.sh
131
scripts/utils.sh
@@ -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."
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user