Last active
March 19, 2025 10:14
-
-
Save OleksandrKucherenko/e76220f22359e0e49c81c5474b1457a1 to your computer and use it in GitHub Desktop.
Pre-configure My mac
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 characters
#!/usr/bin/env bash | |
set -x # uncomment to debug | |
# required for Homebrew | |
xcode-select —-install | |
sudo xcodebuild -license accept | |
# install https://brew.sh/ | |
which brew || (/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" ) | |
# install latest bash | |
if [[ "${BASH_VERSINFO[0]}" -lt 4 ]]; then | |
brew install bash | |
else | |
echo "[info] detected BASH version: ${BASH_VERSION}" | |
fi | |
# Include cask software packages | |
# Not needed any more, outdated: brew tap caskroom/cask | |
# install iTerm2 | |
brew install iterm2 --cask | |
# install ZSH | |
which zsh || (brew install zsh) | |
# install latest GIT | |
brew install git | |
brew install git-lfs | |
# install oh-my-zsh | |
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" | |
# ZSH fast-syntax-highlighting | |
# deprecated: git clone https://github.com/zdharma/fast-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting | |
git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git \ | |
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting | |
# ZSH autosuggestions, https://github.com/zsh-users/zsh-autosuggestions/blob/master/INSTALL.md | |
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions | |
# make ZSH default shell | |
sudo sh -c "echo $(which zsh) >> /etc/shells" && chsh -s $(which zsh) | |
# install powerline fonts (https://github.com/powerline/fonts/#quick-installation) | |
mkdir ~/workspace | |
git clone https://github.com/powerline/fonts.git --depth=1 ~/workspace/fonts | |
~/workspace/fonts/install.sh | |
# show file system as tree in terminal | |
which tree || (brew install tree) | |
# `cat` replacer | |
which bat || (brew install bat) | |
# expect, simualte user input in scripts | |
which expect || (brew install expect) | |
# RIP grep | |
which rg || (brew install ripgrep) | |
# https://formulae.brew.sh/formula/midnight-commander | |
which mcedit || (brew install midnight-commander) | |
# https://github.com/tldr-pages/tldr | |
which tldr || (brew install tldr) | |
# https://formulae.brew.sh/formula/htop | |
which htop || (brew install htop) | |
# https://formulae.brew.sh/formula/tmux | |
which tmux || (brew install tmux) | |
# JSON, https://formulae.brew.sh/formula/jq | |
which jq || (brew install jq) | |
# Yaml, https://github.com/mikefarah/yq | |
which yq || (brew install yq) | |
# Nano editor, https://www.nano-editor.org/ | |
which nano || (brew install nano) | |
# https://formulae.brew.sh/formula/watchman | |
which watchman || (brew install watchman) | |
# https://formulae.brew.sh/formula/watch, https://www.geeksforgeeks.org/watch-command-in-linux-with-examples/ | |
which watch || (brew install watch) | |
# PipeViewer, https://www.ivarch.com/programs/pv.shtml | |
which pv || (brew install pv) | |
# Gnu-Sed, https://www.gnu.org/software/sed/ | |
which gsed || (brew install gsed) | |
# https://command-not-found.com/whiptail | |
brew install newt | |
# instal NVM | |
which nvm || (curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash) | |
nvm install --lts | |
nvm use --lts | |
# install YVM | |
#which yvm || (brew install tophat/bar/yvm) | |
which yvm || (curl -s https://raw.githubusercontent.com/tophat/yvm/master/scripts/install.js | node) | |
yvm list-remote | |
# install direnv | |
which direnv || (curl -sfL https://direnv.net/install.sh | bash) | |
direnv allow | |
# install RVM, https://rvm.io/rvm/install | |
which rvm || (curl -sSL https://get.rvm.io | bash -s stable --ruby) | |
# install LastPass | |
brew install lastpass --cask | |
# diff tools | |
brew install p4v --cask | |
# p4merge, as GIT default merge tool... https://gist.github.com/tony4d/3454372 | |
git config --global merge.tool p4mergetool | |
git config --global mergetool.p4mergetool.cmd "/Applications/p4merge.app/Contents/Resources/launchp4merge \$PWD/\$BASE \$PWD/\$REMOTE \$PWD/\$LOCAL \$PWD/\$MERGED" | |
git config --global mergetool.p4mergetool.trustExitCode false | |
git config --global mergetool.keepBackup false | |
#brew install kdiff3 | |
# GIT UI | |
brew install fork --cask | |
# install messangers | |
brew install --cask slack | |
brew install --cask zoom | |
brew install --cask telegram-desktop | |
brew install --cask skype | |
brew install --cask microsoft-teams | |
brew install --cask discord | |
# install alternative browser | |
brew install google-chrome --cask | |
# Extensions: | |
# LastPass: https://chrome.google.com/webstore/detail/lastpass-free-password-ma/hdokiejnpimakedhajhdlcegeplioahd?hl=en-GB | |
# LanguageTool: https://chrome.google.com/webstore/detail/grammar-and-spell-checker/oldceeleldhonbafppcapldpdifcinji?hl=en-GB | |
# Grammarly: https://chrome.google.com/webstore/detail/grammarly-for-chrome/kbfnbcaeplbcioakkpcpgfkobkghlhen?hl=en-GB | |
# ImTranslator: https://chrome.google.com/webstore/detail/imtranslator-translator-d/noaijdpnepcgjemiklgfkcfbkokogabh?hl=en-GB | |
# AdsBlock: https://getadblock.com/ | |
brew install firefox --cask | |
/Applications/Firefox.app/Contents/MacOS/firefox https://addons.mozilla.org/en-US/firefox/addon/lastpass-password-manager/ & | |
# https://github.com/AdoptOpenJDK/homebrew-openjdk | |
# brew tap AdoptOpenJDK/openjdk | |
# brew install adoptopenjdk11 --cask | |
brew install --cask temurin | |
# install extra fonts | |
brew tap homebrew/cask-fonts | |
brew install font-fira-code --cask | |
brew tap colindean/fonts-nonfree | |
brew install font-microsoft-office --cask | |
# install vscode | |
brew install visual-studio-code --cask | |
# install TextMate, https://formulae.brew.sh/cask/textmate | |
brew install textmate --cask | |
# Anydesk, https://formulae.brew.sh/cask/anydesk | |
brew install anydesk --cask | |
# cyberduck, https://cyberduck.io/ | |
brew install cyberduck --cask | |
# XnConvert, https://www.xnview.com/en/xnconvert/ | |
brew install xnconvert --cask | |
brew install imagemagick | |
brew install graphicsmagick | |
brew install ffmpeg | |
# Clipboard Manager, Multiple Clipboards | |
# Clipy, https://clipy-app.com/ | |
brew install clipy --cask | |
# https://maccy.app/, https://github.com/p0deje/Maccy | |
brew install maccy | |
# trolCommander, https://trolsoft.ru/en/soft/trolcommander | |
brew install trolcommander --cask | |
# Far Manager For Linux (works for MacOs), https://github.com/elfmz/far2l | |
brew install --cask far2l | |
# GitUp, https://gitup.co/ | |
brew install gitup --cask | |
# Kap, https://getkap.co/ | |
brew install kap --cask | |
# Keka, www.keka.io | |
brew install keka --cask | |
# Be Focused, https://xwavesoft.com/be-focused-pro-for-iphone-ipad-mac-os-x.html | |
# Windows manager | |
# Magnet, https://magnet.crowdcafe.com/index.html | |
# Penc, https://deniz.co/penc/ | |
brew install penc --cask | |
# Divvy, https://mizage.com/divvy/ | |
brew install divvy --cask | |
# Calendar, Time, https://www.mowglii.com/itsycal/ | |
# Use pattern: E | 'w'ww | d MMM, HH:mm:ss | |
brew install itsycal --cask | |
# Hex Fiend, https://ridiculousfish.com/hexfiend/, https://formulae.brew.sh/cask/hex-fiend | |
brew install hex-fiend --cask | |
# https://github.com/zsh-users/zsh-completions | |
# Android Logcat | |
brew install pidcat | |
# Androic Screen Copy tool, https://formulae.brew.sh/formula/scrcpy | |
brew instal scrcpy | |
# Screensaver | |
# https://fliqlo.com/#/screensaver | |
brew install fliqlo --cask | |
# Markdown editor, https://macdown.uranusjr.com/ | |
brew install macdown --cask | |
# https://objective-see.com/products/knockknock.html | |
brew install knockknock --cask | |
# manual actions | |
echo ' | |
plugins=(git colored-man-pages colorize pip python brew osx fast-syntax-highlighting zsh-autosuggestions) | |
' | |
# https://github.com/cnstntn-kndrtv/open-in-buttons-for-finder-toolbar | |
# Finder: Show hidden files | |
defaults write com.apple.finder AppleShowAllFiles YES | |
# Finder: Automatically open a new Finder window when a volume is mounted | |
defaults write com.apple.frameworks.diskimages auto-open-ro-root -bool true | |
defaults write com.apple.frameworks.diskimages auto-open-rw-root -bool true | |
defaults write com.apple.finder OpenWindowForNewRemovableDisk -bool true | |
# Activity Monitor: Visualize CPU usage in the Activity Monitor Dock icon | |
defaults write com.apple.ActivityMonitor IconType -int 5 | |
# Temperature monitoring: https://beebom.com/how-check-cpu-temperature-mac/, https://fannywidget.com/ | |
brew install fanny | |
# Enable TouchID for terminal SUDO | |
# https://dev.to/equiman/how-to-use-macos-s-touch-id-on-terminal-5fhg | |
# https://unix.stackexchange.com/questions/99350/how-to-insert-text-before-the-first-line-of-a-file | |
sudo gsed -i '1i auth sufficient pam_tid.so' /etc/pam.d/sudo | |
# Configure environment ~/.zshrc | |
# https://www.appsdeveloperblog.com/how-to-set-java_home-on-mac/ | |
# | |
# List available: `/usr/libexec/java_home -V` | |
# | |
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) | |
export ANDROID_HOME=/usr/local/opt/android | |
export GRADLE_USER_HOME=/usr/local/opt/.gradle | |
export M2_HOME=/usr/local/opt/.m2 | |
# run in terminal | |
launchctl setenv JAVA_HOME $JAVA_HOME | |
launchctl setenv GRADLE_USER_HOME $GRADLE_USER_HOME | |
launchctl setenv M2_HOME $M2_HOME | |
launchctl setenv ANDROID_HOME $ANDROID_HOME | |
# configure Finder, src: https://github.com/mathiasbynens/dotfiles/blob/main/.macos | |
# Finder: show path bar | |
defaults write com.apple.finder ShowPathbar -bool true | |
# Keep folders on top when sorting by name | |
defaults write com.apple.finder _FXSortFoldersFirst -bool true | |
# Display full POSIX path as Finder window title | |
defaults write com.apple.finder _FXShowPosixPathInTitle -bool true | |
# Show hidden files | |
defaults write com.apple.finder AppleShowAllFiles true | |
# Avoid creating .DS_Store files on network or USB volumes | |
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true | |
defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true |
theme = Dracula
quit-after-last-window-closed = true
font-family = Cascadia Mono ExtraLight
font-family-bold = Cascadia Mono SemiBold
font-feature = ss02
font-size = 16
keybind = alt+left=esc:B
keybind = alt+right=esc:F
macos-option-as-alt = true
keybind = super+down=esc:B
keybind = super+up=esc:F
keybind = super+left=text:\x01
keybind = super+right=text:\x05
#keybind = alt+backspace=text:\0x17
#keybind = super+backspace=text:\0x15
keybind = cmd+backspace=text:\x15
keybind = opt+backspace=text:\x17
keybind = ctrl+equal=increase_font_size:1
keybind = ctrl+minus=decrease_font_size:1
keybind = ctrl+zero=reset_font_size
keybind = ctrl+plus=increase_font_size:1
# ref: https://github.com/ghostty-org/ghostty/discussions/3165
#keybind = option+left=csi:1;3D
#keybind = option+right=csi:1;3C
#keybind = cmd+left=csi:H
#keybind = cmd+right=csi:F
Ghostty settings
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Cask:
anaconda: (Anaconda Distribution) Distribution of the Python and R programming languages for scientific computing
blackhole-2ch: (BlackHole 2ch) Virtual Audio Driver
bluesnooze: (Bluesnooze) Prevents your sleeping computer from connecting to Bluetooth accessories
brewservicesmenubar: (Brew Services Menubar) Menu item for starting and stopping homebrew services
clipy: (Clipy) Clipboard extension app
font-microsoft-office: (Microsoft Office Fonts) [no description]
corretto11: (AWS Corretto JDK) OpenJDK distribution from Amazon
cursor: (Cursor) Write, edit, and chat about your code with AI
dbeaver-community: (DBeaver Community Edition) Universal database tool and SQL client
far2l: (far2l) Unix fork of FAR Manager v2
font-fira-code: (Fira Code) [no description]
fork: (Fork) GIT client
git-credential-manager: (Git Credential Manager) Cross-platform Git credential storage for multiple hosting providers
google-cloud-sdk: (Google Cloud SDK) Set of tools to manage resources and applications hosted on Google Cloud
graalvm-jdk22: (Oracle GraalVM for JDK 22) [no description]
itsycal: (Itsycal) Menu bar calendar
keka: (Keka) File archiver
obsidian: (Obsidian) Knowledge base that works on top of a local folder of plain text Markdown files
penc: (Penc) Trackpad-oriented window manager
smcfancontrol: (smcFanControl) Sets a minimum speed for built-in fans
stats: (Stats) System monitor for the menu bar
tabby: (Tabby, Terminus) Terminal emulator, SSH and serial client
temurin: (Eclipse Temurin Java Development Kit) JDK from the Eclipse Foundation (Adoptium)
visual-studio-code: (Microsoft Visual Studio Code, VS Code) Open-source code editor
Regular:
adr-tools: CLI tool for working with Architecture Decision Records
ansible: Automate deployment, configuration, and upgrading
asciinema: Record and share terminal sessions
asdf: Extendable version manager with support for Ruby, Node.js, Erlang & more
awscli: Official Amazon AWS command-line interface
cookies: Command-line tool for extracting cookies from the user's web browser
bash-completion@2: Programmable completion for Bash 4.2+
bat: Clone of cat(1) with syntax highlighting and Git integration
bitwarden-cli: Secure and free password manager for all of your devices
bkt: CLI utility for caching the output of subprocesses
blueutil: Get/set bluetooth power and discoverable state
btop: Resource monitor. C++ version and continuation of bashtop and bpytop
carthage: Decentralized dependency manager for Cocoa
chafa: Versatile and fast Unicode/ASCII/ANSI graphics renderer
colima: Container runtimes on MacOS (and Linux) with minimal setup
csvkit: Suite of command-line tools for converting to and working with CSV
csvtk: Cross-platform, efficient and practical CSV/TSV toolkit in Golang
k9s: Kubernetes CLI To Manage Your Clusters In Style!
direnv: Load/unload environment variables based on $PWD
docker: Pack, ship and run any application as a lightweight container
docker-buildx: Docker CLI plugin for extended build capabilities with BuildKit
docker-compose: Isolated development environments using Docker
docker-credential-helper: Platform keystore credential helper for Docker
dua-cli: View disk space usage and delete unwanted data, fast
dust: More intuitive version of du in rust
oatmeal: Terminal UI to chat with large language models (LLM) using backends such as Ollama, and direct integrations with your favourite editor like Neovim!
duti: Select default apps for documents and URL schemes on macOS
exiftool: Perl lib for reading and writing EXIF metadata
eza: Modern, maintained replacement for ls
fd: Simple, fast and user-friendly alternative to find
fnm: Fast and simple Node.js version manager
fonttools: Library for manipulating fonts
fswatch: Monitor a directory for changes and run a shell command
fzf: Command-line fuzzy finder written in Go
gawk: GNU awk utility
gh: GitHub command-line tool
git: Distributed revision control system
git-crypt: Enable transparent encryption/decryption of files in a git repo
git-lfs: Git extension for versioning large files
gitleaks: Audit git repos for secrets
gnu-sed: GNU implementation of the famous stream editor
go: Open source programming language to build simple/reliable/efficient software
gradle: Open-source build automation tool based on the Groovy and Kotlin DSL
graphicsmagick: Image processing tools collection
graphviz: Graph visualization software from AT&T and Bell Labs
grep: GNU grep, egrep and fgrep
groff: GNU troff text-formatting system
groovy: Java-based scripting language
hcl2json: Convert HCL2 to JSON
htop: Improved top (interactive process viewer)
httperf: Tool for measuring webserver performance
httpie: User-friendly cURL replacement (command-line HTTP client)
hyperfine: Command-line benchmarking tool
icdiff: Improved colored diff
jenv: Manage your Java environment
lazydocker: A simple terminal UI for docker, written in Go
rs-git-fsmonitor: Git fsmonitor hook written in Rust
jq: Lightweight and flexible command-line JSON processor
kcat: Generic command-line non-JVM Apache Kafka producer and consumer
kcov: Code coverage tester for compiled programs, Python, and shell scripts
keyring: Easy way to access the system keyring service from python
aws-login-tool: Tool for logging into AWS from the terminal
ci-secrets-cli: CLI for interacting with CI Secrets
grond-cli: CLI for interacting with C2C's control plane (Grond)
kep-cli: KEP CLI is a utility command line tool to manage the Klarna Engineering platform products.
kiki-copilot: Kiki Copilot brings Kiki's knowledge and AI agents to your code editor
lazygit: Simple terminal UI for git commands
lesspipe: Input filter for the pager less
libpq: Postgres C API library
zsv: zsv+lib: world's fastest (simd) CSV parser, with an extensible CLI
lnav: Curses-based tool for viewing and analyzing log files
lsyncd: Synchronize local directories with remote targets
cw: The best way to tail AWS Cloudwatch Logs from your terminal
mas: Mac App Store command-line interface
maven: Java-based project management
micro: Modern and intuitive terminal-based text editor
midnight-commander: Terminal-based visual file manager
minikube: Run a Kubernetes cluster locally
mkcert: Simple tool to make locally trusted development certificates
most: Powerful paging program
mtr: 'traceroute' and 'ping' in a single tool
mvfst: QUIC transport protocol implementation
ncdu: NCurses Disk Usage
[email protected]: Distributed revision control system
ollama: Create, run, and share large language models (LLMs)
openapi-generator: Generate clients, server & docs from an OpenAPI spec (v2, v3)
ox: Independent Rust text editor that runs in your terminal
oxker: Terminal User Interface (TUI) to view & control docker containers
parallel: Shell command parallelization utility
pass: Password manager
protobuf: Protocol buffers (Google's data interchange format)
pstree: Show ps output as a tree
pv: Monitor data's progress through a pipe
px: Ps and top for human beings (px / ptop)
pyenv: Python version management
rclone: Rsync for cloud storage
rust: Safe, concurrent, practical language
scrcpy: Display and control your Android device
serpl: Simple terminal UI for search and replace
shellcheck: Static analysis and lint tool, for (ba)sh scripts
shellspec: BDD unit testing framework for dash, bash, ksh, zsh and all POSIX shells
sleepwatcher: Monitors sleep, wakeup, and idleness of a Mac
swig: Generate scripting interfaces to C/C++ code
t-rec: Blazingly fast terminal recorder that generates animated gif images for the web
tenv: OpenTofu / Terraform / Terragrunt / Atmos version manager
terminal-notifier: Send macOS User Notifications from the command-line
terraformer: CLI tool to generate terraform files from existing infrastructure
tala: Advanced diagram layout engine for D2
tflint: Linter for Terraform files
the_silver_searcher: Code-search similar to ack
tig: Text interface for Git repositories
tldr: Simplified and community-driven man pages
tmux: Terminal multiplexer
saw: Fast, multipurpose tool for AWS CloudWatch Logs
universal-ctags: Maintained ctags implementation
uv: Extremely fast Python package installer and resolver, written in Rust
vhs: Your CLI home video recorder
watch: Executes a program periodically, showing output fullscreen
wget: Internet file retriever
woff2: Utilities to create and convert Web Open Font File (WOFF) files
xidel: XPath/XQuery 3.0, JSONiq interpreter to extract data from HTML/XML/JSON
xmlstarlet: XML command-line utilities
usql: universal command-line SQL client interface
xsv: Fast CSV toolkit written in Rust
ykman: Tool for managing your YubiKey configuration
ykpers: YubiKey personalization library and tool
jnv: JSON navigator and interactive filter leveraging jq
yq: Process YAML, JSON, XML, CSV and properties documents from the CLI
zsh: UNIX shell (command interpreter)
zsh-completions: Additional completion definitions for zsh