-
-
Save OleksandrKucherenko/e76220f22359e0e49c81c5474b1457a1 to your computer and use it in GitHub Desktop.
#!/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 |
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
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
Overview: https://adr.github.io/
$ npx adr-tool init ./docs/adr folder is created! $ npx adr-tool create Use Markdown Architectural Decision Records a decision created on ./docs/adr/0000-use-markdown-architectural-decision-records.md