@sebastienrousseau/dotfiles
Version:
The Trusted Shell Platform — Universal dotfiles managed by Chezmoi. Features Bash & Zsh for macOS, Linux & WSL. Rust modern tooling & enterprise-grade security.
198 lines (142 loc) • 5.04 kB
Markdown
---
render_with_liquid: false
---
# Tutorial: First Install
End-to-end installation and verification, from zero to a fully-working environment in under 5 minutes.
## Prerequisites
- macOS 14+, Ubuntu/Debian 20.04+, Arch (rolling), Fedora 39+, or WSL2 on Windows 11
- `git` and `curl` installed
- Shell access (Zsh, Fish, or Bash)
- Optional but recommended: SSH key for signing commits
## Step 1: Run the Installer
```sh
bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/master/install.sh)"
```
The installer:
1. Verifies prerequisites (`git`, `curl`, write access to `~`)
2. Downloads chezmoi via the SHA256-verified installer
3. Clones the dotfiles source to `~/.dotfiles`
4. Runs `chezmoi init` to prompt for per-machine settings
5. Runs `chezmoi apply` with progress output
Expected output:
```
[install] Verifying prerequisites
[install] Installing chezmoi (verified SHA256)
[install] Cloning source to ~/.dotfiles
[install] Running chezmoi init (interactive)
Git email: you@example.com
Machine preset [macbook-t2]:
Default theme [tahoe-dark]:
Default shell [fish]:
[install] Applying configuration (180 files)
[install] ✓ Installation complete
```
## Step 2: Verify
Open a new shell and run:
```sh
dot doctor
```
Expected output:
```
◈ DOTFILES
Dot • Diagnostics
--- Health Check ---
✓ Paths ~/.local/bin, mise shims present
✓ Tools git, chezmoi, mise installed
✓ Chezmoi clean (no drift)
✓ Shell fish (500ms startup)
✓ Security SSH key present, Age key present
✓ Portability LC_ALL=en_US.UTF-8, TERM=xterm-256color
Score: 98/100
```
Any warnings will be accompanied by a suggested fix.
## Step 3: Take the Tour
```sh
dot learn
```
An interactive walkthrough covering:
- Shell basics and aliases
- Secrets workflow
- Theme switching
- Performance tuning
- Security hardening
Each section takes 30-60 seconds. You can skip sections or exit at any time.
## Step 4: Customize
### Per-Machine Settings
Edit `~/.config/chezmoi/chezmoi.toml`:
```toml
[data]
machine = "macbook-t2" # see .chezmoidata/hardware.toml for presets
theme = "tahoe-dark" # see `dot theme list`
default_shell = "fish" # fish, zsh, bash
terminal_font_family = "JetBrainsMono Nerd Font"
terminal_font_size = 12
```
### Feature Flags
Edit `.chezmoidata.toml` in the source directory (`~/.dotfiles/.chezmoidata.toml`):
```toml
[features]
dms = false # Dank Material Shell (Niri)
linux_desktop = false # Linux-specific desktop configs
waybar = false # Waybar status bar
```
After editing, apply:
```sh
dot apply
```
## Step 5: Add Your Identity
If you have an SSH key, configure signed commits:
```sh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true
git config --global gpg.format ssh
git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers
```
Add your own key to `~/.ssh/allowed_signers`:
```
you@example.com ssh-ed25519 AAAA...
```
Test:
```sh
cd ~/.dotfiles
git commit --allow-empty -m "test: signature"
git verify-commit HEAD
# Good "git" signature for you@example.com
```
## Step 6: First Theme Switch
```sh
dot theme
```
A picker opens showing all paired wallpaper themes on your system. Select one and press Enter. The terminal, editor, desktop wallpaper, and macOS accent color update in about 3 seconds.
## Troubleshooting
If `dot doctor` shows failures:
```sh
dot heal # auto-fix common issues
dot heal -n # dry-run first to see what would change
```
If the installation is broken beyond repair:
```sh
dot rollback # restore the previous known-good state
```
If `dot doctor` still fails after heal + rollback, check:
- `~/.local/state/dotfiles/install.log` — installer log
- `~/.local/state/dotfiles/heal.log` — heal attempts
- `chezmoi doctor` — chezmoi-specific diagnostics
Still stuck? See [Cookbook: Troubleshooting](../04-cookbook/02-troubleshooting.md).
## What Got Installed
After `dot doctor` reports a healthy score, you have:
| Surface | What's There |
|:---|:---|
| **Shell** | Fish (default), Zsh, Nushell, Bash all configured with cached init |
| **Editor** | Neovim with lazy.nvim + LSP + theme-synced colorscheme |
| **Terminal** | Ghostty/Alacritty/Kitty/WezTerm configs (pick whichever is installed) |
| **Git** | Signed commits, delta diff, conventional commit template |
| **AI tooling** | Claude Code, Codex, Copilot CLI, Gemini CLI via mise |
| **Secret store** | Age key, SOPS config, `dot secrets` command ready |
| **Security** | Gitleaks, detect-secrets baseline, signed attestation log |
| **Theme engine** | K-Means wallpaper extractor, system + custom wallpaper discovery |
## Next
- [Tutorial: Add a Wallpaper → Theme](02-add-wallpaper.md)
- [Tutorial: Create a Machine Profile](03-create-profile.md)
- [Tutorial: Encrypt a Secret](04-encrypt-secret.md)
- [Cookbook: 30+ recipes](../04-cookbook/01-recipes.md)