diff --git a/config/.gitconfig b/config/.gitconfig new file mode 100644 index 0000000..c43bb9d --- /dev/null +++ b/config/.gitconfig @@ -0,0 +1,4 @@ +[interactive] + diffFilter = diff-so-fancy --patch +[pull] + rebase = false diff --git a/config/zsh/.zshrc b/config/zsh/.zshrc index 7dd3da5..7aba112 100644 --- a/config/zsh/.zshrc +++ b/config/zsh/.zshrc @@ -17,6 +17,28 @@ utils_dir="${XDG_CONFIG_HOME}/utils" # If not running interactively, don't do anything [[ $- != *i* ]] && return +# MacOS-specific services +if [ "$(uname -s)" = "Darwin" ]; then + # Add Brew to path, if it's installed + if [[ -d /opt/homebrew/bin ]]; then + export PATH=/opt/homebrew/bin:$PATH + fi + + # If using iTerm, import the shell integration if availible + if [[ -f "${XDG_CONFIG_HOME}/zsh/.iterm2_shell_integration.zsh" ]]; then + source "${XDG_CONFIG_HOME}/zsh/.iterm2_shell_integration.zsh" + fi + + # Append the Android SDK locations to path + if [[ -d "${HOME}/Library/Android/" ]]; then + export PATH="${HOME}/Library/Android/sdk/emulator:${PATH}" + export ANDROID_HOME="${HOME}/Library/Android/sdk" + export ANDROID_SDK_ROOT="${HOME}/Library/Android/sdk" + export ANDROID_AVD_HOME="${ANDROID_SDK_ROOT}/tools/emulator" + export NODE_BINARY="/usr/local/bin/node" + fi +fi + # Source all ZSH config files (if present) if [[ -d $zsh_dir ]]; then # Import alias files diff --git a/config/zsh/aliases/node-js.zsh b/config/zsh/aliases/node-js.zsh index 456b758..00e59fb 100644 --- a/config/zsh/aliases/node-js.zsh +++ b/config/zsh/aliases/node-js.zsh @@ -69,9 +69,13 @@ alias yarn-nuke='reinstall_modules' # Prints out versions of core Node.js packages print_node_versions () { versions='' + format_verion_number () { + echo "$($1 --version 2>&1 | head -n 1 | sed 's/[^0-9.]*//g')" + } + get_version () { if hash $1 2> /dev/null || command -v $1 >/dev/null; then - versions="$versions\e[36m\e[1m $2: \033[0m$($1 --version)\n\033[0m" + versions="$versions\e[36m\e[1m $2: \033[0m$(format_verion_number $1) \n\033[0m" else versions="$versions\e[33m\e[1m $2: \033[0m\033[3m Not installed\n\033[0m" fi @@ -84,6 +88,11 @@ print_node_versions () { get_version 'npm' 'NPM' get_version 'yarn' 'Yarn' get_version 'nvm' 'NVM' + get_version 'ni' 'ni' + get_version 'pnpm' 'pnpm' + get_version 'tsc' 'TypeScript' + get_version 'bun' 'Bun' + get_version 'deno' 'Deno' get_version 'git' 'Git' echo -e $versions } diff --git a/scripts/installs/Brewfile b/scripts/installs/Brewfile index e768492..202e04a 100644 --- a/scripts/installs/Brewfile +++ b/scripts/installs/Brewfile @@ -23,6 +23,7 @@ tap 'browsh-org/homebrew-browsh' tap 'espanso/espanso' tap 'jesseduffield/lazygit' tap 'koekeishiya/formulae' +tap 'kdash-rs/kdash' ############################################################# # Command Line # @@ -66,6 +67,7 @@ brew 'zoxide' # Auto-learning navigation (better cd) # CLI Monitoring and Performance Apps brew 'bmon' # Bandwidth utilization monitor brew 'ctop' # Container metrics and monitoring +brew 'dog' # DNS lookup client (better dig) brew 'bpytop' # Resource monitoring (like htop) brew 'dua-cli' # Disk usage analyzer and monitor (better du) brew 'glances' # Resource monitor + web and API @@ -78,6 +80,8 @@ brew 'aspell' # Spell check brew 'browsh' # Web browser, in terminal brew 'buku' # Bookmark manager brew 'cmus' # Music player +brew 'cointop' # Crypto prices and portfolio +brew 'ddgr' # Web search, via DuckDuckGo brew 'khal' # Calendar client brew 'mutt' # Email client brew 'newsboat' # RSS / ATOM reader @@ -89,6 +93,7 @@ brew 'task' # Todo + task management brew 'httpie' # HTTP / API testing testing client brew 'lazydocker' # Full Docker management app brew 'lazygit' # Full Git managemtne app +brew 'kdash' # Kubernetes management # CLI External Sercvices cask 'ngrok' # Reverse proxy for sharing localhost diff --git a/utils/free-up-disk-space.sh b/utils/free-up-disk-space.sh old mode 100644 new mode 100755 index 9c4f192..3fb84e3 --- a/utils/free-up-disk-space.sh +++ b/utils/free-up-disk-space.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash ###################################################################### # 📊 Free up disk space # @@ -31,17 +31,40 @@ PLAIN_B='\033[1;37m' RESET='\033[0m' GREEN='\033[0;32m' PURPLE='\033[0;35m' +PURPLE_B='\033[1;35m' +# Herlper func, to check if a command exists +function fuds_command_exists () { + command -v "$1" &> /dev/null +} + +# Helper func, to check if a file or directory exists +function fuds_file_or_dir_exists () { + [ -e "$1" ] +} + +# Helper func, to detect if running on a Mac +function fuds_is_macos () { + fuds_command_exists "sw_vers" +} + +# Prints the title +function fuds_print_title () { + echo -e "${GREEN_B}" + if fuds_command_exists "figlet" ; then + figlet "Free Up Disk Space" + else + echo "Free Up Disk Space" + fi + echo -e "${RESET}" +} + +# Finds and outputs used, total and free disk space function fuds_check_space () { - convert_to_gb() { echo "$(($1/1048576))" ; } - storage_used="$(df --output=used / | tail -n 1)" - storage_free="$(df --output=avail / | tail -n 1)" - storage_total="$(($storage_used + $storage_free))" - math_str="${storage_used} / ${storage_total} * 100" - storage_percent="$(echo "${math_str}" | bc -l)" - echo "Disk ${storage_percent%%.*}% full" - echo "You're using $(convert_to_gb $storage_used) GB out of $(convert_to_gb $storage_total) GB."\ - "($(convert_to_gb $storage_free) GB free)." + diskMsg=$(df -H | awk '$NF=="/"{ + printf("You'\''re using %sB out of %sB total\n", $3, $2) }') + diskMsg2=$(df -H | awk '$NF=="/"{ printf("There'\''s %sB of free space remaining\n", $4) }') + echo -e "$PURPLE_B$diskMsg$PURPLE\n$diskMsg2$RESET" } function fuds_clean_pacman () { @@ -103,10 +126,11 @@ function fuds_remove_broken () { } function fuds_show_help () { - echo "Usage: free-up-disk-space [OPTION]" - echo "Free up disk space on *nix based systems" - echo "" - echo "Options:" + fuds_print_title + + echo -e "${PURPLE_B}Free up disk space on *nix based systems\n" + echo -e "Usage:${PURPLE} free-up-disk-space [OPTION]" + echo -e "${PURPLE_B}Options:${PURPLE}" echo " -h, --help Show this help message" echo " -r, --run Run all tasks" echo " -p, --pacman Clean pacman cache and remove orphaned packages" @@ -119,69 +143,89 @@ function fuds_show_help () { echo " -d, --dups Find and delete duplicated files" echo " -b, --broken Remove broken symlinks and empty files + folders" echo "" - echo "Examples:" + echo -e "${PURPLE_B}Examples:${PURPLE}" echo " free-up-disk-space -r" echo " free-up-disk-space -p -f -a -s -j -t -c -d -b" } function free_up_disk_space () { + + # Print title + fuds_print_title + # Check available disk space fuds_check_space # Prompt to clean pacman cache - echo -e "\n${CYAN_B}Would you like to clean pacman cache? (y/N)${RESET}" - read -n 1 -r ans_clean_pacman - if [[ $ans_clean_pacman =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then - fuds_clean_pacman + if fuds_command_exists "pacman" ; then + echo -e "\n${CYAN_B}Would you like to clean pacman cache? (y/N)${RESET}" + read -n 1 -r ans_clean_pacman + if [[ $ans_clean_pacman =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then + fuds_clean_pacman + fi fi # Prompt to remove unused Flatpak packages - echo -e "\n${CYAN_B}Would you like to remove unused Flatpak packages? (y/N)${RESET}" - read -n 1 -r ans_clean_flatpak - if [[ $ans_clean_flatpak =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then - fuds_clean_flatpak + if fuds_command_exists "flatpak" ; then + echo -e "\n${CYAN_B}Would you like to remove unused Flatpak packages? (y/N)${RESET}" + read -n 1 -r ans_clean_flatpak + if [[ $ans_clean_flatpak =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then + fuds_clean_flatpak + fi fi # Prompt to remove obsolete packages - echo -e "\n${CYAN_B}Would you like to remove obsolete packages? (y/N)${RESET}" - read -n 1 -r ans_clean_apt - if [[ $ans_clean_apt =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then - fuds_clean_apt + if fuds_command_exists "apt" ; then + echo -e "\n${CYAN_B}Would you like to remove obsolete packages? (y/N)${RESET}" + read -n 1 -r ans_clean_apt + if [[ $ans_clean_apt =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then + fuds_clean_apt + fi fi # Prompt to remove disabled snaps - echo -e "\n${CYAN_B}Would you like to remove disabled snaps? (y/N)${RESET}" - read -n 1 -r ans_remove_dead_snaps - if [[ $ans_remove_dead_snaps =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then - fuds_remove_dead_snaps + if fuds_command_exists "snap" ; then + echo -e "\n${CYAN_B}Would you like to remove disabled snaps? (y/N)${RESET}" + read -n 1 -r ans_remove_dead_snaps + if [[ $ans_remove_dead_snaps =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then + fuds_remove_dead_snaps + fi fi # Prompt to configure journal logs - echo -e "\n${CYAN_B}Would you like to configure journal logs? (y/N)${RESET}" - read -n 1 -r ans_journal_configure - if [[ $ans_journal_configure =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then - fuds_journal_configure + if fuds_command_exists "journalctl" ; then + echo -e "\n${CYAN_B}Would you like to configure journal logs? (y/N)${RESET}" + read -n 1 -r ans_journal_configure + if [[ $ans_journal_configure =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then + fuds_journal_configure + fi fi # Prompt to empty trash - echo -e "\n${CYAN_B}Would you like to empty trash? (y/N)${RESET}" - read -n 1 -r ans_empty_trash - if [[ $ans_empty_trash =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then - fuds_empty_trash + if fuds_file_or_dir_exists "$HOME/.local/share/Trash" ; then + echo -e "\n${CYAN_B}Would you like to empty trash? (y/N)${RESET}" + read -n 1 -r ans_empty_trash + if [[ $ans_empty_trash =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then + fuds_empty_trash + fi fi # Prompt to remove thumbnails and other caches - echo -e "\n${CYAN_B}Would you like to remove thumbnails and other caches? (y/N)${RESET}" - read -n 1 -r ans_clear_caches - if [[ $ans_clear_caches =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then - fuds_clear_caches + if fuds_file_or_dir_exists "$HOME/.cache/thumbnails" ; then + echo -e "\n${CYAN_B}Would you like to remove thumbnails and other caches? (y/N)${RESET}" + read -n 1 -r ans_clear_caches + if [[ $ans_clear_caches =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then + fuds_clear_caches + fi fi # Prompt to find and delete duplicated files - echo -e "\n${CYAN_B}Would you like to find and delete duplicated files? (y/N)${RESET}" - read -n 1 -r ans_remove_duplicates - if [[ $ans_remove_duplicates =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then - fuds_remove_duplicates + if fuds_command_exists "fdupes" ; then + echo -e "\n${CYAN_B}Would you like to find and delete duplicated files? (y/N)${RESET}" + read -n 1 -r ans_remove_duplicates + if [[ $ans_remove_duplicates =~ ^[Yy]$ ]] || [[ $AUTO_YES = true ]] ; then + fuds_remove_duplicates + fi fi # Prompt to remove broken symlinks and empty files + folders @@ -192,37 +236,38 @@ function free_up_disk_space () { fi } +function fuds_start () { + # Show help menu + if [[ $@ == *"--help"* ]]; then + fuds_show_help + elif [ -z $@ ] || [[ $@ == *"--run"* ]]; then + # Begin the guided process + free_up_disk_space + else + # Run specific tasks, based on which flags are present + if [[ $@ == *"--pacman"* ]]; then fuds_clean_pacman; fi + if [[ $@ == *"--flatpak"* ]]; then fuds_clean_flatpak; fi + if [[ $@ == *"--apt"* ]]; then fuds_clean_apt; fi + if [[ $@ == *"--snaps"* ]]; then fuds_remove_dead_snaps; fi + if [[ $@ == *"--journal"* ]]; then fuds_journal_configure; fi + if [[ $@ == *"--trash"* ]]; then fuds_empty_trash; fi + if [[ $@ == *"--caches"* ]]; then fuds_clear_caches; fi + if [[ $@ == *"--dups"* ]]; then fuds_remove_duplicates; fi + if [[ $@ == *"--broken"* ]]; then fuds_remove_broken; fi + fi + # New line and reset afterwards + echo -e "\n${RESET}" +} + # Determine if file is being run directly or sourced ([[ -n $ZSH_EVAL_CONTEXT && $ZSH_EVAL_CONTEXT =~ :file$ ]] || [[ -n $KSH_VERSION && $(cd "$(dirname -- "$0")" && printf '%s' "${PWD%/}/")$(basename -- "$0") != "${.sh.file}" ]] || [[ -n $BASH_VERSION ]] && (return 0 2>/dev/null)) && sourced=1 || sourced=0 -# If script being called directly, invoke transfer or show help +# Either start now (if exectuted directly) or export the function (if sourced) if [ $sourced -eq 0 ]; then - if [[ $@ == *"--help"* ]]; then - fuds_show_help - elif [[ $@ == *"--pacman"*]]; then - fuds_clean_pacman - elif [[ $@ == *"--flatpak"*]]; then - fuds_clean_flatpak - elif [[ $@ == *"--apt"*]]; then - fuds_clean_apt - elif [[ $@ == *"--snaps"*]]; then - fuds_remove_dead_snaps - elif [[ $@ == *"--journal"*]]; then - fuds_journal_configure - elif [[ $@ == *"--trash"*]]; then - fuds_empty_trash - elif [[ $@ == *"--caches"*]]; then - fuds_clear_caches - elif [[ $@ == *"--dups"*]]; then - fuds_remove_duplicates - elif [[ $@ == *"--broken"*]]; then - fuds_remove_broken - elif [[ $@ == *"--run"*]]; then - free_up_disk_space - else - free_up_disk_space - fi + fuds_start $@ +else + alias free-up-disk-space='fuds_start $@' fi