install.sh: add logging

This commit is contained in:
krolxon 2026-01-01 13:45:31 +05:30
parent 923c012199
commit 16cc31b947
4 changed files with 74 additions and 51 deletions

View File

@ -6,35 +6,35 @@ font=JetBrains Mono Nerd Font:size=12
[colors] [colors]
alpha=0.85 alpha=0.85
cursor=11111b f5e0dc #cursor=11111b f5e0dc
foreground=cdd6f4 #foreground=cdd6f4
background=1e1e2e #background=1e1e2e
#
regular0=45475a #regular0=45475a
regular1=f38ba8 #regular1=f38ba8
regular2=a6e3a1 #regular2=a6e3a1
regular3=f9e2af #regular3=f9e2af
regular4=89b4fa #regular4=89b4fa
regular5=f5c2e7 #regular5=f5c2e7
regular6=94e2d5 #regular6=94e2d5
regular7=bac2de #regular7=bac2de
#
bright0=585b70 #bright0=585b70
bright1=f38ba8 #bright1=f38ba8
bright2=a6e3a1 #bright2=a6e3a1
bright3=f9e2af #bright3=f9e2af
bright4=89b4fa #bright4=89b4fa
bright5=f5c2e7 #bright5=f5c2e7
bright6=94e2d5 #bright6=94e2d5
bright7=a6adc8 #bright7=a6adc8
16=fab387 #16=fab387
17=f5e0dc #17=f5e0dc
selection-foreground=cdd6f4 #selection-foreground=cdd6f4
selection-background=414356 #selection-background=414356
search-box-no-match=11111b f38ba8 #search-box-no-match=11111b f38ba8
search-box-match=cdd6f4 313244 #search-box-match=cdd6f4 313244
jump-labels=11111b fab387 #jump-labels=11111b fab387
urls=89b4fa #urls=89b4fa
[key-bindings] [key-bindings]
search-start=Control+Shift+f search-start=Control+Shift+f

View File

@ -71,4 +71,4 @@ source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
# Load pywal colors # Load pywal colors
(cat ~/.cache/wal/sequences &) # (cat ~/.cache/wal/sequences &)

View File

@ -1,23 +1,42 @@
#!/bin/env bash #!/bin/env bash
log() {
local level="$1"
shift
case "$level" in
INFO) color='\033[0;32m' ;;
WARN) color='\033[0;33m' ;;
ERROR) color='\033[0;31m' ;;
*) color='\033[0m' ;;
esac
printf '%b[%s] [%s]%b %s\n' \
"$color" "$(date '+%H:%M:%S')" "$level" '\033[0m' "$*"
}
currentDir="$(dirname "$(readlink -f "$0")")" currentDir="$(dirname "$(readlink -f "$0")")"
cd "$currentDir" cd "$currentDir"
## Install necessary desktop packages ## Install necessary desktop packages
source "$currentDir/packages/pkg_desktop.sh" source "$currentDir/packages/pkg_desktop.sh"
source "$currentDir/packages/pkg_utils.sh" source "$currentDir/packages/pkg_utils.sh"
log INFO "Starting Script"
log INFO "Installing necessary packages for hyprland"
sudo pacman -Sy --needed "${pkg_desktop[@]}" "${pkg_utils[@]}" sudo pacman -Sy --needed "${pkg_desktop[@]}" "${pkg_utils[@]}"
## Install dev tools ## Install dev tools
read -rp "Do you wish to install development tools? [y/N]" install_dev_tools read -rp "Do you wish to install development tools? [y/N]" install_dev_tools
source "$currentDir/packages/pkg_dev_tools.sh"
if [[ $install_dev_tools == y ]]; then if [[ $install_dev_tools == y ]]; then
log INFO "Installing development tools"
source "$currentDir/packages/pkg_dev_tools.sh"
sudo pacman -S --needed "${pkg_dev_tools[@]}" sudo pacman -S --needed "${pkg_dev_tools[@]}"
fi fi
## Install optional packages ## Install optional packages
read -rp "Do you wish to install optional packages? [y/N]" install_optional_pkg read -rp "Do you wish to install optional packages? [y/N]" install_optional_pkg
if [[ $install_optional_pkg == y ]]; then if [[ $install_optional_pkg == y ]]; then
log INFO "Installing development tools"
source "$currentDir/packages/pkg_optional.sh" source "$currentDir/packages/pkg_optional.sh"
sudo pacman -S --needed "${pkg_optional[@]}" sudo pacman -S --needed "${pkg_optional[@]}"
fi fi
@ -25,6 +44,7 @@ fi
## Install nvidia drivers ## Install nvidia drivers
read -rp "Do you wish to install Nvidia drivers? [y/N]" install_nvidia_drivers read -rp "Do you wish to install Nvidia drivers? [y/N]" install_nvidia_drivers
if [[ $install_nvidia_drivers == y ]]; then if [[ $install_nvidia_drivers == y ]]; then
log INFO "Installing Nvidia Drivers"
source "$currentDir/packages/pkg_nvidia.sh" source "$currentDir/packages/pkg_nvidia.sh"
sudo pacman -S --needed "${pkg_nvidia[@]}" sudo pacman -S --needed "${pkg_nvidia[@]}"
fi fi
@ -35,14 +55,14 @@ read -rp "Do you wish to install aur packages? [y/N]" install_aur_pkg
if [[ $install_aur_pkg == y ]]; then if [[ $install_aur_pkg == y ]]; then
## Install paru if it isn't already installed ## Install paru if it isn't already installed
if ! command -v paru >/dev/null 2>&1; then if ! command -v paru >/dev/null 2>&1; then
echo "Installing paru..." log INFO "Installing Paru (AUR package manager)"
git clone https://aur.archlinux.org/paru-bin.git git clone https://aur.archlinux.org/paru-bin.git
cd paru-bin cd paru-bin
makepkg -sri makepkg -sri
cd .. cd ..
rm -rf paru-bin rm -rf paru-bin
else else
echo "Skipping paru (already in PATH)" log INFO "Skipping paru (already in PATH)"
fi fi
## Install aur packages ## Install aur packages
source "$currentDir/packages/pkg_aur.sh" source "$currentDir/packages/pkg_aur.sh"
@ -51,20 +71,21 @@ fi
## Setup dotfiles ## Setup dotfiles
echo "⚠️ WARNING: This will DELETE any conflicting files and replace them with symlinks from this repo." log WARN "⚠️ This will DELETE any conflicting files and replace them with symlinks from this repo."
echo "Make sure you have already backed up all your existing config files (~/.config)" log WARN "Make sure you have already backed up all your existing config files (~/.config)"
read -rp "Continue with stow (y/N): " confirm read -rp "Continue with stow (y/N): " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then if [[ "$confirm" =~ ^[Yy]$ ]]; then
echo "Detecting conflicts..." log INFO "Detecting conflicts..."
conflicts=$(stow . --no-folding -nv 2>&1 | \ conflicts=$(stow . --no-folding -nv 2>&1 | \
sed -n 's/.*existing target \(.*\) since neither.*/\1/p') sed -n 's/.*existing target \(.*\) since neither.*/\1/p')
if [[ -z "$conflicts" ]]; then if [[ -z "$conflicts" ]]; then
echo "No conflicts. Running stow normally..." log INFO "No conflicts. Running stow normally..."
stow . --no-folding stow . --no-folding \
echo "✅ Done." && log INFO "Dotfiles stowed successfully" \
|| log ERROR "Stow failed"
else else
echo "These paths conflict and will be removed:" log WARN "These paths conflict and will be removed:"
printf ' %s\n' $conflicts printf ' %s\n' $conflicts
read -rp "Proceed with deleting these files? (y/N): " ok read -rp "Proceed with deleting these files? (y/N): " ok
if [[ ! "$ok" =~ ^[Yy]$ ]]; then if [[ ! "$ok" =~ ^[Yy]$ ]]; then
@ -73,23 +94,23 @@ if [[ "$confirm" =~ ^[Yy]$ ]]; then
# Remove conflicts relative to $HOME # Remove conflicts relative to $HOME
for path in $conflicts; do for path in $conflicts; do
echo "Removing $HOME/$path" rm -rf "$HOME/$path" && log INFO "Removed $HOME/$path"
rm -rf "$HOME/$path"
done done
echo "Running stow..." log INFO "Running stow..."
stow . --no-folding stow . --no-folding \
echo "✅ Dotfiles stowed with overwrite." && log INFO "✅ Dotfiles stowed with overwrite." \
|| log ERROR "Stow failed"
fi fi
else else
echo "Aborted stow" log WARN "Aborted stow, the dotfiles are not synced"
fi fi
## Setup neovim dotfiles ## Setup neovim dotfiles
read -rp "Clone neovim dotfiles as well? (y/N): " confirm read -rp "Clone neovim dotfiles as well? (y/N): " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then if [[ "$confirm" =~ ^[Yy]$ ]]; then
echo "Taking backup of neovim config (if already exists)" log INFO "Taking backup of neovim config (if already exists)"
mv ~/.config/nvim{,.bak} mv ~/.config/nvim{,.bak}
mv ~/.local/share/nvim{,.bak} mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak} mv ~/.local/state/nvim{,.bak}
@ -98,17 +119,19 @@ if [[ "$confirm" =~ ^[Yy]$ ]]; then
fi fi
## Change default shell to zsh ## Change default shell to zsh
log INFO "Changing the default shell to ZSH"
if [[ "$SHELL" != "$(which zsh)" ]]; then if [[ "$SHELL" != "$(which zsh)" ]]; then
read -rp "Change default shell to ZSH? (y/N): " confirm read -rp "Change default shell to ZSH? (y/N): " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then if [[ "$confirm" =~ ^[Yy]$ ]]; then
echo "Changing default shell to zsh..." chsh -s $(which zsh) \
chsh -s $(which zsh) && log INFO "Default shell successfully set to zsh" \
|| log ERROR "Default shell could not be set to zsh"
fi fi
else else
echo "Skipping: zsh is already the default shell" log INFO "Skipping: zsh is already the default shell"
fi fi
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
echo "" echo ""
echo "Done! 😊" log INFO "Done! 😊"