Skip to content

Conversation

@das-monki
Copy link

Summary

This PR enables running clawdbot on NixOS systems, particularly aarch64-linux (tested on Hetzner CAX ARM servers).

NixOS compatibility

aarch64-linux support

  • Add aarch64-linux to supported systems in flake

Upstream schema migrations

Build fixes

  • Bundle extensions directory in gateway package
  • Include docs directory for workspace templates (AGENTS.md, etc.)

CI improvements

What:
- Remove hardcoded `/bin/` paths from activation scripts
- Use home-manager's `run` function for mkdir and ln commands

How:
- Change `/bin/mkdir -p` and `/bin/ln -sfn` to `run mkdir -p` and
  `run ln -sfn` in clawdbotDirs and clawdbotConfigFiles activation blocks

Why:
- Hardcoded `/bin/mkdir` and `/bin/ln` don't exist on NixOS, where
  binaries live in the Nix store and are accessed via PATH
- Using bare commands (mkdir, ln) works but breaks dry-run mode
- `run` is the home-manager 25.11 convention, replacing the deprecated
  `$DRY_RUN_CMD`. It executes normally but only prints when using
  `home-manager switch --dry-run`
- This matches home-manager's own modules (e.g., xdg-user-dirs.nix)

Fixes: clawdbot#5
These attributes were missing from defaultInstanceConfig, causing
evaluation failures when using the simple configuration style.
Paths like ~/.clawdbot need to be expanded to absolute paths for
systemd, which cannot interpret literal ~.
The gateway now expects telegram config under channels.telegram
instead of top-level telegram key.
Upstream renamed messages.queue.byProvider to messages.queue.byChannel.
Had this error before:
[telegram] handler failed: Error: Missing workspace template: AGENTS.md
Automatically update version strings in clawdbot-gateway.nix and check
derivations when running update-pins.sh, keeping them in sync with the
upstream release tag.
dominicnunez added a commit to dominicnunez/clawdbot-nix that referenced this pull request Jan 24, 2026
…lawdbot#10

Incorporates fixes from upstream nix-clawdbot PRs:

- Add aarch64-linux to supported systems (PR #3, clawdbot#10)
- Expose agent-first template in flake outputs (PR #2)
- Update schema: telegram -> channels.telegram, byProvider -> byChannel (PR clawdbot#9, clawdbot#10)
- Fix defaultInstance missing attributes: agent, gatewayPath, launchd/systemd labels (PR clawdbot#7)
- Use resolvePath for systemd service paths to handle ~ expansion (PR clawdbot#10)
- Default macOS-only first-party plugins (summarize, peekaboo) to disabled on Linux (PR clawdbot#9)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant