feat(agents): align ruby and kana computer-use support (#514)

* feat(agents): align ruby and kana computer-use support

Assisted-by: DeepSeek Harness (deepseek-flash)

* test(agents): keep one full-host test for ruby and kana

Both guests run the same agent configuration, so a second full-host test
does not add coverage.

Assisted-by: DeepSeek Harness (deepseek-flash)

* fix(computer-use): disable cua-driver telemetry before start

The i3 init hook did not reliably disable the default-on setting, so both
hosts could start the daemon with telemetry enabled.

Assisted-by: DeepSeek Harness (deepseek-flash)
This commit is contained in:
ryan4yin | 二花 authored and GitHub committed 2026-11-03 23:08:51 +08:00
1 parent d8b298019a
commit ff7102d75b
7 files changed
+13 -18

No files matched your search

+2
View File
@@ -7,4 +7,6 @@
modules.desktop.computerUse.enable = true;
# localhost-only VNC server for manual access (use an SSH tunnel).
modules.desktop.computerUse.vnc = true;
# trycua/cua driver.
modules.desktop.computerUse.cuaDriver = true;
}
+1 -1
View File
@@ -7,6 +7,6 @@
modules.desktop.computerUse.enable = true;
# localhost-only VNC server for manual access (use an SSH tunnel).
modules.desktop.computerUse.vnc = true;
# trycua/cua driver, grey-tested on ruby only.
# trycua/cua driver.
modules.desktop.computerUse.cuaDriver = true;
}
+3 -5
View File
@@ -54,11 +54,6 @@ let
DBUS_SESSION_BUS_ADDRESS="unix:path=''${XDG_RUNTIME_DIR}/bus" \
${pkgs.glib.bin}/bin/gsettings set org.gnome.desktop.interface toolkit-accessibility true \
>/dev/null 2>&1 || true
${lib.optionalString cfg.cuaDriver ''
# cua-driver sends content-free telemetry by default; turn it off.
${pkgs.cua-driver}/bin/cua-driver telemetry disable >/dev/null 2>&1 || true
''}
'';
in
{
@@ -201,6 +196,9 @@ in
"DISPLAY=${display}"
"XDG_SESSION_TYPE=x11"
];
# cua-driver sends content-free telemetry by default. Do this before
# the daemon starts so activation does not depend on the i3 session.
ExecStartPre = "${pkgs.cua-driver}/bin/cua-driver telemetry disable";
ExecStart = "${pkgs.cua-driver}/bin/cua-driver serve";
Restart = "always";
RestartSec = 2;
+2 -2
View File
@@ -31,8 +31,8 @@ directory.
The `agent` hosts differ only in:
| | `aquamarine` | `ruby` | `kana` |
| ------------ | ------------------------------------------ | ------------------- | ------------- |
| Computer use | off | on, with cua-driver | on |
| ------------ | ------------------------------------------ | ------------------- | ------------------- |
| Computer use | off | on, with cua-driver | on, with cua-driver |
| Hardware | physical; 2x R9700, NPU speech recognition | libvirt guest | libvirt guest |
| Root | tmpfs; `preservation.nix` keeps home state | disk | disk |
-9
View File
@@ -19,15 +19,6 @@ in
# Headless computer-use environment (Xvfb + i3 + desktop automation + browser).
modules.desktop.computerUse.enable = true;
# Enable binfmt emulation of aarch64-linux, this is required for cross compilation.
boot.binfmt.emulatedSystems = [
"aarch64-linux"
"riscv64-linux"
];
# This enables the kernel to preload the emulator binaries when the binfmt registrations are added,
# obviating the need to make the emulator binaries available inside chroots and chroot-like sandboxes.
boot.binfmt.preferStaticEmulators = true; # required to work with podman
# supported file systems, so we can mount any removable disks with these filesystems
boot.supportedFilesystems = [
"ext4"
@@ -17,7 +17,8 @@ lib.genAttrs hosts (name: {
i3Restart = "always";
vnc = true;
clipboardSync = true;
cuaDriver = name == "ruby";
cuaDriver = true;
cuaTelemetryDisabled = true;
brave = true;
chromium = true;
})
@@ -29,6 +29,9 @@ lib.genAttrs hosts (
"autocutsel-clipboard"
];
cuaDriver = home.modules.desktop.computerUse.cuaDriver;
cuaTelemetryDisabled = lib.hasInfix "telemetry disable" (
home.systemd.user.services.cua-driver.Service.ExecStartPre
);
brave = home.programs.brave-origin.enable;
chromium = home.programs.chromium.enable;
}