To set up your full development environment on a fresh macOS machine:
-
Install Xcode Command Line Tools (if prompted):
xcode-select --install
This is required for Homebrew and many developer tools.
-
Clone this repository:
git clone https://github.com/IntScription/dotfiles.git cd dotfiles -
Run the install script:
chmod +x install.sh ./install.sh
This will:
- Install Homebrew (if needed) and then all tools from the
Brewfileviabrew bundle - Use GNU stow to symlink all configuration files from this repo into your home directory
- Automatically install Tmux plugins and Neovim plugins
- Clone and bootstrap my Devlog (Jekyll) site at
~/projects/learning/devlog - Give you clear feedback at every step
After the script completes, restart your terminal or source your shell config:
source ~/.zshrcDotfiles are configuration files for Unix-based systems that help you personalize your shell, editors, terminal, and other tools. Keeping them in a version-controlled repository makes it easy to set up a new machine or share your setup with others.
This repository includes custom configurations for:
- Zsh: My preferred shell, with custom prompts, aliases, and plugins.
- Neovim: A powerful text editor setup with plugins and custom key mappings.
- Tmux: Terminal multiplexer for managing multiple terminal sessions.
- Alacritty: Fast, GPU-accelerated terminal emulator.
- Yazi: Blazing-fast terminal file manager.
- LazyGit: Terminal UI for Git, simplifying Git operations.
- System Configurations: Other essential config files for macOS/Linux optimization.
- Devlog (Jekyll): Auto-clones my Devlog repo and installs Ruby gems.
Includes a
devlogZsh helper to create today’s entry with Prev/Next navigation.
.
├── zsh/
│ └── .zshrc
├── nvim/
│ └── .config/nvim/
├── tmux/
│ └── .config/tmux/
├── alacritty/
│ └── .config/alacritty/
├── yazi/
│ └── .config/yazi/
├── Brewfile
├── coolnight.itermcolors
├── scripts/
├── README.md
└── install.shgit clone https://github.com/IntScription/dotfiles.git
cd dotfilesThis will:
- Install Homebrew (if not present, macOS only)
- Use
brew bundlewith theBrewfileto install CLI tools, GUI apps, and fonts - Use GNU stow to symlink the configs in this repo into your
$HOME
chmod +x install.sh
./install.shAfter installation, restart your terminal or source your shell config:
source ~/.zshrc- The installer clones
https://github.com/IntScription/devlogto~/projects/learning/devlogand runsbundle install. - Repo: IntScription/devlog
cd ~/projects/learning/devlog
bundle exec jekyll serveThen open http://localhost:4000/devlog/.
After reloading your shell:
source ~/.zshrc
devlogThis opens today’s logs/YYYY-MM-DD/index.md in Neovim and auto-updates
Prev/Next links for today and the previous entry. It also refreshes the archive
and the homepage’s recent entries.
Place Markdown notes under ~/projects/learning/devlog/notes/, or symlink an
Obsidian folder:
ln -s ~/Obsidian/Vault/MyNotes ~/projects/learning/devlog/notes/MyNotes- A fixer script lives at
scripts/fix_markdown.shand a config at.markdownlint.json. - Neovim is configured to run the fixer automatically on save for Markdown files in this repo.
- You can also run it manually:
/Users/kartiksanil/dotfiles/scripts/fix_markdown.shOr with the alias:
fixmdThe fixer prefers markdownlint-cli2 if installed, falling back to
markdownlint (markdownlint-cli). The installer sets up both on macOS.
Preview Markdown in-browser with iamcco/markdown-preview.nvim:
:MarkdownPreviewToggleKeymap: <leader>mp.
If you don't have Homebrew, the install.sh script will install it for you.
Homebrew is the recommended package manager for macOS and is used to install
tools like LazyGit.
This repo also includes a Brewfile, so install.sh can run:
brew bundle --file=Brewfileto install all of your CLI tools, GUI apps, and fonts in one go.
- Tmux using default config: Tmux 3.1+ reads
~/.config/tmux/tmux.conf. This repo usesconfig/tmux/tmux.conf. If you get “No such file or directory” when sourcing, (re)create the symlinks from the repo root:ln -sfn "$(pwd)/config/tmux" "$HOME/.config/tmux"andln -sfn "$HOME/.config/tmux/tmux.conf" "$HOME/.tmux.conf". Then runtmux source-file ~/.config/tmux/tmux.confor restart tmux. - Neovim closes on H or yank with “kill” in terminal: If pressing H (e.g. in
neo-tree to toggle hidden) or yanking closes nvim and the terminal shows “kill”,
check what’s mapped: in nvim run
:verbose map Hand:verbose map y. Test without plugins:nvim -u NONEand try H/y again. In iTerm2, check Keys → Key Mappings for anything bound to H or y that might send a control character.
-
Each top-level folder (
zsh,nvim,tmux,alacritty,yazi, …) is a stow package. -
Inside each package, the directory structure mirrors the final location under your
$HOME(for example,nvim/.config/nvim,tmux/.config/tmux). -
Running:
stow -t "$HOME" zsh nvim tmux alacritty yazifrom the repo root creates symlinks from this repo into your home directory.
-
This makes it easy to update configs by just pulling changes and re-running the script (or re-stowing specific packages).
Feel free to fork this repo and adapt it to your needs! You can:
- Add your own plugins, themes, or scripts
- Modify configs for your workflow
- Share improvements via pull requests
Contributions, suggestions, and issues are welcome! Please open an issue or PR if you have ideas to improve these dotfiles.
MIT License.
- Fast onboarding: Get your dev environment up and running in minutes.
- Consistency: Same setup across all your machines.
- Easy to update: Just pull and re-run the script.
Happy coding! 🚀