neovim-ide/README.md

119 lines
3.1 KiB
Markdown

# 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)