Commit Graph

36 Commits

Author SHA1 Message Date
joshp123
11d69d8a1c feat: package npm runtime plugins for Nix
Add a hash-backed npm runtime plugin path that lowers OpenClaw-style npm sources into immutable plugin roots and wires them through the existing Home Manager plugin resolver. Keep flake-backed customPlugins unchanged and document the boundary for agents and maintainers.

Tests: nix build .#checks.aarch64-darwin.default-instance --no-link; nix flake check --no-build; git diff --check

Co-authored-by: Codex <noreply@openai.com>
2026-05-08 18:29:45 +08:00
joshp123
faaf1021c3 fix: separate plugin discovery from enablement
Align the openclawPlugin.plugins contract with OpenClaw itself: load paths control discovery, while plugins.entries.<id>.enabled controls activation.

Rename the contract field to enabled, reject the accidental enable spelling, and keep plugin roots on plugins.load.paths even when their generated activation default is false.

Extend the eval fixture to prove enabled=false defaults, user overrides from true to false, and user overrides from false to true.

Tests: nix build --accept-flake-config .#checks.x86_64-linux.default-instance --no-link --print-out-paths; nix eval --accept-flake-config --raw .#checks.aarch64-darwin.package-contents.drvPath; nix build --accept-flake-config .#checks.aarch64-darwin.package-contents --no-link --dry-run; nix build --impure --accept-flake-config .#darwinConfigurations.mac-mini.system --no-link --override-input nix-openclaw path:/Users/josh/code/nix/nix-openclaw --dry-run

Upstream review: fetched openclaw/openclaw origin/main at 36f847a60e and checked plugin discovery/config semantics before finalizing the contract.

Co-authored-by: Codex <noreply@openai.com>
2026-05-08 12:10:32 +08:00
joshp123
e7d60654b8 fix: package OpenClaw runtime plugin tree
Install and validate OpenClaw's dist-runtime tree so bundled runtime plugins such as ACPX are present in the Nix gateway output.

Extend the existing plugin flake contract with immutable OpenClaw plugin roots, wire those roots into generated config, and add eval fixtures proving default enablement, user overrides, and disabled entries.

Document the boundary: curated plugin artifacts are CI/Garnix-cached by nix-openclaw, while arbitrary npm or ClawHub specs need deterministic lock/hash-backed Nix artifacts cached by the user's store/cache instead of runtime npm installs.

Tests: nix build --accept-flake-config .#checks.x86_64-linux.default-instance --no-link --print-out-paths; nix eval --accept-flake-config --raw .#checks.aarch64-darwin.package-contents.drvPath; nix build --accept-flake-config .#checks.aarch64-darwin.package-contents --no-link --dry-run; nix build --impure --accept-flake-config .#darwinConfigurations.mac-mini.system --no-link --override-input nix-openclaw path:/Users/josh/code/nix/nix-openclaw --dry-run

Co-authored-by: Codex <noreply@openai.com>
2026-05-08 12:00:05 +08:00
joshp123
4ed579792e docs: record OpenClaw plugin investigations
What:
- document the QMD/mcporter packaging decision for maintainers
- capture the native OpenClaw plugin gap and proposed nix-openclaw fix

Why:
- preserve the Discord investigation so the feature work can resume later
- distinguish PR #81's bundled manifest fix from external native plugin support

Tests:
- git diff --check: pass
- nix build .#checks.aarch64-darwin.package-contents --no-link: pass

Co-authored-by: Codex <noreply@openai.com>
2026-05-06 16:37:48 +02:00
joshp123
d56fa8a75c consume QMD through OpenClaw tools
What:
- consume QMD from nix-openclaw-tools instead of a separate upstream flake input
- expose QMD as an internal OpenClaw battery on Darwin and Linux
- add an opt-in Home Manager qmd model prewarm activation
- keep plugin packages off the user's shell PATH by default while preserving the runtime PATH

Why:
- nix-openclaw-tools owns reproducible tool packages and cacheable plugin metadata
- nixos-config should configure OpenClaw, not hand-wire runtime tools

