{ lib }: { title, rows, }: let bin = row: row.bin or row.pkg.meta.mainProgram or row.pkg.pname or (lib.getName row.pkg); repoUrl = pkg: pkg.src.gitRepoUrl or pkg.meta.homepage or ""; binColumnWidth = builtins.foldl' (width: row: lib.max width (builtins.stringLength (bin row))) 0 rows; versionColumnWidth = builtins.foldl' (width: row: lib.max width (builtins.stringLength row.pkg.version)) 0 rows; renderRow = row: '' row ${lib.escapeShellArg (bin row)} ${lib.escapeShellArg row.pkg.version} ${lib.escapeShellArg (repoUrl row.pkg)} ''; in '' printf '%s\n' ${lib.escapeShellArg title} dim=$'\e[2m' muted=$'\e[2;90m' reset=$'\e[0m' supports_links() { [ -t 1 ] && [ "''${TERM:-}" != "dumb" ] } link() { local url="$1" local text="$2" if [ -n "$url" ] && supports_links; then printf '\e]8;;%s\e\\%s\e]8;;\e\\' "$url" "$text" else printf '%s' "$text" fi } row() { local bin="$1" local version="$2" local repo_url="$3" printf '%s- %s%-*s %s%-*s%s ' "$dim" "$reset" ${toString binColumnWidth} "$bin" "$dim" ${toString versionColumnWidth} "$version" "$reset" if [ -n "$repo_url" ]; then printf '%s' "$muted" link "$repo_url" "$repo_url" printf ' ' fi printf '%s\n' "$reset" } ${lib.concatMapStrings renderRow rows} ''