Dotfiles
My personal dotfiles and development environment configuration.
Pre-requisites
Setup
# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install ohmyzsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# (Optional) Install ghostty
brew install --cask ghostty
# Install packages
brew install xz pyenv fastfetch btop biome gettext gh fnm
# Install cask packages
brew install --cask ghostty spotify orbstack bruno pgadmin4 zed github zen google-chrome font-monaspace font-jetbrains-mono
# Install Python
pyenv install 3.11.0
pyenv global 3.11.0
# Install Pnpm
curl -fsSL https://get.pnpm.io/install.sh | sh -
# Install bun
curl -fsSL https://bun.com/install | bash
Shell
# export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH
# Path to your Oh My Zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time Oh My Zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="robbyrussell"
plugins=(git)
source $ZSH/oh-my-zsh.sh
# Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='node'
else
export EDITOR='code'
fi
# fnm (Fast Node Manager)
eval "$(fnm env --use-on-cd)"
# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# bun completions
[ -s "/Users/abc/.bun/_bun" ] && source "/Users/abc/.bun/_bun"
# bun
export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH"
# pmguard
#
eval "$(pmguard install-hooks)"
# env
#
export NPM_TOKEN={YOUR_NPM_TOKEN}
Ghostty Config
# /Users/<username>/.config/ghostty/config
command = /bin/zsh
font-family = JetBrains Mono
font-size = 14
theme = Monokai Pro
window-padding-x = 14
window-padding-y = 14
background-opacity = 0.80
background-blur = true
Editor (VS Code)
{
"editor.fontFamily": "JetBrains Mono",
"editor.fontSize": 15,
"editor.fontLigatures": true,
"editor.lineHeight": 1.6,
"editor.bracketPairColorization.enabled": true,
"editor.guides.bracketPairs": true,
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.wordWrap": "on",
"editor.smoothScrolling": true,
"files.exclude": {
"**/__pycache__": true,
"**/.cache": true,
"**/.DS_Store": true,
"**/.eggs": true,
"**/.git": true,
"**/.hg": true,
"**/.mypy_cache": true,
"**/.pytest_cache": true,
"**/.ropeproject": true,
"**/.serverless": true,
"**/.serverless_bin": true,
"**/.serverless_plugins": true,
"**/.serverless_plugins_cache": true,
"**/.svn": true,
"**/.tox": true,
"**/.venv": true,
"**/*.pyc": true,
"**/CVS": true,
"**/node_modules": true,
"**/.next": true
},
"search.exclude": {
"**/node_modules": true,
"**/bower_components": true,
"**/.git": true,
"**/.svn": true,
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true
},
"editor.formatOnSaveMode": "file",
"editor.formatOnPaste": true,
"editor.formatOnSave": true,
"editor.defaultFormatter": "biomejs.biome",
"editor.codeActionsOnSave": {
"source.fixAll.biome": "explicit",
"source.organizeImports.biome": "explicit"
},
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true,
"editor.formatOnSaveMode": "file",
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
},
"workbench.colorTheme": "Monokai Pro (Filter Spectrum)",
"workbench.iconTheme": "Monokai Pro Icons",
"json.schemaDownload.trustedDomains": {
"https://biomejs.dev": true,
"https://developer.microsoft.com/json-schemas/": true,
"https://inlang.com": true,
"https://json-schema.org/": true,
"https://json.schemastore.org/": true,
"https://raw.githubusercontent.com/": true,
"https://raw.githubusercontent.com/devcontainers/spec/": true,
"https://raw.githubusercontent.com/microsoft/vscode/": true,
"https://schemastore.azurewebsites.net/": true,
"https://ui.shadcn.com": true,
"https://www.schemastore.org/": true
},
"security.workspace.trust.untrustedFiles": "open",
"python.terminal.activateEnvironment": false,
"[handlebars]": {
"editor.defaultFormatter": "vscode.html-language-features"
},
"biome.suggestInstallingGlobally": false,
"git.autofetch": true,
"git.openRepositoryInParentFolders": "never",
"claudeCode.preferredLocation": "panel",
"python.analysis.typeCheckingMode": "standard",
"workbench.editor.empty.hint": "hidden",
"workbench.sideBar.location": "left",
"chat.editor.fontSize": 2,
"chat.viewSessions.orientation": "stacked",
"extensions.ignoreRecommendations": true,
"makefile.configureOnOpen": true,
"cursorpyright.analysis.typeCheckingMode": "standard",
"workbench.settings.applyToAllProfiles": [],
"workbench.preferredLightColorTheme": "Monokai Pro (Filter Ristretto)"
}
That's all folks!