3.1 KiB
3.1 KiB
arch-dev v1.7
Riced Neovim IDE · Arch Linux · Stateful · Mobile-Aware
"Like Gentoo without the compiling." Kanagawa Wave · rolling release · AUR-powered · git-snapshotted home
What's new in v1.7
- Stateful
/home/dev— your shell history, plugin state, and config tweaks survive container exit - Git-backed snapshot system — commit good states, roll back when things break
- Auto-snapshot on dotfile updates — image upgrades preserve your history
- Mobile improvements — bufferline disabled on mobile, dashboard uses thin-line ASCII
The Snapshot System
Your /home/dev is a git repo (state in ~/.arch-dev-state/). When something works, snapshot it. When something breaks, roll back.
# Working state — save it
snap node-working "NodeJS env with nvm + pnpm"
# List your snapshots
snaps
# See what's changed since last snapshot
snapd
# Try something risky, breaks things... no problem
snapr node-working
# Show what's in a snapshot
show-snapshot node-working
# Remove a snapshot you don't need
unsnapshot old-thing
What's tracked: dotfiles, configs, neovim plugins, anything in ~.
What's ignored: .cache, .zsh_history, build artifacts, log files.
Snapshots use real git so you can:
- Branch (
_archdev_git checkout -b experimenting) - Push to remote (
_archdev_git remote add origin git@...) - Diff between snapshots (
_archdev_git diff snap-a snap-b)
Quick Start
docker compose build
docker compose run --rm arch-dev
First run seeds the home volume from a baked-in skeleton and creates a skeleton tag you can always roll back to.
Volume Architecture
| Path | Type | Purpose |
|---|---|---|
/workspace |
bind mount → ./workspace |
Project files, host-visible |
/home/dev |
named volume arch-dev-home |
Stateful user home, survives --rm |
/etc/skel-arch-dev/ |
image layer | Read-only template, used to seed and update |
Reset home to factory:
docker volume rm arch-dev_arch-dev-home
docker compose run --rm arch-dev
Or roll back inside the container:
rollback skeleton
Image Updates
When you rebuild the image with new dotfiles:
- Container starts, entrypoint compares image dotfiles to home
- If image is newer, takes an auto-snapshot of current home
- Updates dotfiles, leaving user data alone (history, project state)
- You can
rollbackto the auto-snapshot if you don't like the new dotfiles
Known Caveats
- AUR/pacman packages are NOT in snapshots (they live in
/usr/, not~) - Docker volume size grows with snapshots —
_archdev_git gcperiodically - First
snapafter major changes can take a few seconds (lots to hash)
Mobile (Termius)
MOBILE=1 activates:
- Minimal starship prompt
- Auto-attach screen on connect
- Bufferline disabled (was showing as purple bar)
- Habamax colorscheme (kanagawa needs truecolor which Termius mangles)
v2 Roadmap
- nvm + nodejs (snapshot it after install!)
- gemini-cli for AI in the terminal
- copilot.nvim or avante.nvim
- nvim-dap (debugger)