Tests:
- nix build .#checks.aarch64-darwin.package-contents --accept-flake-config --no-link
- nix build .#checks.aarch64-darwin.qmd-runtime --accept-flake-config --no-link
- nix build .#checks.aarch64-darwin.bin-surface .#checks.aarch64-darwin.config-validity .#checks.aarch64-darwin.gateway-smoke --accept-flake-config --no-link
- nix eval .#checks.x86_64-linux.default-instance.drvPath --accept-flake-config
2026-05-06 09:44:37 +02:00
joshp123
5e186c192f docs: split maintainer agent guidance
Move public maintainer policy and automation guidance into maintainers/, shrink root AGENTS.md into an audience router, and ignore internal .agent scratch state.

Delete tracked internal ExecPlans from .agent and scrub personal/private references from public RFC examples.

Checks: git diff --cached --check; scripts/check-flake-lock-owners.sh; node scripts/select-openclaw-release.test.mjs; bash -n scripts/update-pins.sh; ruby -e 'require "yaml"; YAML.load_file(".github/workflows/yolo-update.yml"); YAML.load_file(".github/workflows/ci.yml")'
2026-05-06 09:29:46 +02:00
joshp123
e16f9743fd 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
2026-05-05 12:29:59 +02:00
joshp123
d9b42b0f77 test: cover OpenClaw plugin surface
Fix the documented minimal Home Manager plugin option to use customPlugins, remove the stale duplicate skill-file builder, and assert duplicate plugin skill paths against the paths Home Manager actually installs.

Add local plugin fixtures so the default-instance check covers the agent-facing customPlugins path and duplicate skill collisions.
2026-05-05 09:29:34 +02:00
joshp123
38edf67292 🤖 refactor: hard-break legacy plugin options and unify bundled catalog
What:
- remove legacy option migrations for programs.openclaw.firstParty/plugins
- add explicit removed-option failures pointing to bundledPlugins/customPlugins
- add plugin-catalog.nix as single source of truth for bundled plugins
- generate bundled option toggles, source map, linux check selection, and tool list from the catalog
- update docs/wording from first-party to bundled plugins

Why:
- enforce forward-only API changes with fail-fast errors
- eliminate duplicated plugin lists drifting across module/check/tool surfaces
- keep consumer configuration mental model simple: bundledPlugins + customPlugins only

Tests:
- nix flake check --no-build (pass)
2026-02-17 19:51:06 -08:00
Josh Palmer
05bcb565f2 Docs: note macOS privacy permissions
Golden paths now explicitly call out that TCC privacy permissions cannot be fully declarative on unmanaged Macs.
2026-02-08 12:30:33 -08:00
Josh Palmer
2cb22671dc Golden paths + safer workspace + mac app Nix mode
- Add golden paths doc and link from README\n- Default workspaceDir to stateDir/workspace and pin agents.defaults.workspace when unset\n- Fix macOS app defaults domain and add openclaw.nixMode toggle
2026-02-08 10:45:22 -08:00
DJTBOT
a52fe152e9 docs: standardize OpenClaw casing
What:
- replace "Openclaw" -> "OpenClaw" in user-facing docs, module descriptions, and messages

Why:
- consistent product naming after upstream rename

Tests:
- none (string-only change)
2026-02-05 13:11:45 -08:00
DJTBOT
f9ad193d28 chore: remove legacy moltbot/clawdbot compatibility
What:
- drop MOLTBOT_* and CLAWDBOT_* env wiring from HM + wrappers
- update gateway log-dir patch to target current upstream logger.ts
- update config options generator to require OpenClawSchema only
- update hello-world plugin example env var + module path
- rename RFC filename to remove moltbot naming

Why:
- upstream is OpenClaw; keep nix-openclaw opinionated + clean

