Last active
June 20, 2021 21:59
-
-
Save ivanrodjr/1870167dbf0d93acd0779d9a9fe68fb5 to your computer and use it in GitHub Desktop.
Revisions
-
ivanrodjr revised this gist
Jun 20, 2021 . 2 changed files with 5 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -142,7 +142,7 @@ brew install gpg2 gnupg pinentry-mac # Make the gnupg dir# mkdir ~/.gnupg # Write our configuration to it echo 'pinentry-program /usr/local/bin/pinentry-mac' > ~/.gnupg/gpg-agent.conf # This tells gpg to use the gpg-agent echo 'use-agent' > ~/.gnupg/gpg.conf export GPG_TTY=`tty` This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -12,11 +12,14 @@ echo "Plugin installation complete" # Configure oh-my-zsh plugins echo "Configuring plugins..." # Add zsh-syntax-highlighting.zsh to the end of the .zshrc file echo "source ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ~/.zshrc # Add the plugins you want to enable below sed -io 's/^plugins=.*/plugins=(git zsh-autosuggestions zsh-syntax-highlighting)/' ~/.zshrc echo "Plugin configuration complete" # Disable verbose zsh echo 'ZSH_DISABLE_COMPFIX=true' >> ~/.zshrc # Install custom shell theme > Substitute for yours > https://github.com/ohmyzsh/ohmyzsh/wiki/Themes ### Powerline10k https://github.com/romkatv/powerlevel10k echo "Installing custom shell theme..." -
ivanrodjr revised this gist
Jun 20, 2021 . 2 changed files with 32 additions and 16 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -2,33 +2,35 @@ Setup for Mac OS ================ Ultimate setup script for setting up a new MacOS installation. This script tries to be as flexible and as helpful as possible while keeping the user intervention to a minimum. **Use carefully** The `macos-setup` script will: - Installs `apple command line tools` and waits until it finishes to continue the script - Install and set `ZSH` as default shell - Installs `brew` if not yet installed - Installs core utilities and more if specified - Installs all cli and cask packages you specify - Configures `git` * Creates your `SSH key` and adds the passphrase to the keychain (copy snippet and repeat for more keys) * Configures GPG ~50% (only installation and config of necessary tools) *For now generation must be done manually after the script runs, when done uncomment `gpgsign = true` in git config file * Adds a git config file (edit to your preferences) * Adds commit msg validation hook, global ignore and commit message template - Configures dev environment * Installs and configures the `java jdk` you specify and `jenv` * Installs other dev tools if needed (docker, node, deno, rust etc...) - Adds your vimrc config - Installs all custom fonts you specify - Configures MacOS properties to your liking - Installs oh-my-zsh The `oh-my-custom` script will: - Provide a way to install and configure all `oh-my-custom` plugins you specify - Install a custom shell theme like `powerlevel10k` or `starship` **Enjoy** This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -19,6 +19,7 @@ # - https://opensource.com/article/19/5/python-3-default-mac # - https://opensource.com/article/19/5/python-3-default-mac # - https://github.com/mathiasbynens/dotfiles # - https://gist.github.com/simonista/8703722 # ## 0 - Either chmod this file or ask for the administrator password upfront: sudo -v @@ -238,7 +239,7 @@ cat > ~/.gitconfig <<- "EOF" # Prevent commit status from attaching below the custom template status = false # Ensures that all of your commits are signed by your GPG key. # gpgsign = true [merge] # Get an error unless every merge is fast-forward ff = only @@ -409,7 +410,7 @@ printf "\n${JIRA_URL}/${TRIMMED}" >> $1 # Remove trailing blank lines sed -i.bak -e :a -e '/^\n*$/{$d;N;ba' -e '}' $1 EOF # Make the above hook executable chmod 755 ~/.git-templates/hooks/commit-msg ## Add global .gitignore file @@ -519,6 +520,19 @@ cat > ~/.git-templates/.git-commit-msg-template.txt <<- "EOF" # Edit allowed works in commit-msg hook EOF ############ ## VIM ############ ## Add your vimrc config below ## https://gist.github.com/simonista/8703722 echo "Adding vimrc configuration..." cat > ~/.vimrc <<- "EOF" set textwidth=72 set colorcolumn=73 syntax on EOF # # ############# # # # JAVA # # ############# -
ivanrodjr revised this gist
Jun 20, 2021 . 2 changed files with 34 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,34 @@ Setup for Mac OS ================ Consolidated setup script for setting up a new MacOS installation. This script tries to be as flexible and as helpful as possible, while keeping the user intervention to a minimum. **User carefuly.** The `macos-setup` script will: - Installs `apple command line tools` and waits until it finishes to continue the script - Install and set ZSH as default shell - Installs brew if not yet installed - Install core utilities - Installs all cli and cask packages you specify - Configures git * Creates your SSH key and adds the passphrase to the keychain (copy snippet and repeat for more keys) * Configures GPG ~50% (only installation and config of necessary tools) *For now generation must be done manually after the script runs * Adds a git config file (edit to your preferences) * Adds commit msg validation hook, global ignore and commit message template - Configures dev environment * Installs and configures java you specify and jenv * Installs other dev tools if uncommented - Installs all custom fonts you specify - Configures MacOS - Installs oh-my-zsh The `oh-my-custom` script will: - Provide a way to install and configure any `oh-my-custom` plugins you specify - Install a custom shell theme like `powerlevel10k` or `starship` Enjoy File renamed without changes. -
ivanrodjr revised this gist
Jun 20, 2021 . 1 changed file with 370 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -121,7 +121,6 @@ echo "Apps installation complete" # # # GIT # # ############# echo "Configuring GIT" ## To increase security of your key this will automatically add it to the keychain echo "Creating your SSH key...add a passphrase" ssh-keygen -t ed25519 -f ~/.ssh/github_id_ed25519 -C "[email protected]" @@ -150,6 +149,376 @@ chmod 700 ~/.gnupg # When the script is done go here to complete the gpg setup # https://gist.github.com/troyfontaine/18c9146295168ee9ca2b30c00bd1b41e#step-7-create-your-gpg-key ## Add your git configs below # brew install git-extras ## Or configure aliases below echo "Adding git global configuration file..." cat > ~/.gitconfig <<- "EOF" [user] name = your name email = your email [color] # Enable colors in color-supporting terminals ui = auto [init] templatedir = ~/.git-templates defaultBranch = main [alias] # List available aliases aliases = !git config -l | grep alias | cut -c 7- # Display state of working dir s = status # Add files to the staging area a = add . # Creates a commit and opens default editor e.g. vim c = commit # Creates a commit, bypasses default editor and adds the message e.g. git cm "Add whatever..." cm = commit -m # Checkout a specific branch co = checkout # Create branch and checkout cob = checkout -b # Show all remote branches remotes = remote -v # Show all branches ab = branch -av # Delete branch db = branch -D # Deletes all branches except master or main (change the name) CAREFUL deleteAll = !git branch | grep -v master | xargs git branch -D # Rename current branch rename = branch -M # Disables push to upstream disable = remote set-url --push upstream DISABLED # Log with super powers lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' # Log that shows the last 10 commits...change the number for more lgs = log -10 --color=always --all --graph --topo-order --pretty='%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative # Push current feature branch pb = !git push --set-upstream origin \"$(git rev-parse --abbrev-ref HEAD)\" # Ensure that force-pushing won't lose someone else's work (only mine). push-with-lease = push --force-with-lease # Rebase won’t trigger hooks on each "replayed" commit. # This is an ugly hack that will replay each commit during rebase with the # standard `commit` command which will trigger hooks. rebase-with-hooks = rebase -x 'git reset --soft HEAD~1 && git commit -C HEAD@{1}' # List local commits that were not pushed to remote repository review-local = !git lg @{push}.. # Edit last commit message amend = commit --amend # Undo last commit but keep changed files in stage undo = reset --soft HEAD~1 # Remove file(s) from Git but not from disk untrack = rm --cached # Deletes any local branch which has been deleted from the remote fp = fetch --prune # Ensures that when you stash, you catch the new files you haven’t caught with a git add yet. a.k.a stash-all sa = stash save --include-untracked # Pop the stash in the current branch sp = stash pop # Removes the saved stash sd = stash drop # Fetch origin fo = fetch origin # Fetch upstream fu = fetch upstream # CAREFUL WITH BELOW COMMANDS >> See Rebase docs # Rebase origin/master ro = rebase origin/master # Rebase upstream/master ru = rebase upstream/master # Rebase master rem = rebase master [status] # Shows you all of the files underneath that new directory during a git status (slow in very large repos) showUntrackedFiles = all [commit] # Git commit default message template template = ~/.git-templates/.git-commit-msg-template.txt # Prevent commit status from attaching below the custom template status = false # Ensures that all of your commits are signed by your GPG key. gpgsign = true [merge] # Get an error unless every merge is fast-forward ff = only # Intended changes from the ‘left’ and the intended changes from the ‘right, with third section of the original changes before ‘left’ and ‘right’ tried to change it. conflictstyle = diff3 [core] # Hooks directory hooksPath = ~/.git-templates/hooks # Global ignore file excludesfile = ~/.git-templates/.gitignore_global [diff] # Use better, descriptive initials (c, i, w) instead of a/b. mnemonicPrefix = true # Show renames/moves as such renames = true # When using --word-diff, assume --word-diff-regex=. wordRegex = . # Display submodule-related information (commit listings) submodule = log [log] # Use abbrev SHAs whenever possible/relevant instead of full 40 chars abbrevCommit = true # Automatically --follow when given a single path follow = true # Disable decorate for reflog # (because there is no dedicated `reflog` section available) decorate = false [color "branch"] # Blue on black is hard to read in git branch -vv: use cyan instead upstream = cyan [color "status"] added = green changed = yellow untracked = red [gpg] program = /usr/local/bin/gpg [push] default = simple EOF echo "Adding commit message validation hook..." ## https://gist.github.com/ivanrodjr/e1b5454ec1593ea753776bdc5b44ce9a#file-git-commit-msg-template mkdir -p ~/.git-templates/hooks cat > ~/.git-templates/hooks/commit-msg <<- "EOF" #!/bin/bash commit_msg="${1}" commit_msg_lines=() error_msg="[COMMIT FAILED]" allowed_subject_verbs=('Add' 'Create' 'Update' 'Change' 'Fix' 'Refactor' 'Clean up' 'Remove' 'Move' 'Delete' 'Resolve' 'Merge' 'Initial') JIRA_URL="https://yourjiraurl.net/browse" # Splits the commit msg into separate lines and adds them to an array split_commit_msg() { while IFS= read -r line; do # Trim trailing spaces from lines shopt -s extglob line="${line%%*( )}" shopt -u extglob # Ignore comments (lines starting with #) if [[ ! "${line}" =~ ^# ]]; then commit_msg_lines+=("${line}") fi done < <(cat ${commit_msg}) } # Validates the commit msg validate_commit_msg() { split_commit_msg # Store the subject local subject="${commit_msg_lines[0]}" # Stop validation if the message is empty or no subject is set if [[ -z "${commit_msg_lines[*]}" ]] || [[ -z "${subject}" ]]; then exit 0 fi # Check if the subject has leading whitespace(s) if [[ "${subject}" =~ ^[[:space:]]+ ]]; then echo "${error_msg} The subject can not have leading whitespace" exit 1; fi # Check if the subject contains more than 1 word if [[ $(echo "${subject}" | wc -w) -eq 1 ]]; then echo "${error_msg} The subject has to contain more than 1 word" exit 1 fi # Check if the subject is separated from the body with a blank line if [[ ${#commit_msg_lines[@]} -gt 1 ]] && [[ -n "${commit_msg_lines[1]}" ]]; then echo "${error_msg} Separate subject from body with a blank line" exit 1 fi # Check if the subject line is limited to 50 characters if [[ "${#subject}" -gt 50 ]]; then echo "${error_msg} Limit the subject line to 50 characters (${#commit_msg_lines[0]} characters used)" exit 1 fi # Check if the subject line is capitalized if [[ ! "${subject}" =~ ^[A-Z] ]]; then echo "${error_msg} Capitalize the subject line" exit 1 fi # Check if the subject line does not end with a period if [[ ! "${subject}" =~ [^\.]$ ]]; then echo "${error_msg} Do not end the subject line with a period" exit 1 fi # Check if the subject starts with one of the allowed verbs local first_word=$(echo "${subject}" | awk '{print $1;}') local is_allowed=false for verb in "${allowed_subject_verbs[@]}"; do if [[ "${verb}" == "${first_word}" ]]; then is_allowed=true fi done if [[ "${is_allowed}" == false ]]; then echo "${error_msg} Use the imperative mood in the subject line" echo "Your subject has to start with one of the following verbs:" printf -- ' - %s\n' "${allowed_subject_verbs[@]}" exit 1 fi # Check if the body is wrapped at 72 characters (except for url's) for line in "${commit_msg_lines[@]}"; do if [[ "${line}" =~ ^[[:space:]]*(https?|ftp|file):\/\/[-A-Za-z0-9\+\&\@\#\/\%\?\=\~\_\|\!\:\,\.\;]*[-A-Za-z0-9\+\&\@\#\/\%\=\~\_\|] ]]; then continue elif [[ "${#line}" -gt 72 ]]; then echo "${error_msg} Wrap the body at 72 characters (${#line} characters used)" exit 1 fi done } validate_commit_msg # Remove comment lines from the message sed -i.bak '/^#/ d' $1 # Add Jira ticket number from branch to the commit message if [ -z "$BRANCHES_TO_SKIP" ]; then BRANCHES_TO_SKIP=(master main develop staging test) fi # Get the current branch name and check if it is excluded BRANCH_NAME=$(git symbolic-ref --short HEAD) BRANCH_EXCLUDED=$(printf "%s\n" "${BRANCHES_TO_SKIP[@]}" | grep -c "^$BRANCH_NAME$") # Trim it down to get the parts we're interested in TRIMMED=$(echo $BRANCH_NAME | sed -e 's:^\([^-]*-[^-]*\)-.*:\1:' -e \ 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/') # If it isn't excluded, preprend the trimmed branch identifier to the given message if [ -n "$BRANCH_NAME" ] && ! [[ $BRANCH_EXCLUDED -eq 1 ]]; then sed -i.bak -e "1s/^/[$TRIMMED] /" $1 fi # Add the ticket url at the end of the commit description printf "\n${JIRA_URL}/${TRIMMED}" >> $1 # Remove trailing blank lines sed -i.bak -e :a -e '/^\n*$/{$d;N;ba' -e '}' $1 EOF # Make it the above hook executable chmod 755 ~/.git-templates/hooks/commit-msg ## Add global .gitignore file ## https://gist.github.com/jacobtomlinson/aace65a6920e44348d501da5e13a5a17#file-gitignore_global echo "Adding git global ignore file..." cat > ~/.git-templates/.gitignore_global<<- "EOF" # Compiled source # ################### *.com *.class *.dll *.exe *.o *.so *.pyc *.pyo # Packages # ############ # it's better to unpack these files and commit the raw source # git has its own built in compression methods *.7z *.dmg *.gz *.iso *.jar *.rar *.tar *.zip *.msi # Logs and databases # ###################### *.log *.sql *.sqlite npm-debug.log # OS generated files # ###################### .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db desktop.ini # Temporary files # ################### *.bak *.swp *.swo *~ *# # IDE files # ############# .vscode .idea .iml *.sublime-workspace EOF ## Add default commit message ## https://gist.github.com/ivanrodjr/e1b5454ec1593ea753776bdc5b44ce9a#file-commit-msg echo "Adding default commit message..." cat > ~/.git-templates/.git-commit-msg-template.txt <<- "EOF" # If applied, this commit will... (max 50 characters long) # Body - Explain things in more detail, possibly giving some # background about what is being added or the issue being fixed, etc. # (Wrap at 72 characters) # Fixes #XXXX # Provide links to any relevant tickets, articles or other resources #------------------------------------------------@---------------------* # # Remember the seven rules of a great Git commit message: # - Separate subject from body with a blank line # - Limit the subject line to 50 characters (@) # - Capitalize the subject line # - Do not end the subject line with a period # - Use the imperative mood in the subject line # - Wrap the body at 72 characters (*) # - Use the body to explain what and why vs. how # # More info: https://chris.beams.io/posts/git-commit/ # # The allowed first words for the subject are: # - Add # - Create # - Update # - Change # - Fix # - Refactor # - Clean up # - Remove # - Move # - Delete # - Resolve # - Merge # - Initial # Edit allowed works in commit-msg hook EOF # # ############# # # # JAVA # # ############# -
ivanrodjr revised this gist
Jun 20, 2021 . 2 changed files with 17 additions and 21 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -65,7 +65,7 @@ echo "Installing system core utilities..." brew install coreutils brew install openssh ###################### uncomment if you understand whats below # brew install gnu-sed --with-default-names # brew install gnu-tar --with-default-names # brew install gnu-indent --with-default-names @@ -77,43 +77,32 @@ brew install openssh ## There is a conflict between the GNU parallel utility and the shipped parallel on the moreutils package. If you want to install GNU parallel instead of the moreutils’ parallel, use the following commands: # brew install moreutils --without-parallel # brew install parallel ###################### brew install findutils # Install latest Bash brew install bash echo "Core utilities installation complete" # 1.2 - Add your preferred packages PACKAGES=( git tree vim wget speedtest-cli ) echo "Installing CLI packages..." brew install ${PACKAGES[@]} echo "CLI packages installation complete" # 1.3 - Add your preferred apps CASKS=( flux iterm2 the-unarchiver appcleaner transmission ) echo "Installing apps..." brew install --cask ${CASKS[@]} @@ -135,15 +124,16 @@ echo "Configuring GIT" # brew install git-extras ## To increase security of your key this will automatically add it to the keychain echo "Creating your SSH key...add a passphrase" ssh-keygen -t ed25519 -f ~/.ssh/github_id_ed25519 -C "[email protected]" echo "Adding SSH key to Keychain" ssh-add ~/.ssh/github_id_ed25519 echo "Setting SSH to always use keychain for the passphrase" cat <<EOT >> ~/.ssh/config Host * IgnoreUnknown UseKeychain UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/github_id_ed25519 EOT echo "Configuring GPG signing" This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -17,12 +17,18 @@ echo "source ~/.oh-my-zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlightin sed -io 's/^plugins=.*/plugins=(git zsh-autosuggestions zsh-syntax-highlighting)/' ~/.zshrc echo "Plugin configuration complete" # Install custom shell theme > Substitute for yours > https://github.com/ohmyzsh/ohmyzsh/wiki/Themes ### Powerline10k https://github.com/romkatv/powerlevel10k echo "Installing custom shell theme..." git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k # Enable Powelevel10k as default theme sed -io 's#^ZSH_THEME.*#ZSH_THEME="powerlevel10k/powerlevel10k"#' ~/.zshrc ## For starship theme comment above uncomment below ### Starship https://starship.rs/ #brew install starship #sed -io 's#^ZSH_THEME.*#\#ZSH_THEME=""#' ~/.zshrc #echo 'eval "$(starship init zsh)"' echo "Theme installation complete" echo "Completed oh-my-zsh setup for $(whoami)" source $ZSH/oh-my-zsh.sh -
ivanrodjr created this gist
Jun 20, 2021 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,388 @@ #!/usr/bin/env bash # # Consolidated setup script for setting up a new MacOS installation. # # This script tries to be as flexible and as helpful as possible, while keeping the user intervention to a minimum. # # Reading/Thanks: # # - https://gist.github.com/MatthewMueller/e22d9840f9ea2fee4716 # - https://gist.github.com/codeinthehole/26b37efa67041e1307db # - https://github.com/mikeprivette/yanmss/blob/master/setup.sh # - https://gist.github.com/bradp/bea76b16d3325f5c47d4 # - https://gist.github.com/ryanhanwu/059e210f8fe15e7eadc4a28e8b3e6b27 # - https://gist.github.com/rcugut/c7abd2a425bb65da3c61d8341cd4b02d # - https://github.com/Homebrew/homebrew-cask-fonts # - https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins # - https://github.com/ryanoasis/nerd-fonts # - https://github.com/ohmyzsh/ohmyzsh/wiki/Themes # - https://opensource.com/article/19/5/python-3-default-mac # - https://opensource.com/article/19/5/python-3-default-mac # - https://github.com/mathiasbynens/dotfiles # ## 0 - Either chmod this file or ask for the administrator password upfront: sudo -v echo "Starting setup for $(whoami)" # # # Notes: # # # # # # - If installing full Xcode, it's better to install that first from the app # # # store before running the bootstrap script. Otherwise, Homebrew can't access # # # the Xcode libraries as the agreement hasn't been accepted yet. # # ############################################################################### # # # 0 - For Xcode and CLI # # ############################################################################### # # Install command line tools. When finished press [Enter] xcode-select --install read -p "Press [Enter] when apple command line tools installation is completed." # # ############################################################################### # # # 1 - MAIN COMPONENTS # # ############################################################################### # # Check for Homebrew, install if we don't have it if test ! $(which brew); then echo "Installing homebrew..." /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" fi # Update homebrew recipes echo "Updating homebrew recipes" brew update # # Install and set zsh as default shell in case we are not on big sur or above if test ! $(which zsh); then echo "Setting ZSH as shell..." echo "Installing zsh as default shell..." brew install zsh chsh -s /bin/zsh OR sh -c "echo $(which zsh) >> /etc/shells" && chsh -s $(which zsh) echo "zsh installed and set as default shell" fi ## Install any system or core utility e.g. GNU core utilities (those that come with OS X are outdated) echo "Installing system core utilities..." brew install coreutils brew install openssh ###################### uncomment if you understand whats below # Uncomment for GNU core utils # brew install gnu-sed --with-default-names # brew install gnu-tar --with-default-names # brew install gnu-indent --with-default-names # brew install gnu-which --with-default-names # brew install gnu-grep --with-default-names ## Install GNU `find`, `locate`, `updatedb`, and `xargs`, g-prefixed ## Installs default moreutils # brew install moreutils ## There is a conflict between the GNU parallel utility and the shipped parallel on the moreutils package. If you want to install GNU parallel instead of the moreutils’ parallel, use the following commands: # brew install moreutils --without-parallel # brew install parallel ###################### brew install findutils # Install latest Bash brew install bash echo "Core utilities installation cli complete" # 1.2 - Add your preferred packages PACKAGES=( git tree vim wget scrcpy hugo speedtest-cli ) echo "Installing CLI packages..." brew install ${PACKAGES[@]} echo "CLI packages installation complete" # 1.3 - Add your preferred apps CASKS=( flux iterm2 plex-media-server postman 1password the-unarchiver appcleaner visual-studio-code transmission spotify jetbrains-toolbox calibre notion rectangle charles ) echo "Installing apps..." brew install --cask ${CASKS[@]} # # To install apps in a dir other than "/Applications" # brew install --cask --appdir="/Applications" ${CASKS[@]} echo "Apps installation complete" ############################################################################### # 2 - Development ############################################################################### # # ## Uncomment the ones you need or use...if any. # # Python and Ruby should be already installed # # ############# # # # GIT # # ############# echo "Configuring GIT" # brew install git-extras ## To increase security of your key this will automatically add it to the keychain echo "Creating your SSH key...add a passphrase" ssh-keygen -t rsa -b 4096 echo "Adding SSH key to Keychain" ssh-add ~/.ssh/id_rsa echo "Setting SSH to always use keychain for the passphrase" cat <<EOT >> ~/.ssh/config Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa EOT echo "Configuring GPG signing" # Setup GPG - Does 50% of the signing brew install gpg2 gnupg pinentry-mac # Make the gnupg dir# mkdir ~/.gnupg # Write our configuration to it echo 'pinentry-program $(brew --prefix)/bin/pinentry-mac' > ~/.gnupg/gpg-agent.conf # This tells gpg to use the gpg-agent echo 'use-agent' > ~/.gnupg/gpg.conf export GPG_TTY=`tty` chmod 700 ~/.gnupg # When the script is done go here to complete the gpg setup # https://gist.github.com/troyfontaine/18c9146295168ee9ca2b30c00bd1b41e#step-7-create-your-gpg-key # # ############# # # # JAVA # # ############# echo "Installing Java and setting up the environment..." JAVA_VERSION=11 brew tap AdoptOpenJDK/openjdk ## brew install --cask <version> | For version https://github.com/AdoptOpenJDK/homebrew-openjdk echo "Installing Java $JAVA_VERSION..." brew install --cask adoptopenjdk$JAVA_VERSION # Set JAVA_HOME echo "Setting JAVA_HOME environment variable..." echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.zshrc # # https://www.mindissoftware.com/post/2020/05/jenv-setup/ echo "Installing jenv..." brew install jenv echo "Configuring jenv..." echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc echo 'eval "$(jenv init -)"' >> ~/.zshrc echo "Unsetting the JAVA_TOOL_OPTIONS environment variable..." unset JAVA_TOOL_OPTIONS # # ############# # # # Node # # ############# # # ## NODE > Uncomment your preffered option # # ## 1 . Install complete node # # # brew install node # # OR Install with yarn package manager # # brew install yarn # # ## 3. NPM new home (Optional) # # # Normally, with Homebrew, your user should own the entire `/usr/local` folder, if not: # # # sudo chown -R `whoami` /usr/local # # # mkdir -p /usr/local/npm_packages # # ## This is the root dir where all globally installed node packages will go # # export NPM_PACKAGES="/usr/local/npm_packages" # # export NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH" # # ## Add to PATH # # #export PATH="$NPM_PACKAGES/bin:$PATH" # # ############# # # # Deno # # ############# # # brew install deno # # ############# # # # Scala # # ############# # # brew install scala # # ############# # # # Golang # # ############# # # brew install golang # # export GOPATH="${HOME}/.go" # # export GOROOT="$(brew --prefix golang)/libexec" # # export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin" # # ############# # # # Rust # # ############# # # brew install rustup # # rustup-init # # ############# # # # Docker # # ############# # # # brew install --cask docker # # ############################################################################### # # # 3 - Customization & Mac OS Configuration # # ############################################################################### # Get your desired fonts from: https://github.com/Homebrew/homebrew-cask-fonts/tree/master/Casks And add below brew tap homebrew/cask-fonts FONTS=( font-inconsolata font-fira-code font-fira-code-nerd-font font-jetbrains-mono font-jetbrains-mono-nerd-font ) echo "Installing FONTS..." brew install ${FONTS[@]} echo "Cleaning up the cellar..." brew cleanup echo "Configuring MacOS..." echo "" # FIND MORE CONFIGS HERE : # https://gist.github.com/bradp/bea76b16d3325f5c47d4#file-setup-sh-L137 # https://gist.github.com/MatthewMueller/e22d9840f9ea2fee4716 echo "Disabling OS X Gate Keeper" #"(You'll be able to install any app you want from here on, not just Mac App Store apps)" sudo spctl --master-disable sudo defaults write /var/db/SystemPolicy-prefs.plist enabled -string no defaults write com.apple.LaunchServices LSQuarantine -bool false echo "Expanding the save panel by default" defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true echo "Disable smart quotes and smart dashes as they are annoying when typing code" defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false echo "Enabling full keyboard access for all controls (e.g. enable Tab in modal dialogs)" defaults write NSGlobalDomain AppleKeyboardUIMode -int 3 echo "Showing all filename extensions in Finder by default" defaults write NSGlobalDomain AppleShowAllExtensions -bool true echo "Disabling the warning when changing a file extension" defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false echo "Use column view in all Finder windows by default" defaults write com.apple.finder FXPreferredViewStyle Clmv echo "Avoiding the creation of .DS_Store files on network volumes" defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true echo "Setting the icon size of Dock items to 36 pixels for optimal size/screen-realestate" defaults write com.apple.dock tilesize -int 36 echo "Speeding up Mission Control animations and grouping windows by application" defaults write com.apple.dock expose-animation-duration -float 0.1 defaults write com.apple.dock "expose-group-by-app" -bool true echo "Setting Dock to auto-hide and removing the auto-hiding delay" defaults write com.apple.dock autohide -bool true defaults write com.apple.dock autohide-delay -float 0 defaults write com.apple.dock autohide-time-modifier -float 0 echo "Setting email addresses to copy as '[email protected]' instead of 'Foo Bar <[email protected]>' in Mail.app" defaults write com.apple.mail AddressesIncludeNameOnPasteboard -bool false echo "Preventing Time Machine from prompting to use new hard drives as backup volume" defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true echo "Speeding up wake from sleep to 24 hours from an hour" # http://www.cultofmac.com/221392/quick-hack-speeds-up-retina-macbooks-wake-from-sleep-os-x-tips/ sudo pmset -a standbydelay 86400 echo "Disable annoying backswipe in Chrome" defaults write com.google.Chrome AppleEnableSwipeNavigateWithScrolls -bool false echo "Setting screenshots location to ~/Desktop" defaults write com.apple.screencapture location -string "$HOME/Desktop" echo "Setting screenshot format to PNG" defaults write com.apple.screencapture type -string "png" echo "Enabling the Develop menu and the Web Inspector in Safari" defaults write com.apple.Safari IncludeDevelopMenu -bool true defaults write com.apple.Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true defaults write com.apple.Safari "com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled" -bool true echo "Don't prompt for confirmation before downloading in Transmission" defaults write org.m0k.transmission DownloadAsk -bool false echo "Trash original torrent files" defaults write org.m0k.transmission DeleteOriginalTorrent -bool true echo "Hide the donate message" defaults write org.m0k.transmission WarningDonate -bool false echo "Hide the legal disclaimer" defaults write org.m0k.transmission WarningLegal -bool false echo "Disable 'natural' (Lion-style) scrolling" defaults write NSGlobalDomain com.apple.swipescrolldirection -bool false echo "Don’t rearrange Spaces automatically based on most recent use" defaults write com.apple.dock mru-spaces -bool false echo "Show Library dir in Finder" chflags nohidden ~/Library echo "Show Hidden Files in Finder" defaults write com.apple.finder AppleShowAllFiles YES echo "Show Path Bar in Finder" defaults write com.apple.finder ShowPathbar -bool true echo "Show Status Bar in Finder" defaults write com.apple.finder ShowStatusBar -bool true echo "Require password as soon as screensaver or sleep mode starts" defaults write com.apple.screensaver askForPassword -int 1 defaults write com.apple.screensaver askForPasswordDelay -int 0 echo "Enable tap-to-click" defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1 echo "" # ############################################################################### # # 4 - CREATE DIR STRUCTURE - Create any addditional dirs # ############################################################################### echo "Creating directory structure..." [[ ! -d Workspace ]] && mkdir Workspace echo "Directory structure created" echo "Setup for $(whoami) COMPLETE" killall Finder # ############################################################################### # # 5 - Install oh-my-zsh # ############################################################################### # Install oh-my-zsh # After installation finishes execute oh-my-custom for personalisation echo "Installing oh-my-zsh..." /bin/bash -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,28 @@ #!/usr/bin/env bash echo "" echo "Starting oh-my-zsh setup for $(whoami)" # Install oh-my-zsh plugins echo "Installing oh-my-zsh plugins..." # Add oh-my-zsh plugins from: https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins in the list below: git clone git://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions git clone git://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting echo "Plugin installation complete" # Configure oh-my-zsh plugins echo "Configuring plugins..." # Add zsh-syntax-highlighting.zsh to the end of the .zshrc file echo "source ~/.oh-my-zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ~/.zshrc # Add the plugins you want to enable below sed -io 's/^plugins=.*/plugins=(git zsh-autosuggestions zsh-syntax-highlighting)/' ~/.zshrc echo "Plugin configuration complete" # Install custom theme > Substitute for yours > https://github.com/ohmyzsh/ohmyzsh/wiki/Themes echo "Installing custom theme..." git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k # Enable Powelevel10k as default theme sed -io 's#^ZSH_THEME.*#ZSH_THEME="powerlevel10k/powerlevel10k"#' ~/.zshrc echo "Theme installation complete" echo "Completed oh-my-zsh setup for $(whoami)" source $ZSH/oh-my-zsh.sh