Skip to content

Instantly share code, notes, and snippets.

@OleksandrKucherenko
Last active March 19, 2025 10:14
Show Gist options
  • Save OleksandrKucherenko/e76220f22359e0e49c81c5474b1457a1 to your computer and use it in GitHub Desktop.
Save OleksandrKucherenko/e76220f22359e0e49c81c5474b1457a1 to your computer and use it in GitHub Desktop.
Pre-configure My mac
#!/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
@OleksandrKucherenko
Copy link
Author

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

@OleksandrKucherenko
Copy link
Author

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