Configuration files for my development environment.
| Family | Distros | Package manager |
|---|---|---|
| Arch | Arch, Manjaro, EndeavourOS | pacman |
| RHEL | Rocky, Alma, Fedora, RHEL, CentOS Stream | dnf + EPEL |
| Debian | Debian, Ubuntu, Mint, Pop!_OS | apt |
| macOS | macOS | brew |
| Windows | Windows 10/11 | winget (via bootstrap.ps1) |
The bootstrap script will attempt to install missing prerequisites automatically.
git clone https://github.com/hwhang0917/dotfiles.git ~/dotfiles
cd ~/dotfiles
./bootstrap.shThe bootstrap script will:
-
Check for required dependencies (git, stow, curl)
-
Detect your platform (linux, wsl, macos, windows)
-
Install gum for interactive prompts (falls back to basic
readif unavailable) -
Initialize git submodules
-
Interactively select optional tools to install:
Tool Description Install method fzf Fuzzy finder pacman / apt / brew zoxide Smarter cd pacman / brew / install script eza Modern ls pacman / brew / cargo bat Modern cat pacman / apt / brew starship Prompt pacman / brew / install script fnm Fast Node Manager pacman / brew / install script -
Interactively select stow packages (platform defaults pre-selected)
-
Remind to set up git local configuration if missing
| Platform | Stow packages |
|---|---|
| Common (all) | git, zsh, tmux, nvim, vim, scripts, tig, yazi |
| Linux | hypr, sway, ghostty, kime |
| WSL | (common only) |
| macOS | ghostty |
| Windows | (use bootstrap.ps1) |
-
Clone the repository:
git clone https://github.com/hwhang0917/dotfiles.git ~/dotfiles -
Initialize submodules:
cd ~/dotfiles git submodule update --init --recursive
-
Stow packages:
stow <package>
Windows does not support GNU Stow. Use bootstrap.ps1 instead (requires Administrator):
# Run PowerShell as Administrator
git clone https://github.com/hwhang0917/dotfiles.git $HOME\dotfiles
cd $HOME\dotfiles
.\bootstrap.ps1The script will install tools via winget (Git, Neovim, AutoHotkey, GlazeWM, Zebar, fnm, fzf, Starship), install Node.js LTS via fnm, initialize submodules, build the Zebar widget, create symlinks, and set up git local config.
windows/scripts/Create-Symlink.ps1 is a lightweight alternative to GNU Stow for Windows. It creates symbolic links and requires Administrator privileges.
.\windows\scripts\Create-Symlink.ps1 <target> <symlink>If <symlink> is a directory, the symlink is created inside it using the target's filename.
# Create symlink at an explicit path
.\windows\scripts\Create-Symlink.ps1 .\windows\scripts\Create-Symlink.ps1 C:\bin\Create-Symlink.ps1
# Create symlink inside a directory (C:\bin\Create-Symlink.ps1)
.\windows\scripts\Create-Symlink.ps1 .\windows\scripts\Create-Symlink.ps1 C:\bin\- Errors early if not running as Administrator
- Skips if an identical symlink already exists
- Prompts before replacing a symlink that points to a different target
- Creates parent directories as needed
See nvim/.config/nvim/README.md for setup, requirements, and local configuration.
After stowing git (or running bootstrap.ps1), set up your local credentials:
cp ~/dotfiles/git/.gitconfig.local.example ~/.gitconfig.localEdit ~/.gitconfig.local with your name, email, and signing key:
[credential "https://github.com"]
helper =
helper = !/usr/bin/gh auth git-credential
[credential "https://gist.github.com"]
helper =
helper = !/usr/bin/gh auth git-credential
[user]
name = Your Name
email = your.email@example.com
signingKey = ~/.ssh/id_ed25519.pubOptionally add includeIf for work-specific configs:
[includeIf "gitdir:~/work/"]
path = ~/work/.gitconfigTo uninstall a package, you can use GNU Stow with the -D option:
stow -D <package>If stow fails due to existing files:
stow -D <package> # Remove any partial stow
mv ~/.config/<file> ~/.config/<file>.backup # Backup existing file
stow <package> # Try againIf submodules fail to initialize:
git submodule sync
git submodule update --init --recursive --forceThe bootstrap script can install these automatically. To re-run just the install step:
./bootstrap.shOr install manually — see the optional tools table above for links.
Install the prerequisites first:
# Debian/Ubuntu
sudo apt install git stow curl
# Arch
sudo pacman -S git stow curl
# macOS
brew install git stow curl