This repository contains my public dotfiles with an automated setup script. These configuration files help maintain a consistent development environment. Supported platforms: macOS, Linux (Ubuntu, Linux Mint), and Windows.
# Minimal install (dotfiles only)
curl -fsSL https://install.tqer39.dev | bash
# Full install (dotfiles + development environment)
curl -fsSL https://install.tqer39.dev | bash -s -- --full
# Full install for servers (skip GUI applications)
curl -fsSL https://install.tqer39.dev | bash -s -- --full --server
# CI environment (non-interactive, continue on errors)
curl -fsSL https://install.tqer39.dev | bash -s -- --full --ci
# Preview changes without executing
curl -fsSL https://install.tqer39.dev | bash -s -- --dry-run# Minimal install
irm https://install.tqer39.dev/windows | iex
# Full install
.\install.ps1 -Full
# If PowerShell's execution policy blocks the script, use:
powershell -ExecutionPolicy Bypass -File .\install.ps1 -Full
# Preview changes
.\install.ps1 -DryRun- Idempotent: Safe to run multiple times - existing correct symlinks are skipped
- Cross-platform: Supports macOS, Linux (Ubuntu, Linux Mint), and Windows
- Location: Repository is cloned to
~/.dotfiles - Backup: Existing files are backed up to
~/.dotfiles_backup/ - Modular: Choose between minimal (dotfiles only) or full (with dev tools) installation
| Option | Description |
|---|---|
--full |
Full setup (dotfiles + development environment) |
--minimal |
Minimal setup (dotfiles only, default) |
--skip-packages |
Skip package manager installation |
--skip-languages |
Skip language runtime installation |
--dry-run |
Show what would be done without executing |
-v, --verbose |
Enable verbose output |
--uninstall |
Remove dotfiles symlinks |
--work |
Work/company mode (skip personal packages, add work packages) |
--ci |
CI mode (non-interactive) |
--server |
Server mode (skip GUI applications) |
--os <value> |
Override OS detection (macos, ubuntu, mint, linux, windows) |
--doctor |
Run environment health check |
dotfiles/
├── install.sh # Unix entry point
├── install.ps1 # Windows PowerShell entry point
├── src/ # Dotfiles
│ ├── .zshrc # Zsh configuration
│ ├── .bashrc # Bash configuration
│ ├── .gitconfig # Git configuration
│ ├── .hammerspoon/ # Window management (macOS)
│ ├── .vscode/ # VS Code settings
│ └── .config/
│ ├── starship.toml # Starship prompt
│ ├── karabiner/ # Keyboard customization (macOS)
│ └── git/ # Git ignore patterns
├── scripts/
│ ├── lib/ # Shared utilities
│ ├── installers/ # Package installers
│ └── dotfiles.sh # Symlink management
└── config/
├── platform-files.conf # File -> symlink mapping
└── packages/ # Package lists (Brewfile, etc.)
All dotfiles that get symlinked during installation:
| File | Destination | Description | Platform |
|---|---|---|---|
.shell_common |
~/.shell_common |
Shared aliases & functions (git, ls, navigation) | 🍎 🐧 |
.zshrc |
~/.zshrc |
Zsh configuration | 🍎 🐧 |
.bashrc |
~/.bashrc |
Bash configuration | 🍎 🐧 |
.bash_profile |
~/.bash_profile |
Bash login shell config | 🍎 🐧 |
Microsoft.PowerShell_profile.ps1 |
~/Documents/PowerShell/... |
PowerShell profile | 🪟 |
| File | Destination | Description | Platform |
|---|---|---|---|
.gitconfig |
~/.gitconfig |
Git user config, GPG signing, aliases | 🍎 🐧 🪟 |
.gitignore |
~/.gitignore_global |
Global ignore patterns | 🍎 🐧 🪟 |
.config/git/ignore |
~/.config/git/ignore |
Additional ignore rules | 🍎 🐧 🪟 |
| File | Destination | Description | Platform |
|---|---|---|---|
.config/starship.toml |
~/.config/starship.toml |
Starship prompt (Tokyo Night theme) | 🍎 🐧 |
.config/ghostty/config |
~/.config/ghostty/config |
Ghostty terminal config | 🍎 🐧 |
.config/sheldon/plugins.toml |
~/.config/sheldon/plugins.toml |
Zsh plugin manager | 🍎 🐧 |
| File | Destination | Description | Platform |
|---|---|---|---|
.config/mise/config.toml |
~/.config/mise/config.toml |
mise version manager (Node.js, Claude Code, etc.) | 🍎 🐧 🪟 |
| File | Destination | Description | Platform |
|---|---|---|---|
.hammerspoon/init.lua |
~/.hammerspoon/init.lua |
Window management automation | 🍎 |
.config/karabiner/karabiner.json |
~/.config/karabiner/karabiner.json |
Keyboard remapping | 🍎 |
| File | Destination | Description | Platform |
|---|---|---|---|
.vscode/extensions.json |
VSCODE_USER_DIR/extensions.json |
Recommended extensions | 🍎 🐧 🪟 |
.vscode/mcp.json |
VSCODE_USER_DIR/mcp.json |
MCP server config | 🍎 🐧 🪟 |
Legend: 🍎 macOS · 🐧 Linux · 🪟 Windows
When using --full, the following will also be installed:
- macOS/Linux: Homebrew + packages from
config/packages/Brewfile - Ubuntu/Mint: APT packages from
config/packages/apt-packages.txt - Windows: Scoop (CLI tools) + winget (GUI apps)
- anyenv: For managing language runtimes (pyenv, nodenv, etc.)
- mise: Tools defined in mise config files (Node.js, Claude Code, etc.)
- VS Code Extensions: From
src/.vscode/extensions.json
- Git: Required for cloning the repository
- curl (Unix) or PowerShell 5.1+ (Windows)
This repository uses tools that require macOS or Linux:
make bootstrap- Install development dependenciesmise run setup- Configure development environmentmise run lint- Run lintersmise run tf- Run Terraform commands
Windows is supported for using dotfiles, but developing this repository requires macOS or Linux.
This project is licensed under the MIT License - see the LICENSE file for details.