Tests:
- bash -n scripts/update-pins.sh
2026-02-05 13:05:01 -08:00
DJTBOT
f578b82ace 🤖 feat: rename plugin option namespaces
What:
- add bundledPlugins/customPlugins options
- alias firstParty/plugins to new names
- update docs + checks to new naming

Why:
- clearer split between bundled and custom plugins

Tests:
- not run (config/docs change)
2026-02-04 10:27:41 -08:00
DJTBOT
90a1bbfe86 🤖 feat: enable goplaces first-party plugin
What:
- pin nix-steipete-tools to include goplaces plugin
- add goplaces to first-party sources and defaults
- update docs and linux first-party allowlist

Why:
- ship goplaces by default across macOS/Linux
- keep first-party plugin set consistent

Tests:
- nix flake check --accept-flake-config (aborted: offline fetch)
2026-02-03 19:37:30 +01:00
DJTBOT
9d8bafc4a8 🔄 rebrand: moltbot → openclaw
Rename all packages, modules, scripts, docs from moltbot to openclaw.

- Packages: moltbot-gateway → openclaw-gateway, moltbot → openclaw
- Binary: mainProgram now 'openclaw' (matches upstream package.json)
- Modules: homeManagerModules.openclaw, darwinModules.openclaw
- Programs: programs.openclaw
- Paths: ~/.openclaw, /tmp/openclaw, lib/openclaw
- Env vars: OPENCLAW_LOG_DIR, OPENCLAW_RELOAD_HM_CMD
- Launchd: com.steipete.openclaw.*
- Plugin API: openclawPlugin
- Kept: CLAWDBOT_* env vars (upstream still uses these)
- Kept: upstream source patch match string in gateway-postpatch.sh

Tests: not run locally (x86_64-linux; CI will validate)
2026-01-30 14:34:49 +01:00
DJTBOT
f0482a8a0c 🤖 rename nix-moltbot surfaces to moltbot
What:
- rename Clawdbot modules/packages/scripts/docs to Moltbot naming
- update yolo updater + config generation for Moltbot schema
- keep Clawdbot app asset names + env exports for upstream compatibility

Why:
- align Nix packaging with moltbot org rename
- fix hourly pin update failures after schema rename

Tests:
- not run (blocked on updated nix-moltbot remote for full nixos-config build)
2026-01-28 12:21:06 +01:00
DJTBOT
4263c570c1 RFC: document plugin system and maintainer memo 2026-01-11 16:40:49 +01:00
DJTBOT
b66501789e nix: collapse tools into single package 2026-01-07 15:54:02 +01:00
DJTBOT
97127c98fe Rename clawdis to clawdbot everywhere 2026-01-04 13:00:10 +01:00
DJTBOT
82ee44aea4 Rename to nix-clawdbot and update references 2026-01-04 12:56:07 +01:00
DJTBOT
a1fa532d72 🇺🇸 DJTBOT: update comic to 2x2 layout with fixed speech bubbles
Rearranged from 4x1 to 2x2 grid for better readability.
Fixed 'Me neither.' bubble to have spiky edges matching other responses.

Co-Authored-By: DJTBOT <clawdis@local>
2026-01-03 22:42:18 +01:00
DJTBOT
4259edd5a8 🇺🇸 DJTBOT: add 'On declarative build systems' comic to README
Tremendous meme based on the classic howfuckedismydatabase.com comic.
Explains the Nix installation experience PERFECTLY - believe me!

Co-Authored-By: DJTBOT <clawdis@local>
2026-01-03 22:29:03 +01:00
DJTBOT
35cdacc550 🤖 codex: nix-clawdis plugins + docs 2026-01-03 21:42:41 +01:00
DJTBOT
796a8fce08 🇺🇸 DJTBOT: rewrite README, fix template, add batteries package
- README: clean, confident, agent-first positioning
- Bulletproof/declarative messaging (no JS shade)
- Template has all required Home Manager fields
- Added clawdis-batteries and clawdis-app packages
- Extended tools with safe null checks

