Adopt the convention that a Module's option path mirrors its directory under modules/, with an index file naming the directory's own segment. - Group agent Modules under modules.agents.*: claude-code (whole directory), pi (flattened to a file), skills (renamed from agent-skills), and gitea-axi under an agents/tools/ subgroup. The agents/ and tools/ folders are pure namespace prefixes with no aggregator enable. - Nest hypridle and hyprlock under modules.desktop.hyprland.*, with hyprland.nix as the index, and update the desktop aggregator. - Remove the obsolete example Module. - Record the convention in CONTEXT.md and ADR 0004, and update the neogaia host, the two live CLAUDE.md gotchas, and the skills Module's intentional Enable-convention exception comment.
24 lines
643 B
Bash
Executable File
24 lines
643 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Deterministic recursive hash of a directory's file contents.
|
|
#
|
|
# Hashes relative paths, not absolute ones, so two directories with
|
|
# identical contents hash identically regardless of where they live on
|
|
# disk (needed to compare a project's copied skill against the library
|
|
# source it was copied from).
|
|
#
|
|
# Usage: hash-dir.sh <directory>
|
|
set -euo pipefail
|
|
|
|
if [ $# -ne 1 ]; then
|
|
echo "Usage: hash-dir.sh <directory>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
dir="$1"
|
|
if [ ! -d "$dir" ]; then
|
|
echo "Not a directory: $dir" >&2
|
|
exit 1
|
|
fi
|
|
|
|
(cd "$dir" && find . -type f -print0 | sort -z | xargs -0 -r sha256sum) | sha256sum | awk '{print $1}'
|