#!/usr/bin/env bash # ─< Check if the given command exists silently >───────────────────────────────────────── command_exists() { command -v "$@" >/dev/null 2>&1 } source-script() { local url="$1" local import="$(mktemp)" if command_exists curl; then curl -fsSL $url -o $import elif command_exists wget; then wget -O $import $url else echo "curl/wget is required, but missing.." exit 69 fi source "$import" sleep 0.2 rm "$import" echo "imported $url" } __pre_stow__() { pen blue "Getting things ready.." sleep 2 conf="$HOME/.config" bak_dir="$HOME/.bak" dirs=( "btop" "gBar" "fastfetch" "foot" "hypr" "tmux" "kitty" "neovide" "rofi" "tofi" "waybar" "wlogout" "wob" "yazi" "zellij" ) if [ ! -d "$bak_dir" ]; then pen grey "backup dir created at $bak_dir" && silentexec mkdir "$bak_dir" else pen bold grey "Backup dir already present, clearing now" && rm -rf "${bak_dir:?}/*" fi for _dirs in "${dirs[@]}"; do if [ -d "$conf/$_dirs" ]; then pen grey "moved $_dirs" mv -f "$conf/$_dirs" "$bak_dir" fi done h_files=( ".zshrc" ".zshenv" ".bashrc" ".bash_alias" ".wezterm.lua" ) for _f in "${h_files[@]}"; do if [ -f "$HOME/$_f" ]; then pen "moved $_f" mv -f "$HOME/$_f" "$bak_dir" && echo_info "Moved $_f to $bak_dir" fi done for _d in ".zsh .tmux .fzf"; do if [ -d "$HOME/$_d" ]; then pen "moved $_d" mv -f "$HOME/$_d" "$bak_dir" && echo_info "Moved $_d to $bak_dir" fi done } askThings() { if [ ! -d ./dotfiles/.config/tmux/ ] && [ ! -d ./dotfiles/.config/zellij/ ]; then choose plexer "Choose a menu" tmux zellij none >"$HOME/.monitors.conf" else echo "monitor = preferred,, 0x0, 1" >>"$HOME/.monitors.conf" fi fi } pkg_optional() { _ops=( "cowsay" "cmatrix" "trash-cli" ) for pkg in "${_opts[@]}"; do spin "Installing $pkg" if ! command_exists $pkg; then run pkg-install $pkg && check "$pkg installed" || throw "Error installing $pkg" fi done } __stow__() { local err spin grey "Linking dotfiles.." run --err err stow --verbose --target="$HOME" --defer=.gitmodules --restow */ && check "Linked dotfiles!" || throw "Could not use stow to link dofiles.." && echo_error "${err:-}" } c_fonts() { local err local dirFonts="$HOME/.local/share/fonts/" if [[ ! -d "$dirFonts" ]]; then if choose "Seems like you may miss some fonts.. Do you want to clone them now into $(pen blue bold $HOME/.local/share/fonts)" ──────────────────────────────────────────────────────────────────────── if [[ ! -f $HOME/.config/ ]]; then pen grey "mkdir $HOME/.config" silentexec mkdir $HOME/.config fi if [[ ! -f $HOME/.local/share/icons/ ]]; then pen grey "mkdir -p $HOME/.local/share/icons/" silentexec mkdir -p $HOME/.local/share/icons/ fi c_fonts c_wallpapers } setup-env() { local beddu=https://git.k4li.de/scripts/beddu/raw/branch/main/dist/beddu.sh local pika=https://git.k4li.de/scripts/imports/raw/branch/main/distros.sh if ! command_exists pkg-install && ! command_exists checkAndInstall; then source-script $pika fi if ! command_exists pen && ! command_exists spin; then source-script $beddu fi } main() { local err # check_root # get_packager __validate__ __dep__ mkdirs if ! command_exists stow; then if confirm "We couldn't find stow on the machine, do you want us to install it?"; then line spin grey "Installing stow now.." if run --err err pkg-install stow; then check "Stow was installed correctly!" else check "Error while installing stow!" echo_error "${err:-}" fi else pen red bold "You cannot proceed without installing stow! Please install manually" exit 1 fi else pen blue "Stow was found, going on to prepare to stow your config" sleep 0.3 fi __pre_stow__ __stow__ sleep 2 if $__optional__; then pkg_optional fi __monitors__ pen blue bold "found resolution ${res}" } if setup-env; then main fi