dotfile is a turnkey bootstrap kit for fresh Ubuntu and macOS systems. It merges traditional dotfiles with modular post-installation scripts so you can transform a vanilla machine into a fully-equipped development workstation in minutes—consistently and repeatably.
Powered by dotbot for declarative, idempotent dotfile management.
- One-command provisioning – install packages, apply system tweaks, and symlink config files with
./install. - Cross-platform – single repository for both Linux (Ubuntu) and macOS with OS-specific configs.
- Declarative configuration – all setup steps defined in YAML (
install.conf.yaml+ OS-specific files). - Idempotent by design – safe to re-run; dotbot detects existing symlinks and skips them.
- AI coding tools – Claude Code, Codex, and Gemini CLI.
- Starship Prompt – modern cross-shell prompt with the nerd-font-symbols preset.
- cc-statusline – beautiful status bar for Claude Code with context, cost, and session tracking.
| Step | Common | Linux | macOS |
|---|---|---|---|
| sudoers NOPASSWD | Y | ||
| Homebrew | Y | ||
| Node.js, jq | Y | ||
| Gemini CLI | Y | ||
| Starship (nerd-font-symbols) | Y | ||
| cc-statusline | Y | ||
| Claude Code | native installer | brew --cask | |
| Codex | npm | brew --cask | |
| GNU Screen + screenrc | Y | ||
| Samba share | Y |
dotfile/
├── install # Entry point: OS detection + dotbot runner
├── install.conf.yaml # Common configuration (both platforms)
├── install.linux.yaml # Linux-specific (screen, samba, claude-code, codex)
├── install.macos.yaml # macOS-specific (claude-code, codex via cask)
├── dotbot/ # Dotbot engine (git submodule)
├── config/ # Configuration files
│ ├── screenrc # GNU Screen configuration (Linux)
│ └── netrate_fast.sh # Network throughput monitor for Screen status bar
└── scripts/ # Provisioning modules
├── install_starship.sh # Starship binary + nerd-font-symbols preset
├── setup_screen.sh # GNU Screen package installation (Linux)
└── setup_samba_share.sh # Samba share setup (Linux)
# 1. Clone the repository (with submodules)
git clone --recurse-submodules https://github.com/hulryung/dotfile.git
cd dotfile
# 2. Run the installer (auto-detects OS)
./installThe install script automatically runs install.conf.yaml (common), then install.linux.yaml or install.macos.yaml based on the detected OS.
Log out/in (or reboot) once the script completes to load your new shell environment.
./install # Run everything
./install --only link # Symlinks only
./install --only shell # Shell commands only
./install --except shell # Everything except shell commandsIf you prefer to install specific components only:
Installs Starship with the nerd-font-symbols preset:
./scripts/install_starship.shRequires a Nerd Font (e.g. FiraCode Nerd Font) installed in your terminal.
Shares the current user's home directory over Samba with read/write access:
sudo -E ./scripts/setup_samba_share.shAfter the script finishes, access the share from Windows:
\\<Ubuntu_IP>\<username> — log in with the same username and the Samba password you set.
Firewall tip – If UFW is enabled, open the required ports:
sudo ufw allow samba
Pull requests are welcome! Please open an issue first to discuss major changes or new modules.
Released under the MIT License. See LICENSE for details.