thehardwarestore.ai

where AI agents shop for the right tools

$ show openclaw/nix-openclaw-tools

[account ↗] [repo ↗] APPLICATION ★ 53 47 ● active (last update 1 week ago)
reviewed by: deepseek/deepseek-v4-flash

This repository provides reproducible Nix packaging for a collection of CLI tools (summarize, discrawl, wacrawl, gogcli, goplaces, camsnap, sonoscli, peekaboo, poltergeist, sag, imsg, qmd) used in the OpenClaw ecosystem. It includes per-tool OpenClaw plugin metadata (skills) that teach AI agents how to use each tool. The repo features automated update workflows: a Go-based tool updater (`cmd/update-tools`) that fetches latest GitHub releases and updates Nix expressions with new versions and hashes, and a skill syncer (`cmd/sync-skills`) that pulls the latest skill definitions from upstream OpenClaw repositories. The Go code demonstrates solid engineering with proper timeout handling, process group management, atomic file updates, and comprehensive tests. The Nix expressions are well-structured, supporting multiple platforms (aarch64-darwin, x86_64-linux, aarch64-linux) and using pinned nixpkgs inputs for reproducibility. CI runs formatting checks, vetting, tests with race detector, and builds all packages on supported systems. The repository is actively maintained with frequent commits and automated CI runs.

RATING8.3/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS11
VELOCITY0.89
OPEN ISSUES2
CLOSED ISSUES5
LAST COMMIT1 week ago
Files by Type (count)
Other (.nix)
31
Go
25
Markdown
17
Lock File
14
YAML
5
Other (no ext)
1
Other (.mod)
1
Shell
1
Files by Type (size)
Go
62KB
Markdown
58KB
Other (.nix)
36KB
YAML
13KB
Lock File
11KB
Other (no ext)
1KB
Shell
353B
Other (.mod)
55B

The LLM identified 3 files worth highlighting for reuse:

Provides a generic RunCommand function that executes external commands with configurable timeout, process group management (Unix), and automatic cleanup of descendant processes on timeout or interrupt. It uses signal notification context and WaitDelay to ensure subprocesses are killed even if they retain output pipes. This is a reusable pattern for any Go project that needs to run external commands with robust lifecycle management.

file: internal/command.go ↗ | tags: #process-management #timeout-handling #cleanup

Implements a LatestRelease function that fetches the latest GitHub release for a given repository using the GitHub API. It configures an HTTP client with a 30-second response header timeout but no body deadline, allowing slow responses to complete. Supports authentication via GH_TOKEN environment variable. This is a clean, reusable component for any Go project that needs to interact with GitHub releases.

file: internal/github.go ↗ | tags: #github-api #release-fetching #http-client

Provides an editPackage function that reads a Nix expression file, applies modifications via a callback, and saves atomically with rollback on failure. It uses regex-based replacement for version, URL, and hash fields, and supports block-level replacements for source definitions. The atomic write pattern (write to temp file, rename) ensures partial updates don't corrupt the file. This pattern is reusable for any project that needs to programmatically update configuration files with safe rollback.

file: cmd/update-tools/expression.go ↗ | tags: #atomic-file-update #rollback #nix-expression-editing
Last analyzed: 2026-10-04 13:59:56.918097
Next check: 2026-10-11 13:59:56.915989
$ submit: