mac-configurations
mac-configurations copied to clipboard
This is collections/ways to configure mac for development
Configurations
-
Configurations
-
Iterm2/Terminal configurations
- Zsh plugins
- Install Fonts
- Get better version of man pages
- Install Ruby
- Make ls, ll commands colorful
- Optional powerlevel10k on top of powerlevel9k
- iterm2 color theme
- Terminal File Manager
- fig autocomplete
- List Of Shell Customization frameworks
-
Python setup
- Virtual Environment for python
-
GO setup
- Environment variables
- Groovy setup
- IntelliJ idea settings
- Multiple java versions in mac
- SDKMAN
- Keychain-password
- video tutorials
- Basic Mac setup
- Softwares
-
Iterm2/Terminal configurations
:arrow_up:
Iterm2/Terminal configurations
Note: Make sure you have local admin rights before you proceed with the following installations.
Following site will help you setup your mac.
-
Install iterm2 from https://www.iterm2.com/ and Install Homebrew from https://brew.sh/
-
Install software listed in file brew-leaves.txt
brew install $(< brew-leaves.txt)
-
Add theme to iterm2: Oh-my-Z
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
-
Add additional plugins, themes and fonts to iterm2
Zsh plugins
You can add additional plugins in zsh at
.oh-my-zsh/custom/plugins
locationcd $ZSH/custom/plugins;git clone https://github.com/zsh-users/zsh-syntax-highlighting.git && git clone https://github.com/zsh-users/zsh-autosuggestions && git clone https://github.com/zsh-users/zsh-completions
Install Fonts
brew tap homebrew/cask-fonts brew install --cask font-hack-nerd-font # powerline clone git clone https://github.com/powerline/fonts.git --depth=1 # install cd fonts ./install.sh # clean-up a bit cd .. rm -rf fonts
-
Install powerlevel9k theme(choose Option 2: Install for Oh-My-ZSH) https://github.com/bhilburn/powerlevel9k/wiki/Install-Instructions#step-1-install-powerlevel9k
-
Update .zshrc file as show in here
-
change fonts for iterm2: iTerm2 -> Preferences -> Profiles -> Text -> Font -> Change Font to hack-nerd
-
Execute
compaudit | xargs chmod g-w,o-w /usr/local/share/zsh ;compaudit | xargs chmod g-w,o-w /usr/local/share/zsh/site-functions
-
change font settings as shown in image
-
Vim Customization
git clone https://github.com/amix/vimrc.git ~/.vim_runtime && sh ~/.vim_runtime/install_awesome_vimrc.sh
-
Customize iterm2 shortcut
⌘← "SEND HEX CODE" 0x01
⌘→ "SEND HEX CODE" 0x05
⌥← "SEND ESC SEQ" b
⌥→ "SEND ESC SEQ" f -
Bonus: If you want terminal app to be similar to iterm2 do following settings
- terminal -> preference -> Basic theme ->Background -> change color from white to black,
- Text -> change color from black to white
- Font -> change for to Hack bold nerd font
More info:
pimpyourterminal/blob/master/.zshrc
Following are other changes require to make iterm more customizable and solutions to some problem I have encountered so far.
Get better version of man pages
https://tldr.sh/
Install Ruby
brew install rbenv ruby-build
# Add rbenv to bash/zsh (.bash_profile/.zshrc) so that it loads every time you open a terminal
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.zshrc
source ~/.zshrc
# If you're using Zsh
echo 'export PATH="$HOME/.gem/ruby/2.7.2/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
# If you're using Bash
echo 'export PATH="$HOME/.gem/ruby/2.7.2/bin:$PATH"' >> ~/.bash_profile
# Install Ruby
rbenv install 2.7.2
rbenv global 2.7.2
ruby -v
rbenv rehash
# to check outdated gems
gem outdated
#update all outdated gems
sudo gem update
# delete older gems
sudo gem cleanup
The first thing you want to do after installing a new Ruby version is to install Bundler.
This tool will allow you to set up separate environments for your different Ruby projects, so their required gem versions won't conflict with each other.
Install Bundler with:
gem install bundler
In a new Ruby project directory, create a new Gemfile with: like venv of python environment
bundle init
Make ls, ll commands colorful
$sudo gem install colorls
or faster than colorls:
Snapshots of my configurations:
+ — uncommitted changes in the index;
! — unstaged changes;
? — untracked changes;
$ — stashed changes;
⇣ — unpulled commits;
⇡ — unpushed commits
command-failure-status:
powerlevel10k on top of powerlevel9k
This is optional setup and can be easy to change to and fro from powerlevel9k to powerlevel10k
Only change you need to do is
- Clone powerlevel10k sourcecode
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10
OR
brew install romkatv/powerlevel10k/powerlevel10k
echo "source $(brew --prefix)/opt/powerlevel10k/powerlevel10k.zsh-theme" >>~/.zshrc
- Add powerlevel10k theme to
.zshrc
file and comment powerlevel9k
#ZSH_THEME="powerlevel9k/powerlevel9k"
ZSH_THEME="powerlevel10k/powerlevel10k"
- source the zsh config file
source ~/.zshrc
- If you still need to configure powerlevel10k, you can execute following command and choose suitable options for you
p10k configure
- If you want to use older setup, just change the theme to powerlevel9k and
mv ~/.p10k.zsh ~/.p10k.zsh.bak
Minor difference compare to previous setup
- No longer print status bar on enter command
- git status difference, we get total number of unstaged, untracked files, here 5 unstaged files and 13 untracked files
- if previous command's return status was success/error then subsequent enter will be in green/red respectively as shown below
Other customizations you can try:
- https://denysdovhan.com/spaceship-prompt/
:arrow_up:
iterm2 color theme
The color scheme I have used in above iterm2 snapshots is here
If you need different color schemes then you can ref
- Download the colorscheme file
- double click on it, iterm2 will import it.
:arrow_up:
Terminal File Manager
Installation:
brew install nnn
OR
Refer installation instructions from here
OR
This will add icons to directories and files
Note: Nerd fonts should be installed and configured.
wget https://github.com/jarun/nnn/archive/refs/heads/master.zip
tar -zxvf master.zip
cd nnn-master/
# Not Zero, but Alphabet O, you will get binary nnn in same folder and you can move this bonary to the place you want and use it.
sudo make O_NERD=1
# Since I have install nnn with homebrew and it does not give any colors and icons, so compiled it manually and replaced nnn binary file
sudo cp nnn /usr/local/Cellar/nnn/4.0/bin/
nnn -de
Plugins
curl -Ls https://raw.githubusercontent.com/jarun/nnn/master/plugins/getplugs | sh
Plugins are installed to ${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins
.
Add active plugin list to .zshrc/.bashrc file
export NNN_PLUG='f:finder;o:fzopen;p:mocplay;d:diffs;t:nmount;v:imgview'
Ref:
- https://github.com/jarun/nnn
:arrow_up:
Fig Autocomplete
brew install --cask fig
You can opt-out of all telemetry and crash reporting by running:
fig settings telemetry.disabled true
Requires an emailId for the setup. :unamused:
:arrow_up:
List Of Shell Customization frameworks
:arrow_up:
Python setup
brew install python@3
info:
Python has been installed as
/usr/local/bin/python3
Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
/usr/local/opt/python/libexec/bin
If you need Homebrew's Python 2.7 run
brew install python@2
You can install Python packages with
pip3 install <package>
They will install into the site-package directory
/usr/local/lib/python3.7/site-packages
brew install python@2
Virtual Environment for python
It offers flexibility in isolating multiple python environment and does not interfer with other virtual environment
Package installed in one virtual environment will not be visible in other virtual environment
Package installed in virtual environment will not be installed system wide hence it will not be available to all programs which uses system python setup.
System python installation path
/System/Library/Frameworks/Python.framework/
Homebrew installed python path
/usr/local/Cellar/python/<version>/
Let us us python3 for virtual environment
pip3 install virtualenv
Setup virtual environment at any location, lets setup at home directory
virtualenv -p python3 ~/virtEnvPy3
Activate virtual environment
cd ~/virtEnvPy3
source bin/activate
Install any package for above virtual environment from terminal
pip install flask
Deactivate environment
deactivate
on similar line we can create virtual environment for python2 as well
Now, if you want to extract which all packages you installed
pip2 freeze > requirements-2.txt
# OR
pip3 freeze > requirements-3.txt
If you want to install all packages from requirements.txt
pip2 install -r requirements.txt
#OR
pip3 install --user -r requirements.txt
# pip3 install help
# --user --> Install to the Python user install directory for your platform.
# Typically ~/.local/, or %APPDATA%\Python on Windows.
# (See the Python documentation for site.USER_BASE for full details.
:arrow_up:
GO setup
brew install golang
or brew install go
check version
go version
Environment variables
Your Go working directory (GOPATH
) is where you store your Go code/additional libraries.
It is not mandatory to have your code at go-workspace
.
It can be any path you choose but must be separate from your Go installation directory (GOROOT
).
mkdir ${HOME}/go-workspace
# GO projects/program will be stored
mkdir ${HOME}/go-workspace/src
# packaged object will be stored
mkdir ${HOME}/go-workspace/pkg
# compiled binary files will be stored
mkdir ${HOME}/go-workspace/bin
export GOPATH="${HOME}/go-workspace"
export GOROOT="$(brew --prefix golang)/libexec"
export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin"
Import Go packages
go get -u github.com/tednaleid/ganda
Ref
More Ref
- https://golang.org/project/
- GO-info
:arrow_up:
Groovy setup
If you have existing groovy version installed remove it first
brew remove groovy
Then install SDK by
brew install groovysdk
export GROOVY_HOME=/usr/local/opt/groovy/libexec
Point intelliJ idea to following path
/usr/local/Cellar/groovysdk/<version>/libexec
check version
groovy --version
Ref: 1
:arrow_up:
IntelliJ idea settings
For IntelliJ keymap, import settings.jar
Multiple java versions in mac
http://jdk.java.net/12/ unzip and use for latest features, this will not mess-up your mac java version and environment variables
:arrow_up:
SDKMAN
Install:
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk version
Uninstall:
tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).tar.gz -C ~/ .sdkman
$ rm -rf ~/.sdkman
# remove following line from bashrc/zshrc
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
[[ -s "/home/dudette/.sdkman/bin/sdkman-init.sh" ]] && source "/home/dudette/.sdkman/bin/sdkman-init.sh"
Update:
sdk update
Usage:
# Docs: https://sdkman.io/usage
sdk install micronaut
sdk list micronaut
sdk uninstall micronaut 1.0.4
Install Java (multi distribution)
sdk list java
Available Java Versions
>>>
indicates current default version
Vendor | Use | Version | Dist | Status | Identifier |
---|---|---|---|---|---|
AdoptOpenJDK | 15.0.0.j9 | adpt | 15.0.0.j9-adpt | ||
>>> | 11.0.8.hs | adpt | installed | 11.0.8.hs-adpt | |
8.0.265.j9 | adpt | 8.0.265.j9-adpt | |||
8.0.265.hs | adpt | 8.0.265.hs-adpt | |||
Amazon | 15.0.0 | amzn | 15.0.0-amzn | ||
11.0.8 | amzn | 11.0.8-amzn | |||
8.0.265 | amzn | 8.0.265-amzn | |||
Azul Zulu | 15.0.0 | zulu | 15.0.0-zulu | ||
BellSoft | 15.0.0.fx | librca | 15.0.0.fx-librca | ||
GraalVM | 20.2.0.r11 | grl | 20.2.0.r11-grl | ||
Java.net | 16.ea.19 | open | 16.ea.19-open | ||
SAP | 15.0.0 | sapmchn | 15.0.0-sapmchn |
Use the Identifier for installation:
# syntax
sdk install java <version-dist>
# e.g.
sdk install java 11.0.8.hs-adpt
Ref: https://sdkman.io/
:arrow_up:
Keychain Password
add/update/delete
video tutorials
If you still could not follow up the steps, follow steps mentioned in the video
Part1: https://www.youtube.com/watch?v=iwH1XqVjZOE
Part2: https://www.youtube.com/watch?v=UsKd9Y42Mo0
If your zsh is slower:
- check shell loading time
timezsh() { shell=${1-$SHELL} for i in $(seq 1 10); do /usr/bin/time $shell -i -c exit; done } timezsh
- check its plugin loading time
# Load all of the plugins that were defined in ~/.zshrc for plugin ($plugins); do timer=$(($(gdate +%s%N)/1000000)) if [ -f $ZSH_CUSTOM/plugins/$plugin/$plugin.plugin.zsh ]; then source $ZSH_CUSTOM/plugins/$plugin/$plugin.plugin.zsh elif [ -f $ZSH/plugins/$plugin/$plugin.plugin.zsh ]; then source $ZSH/plugins/$plugin/$plugin.plugin.zsh fi now=$(($(gdate +%s%N)/1000000)) elapsed=$(($now-$timer)) echo $elapsed":" $plugin done
- zsh profiler module
zmodload zsh/zprof zprof
:arrow_up:
Basic Mac Setup
These are common solutions to problems faced while using mac.
If you need token before calling any api
:arrow_up:
Softwares
These softwares I find it useful and grateful to the people behind it.
:arrow_up:
{% gist a4bdff5c011957f9950b9bebed7f5e30 customize-iterm2.sh %}