# 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. ```bash # 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 ```bash 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:** ```bash docker volume rm arch-dev_arch-dev-home docker compose run --rm arch-dev ``` **Or roll back inside the container:** ```bash rollback skeleton ``` --- ## Image Updates When you rebuild the image with new dotfiles: 1. Container starts, entrypoint compares image dotfiles to home 2. If image is newer, takes an auto-snapshot of current home 3. Updates dotfiles, leaving user data alone (history, project state) 4. You can `rollback` to 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 gc` periodically - First `snap` after 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)