From 280339ea10ee742a40004d886c6a0cfb00f0cdab Mon Sep 17 00:00:00 2001 From: Edward Langley Date: Thu, 9 Apr 2026 00:29:41 -0700 Subject: [PATCH] feat(nix): add asciinema, vhs, and cargo-dist to dev shell Add demo recording tools (asciinema, vhs) and release tooling (cargo-dist) to nativeBuildInputs. Include a cargo-dist wrapper so `cargo dist` works as a subcommand. Add scripts/record-demo.sh for consistent asciinema cast recording at 100x30. Co-Authored-By: Claude Opus 4.6 (1M context) --- flake.nix | 7 +++++++ scripts/record-demo.sh | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100755 scripts/record-demo.sh diff --git a/flake.nix b/flake.nix index 10074a7..0a78f63 100644 --- a/flake.nix +++ b/flake.nix @@ -44,6 +44,13 @@ crate2nix.packages.${system}.default pkgs.cargo-expand pkgs.cargo-llvm-cov + + # Demo recording and release tooling + pkgs.asciinema + pkgs.vhs + pkgs.cargo-dist + # nixpkgs cargo-dist installs as "dist"; alias so `cargo dist` works + (pkgs.writeShellScriptBin "cargo-dist" ''exec ${pkgs.cargo-dist}/bin/dist "$@"'') ]; RUST_BACKTRACE = "1"; }; diff --git a/scripts/record-demo.sh b/scripts/record-demo.sh new file mode 100755 index 0000000..e7da37f --- /dev/null +++ b/scripts/record-demo.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Record asciinema demo casts at a consistent terminal size. +# Usage: ./scripts/record-demo.sh [cast-name] +# Without arguments, records all four standard casts. +# With an argument, records just that one (import, pivot, drill, formulas). + +CAST_DIR="docs/casts" +COLS=100 +ROWS=30 +IDLE_CAP=2 + +mkdir -p "$CAST_DIR" + +record() { + local name="$1" + local outfile="$CAST_DIR/${name}.cast" + echo "Recording $name → $outfile (${COLS}x${ROWS}, idle cap ${IDLE_CAP}s)" + echo "Press Ctrl-D or type 'exit' when done." + COLUMNS=$COLS LINES=$ROWS asciinema rec -i "$IDLE_CAP" --cols "$COLS" --rows "$ROWS" "$outfile" + echo "Saved $outfile" +} + +if [ $# -gt 0 ]; then + record "$1" +else + for name in import pivot drill formulas; do + record "$name" + echo "" + done +fi