Something went wrong. Try again.
RSS Reader using AT Protocol rssbase.io
feed atom rss reader atproto social
Something went wrong. Try again.
rssbase.io devenv.custom-code.nix
1.4 kB · 60 lines
Nix
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061{ 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}''