Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## Unreleased

- Added a `bat` recipe that installs bat from Fedora and runs `bat cache --build`.
- Added VM config validation before Lima template rendering for VM names, users, sizing,
code directories, host IPs, and port forwards.
- Internal: split `bin/dvm` into a small dispatcher plus sourced shell libraries under
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ Add your own tools with recipes. Use individual bundled tool recipes such as
First-pass recipes include:

- `baseline`: required setup basics only
- `zsh`, `git`, `helix`, `lazygit`, `starship`, `fzf`, `git-delta`, `just`,
- `zsh`, `git`, `helix`, `lazygit`, `starship`, `fzf`, `bat`, `git-delta`, `just`,
`tmux`, `yazi`: optional interactive tools
- `agent-user`: `dvm-agent` plus mandatory Bubblewrap sandboxing for AI tools
- `codex`, `claude`, `opencode`, `mistral`: hosted AI CLIs inside the VM
Expand Down
1 change: 1 addition & 0 deletions docs/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ use_app_tools() {
use lazygit
use starship
use fzf
use bat
use git-delta
use just
use tmux
Expand Down
8 changes: 5 additions & 3 deletions docs/recipes.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@ recipes or project-specific VM configs.
VMs only when the selected service recipes install every dependency they need.

Interactive tools are split into one recipe per tool: `zsh`, `git`, `helix`,
`lazygit`, `starship`, `fzf`, `git-delta`, `just`, `tmux`, and `yazi`. `zsh` installs
zsh and sets it as the guest user's default login shell with `usermod --shell`. The
DNF-backed recipes install from Fedora.
`lazygit`, `starship`, `fzf`, `bat`, `git-delta`, `just`, `tmux`, and `yazi`. `zsh`
installs zsh and sets it as the guest user's default login shell with `usermod
--shell`. The DNF-backed recipes install from Fedora.
The upstream-backed recipes try Fedora first and otherwise use pinned official release
assets with sha256 verification.

Expand Down Expand Up @@ -99,6 +99,7 @@ use helix
use lazygit
use starship
use fzf
use bat
use git-delta
use just
use tmux
Expand All @@ -115,6 +116,7 @@ use_app_tools() {
use lazygit
use starship
use fzf
use bat
use git-delta
use just
use tmux
Expand Down
5 changes: 5 additions & 0 deletions share/dvm/recipes/bat.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -euo pipefail

sudo dnf5 install -y bat
bat cache --build
5 changes: 4 additions & 1 deletion tests/smoke.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ use_app_tools() {
use lazygit
use starship
use fzf
use bat
use git-delta
use just
use tmux
Expand Down Expand Up @@ -189,14 +190,16 @@ grep -Fq 'missing VM template: missing-template' "$TMP/init-bad.err"
rm -f "$TMP/config/vms/newapp.sh" "$TMP/config/vms/llama.sh"

"$ROOT/bin/dvm" apply app 2>"$TMP/apply.err"
grep -Fq 'dvm: applying recipes for app: baseline zsh git helix lazygit starship fzf git-delta just tmux yazi node agent-user codex claude chezmoi' "$TMP/apply.err"
grep -Fq 'dvm: applying recipes for app: baseline zsh git helix lazygit starship fzf bat git-delta just tmux yazi node agent-user codex claude chezmoi' "$TMP/apply.err"
grep -Fq 'create dvm-app' "$TMP/state/log"
grep -Fq 'start dvm-app' "$TMP/state/log"
grep -Fq 'DVM_CODE_DIR=~/code/app' "$TMP/state/log"
grep -Fq 'dvm hostname' "$TMP/state/guest.sh"
grep -Fq 'hostnamectl set-hostname "$DVM_NAME"' "$TMP/state/guest.sh"
grep -Fq 'dvm recipe: zsh' "$TMP/state/guest.sh"
grep -Fq 'usermod --shell "$zsh_path" "$(id -un)"' "$TMP/state/guest.sh"
grep -Fq 'dvm recipe: bat' "$TMP/state/guest.sh"
grep -Fq 'bat cache --build' "$TMP/state/guest.sh"
grep -Fq 'dvm recipe: yazi' "$TMP/state/guest.sh"
grep -Fq 'dvm recipe: agent-user' "$TMP/state/guest.sh"
grep -Fq 'dnf5 install -y acl bubblewrap shadow-utils sudo' "$TMP/state/guest.sh"
Expand Down