#!/usr/bin/env bash # ─< Check if the given command exists silently >───────────────────────────────────────── command_exists() { command -v "$@" >/dev/null 2>&1 } getImports() { 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__() { echo_note "__pre_stow__" conf="$HOME/.config" bak_dir="$HOME/.bak" dirs=( "btop" "gBar" "yazi" "fastfetch" "hypr" "tmux" "kitty" "neovide" "rofi" "waybar" "wlogout" "wob" "zellij" ) pen yellow "Trying to clean the environment.." if [ ! -d "$bak_dir" ]; then repen yellow "backup dir created at $bak_dir" && silentexec mkdir "$bak_dir" else pen bold yellow "Backup dir already present, clearing now" && rm -rf "${bak_dir:?}/*" fi for _dirs in "${dirs[@]}"; do if [ -d "$conf/$_dirs" ]; then repen moved $_dirs mv -f "$conf/$_dirs" "$bak_dir" fi done h_files=( ".zshrc" ".zshenv" ".wezterm.lua" ) for _f in "${h_files[@]}"; do if [ -f "$HOME/$_f" ]; then repen 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 repen 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 askMultiPlexer "Choose a menu" tmux zellij none >"$HOME/.monitors.conf" fi } pkg_optional() { _ops=( "cowsay" "cmatrix" "trash-cli" ) case "$_ops" in Y | y) for _o_ in "${_ops[@]}"; do if command_exists "$_o_"; then echo_note "$_o_ - is already installed" else echo_info "Installing $_o_" _install "$_o_" fi done ;; *) echo default ;; esac } __stow__() { stow --verbose --target="$HOME" --defer=.gitmodules --restow */ } main() { check_root get_packager __validate__ __dep__ if ! command_exists stow; then echo_error "we couldn't find stow on the machine, do you want us to install it? (y/n): " read -r ask_stow case "$ask_stow" in Y | y) _install stow ;; *) echo_error "You cannot proceed without installing stow! Please install manually" exit 1 ;; esac else echo_info "stow was found, going on to prepare to stow your config" sleep 0.3 fi __pre_stow__ __stow__ sleep 2 [ "$__optional__" = "true" ] && pkg_optional __monitors__ echo_note "found resolution ${res}" } if getImports "https://git.k4li.de/scripts/imports/raw/branch/main/distros.sh" && getImports "https://git.k4li.de/scripts/beddu/raw/branch/main/dist/beddu.sh"; then main fi