Site: list all 51 published @lisp packages on /packages/
ober
034b32c074c8b1c0999d415d9b9d277c06cfba0d
--- a/secure-site.ss +++ b/secure-site.ss @@ -82,8 +82,103 @@ (append site-forced-security-headers (list - (cons "Content-Type" content-type) - (cons "Content-Security-Policy" normal-content-security-policy)))) + (cons "Content-Type" content-type) + (cons "Content-Security-Policy" normal-content-security-policy)))) + +;; ── package registry data ────────────────────────────────────────────── + +(define (sourcehut-repo name) + (string-append "https://git.sr.ht/~lisp/" name)) + +(define (package-card item) + (let ((name (list-ref item 0)) + (version (list-ref item 1)) + (desc (list-ref item 2)) + (repo (list-ref item 3))) + (string-append + "<div class=\"repo-card\"><span class=\"label\">" version "</span>" + "<h3>" name "</h3><p>" desc "</p>" + "<a href=\"" (sourcehut-repo repo) "\">Source</a></div>"))) + +(define (package-section title items) + (string-append + "<h3>" title " <span class=\"muted\">(" (number->string (length items)) ")</span></h3>" + "<div class=\"repo-grid\">" + (apply string-append (map package-card items)) + "</div>")) + +(define registry-network-packages + (list + (list "@lisp/jerboa-ssh" "0.1.0" "SSH client and server: agent, Ed25519 keys, SFTP, port forwarding" "jerboa-ssh") + (list "@lisp/jerboa-sshd" "0.1.0" "SSH daemon for Jerboa" "jerboa-sshd") + (list "@lisp/jerboa-ssl" "0.1.0" "SSL/TLS primitives and FFI" "jerboa-ssl") + (list "@lisp/jerboa-https" "0.1.0" "HTTPS client and HTTP server" "jerboa-https") + (list "@lisp/jerboa-smtp" "0.1.0" "SMTP server and client" "jerboa-smtp") + (list "@lisp/jerboa-mail" "0.1.0" "IMAP/SMTP mail client" "jerboa-mail") + (list "@lisp/jerboa-dns" "0.1.0" "DNS client and server" "jerboa-dns") + (list "@lisp/jerboa-browser" "0.1.0" "Programmable Qt WebEngine browser" "jerboa-browser") + (list "@lisp/jerboa-webex" "0.1.0" "Web extraction toolkit" "jerboa-webex") + (list "@lisp/jerboa-websearch" "0.1.0" "Web search engine" "jerboa-websearch") + (list "@lisp/jerboa-wormhole" "0.1.0" "Magic-wormhole-style file transfer" "jerboa-wormhole"))) + +(define registry-data-packages + (list + (list "@lisp/jerboa-crypto" "0.1.0" "Cryptographic primitives and FFI" "jerboa-crypto") + (list "@lisp/jerboa-db" "0.1.0" "Database abstractions" "jerboa-db") + (list "@lisp/jerboa-duckdb" "0.1.0" "DuckDB bindings" "jerboa-duckdb") + (list "@lisp/jerboa-sqlite" "0.1.0" "Pure Jerboa SQLite engine" "jerboa-sqlite") + (list "@lisp/jerboa-sqlite-ffi" "0.1.0" "SQLite FFI bindings" "jerboa-sqlite-ffi") + (list "@lisp/jerboa-pcre2" "0.1.0" "PCRE2 regex bindings" "jerboa-pcre2") + (list "@lisp/jerboa-pgp" "0.1.0" "OpenPGP implementation" "jerboa-pgp") + (list "@lisp/jerboa-yubikey" "0.1.0" "YubiKey / FIDO2 bindings" "jerboa-yubikey"))) + +(define registry-security-packages + (list + (list "@lisp/jerboa-secmon" "0.1.0" "Security monitoring (SIEM)" "jerboa-secmon") + (list "@lisp/jerboa-secmonlib" "0.1.0" "Security monitoring library" "jerboa-secmonlib") + (list "@lisp/jerboa-semgrep" "0.1.0" "Semgrep-style pattern matching" "jerboa-semgrep") + (list "@lisp/jerboa-signal" "0.1.0" "Signal messenger client" "jerboa-signal") + (list "@lisp/jerboa-virus" "0.1.0" "Pure-Jerboa malware scanner" "jerboa-virus") + (list "@lisp/jerboa-gitsafe" "0.1.0" "Secret-scanning git hooks" "jerboa-gitsafe"))) + +(define registry-systems-packages + (list + (list "@lisp/jerboa-coreutils" "0.1.0" "Core utilities (ls, cat, grep, etc.)" "jerboa-coreutils") + (list "@lisp/jerboa-awk" "0.1.0" "AWK implementation" "jerboa-awk") + (list "@lisp/jerboa-sed" "0.1.0" "SED stream editor" "jerboa-sed") + (list "@lisp/jerboa-top" "0.1.0" "Top-like process monitor" "jerboa-top") + (list "@lisp/jerboa-asm" "0.1.0" "Assembler and low-level code generation" "jerboa-asm") + (list "@lisp/jerboa-fuse" "0.1.0" "FUSE filesystem support" "jerboa-fuse") + (list "@lisp/jerboa-inotify" "0.1.0" "Linux inotify bindings" "jerboa-inotify"))) + +(define registry-tools-packages + (list + (list "@lisp/jerboa-code" "0.1.0" "Portable AI coding agent" "jerboa-code") + (list "@lisp/jerboa-emacs" "0.1.0" "Emacs-like editor with terminal and Qt frontends" "jerboa-emacs") + (list "@lisp/jerboa-treesitter" "0.1.0" "Tree-sitter parser bindings" "jerboa-treesitter") + (list "@lisp/jerboa-scintilla" "0.1.0" "Scintilla editor component bindings" "jerboa-scintilla"))) + +(define registry-platform-packages + (list + (list "@lisp/jerboa-android" "0.1.0" "Android target support for cross-compilation" "jerboa-android") + (list "@lisp/jerboa-aws" "0.1.0" "AWS SDK" "jerboa-aws") + (list "@lisp/jerboa-drive" "0.1.0" "Cloud drive abstraction" "jerboa-drive") + (list "@lisp/jerboa-edge" "0.1.0" "Edge computing runtime" "jerboa-edge") + (list "@lisp/jerboa-qt" "0.1.0" "Qt GUI bindings" "jerboa-qt") + (list "@lisp/jerboa-proton-bridge" "0.1.0" "Proton Mail bridge" "jerboa-proton-bridge") + (list "@lisp/jerboa-protonmail" "0.1.0" "Proton Mail API client" "jerboa-protonmail"))) + +(define registry-core-packages + (list + (list "@lisp/jerboa-compat" "0.1.0" "Cross-implementation compatibility shims" "jerboa-compat") + (list "@lisp/jerboa-sinatra" "0.1.0" "Sinatra-style web framework" "jerboa-sinatra") + (list "@lisp/jerboa-site" "0.1.0" "Static site generator (this site!)" "jerboa-site") + (list "@lisp/jerboa-imagesite" "0.1.0" "Image hosting site builder" "jerboa-imagesite") + (list "@lisp/jerboa-ssd-recognizer" "0.1.0" "SSD object detection recognizer" "jerboa-ssd-recognizer") + (list "@lisp/jerboa-vision" "0.1.0" "Computer vision routines" "jerboa-vision") + (list "@lisp/jerboa-wafter" "0.1.0" "Network packet dissector" "jerboa-wafter"))) + +;; ── install endpoint ──────────────────────────────────────────────────── (define install-script (string-append @@ -284,17 +379,18 @@ "<h2>Commands</h2>" package-commands "<h2>Available Packages</h2>" - "<div class=\"repo-grid\">" - "<div class=\"repo-card\"><span class=\"label\">SSH</span><h3>@lisp/jerboa-ssh</h3><p>SSH client and server: agent protocol, Ed25519 keys, ssh-connect, ssh-run, SFTP, port forwarding.</p><a href=\"https://git.sr.ht/~lisp/jerboa-ssh\">Source</a></div>" - "<div class=\"repo-card\"><span class=\"label\">Coming Soon</span><h3>More Packages</h3><p>The registry is bootstrapped and accepts new packages via <code>jpkg publish</code>. Additional @lisp packages will be published as they pass review.</p><a href=\"https://git.sr.ht/~lisp/jerboa-registry\">Registry</a></div>" - "</div>" + "<p>51 packages published to the @lisp registry — all TUF-signed with Ed25519 signatures and SLSA provenance. Install any with <code>jerboa pkg add <name></code>.</p>" + (package-section "Network and Web" registry-network-packages) + (package-section "Data and Crypto" registry-data-packages) + (package-section "Security" registry-security-packages) + (package-section "Systems and CLI" registry-systems-packages) + (package-section "Tools and Editors" registry-tools-packages) + (package-section "Platform" registry-platform-packages) + (package-section "Core" registry-core-packages) "<h2>Self-Host a Registry</h2>" "<p>Anyone can run a private registry: <code>jpkg publish --registry DIR --key FILE</code> bootstraps a TUF-signed staging registry. See the <a href=\"https://git.sr.ht/~lisp/jerboa/tree/master/item/docs/jpkg-guide.md\">jpkg guide</a> for the full workflow.</p>" "</section>"))) -(define (sourcehut-repo name) - (string-append "https://git.sr.ht/~lisp/" name)) - (define (repo-card item) (let ((name (list-ref item 0)) (label (list-ref item 1))