chore: rename first-party tools flake input

What:
- replace nix-steipete-tools with nix-openclaw-tools across flake wiring
- pass first-party tool packages through the overlay and package set explicitly
- update the bundled plugin catalog for the renamed tool repo

Why:
- keep nix-openclaw aligned with the upstream OpenClaw tool repo rename
- avoid stale steipete naming in package and plugin resolution

Tests:
- git diff --cached --check: passed
- scripts/check-flake-lock-owners.sh: passed
- nix eval --raw .#packages.x86_64-linux.openclaw-tools.name --accept-flake-config: openclaw-tools
- nix eval --json --impure --expr '<overlay toolNames eval>': returned node/pnpm/core plus gogcli, goplaces, summarize, camsnap, sonoscli
This commit is contained in:
joshp123 2026-05-05 12:29:59 +02:00
parent ecfb1dc936
commit e16f9743fd
10 changed files with 72 additions and 59 deletions

View File

@ -129,7 +129,7 @@ openclawPlugin = {
Host behavior: creates `~/.config/xuezh/config.json` from `settings`; exports both envs; fails if the pointed files are missing/empty.
## Bundled Plugin Set (current)
- summarize, peekaboo, poltergeist, sag, camsnap, gogcli, goplaces, bird, sonoscli, imsg.
- summarize, discrawl, wacrawl, peekaboo, poltergeist, sag, camsnap, gogcli, goplaces, sonoscli, imsg.
- Source of truth: `nix/modules/home-manager/openclaw/plugin-catalog.nix`.
- Each follows the same contract: packages + skills; env/state declared via `needs`; enabled via config toggle; sources pinned via the bundled plugin catalog.

View File

@ -304,17 +304,18 @@ Install wires up Twilio creds. Binary handles webhook server. Skill teaches agen
## The Plugin Ecosystem Vision
**First-party plugins** already exist — see [nix-steipete-tools](https://github.com/openclaw/nix-steipete-tools/tree/main/tools):
**First-party plugins** already exist — see [nix-openclaw-tools](https://github.com/openclaw/nix-openclaw-tools/tree/main/tools):
- `summarize` — YouTube/article summarization
- `oracle` — second-model review
- `discrawl` — Discord archive/search
- `wacrawl` — WhatsApp archive/search
- `peekaboo` — screenshot capture
- `camsnap` — webcam capture
- `poltergeist` — browser automation
- `sag` — web search
- `bird` — Twitter/X integration
- `poltergeist` — file watching and automation
- `sag` — text-to-speech
- `sonoscli` — Sonos control
- `imsg` — iMessage integration
- `gogcli` — Google Calendar
- `goplaces` — Google Places
All follow the same contract. All pinned in nix-openclaw. Enable with one line:
```nix

14
flake.lock generated
View File

@ -38,21 +38,21 @@
"type": "github"
}
},
"nix-steipete-tools": {
"nix-openclaw-tools": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1773561580,
"narHash": "sha256-wT0bKTp45YnMkc4yXQvk943Zz/rksYiIjEXGdWzxnic=",
"lastModified": 1777976020,
"narHash": "sha256-IsgLwW0Y6JYiWXbxmzN1FDO0//Osu2YpeID1tFMbwkk=",
"owner": "openclaw",
"repo": "nix-steipete-tools",
"rev": "cd4c429ff3b3aaef9f92e59812cf2baf5704b86f",
"repo": "nix-openclaw-tools",
"rev": "08955054f466e2eb55628763c1d7ee2de5af9f6d",
"type": "github"
},
"original": {
"owner": "openclaw",
"repo": "nix-steipete-tools",
"repo": "nix-openclaw-tools",
"type": "github"
}
},
@ -92,7 +92,7 @@
"inputs": {
"flake-utils": "flake-utils",
"home-manager": "home-manager",
"nix-steipete-tools": "nix-steipete-tools",
"nix-openclaw-tools": "nix-openclaw-tools",
"nixpkgs": "nixpkgs_2"
}
},

View File

@ -13,7 +13,7 @@
flake-utils.url = "github:numtide/flake-utils";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
nix-steipete-tools.url = "github:openclaw/nix-steipete-tools";
nix-openclaw-tools.url = "github:openclaw/nix-openclaw-tools";
};
outputs =
@ -22,10 +22,20 @@
nixpkgs,
flake-utils,
home-manager,
nix-steipete-tools,
nix-openclaw-tools,
}:
let
overlay = import ./nix/overlay.nix;
openclawToolPkgsFor =
system:
if nix-openclaw-tools ? packages && builtins.hasAttr system nix-openclaw-tools.packages then
nix-openclaw-tools.packages.${system}
else
{ };
overlay =
final: prev:
import ./nix/overlay.nix {
openclawToolPkgs = openclawToolPkgsFor prev.stdenv.hostPlatform.system;
} final prev;
sourceInfoStable = import ./nix/sources/openclaw-source.nix;
systems = [
"x86_64-linux"
@ -39,15 +49,11 @@
inherit system;
overlays = [ overlay ];
};
steipetePkgs =
if nix-steipete-tools ? packages && builtins.hasAttr system nix-steipete-tools.packages then
nix-steipete-tools.packages.${system}
else
{ };
openclawToolPkgs = openclawToolPkgsFor system;
packageSetStable = import ./nix/packages {
pkgs = pkgs;
sourceInfo = sourceInfoStable;
steipetePkgs = steipetePkgs;
openclawToolPkgs = openclawToolPkgs;
};
in
{

View File

@ -26,13 +26,13 @@ let
bundledPluginSources =
let
stepieteRev = "c110209720cbc6c87fccb6c1e1c2b79b1d719245";
stepieteNarHash = "sha256-1Vo7rcLGdKaqj39J3HhBKh8IbljSjgCUhinCFJbDPl8=";
stepiete =
openclawToolsRev = "08955054f466e2eb55628763c1d7ee2de5af9f6d";
openclawToolsNarHash = "sha256-IsgLwW0Y6JYiWXbxmzN1FDO0//Osu2YpeID1tFMbwkk=";
openclawTools =
tool:
"github:openclaw/nix-steipete-tools?dir=tools/${tool}&rev=${stepieteRev}&narHash=${stepieteNarHash}";
"github:openclaw/nix-openclaw-tools?dir=tools/${tool}&rev=${openclawToolsRev}&narHash=${openclawToolsNarHash}";
in
lib.mapAttrs (_name: plugin: plugin.source or (stepiete plugin.tool)) pluginCatalog;
lib.mapAttrs (_name: plugin: plugin.source or (openclawTools plugin.tool)) pluginCatalog;
bundledPlugins = lib.filter (p: p != null) (
lib.mapAttrsToList (

View File

@ -5,6 +5,18 @@
linux = true;
};
discrawl = {
tool = "discrawl";
description = "Archive and search Discord history";
linux = true;
};
wacrawl = {
tool = "wacrawl";
description = "Archive and search WhatsApp Desktop history";
linux = true;
};
peekaboo = {
tool = "peekaboo";
description = "Screenshot your screen";
@ -13,7 +25,7 @@
poltergeist = {
tool = "poltergeist";
description = "Click, type, control macOS UI";
description = "File watching and automation";
linux = false;
};
@ -42,12 +54,6 @@
linux = true;
};
bird = {
tool = "bird";
description = "Twitter/X integration";
linux = false;
};
sonoscli = {
tool = "sonoscli";
description = "Control Sonos speakers";

View File

@ -1,7 +1,17 @@
{
openclawToolPkgs ? { },
}:
final: prev:
let
packages = import ./packages { pkgs = prev; };
toolNames = (import ./tools/extended.nix { pkgs = prev; }).toolNames;
packages = import ./packages {
pkgs = prev;
openclawToolPkgs = openclawToolPkgs;
};
toolNames =
(import ./tools/extended.nix {
pkgs = prev;
openclawToolPkgs = openclawToolPkgs;
}).toolNames;
withTools =
{
toolNamesOverride ? null,
@ -9,6 +19,7 @@ let
}:
import ./packages {
pkgs = prev;
openclawToolPkgs = openclawToolPkgs;
inherit toolNamesOverride excludeToolNames;
};
in

View File

@ -1,7 +1,7 @@
{
pkgs,
sourceInfo ? import ../sources/openclaw-source.nix,
steipetePkgs ? { },
openclawToolPkgs ? { },
toolNamesOverride ? null,
excludeToolNames ? [ ],
}:
@ -9,7 +9,7 @@ let
isDarwin = pkgs.stdenv.hostPlatform.isDarwin;
toolSets = import ../tools/extended.nix {
pkgs = pkgs;
steipetePkgs = steipetePkgs;
openclawToolPkgs = openclawToolPkgs;
inherit toolNamesOverride excludeToolNames;
};
openclawGateway = pkgs.callPackage ./openclaw-gateway.nix {

View File

@ -1,6 +1,6 @@
{
pkgs,
steipetePkgs ? { },
openclawToolPkgs ? { },
toolNamesOverride ? null,
excludeToolNames ? [ ],
}:
@ -19,9 +19,9 @@ let
pick =
name:
let
fromSteipete = pickFrom steipetePkgs name;
fromOpenClawTools = pickFrom openclawToolPkgs name;
in
if fromSteipete != null then fromSteipete else pickFrom pkgs name;
if fromOpenClawTools != null then fromOpenClawTools else pickFrom pkgs name;
ensure = names: safe (map pick names);
baseNames = [
@ -36,24 +36,13 @@ let
"ripgrep"
];
pluginCatalog = import ../modules/home-manager/openclaw/plugin-catalog.nix;
bundledToolNames = lib.unique (map (plugin: plugin.tool) (builtins.attrValues pluginCatalog));
extraNames = [
"go"
"uv"
"openai-whisper"
"spotify-player"
"openhue-cli"
"wacli"
"ordercli"
"blucli"
"eightctl"
"mcporter"
"qmd"
"nano-pdf"
]
++ bundledToolNames;
"gogcli"
"goplaces"
"summarize"
"camsnap"
"sonoscli"
];
toolNamesBase = if toolNamesOverride != null then toolNamesOverride else baseNames ++ extraNames;
toolNames = builtins.filter (name: !builtins.elem name excludeToolNames) toolNamesBase;

View File

@ -1,6 +1,6 @@
# Allowed GitHub inputs in flake.lock (owner/repo)
NixOS/nixpkgs
openclaw/nix-steipete-tools
openclaw/nix-openclaw-tools
nix-community/home-manager
nix-systems/default
numtide/flake-utils