These are my personal dotfiles for configuring the development environment on my personal computers.
It contains configurations for the following operating systems at the moment:
- macOS
- Windows
I believe in keeping things as simple as possible. I have been down the path of over-configuration and I personally find it to be too brittle and difficult to maintain over time.
I generally prefer to stick to so-called "default" programs for my development workflow as much as possible - and with computing in general. This probably deserves its own spiel somewhere 😜 In short, this paradigm has less configuration hurdles / uncanny valley, and generally has more community buzz for issues.
It is preferrable to use cross-platform programs as much as possible, to ensure a consistent experience (and somewhat consistent configuration experience!) across operating systems. This has many benefits, but the one I like the most is that it's portable.
The dotfiles are structured in a way that each operating system has its own directory. Each directory contains the necessary configuration files and scripts to set up the environment and filenames should be self-explanatory. Comments are included in the files to call out any important details.
dotfiles/
├── macos/
│ ├── .zshenv
│ ├── .zprofile
│ ├── .zshrc
│ └── setup.sh # Contains a script intended to be run in a terminal. It can simply be copy/pasted.
├── windows/
│ ├── Microsoft.PowerShell_profile.ps1
│ └── setup.ps1 # Contains a script intended to be run in a PowerShell terminal. It can simply be copy/pasted.
Here are programs that I use in my development workflow, and others I feel are notable.
-
proto
: On both macOS and Windows, used to manage dev tools (mainlynode
,pnpm
,bun
, etc.).- Other good cross-platform version management tools:
fnm
,pnpm
,volta
. - I prefer this to
fnm
generates folders on every terminal session, which I find a bit annoying. Also,proto
doesn't installnpm
by default when installingnode
, which I prefer. - This tool still has some rough edges (e.g., I have some weird behavior with Zed) but it is otherwise excellent.
- Other good cross-platform version management tools:
-
Defaults, Defaults, Defaults:
-
Terminal: Terminal.app on macOS, Terminal on Windows 11.
-
Shell: zsh on macOS, latest PowerShell on Windows 11.
-
-
Editor: VS Code on both macOS and Windows. Shoutout to Zed. Other notable mention Cursor, although I find Copilot sufficient for my needs.
-
Browsers: Safari, Edge, Chrome, and Firefox. Chromium-based is generally preferred for development, but Safari and Firefox have their uses for testing stricter (broken?) web standards.
-
winget
(shipped with Windows): Very convenient package manager for Windows that also updates other programs on my system automically. -
brew
: The de facto package manager for macOS. I use it to install most of my CLI tools. -
Raycast: Could potentially be great if they also released a Windows version - would really make both my macOS and Windows experience more consistent.