#!/usr/bin/env bash # Check for Git if ! command -v git &> /dev/null; then echo "Git is not installed. Aborting." >&2 exit 1 fi # Make sure we have pulled in and updated any submodules git submodule init git submodule update # What directories should be installable by all users including the root user base=( zsh vim nvim tmux git ) # Folders that should, or only need to be installed for a local user on macOS useronly_macos=( yabai skhd ) # Folders that should, or only need to be installed for a local user useronly=( conda dask gh jupyter parallel tox ) # Files to ignore during stow ignore_files=( ".DS_Store" "__setup" "bin" "git" "setup.sh" ) # Function to run the stow command for the passed-in directory ($2) in location $1 stowit() { usr=$1 app=$2 # -v verbose # -R recursive # -t target # --ignore files to ignore stow -v -R -t "${usr}" --ignore "$(IFS="|"; echo "${ignore_files[*]}")" "${app}" } # Function to check if the OS is macOS is_macos() { [[ "$(uname)" == "Darwin" ]] } echo "" echo "Stowing apps for user: ${USER}" # Install apps available to local users and root for app in "${base[@]}"; do stowit "${HOME}" "${app}" done # Install useronly_macos folders only for macOS if is_macos; then for app in "${useronly_macos[@]}"; do if [[ ! "$(whoami)" = "root" ]]; then stowit "${HOME}" "${app}" fi done fi # Install useronly folders for app in "${useronly[@]}"; do if [[ ! "$(whoami)" = "root" ]]; then stowit "${HOME}" "${app}" fi done echo "" echo "##### ALL DONE"