M72NJNKSF6J3YGW3LDTKZKSUDYYWRJC77EHFCCCBYUIDJU66M6XQC 5AWFWY6W3KWVSU3IVAR3BV32MAAB33DO46VS7UKJHSDLELGG6UAQC UYI7ACANDPFBI4HFWILIKS255S7JU4PAA4AA6MTT6V6OK4ACDFZQC ZZQZL2APVQWSZQB3LU22QBJ4XABXFO3P57IDEARTSDUHARGFMOCAC VJYQ6X46JF7Q4VY6B43VUEJHKML4LCHSJS7J7MQHLTA5SIJOIPKAC 64ZDSQTWJGNTCQSB73DBMJ3537JU6EG43GYUXDZUPNH5YJS2EHMQC MA2CFUK6WX65WKLQ7RYEESOQ7HH3PFKW3FIPJCH7HASONV52PB7QC MAIEPZVQNNMHNN5MJ4UVPR5D7M3EE4B6QEBTR7L3KQERPUKOD5IQC CYCMGNUN3JEWVNICLLK72IDL4WPGQX34KCUBD3EDX45DUPLLSSDQC TMO3SOZBNVAM5QFULQWSGJEODJ2MRY5EJSG2WGV6MIAPKF5YDMEAC 5FLTMCXWFLP6MI36R73NDC5ZZGKRB66IXOWY7ZTESTLC7M357H2QC T43Q2EZ2JQWK4WMW7RRYU7MNP3QJJXW4BQKIQMRYFCGKHL7FJ7SQC 674WSHB4WR6RY67PKK53GYUBY22BRMFHYNRLOTWE66CWJI2RNMJAC PFLIU4J4UT24MLGOX3RFMSUX5L563LONBMHQNWGB6K456OHFV2CAC WWIV4O35A6J56CCAQ6EV3JCXDBAJYGEPU47Z6LOIYU3Q2XV4ZYFAC DVOXLIPEZ5HB4W4Y5PRU2B4TA2FR5NITPW75MHYB6INGEPDC55LAC JYWJMGAXOKDI6WWDRIZYEKJV67PROQI3RVGNFAIR6QAGEGNHBMTAC VQ2DEF34BLM3WZP2NQXT2US6T6Q5AH2KAHCU5JUV4FLR3Z2SB7XAC VSZVM67OP77UPFMDZJ55FBUKZURNAXFSGDIY73FOMMQQMIQR3I2AC IGPZOX3MPDH6UEV5D4HHB2H37E6KTIVM4DKM5RZE7HRYJFHSRKFQC LEY3QGCOMNZLJFZ5JQBSAUAZIJ7JRTMRFQADOG3EUPLNDZZB2YZQC 4BXYTJPI3YWWXJ4JFUNFUO6ANCMJNALQ7L3XK3U3AXQGFDV7CAEQC UATCBX2NJNUSOUJ5KCXRM6RY7FIGWJ6NUXU3Y666MFJYQPE7PD6QC CDREIJJY5W3HWMX5SBTP72RV4KCZSDPAH3RIWVXTCDCPM6JG52IAC QLUDE7G7ZFDWGSBHAF6WXNZQJ3A7EOYDUEDLBPOYCCJO4O7MMNDAC 57YU55IK55Q4QDV45LD3ILNQDQV46NKLYK3HS6VWR2SDTOFSYXKAC B2QAMNLQ2HMR6ENO3MS4VPIS62I5X6ZOCT4CMEB72RFXIY7MC27QC 7OOJFR5YEVMWKWPKPNNS2KORW2NNLB6KH74AOZWHLJO6JYJGUIUQC #!/bin/bashdotfiles="$HOME/dotfiles"# symbolic linksfimydaemons=$dotfiles/start_scripts/daemons/macosdaemon_dir=$HOME/Library/LaunchAgentsdone;fi# link private variables from google drive if availableeb_gdrive="$HOME/Google Drive File Stream/My Drive/config_backups"test -d "$eb_gdrive" && \# link private variables from icould drive if availableicloud="$HOME/Library/Mobile Documents/com~apple~CloudDocs/config_backups"test -d "$icloud" && \ln -fs "$icloud/.personal_variables" "$HOME"ln -fs "$eb_gdrive/.private_variables" "$HOME"# 2. create and link hammerspoon configmkdir "$HOME/.hammerspoon"ln -fs "$dotfiles/hammerspoon/init.lua" "$HOME/.hammerspoon/"for daemon in "$mydaemons"/*.plist; doln -fs "$daemon" "$daemon_dir"if test "$(uname)" = "Darwin"; then# if this is macOS# 1. move stuff into launch control# link spacemacs layers and snippets if spacemacs is installedif test -d "$HOME/.emacs.d/private"; thenln -fs "$dotfiles/spacemacs/layers/$layer_dir" "$HOME/.emacs.d/private/"done;ln -fs "$dotfiles/spacemacs/snippets/$snippet_dir" "$HOME/.emacs.d/private/snippets/"done;for snippet_dir in "$dotfiles"/spacemacs/snippets/*; dofor layer_dir in "$dotfiles"/spacemacs/layers/*; doecho -n "$dotfiles/.profile $HOME$dotfiles/.tmux.conf $HOME$dotfiles/.vimrc $HOME$dotfiles/bash/.bash_profile $HOME$dotfiles/bash/.bashrc $HOME$dotfiles/zsh/.zshenv $HOME$dotfiles/zsh/.zshrc $HOME" | _trim | xargs ln -fs$dotfiles/.config $HOME/.config$dotfiles/.myclirc $HOMEfunction _trim {# remove blank lines, leading and trailing whitespacesed '/^$/d' | sed -e 's/^ *//' | sed -e 's/ *$//'}
#! /bin/bashstderr_log=/tmp/install_important_packages_errors.logstdout_log=/tmp/install_important_packages.logfunction _trim {# remove blank lines, leading and trailing whitespacesed '/^$/d' | sed -e 's/^ *//' | sed -e 's/ *$//'}function _filter_known_ok {# filter out log messages known to be ok# brew related filtersgrep -v "brew upgrade " | \grep -v "already installed" | \grep -v "It seems there is already an App at" \# rustup related filters}function install_everything {#################### install homebrew###################which brew &> /dev/null || \/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"# NOTE: don't try to be smart with OS, let brew decide what it can and can't install#################### install packages###################echo -n 'coreutilscurlfdfishfzfgoispelllastpass-climoreutilsmyclineovimnoderipgrepsocatsdthe_silver_searchertmuxwgetzsh' | _trim | xargs brew installecho -n 'dockerfirefoxfluxflycutspectacle' | _trim | xargs brew cask install################################## install apps from special taps###################################################### install oh-my-zsh####################sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"##################### install spacemacs####################emacs_d=$HOME/.emacs.d####################################### install vim-plug for vim and neovim######################################vim_plug_file=$HOME/.vim/autoload/plug.vimhttps://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vimnvim_plug_file=$HOME/.local/share/nvim/site/autoload/plug.vimhttps://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim################# install pyenv################curl https://pyenv.run | bash################## install rustup#################which rustup &> /dev/null || \curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y}function on_success {_filter_known_ok $stderr_log | wc -lecho "Install completed without error."rm $stderr_logrm $stdout_logreturn 0elseecho "Install completed but errors were logged."echo "See full stderr at $stderr_log"echo "See full stdout at $stdout_log"return 1fi}function on_error {echo "Install did not complete or partially completed with unhandled error."echo "See full stderr at $stderr_log"echo "See full stdout at $stdout_log"return 2}# you can redirect stderr like this if you want to more easily debug:# 2> >(tee -a $stderr_log >&2)if install_everything > $stdout_log 2> $stderr_log; thenon_successelseon_errorfi)" -eq 0; thenif test "$(################################################# globally install poetry python package manager################################################curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -test -d "$HOME/.pyenv" || \test -f "$nvim_plug_file" || \curl -fLo "$nvim_plug_file" --create-dirs \test -f "$vim_plug_file" || \curl -fLo "$vim_plug_file" --create-dirs \test -d "$emacs_d" || \git clone https://github.com/syl20bnr/spacemacs "$emacs_d"test -d "$HOME/.oh-my-zsh" || \brew list | grep -q emacs-plus || {brew tap d12frosted/emacs-plus && brew install emacs-plus}karabiner-elementshammerspoon############################# install gui and cask apps############################koekeishiya/formulae/skhdkoekeishiya/formulae/yabaiterminal-notifieropensslmysqlgrep -Ev "info: (latest)|(downloading)|(installing)|(default)"gerp -Eiv "re-?install" | \_trim < "$1" | \set -o pipefail
# tries to open an emacsclient new window# if a server isn't started, starts one# and tries to connect to it repeatedly# until ~30 seconds are up then gives up## meant to be called from GUI apps or hot keys# notifications are sent to the macos notification# widget / tray thingemacs_frame_quiet_emacsclient() {}emacs_frame_start_emacs() {terminal-notifier -message "Emacs server starting"brew services restart 'emacs-plus@28' > /dev/null 2>&1START_EMACS_COUNT=100until [ "$START_EMACS_COUNT" -eq 0 ] || emacs_frame_quiet_emacsclient;do sleep .25 && let START_EMACS_COUNT=START_EMACS_COUNT-1; done;[ "$START_EMACS_COUNT" -eq 0 ] && terminal-notifier -message "Emacs server failed to start"}emacs_frame_quiet_emacsclient || emacs_frame_start_emacs# the elisp here forces emacs to focus the new frameemacsclient -nc -e "(progn (raise-frame) (x-focus-frame (selected-frame)))" \> /dev/null 2>&1
export NVM_DIR="$HOME/.nvm"[ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" # This loads nvm[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion