Commit Graph

45 Commits

Author SHA1 Message Date
joshp123
0b25e889a5 fix: keep dogfood public surface hardlink-safe
Dogfood now points at an OpenClaw commit with the broader plugin hardlink work merged, but the bundled public-surface loader still needs nix-openclaw's package-root hardlink compatibility patch. Keep that patch active for dogfood and add a package-content check that fails if the compiled loader rejects hardlinked package files again.

Tests: nix fmt --accept-flake-config; git diff --check; remote mac-mini nix build .#checks.aarch64-darwin.package-contents-dogfood --no-link; remote mac-mini nix build .#checks.aarch64-darwin.package-contents --no-link; remote mac-mini nix build .#checks.aarch64-darwin.default-instance --no-link

Co-authored-by: Codex <noreply@openai.com>
2026-05-09 01:30:55 +08:00
joshp123
26c58273e7 fix: add OpenClaw dogfood gateway build
What:\n- expose temporary dogfood package outputs pinned to an upstream OpenClaw commit with the Nix-mode fixes merged\n- let source pins disable downstream patches that are already upstream\n- build current upstream plugin assets through upstream asset hooks, while keeping the 2026.5.7 path working\n- supply the fs-safe Git dependency as an immutable Nix source for the dogfood build\n\nWhy:\n- private deployments need to dogfood upstream fixes before the next OpenClaw release without making the published stable package depend on runtime npm work\n\nTests:\n- remote Mac mini: nix build --accept-flake-config .#openclaw-gateway-dogfood --no-link\n- remote Mac mini: nix build --accept-flake-config .#openclaw-dogfood --no-link\n- remote Mac mini: nix build --accept-flake-config .#checks.aarch64-darwin.default-instance --no-link\n- remote Mac mini: nix build --accept-flake-config .#checks.aarch64-darwin.package-contents --no-link\n\nCo-authored-by: Codex <noreply@openai.com>
2026-05-09 00:37:43 +08:00
joshp123
30002b7ded test: cover default OpenClaw instance on Darwin
Move the default-instance check into the common check set so Darwin evaluates the plugin/config generation path too. Keep the Linux systemd assertion and add the Darwin launchd assertion for the Home Manager module.

Tests:
- nix build --accept-flake-config .#checks.aarch64-darwin.default-instance .#checks.aarch64-darwin.package-contents .#checks.aarch64-darwin.config-validity --no-link --option narinfo-cache-negative-ttl 0
- nix build --accept-flake-config .#checks.x86_64-linux.default-instance --no-link --option narinfo-cache-negative-ttl 0
- nix build --accept-flake-config .#checks.aarch64-darwin.ci --no-link --option narinfo-cache-negative-ttl 0
- nix build --impure --accept-flake-config .#darwinConfigurations.mac-mini.system --no-link --override-input nix-openclaw path:/Users/josh/code/nix/nix-openclaw --option narinfo-cache-negative-ttl 0

Co-authored-by: Codex <noreply@openai.com>
2026-05-08 13:37:09 +08:00
joshp123
505c50fa58 Use upstream QMD on Linux
Keep upstream tobi/qmd as the Linux QMD package while retaining the nix-openclaw-tools Darwin repair package until upstream Darwin is fixed. This preserves the batteries-included runtime path without forking the Linux package surface.

Tests: nix build '.#checks.aarch64-darwin.qmd-runtime' --accept-flake-config --no-link; nix eval --option eval-cache false --raw '.#checks.x86_64-linux.qmd-runtime.name' --accept-flake-config; nix eval --option eval-cache false --raw '.#checks.aarch64-darwin.qmd-runtime.name' --accept-flake-config; git diff --check
2026-05-06 10:01:46 +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
ce0da31f81 fix: skip QMD bundle on Darwin
QMD currently pulls a native better-sqlite3 rebuild that fails on Garnix Darwin because node-gyp cannot find Xcode/CLT in the builder.

Keep QMD bundled and checked on Linux, but omit it from Darwin packages until the QMD package is Darwin-cacheable.

Tests: nix eval --accept-flake-config --json .#checks.aarch64-darwin --apply 'builtins.attrNames'; nix eval --accept-flake-config --json .#checks.x86_64-linux --apply 'builtins.attrNames'; nix build --accept-flake-config .#checks.aarch64-darwin.ci --no-link --print-build-logs
2026-05-05 23:11:58 +02:00
joshp123
3abd2d14cb feat: bundle QMD for opt-in local memory
Make QMD the Nix-supported batteries-included local memory backend by pinning the upstream QMD flake and adding qmd to the private openclaw wrapper PATH.

Keep QMD opt-in through upstream OpenClaw config with memory.backend = qmd, and document that builtin memorySearch.provider = local remains an escape hatch rather than the primary supported Nix path.

Also point nix run .#openclaw at the batteries-included bundle so app execution gets the same internal runtime PATH as the package.

Tests: sh -n nix/scripts/check-openclaw-qmd-runtime.sh; scripts/check-flake-lock-owners.sh; git diff --check; nix flake show --accept-flake-config --json; nix build .#checks.aarch64-darwin.qmd-runtime .#checks.aarch64-darwin.bin-surface .#packages.aarch64-darwin.openclaw --accept-flake-config --no-link --print-out-paths; nix build .#checks.x86_64-linux.qmd-runtime --accept-flake-config --no-link --print-out-paths; nix build .#checks.aarch64-darwin.ci --accept-flake-config --no-link --print-out-paths; nix build .#packages.x86_64-linux.openclaw .#checks.x86_64-linux.bin-surface --accept-flake-config --no-link --print-out-paths; scripts/hm-activation-macos.sh; nix build .#checks.x86_64-linux.gateway-smoke --accept-flake-config --no-link --print-out-paths; nix run .#openclaw --accept-flake-config -- --version; bash -n scripts/update-pins.sh; node --check scripts/select-openclaw-release.mjs; node --check scripts/select-openclaw-release.test.mjs; node scripts/select-openclaw-release.test.mjs
2026-05-05 20:24:25 +02:00
joshp123
eb9a52bf96 fix: keep runtime tools internal
Expose only the openclaw command from the default package while keeping bundled runtime tools on the wrapper PATH. Remove the public openclaw-tools package output and document runtime tools as implementation detail.

Tests: nix build .#packages.aarch64-darwin.openclaw .#checks.aarch64-darwin.bin-surface .#packages.x86_64-linux.openclaw .#checks.x86_64-linux.bin-surface --accept-flake-config --no-link --print-out-paths; nix build .#checks.aarch64-darwin.ci --accept-flake-config --no-link --print-out-paths; git diff --check --cached
2026-05-05 18:14:08 +02:00
joshp123
3333bb831e docs: repair agent-first onboarding
What:
- export the agent-first flake template
- remove unsupported Intel macOS setup claims
- replace stale Discord channel links with the public invite path
- simplify the advanced dual-instance example and sync plugin docs

Why:
- make the documented first-run path match the flake users actually consume
- avoid sending users toward unsupported systems or dead Discord links

Tests:
- git diff --cached --check: passed
- nix flake show --json --accept-flake-config | jq -e '.templates."agent-first"': passed
- nix flake init -t /Users/josh/code/nix-openclaw#agent-first --accept-flake-config: wrote flake.nix and documents/
- rg stale onboarding strings in README.md AGENTS.md templates/agent-first/flake.nix docs: no matches
2026-05-05 12:30:36 +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
ba7d1573a4 ci: focus OpenClaw checks on Nix package contract
What:
- replace the misleading gateway test check with a source-checks build/config-options check
- remove the full upstream Vitest suite from the hard Nix promotion gate
- document that yolo validates the Nix-owned package contract, not upstream source test health

Why:
- the current full packageable upstream release builds as a package but has failing upstream Vitest cases when rebuilt from source
- nix-openclaw should block on packaging, smoke startup, config generation, module activation, and app artifacts rather than an upstream-owned unit test suite

Tests:
- git diff --check
- bash -n scripts/update-pins.sh scripts/hm-activation-macos.sh nix/modules/home-manager/openclaw-launchd-relink.sh nix/scripts/source-checks-build.sh nix/scripts/source-checks-check.sh nix/scripts/config-options-check.sh
- ruby -e 'require "yaml"; YAML.load_file(".github/workflows/ci.yml"); YAML.load_file(".github/workflows/yolo-update.yml")'
- nix eval --accept-flake-config --raw .#checks.x86_64-linux.source-checks.drvPath
- nix eval --accept-flake-config --raw .#checks.x86_64-linux.ci.drvPath
- nix flake show --accept-flake-config --all-systems --json
- scripts/check-flake-lock-owners.sh
- node scripts/select-openclaw-release.test.mjs
- scripts/hm-activation-macos.sh
- nix build --accept-flake-config -L .#checks.aarch64-darwin.ci
2026-05-05 10:52:55 +02:00
joshp123
a468354c55 fix: harden OpenClaw Nix release packaging
What:
- make openclaw the canonical agent-first package surface and document the maintainer automation contract
- select the newest full packageable OpenClaw stable release and report newer assetless stable releases
- validate public CLI config, smoke-test gateway runtime, and share source checks across gateway tests/config option generation
- fix Nix-store hardlink runtime handling and Linux builder scratch space
- add daily Codex maintainer automation for direct-to-main repair after full gates
- block yolo promotion if promote materializes a different diff than validation

Why:
- keep nix-openclaw reliable for macOS and Linux users while upstream release assets lag source tags
- make yolo and daily automation uphold one clean Nix package contract

Tests:
- node scripts/select-openclaw-release.test.mjs
- bash -n scripts/update-pins.sh
- sh -n nix/scripts/build-root.sh nix/scripts/gateway-install.sh nix/scripts/gateway-prebuild.sh nix/scripts/gateway-tests-check.sh nix/scripts/source-checks-check.sh
- ruby -e 'require "yaml"; YAML.load_file(".github/workflows/yolo-update.yml")'
- scripts/check-flake-lock-owners.sh
- GITHUB_ACTIONS=true scripts/update-pins.sh select
- nix flake show --accept-flake-config
- nix build .#checks.aarch64-darwin.ci --accept-flake-config --max-jobs 1 -L
- nix build .#checks.x86_64-linux.ci --accept-flake-config --max-jobs 1 -L
2026-05-05 08:00:13 +02:00
joshp123
2a9a3be47b nixos: add openclaw-gateway module
Adds services.openclaw-gateway NixOS module:
- systemd service for │
◇  Doctor warnings ──────────────────────────────────────╮
│                                                        │
│  - State dir migration skipped: target already exists  │
│    (/Users/josh/.openclaw). Remove or merge manually.  │
│                                                        │
├────────────────────────────────────────────────────────╯
- deep-merged config attrset -> /etc/openclaw/openclaw.json
- configurable unit name, env, preStart, and PATH

This lets downstream stacks (clawdinators) avoid re-implementing the gateway service.
2026-02-15 14:32:00 -08:00
joshp123
3feb491321 ci: aggregate checks to avoid duplicate gateway builds 2026-02-15 11:03:07 -08:00
joshp123
c3d3be60ac style: nix fmt (nixfmt-tree) + exclude generated config options 2026-02-14 23:24:32 -08:00
joshp123
585ce70684 chore: add nix fmt formatter + switch to fetchPnpmDeps 2026-02-14 22:05:31 -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
48b5bee635 Add default-instance check
- validate implicit default instance wires systemd unit name
- run new check in garnix

Tests: not run (not requested)
2026-02-04 11:05:16 -08:00
DJTBOT
55392709ae Add config validity check
- validate module-generated config against Openclaw schema
- add config-validity check and Node validation script

Tests: not run (CI)
2026-02-03 11:55:15 +01:00
DJTBOT
adefa5cd41 Add package-contents check
- add check script for extensions/docs/templates and module symlinks
- wire package-contents check into flake outputs

Tests: not run (CI)
2026-02-03 11:18:15 +01:00
DJTBOT
981db9bdfa fix: use testers.nixosTest
Update HM activation check to use pkgs.testers.nixosTest (nixosTest alias removed).

Tests: not run (CI fix).
2026-02-01 00:24:31 +01:00
DJTBOT
5ee2f8190c ci: add HM activation tests
Add a Linux nixosTest for Home Manager activation and a macOS CI workflow to run the activation script.

Wire the new Linux check into flake checks and Garnix.

Tests: not run (CI wiring).
2026-02-01 00:15:26 +01:00
DJTBOT
d61564a8a5 feat: inline plugin eval into config-options check
- evaluate first-party plugins inside config-options check
- keep garnix matrix unchanged by removing standalone check
- update steipete tools pin to 76188dc

Tests: not run (CI pending)
2026-01-30 22:56:35 +01:00
DJTBOT
0207bb1aad fix: slim first-party plugin check
- drop full home-manager evaluation in check
- add minimal stub options for module eval
- ensure assertions force plugin resolution

Tests: nix build .#checks.aarch64-darwin.first-party-plugins --accept-flake-config
2026-01-30 22:24:01 +01:00
DJTBOT
c5d422a448 feat: verify first-party plugins at eval
- add first-party-plugins check to evaluate HM module
- allow openclawPlugin to be a system-scoped function
- update nix-steipete-tools pin to dbf0a31

Tests: nix build .#checks.aarch64-darwin.first-party-plugins --accept-flake-config (segfaulted)
2026-01-30 19:25:54 +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
e0ca9e3885 Update clawdbot pin and generate config options 2026-01-07 18:59:37 +01:00
DJTBOT
d6ba4a08ab Fix config drift and add schema sync check 2026-01-07 18:15:32 +01:00
DJTBOT
bad94c1b40 Simplify CI to stable Linux+macOS builds 2026-01-07 16:55:30 +01:00
DJTBOT
8021219372 nix: package set, canary pin, and build fixes 2026-01-07 15:11:39 +01:00
DJTBOT
ff62306bd9 Make clawdbot-gateway build offline + enable Garnix packages 2026-01-07 10:55:49 +01:00
DJTBOT
c9922d289a Improve docker image streaming and config compat 2026-01-04 18:22:28 +01:00
DJTBOT
e05b8c6613 Add Nix-built Docker POC for clawdbot 2026-01-04 16:43:48 +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
eb6d8c706c 🤖 codex: disable imsg by default and require confirm 2026-01-03 23:54:48 +01:00
DJTBOT
69673654bd 🤖 codex: limit garnix checks to apple silicon 2026-01-03 23:33:45 +01:00
DJTBOT
5164a4e2d6 🤖 codex: add lightweight garnix checks 2026-01-03 22:47:09 +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
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
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
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