Co-Authored-By: DJTBOT <clawdis@local>
2026-01-02 21:17:07 +01:00
Josh Palmer
80c87822c7 🤖 codex: WIP agent-first templates (n/a)
What:
- add agent-first templates and human/agent steps
- embed full onboarding in README as single source of truth
- remove indirection docs and template step files

Why:
- make onboarding executable for zero-context agents

Tests:
- not run (docs/templates only)
2026-01-02 16:56:31 +01:00
Josh Palmer
13c0bfd00c 🤖 codex: rebuild agent-first docs + flake (n/a)
What:
- add agent-first guide + operator reference docs
- restore flake with package/app outputs and lockfile
- align HM module defaults and sources with public repo

Why:
- make the repo agent-first and fully declarative per RFC

Tests:
- nix flake lock
2026-01-02 16:19:28 +01:00
Josh Palmer
8cf422e7db 🤖 codex: reset docs to agent-first RFC (n/a)
What:
- remove non-RFC docs and flake scaffolding for a clean restart
- rewrite README and RFC around agent-first, declarative bootstrap
- clarify scope boundaries between public repo and personal configs

Why:
- eliminate snippet-driven docs and align with agent-first success criteria

Tests:
- not run (docs cleanup)
2026-01-02 16:05:05 +01:00
Josh Palmer
16340048ac 🤖 codex: clarify zero-to-clawdis scope (n/a)
What:
- note that zero-to-clawdis creates a new local flake, not a personal nixos-config

Why:
- reinforce separation between public docs and private machine configs

Tests:
- not run (docs only)
2026-01-02 15:55:37 +01:00
Josh Palmer
72e6889485 🤖 codex: clarify scope boundaries (n/a)
What:
- add explicit RFC + README scope boundaries
- replace personal launchd label with neutral com.nix-clawdis.gateway
- switch docs to <user> placeholders and matching launchctl commands

Why:
- avoid confusion between RFC, public repo, and personal nixos-config

Tests:
- not run (docs/config updates only)
2026-01-02 15:54:42 +01:00
Josh Palmer
28ea46ecd9 🤖 codex: add RFC DoD + verification steps (n/a)
What:
- add Definition of Done to RFC and align Telegram-first scope
- replace status/health checks with launchd/log verification
- update quickstart, zero-to-clawdis, and agent copypasta

Why:
- match current gateway-only implementation and make verification explicit

Tests:
- not run (docs updates only)
2026-01-02 15:51:26 +01:00
Josh Palmer
58d48e1bc5 🤖 codex: remove setup/doctor apps (n/a)
What:
- drop clawdis-setup/doctor packages and references
- simplify HM package list and RFC outputs
- trim docs mentioning setup/doctor

Why:
- keep onboarding agent-first and avoid extra CLI tooling

Tests:
- not run (docs/config changes only)
2026-01-02 15:45:52 +01:00
Josh Palmer
e1429c78be 🤖 codex: implement clawdis-setup wizard
What: add clawdis-setup and clawdis-doctor scripts, wire overlay, update RFC status.\nWhy: provide a Nix-friendly onboarding flow and basic diagnostics.\nTests: not run.
2026-01-02 15:30:45 +01:00
Josh Palmer
126bb6c4a8 🤖 codex: document sensible defaults
What: add v1 default behavior section to configuration docs.\nWhy: make expectations explicit for Telegram-first setup.\nTests: not run.
2026-01-02 15:29:18 +01:00
Josh Palmer
82007de954 🤖 codex: implement nix-clawdis v1 skeleton
What: add Clawdis package overlay, HM module with launchd, flake outputs, and Telegram-first docs (zero-to-clawdis, copypasta, quickstarts).\nWhy: implement the RFC with a macOS-only, technically light onboarding path.\nTests: not run.
2026-01-02 14:31:24 +01:00
Josh Palmer
b59d834253 🤖 codex: scaffold nix-clawdis repo
What: add initial README, flake stub, and RFC draft.\nWhy: bootstrap public repo for declarative Clawdis packaging.\nTests: not run.
2026-01-02 14:23:51 +01:00