← Blog

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!