Commit graph

334 commits

Author SHA1 Message Date
8067676713 macbook: fan control, thermald, earlyoom; cheaper compositor
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 14:20:57 +01:00
e5fd60a5ae gaming: watchdog + sysrq so a GPU hang reboots itself 2026-08-06 21:07:49 +01:00
bc10b078c6 mediaserver-vm: offset forwarded host ports to avoid live services
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 14:08:54 +01:00
0235bc9875 flake: add mediaserver-vm host for testing services from scratch
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 14:07:34 +01:00
748a345ea9 qs-ask: log outcomes to journal; launcher: spinner while Claude answers
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 11:27:08 +01:00
ba9558ba30 qs-ask: answer bare keyword queries instead of replying UNKNOWN
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 10:46:55 +01:00
992cf8cb2e Add protonplus 2026-08-01 22:29:01 +01:00
946c631f2a hosts: drop duplicate adwaita-icon-theme (desktop.nix already installs it)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 22:25:01 +01:00
a927cf6ba9 qs-ask: name the session to drop a redundant API call
Profiled the second model call visible in modelUsage: it is
`source=generate_session_title`, inventing a title for a session that
--no-session-persistence immediately discards. It costs no wall time —
both requests dispatch ~1ms apart and run concurrently, which is why
duration_api_ms was roughly double duration_ms — but it spent 507 input
tokens against 153 for the actual question.

--name qs-ask removes it: one request instead of two, 660 input tokens
down to 153 per question. No latency change, 77% less input token spend,
which is what actually matters when the budget is a subscription rate
limit rather than a bill.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 17:56:36 +01:00
aee59ff0b2 qs-ask: disable thinking — 2.4x faster, same answers
Profiled where the ~6s actually went, and it was not where I assumed.
Haiku defaults to extended thinking, so it spent 225 output tokens and
1.9s deliberating before emitting an 80-character answer about the height
of a tower. MAX_THINKING_TOKENS=0: 43 output tokens, time-to-first-text
2657ms -> 1122ms, wall clock 5.7s -> ~2.4s, answer unchanged.

Two things measured NOT to be the bottleneck, recorded in the comment so
nobody optimises them later: process startup (0.12s boot plus 28ms to
fire the request, so a warm/persistent process saves nothing) and prompt
size (184 input tokens, no bloat to trim).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 17:49:44 +01:00
309c54d31b qs-ask: answer via Claude Code on the subscription, not an API key
No API key and no separate billing: qs-ask now shells out to `claude -p`,
which draws on the existing subscription already authenticated on this
host. The trade is latency — Claude Code boots a Node process per
question, ~6s measured against the raw API's ~1s — so the launcher now
races Wikipedia and Claude instead of chaining them. Wikipedia fills the
card in under a second and Claude supersedes it on arrival; chaining
would have left the card blank for six seconds on every question.

Isolation, verified: --safe-mode drops CLAUDE.md, skills, hooks, plugins
and MCP while leaving auth working, which matters for correctness and not
just speed — the global CLAUDE.md here asks for caveman-mode replies and
that would have leaked into answers. --no-session-persistence writes no
transcript, and a dedicated empty cwd keeps launcher questions out of any
project's history or auto-memory. Confirmed no project namespace, no
transcript and no memory write after a run.

Not --bare, which looks right and is a trap: its auth is strictly
ANTHROPIC_API_KEY, so it cannot use the subscription at all.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 17:34:50 +01:00
dbed82bab4 qs-ask: report why it went quiet on stderr
Silence on stdout is the launcher's fall-back-to-Wikipedia signal, so it
has to stay clean — but that made a misconfigured key indistinguishable
from a working fallback. Every reason now prints on stderr, which the
launcher discards and a human running qs-ask by hand can read.

Drops curl -f so a 4xx body's own error message ("API key is invalid.")
surfaces instead of just an exit code, and guards the specific mistake of
pasting the sk-ant-... placeholder literally.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 17:21:05 +01:00
958dc9b333 quickshell: Claude-backed launcher answers via the mediaserver
Adds qs-ask on the mediaserver — the Anthropic key lives there and nowhere
else, so neither desktop holds a credential and there's one place to
rotate it. The launcher pipes the question over the same SSH path the
server monitor already uses; the query goes over stdin because
`ssh host cmd arg` would re-parse arg through the remote shell.

Claude answers first, Wikipedia is the fallback. The script is the
feature gate: with no key it exits silently, which is the same signal as
a failed call or an UNKNOWN reply, so the Wikipedia path stays the
default with zero configuration. The card names whichever answered.

Haiku 4.5, no thinking and no effort (effort errors on Haiku) — a
one-sentence fact needs no reasoning tokens. ~$0.0005 per query.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 17:14:04 +01:00
e68d2d6464 macbook: cap nix download concurrency to stop wl wifi drops 2026-07-29 17:24:25 +01:00
7ea6442a00 gaming: clamp DP-3 gamut to DCI-P3 in compositor
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 12:20:02 +01:00
a7976205a8 qs-stats: single writer, fix @STAT pipe race
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 20:47:39 +01:00
fb0a724d7e gaming: drop dead garnix cache
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 20:38:46 +01:00
72864463d0 server monitor: qs-stats stream adds cpu temp + wan throughput
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 20:32:43 +01:00
ee86678cb5 gaming: drop arctis-sound-manager, ANC via direct HID script
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 19:35:25 +01:00
027858ff1e gaming: arctis-sound-manager + quickshell ANC switcher
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 19:21:37 +01:00
efd1331823 quickshell: native volume/brightness OSD, drop swayosd + wob
Sixth surface in the SDF chrome shader, melting out of the bottom
frame. Volume is reactive via Pipewire so the OSD also fires for
pavucontrol/mixer changes; brightness routes through a new osd IPC
handler since sysfs backlight only notifies via POLLPRI.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 12:35:44 +01:00
6ef527d03f Add cmatrix 2026-07-28 11:57:01 +01:00
b8113d8183 macbook: pin aquamarine 0.11.0 src under cursor patch 2026-07-26 13:19:41 +01:00
93ec50fe9d macbook: aquamarine immediate legacy cursor moves (patch file) 2026-07-25 09:10:36 +01:00
41cbc1dd6f macbook: patch aquamarine legacy-iface cursor null bug 2026-07-25 08:54:10 +01:00
2244f339c9 macbook: legacy DRM iface for immediate cursor updates 2026-07-25 08:45:11 +01:00
a731bb1732 macbook: pin i965 VA-API driver, drop unusable iHD 2026-07-24 15:52:54 +01:00
ec26df5b80 macbook: add intel VA-API drivers for hw video decode 2026-07-24 15:44:14 +01:00
2aa8e253de macbook: add faugus-launcher 2026-07-22 17:18:15 +01:00
a07759a40d macbook: drop DWT daemon, native libinput DWT works
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 21:27:56 +01:00
4f99ea2019 macbook: fix native DWT via hwdb touchpad integration override
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 21:18:56 +01:00
f1212e72c8 macbook: swap fn/left-ctrl via hid_apple
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 11:57:44 +01:00
c1387d4400 macbook: drop unused X11 TearFree option
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 17:32:17 +01:00
0ea1abd7aa desktop: smooth plymouth handoff + start-hyprland, macbook early KMS
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 17:13:51 +01:00
a283ab23de ghostty: share warm-instance daemon across desktops
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 14:01:17 +01:00
39526502c7 gaming: use pinned cachyos kernel overlay for cache hits
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 17:01:32 +01:00
9813812dfc Move insecure-pnpm/broadcom-sta allowance to common.nix (vesktop on all hosts)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 20:00:32 +01:00
ad1ceba28e macbook: pin to 6.12 LTS kernel so broadcom_sta + facetimehd build (7.x breaks them)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 10:42:08 +01:00
ebef93f618 macbook: allow insecure pnpm (CVE-flagged build dep in closure)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 10:26:49 +01:00
4d52da994c quickshell: upower battery, event-driven network, minute clock, stylix font, wifi glyphs
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 11:03:24 +01:00
8dd70a2d9d mediaserver: drop no-op firewall rules, close unused DR forwards
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 10:00:49 +01:00
cf224d7f4a gaming: match monitor by DP-3 connector name (desc: never applied)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 09:41:22 +01:00
a08e9b6977 gaming: match monitor by EDID desc to fix 180Hz on connector drift
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 20:40:39 +01:00
60e954295e gaming: add qbittorrent
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 23:24:28 +01:00
c5e698d7ec fix geary crash by using programs.geary module
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 13:20:14 +01:00
7146030074 fix auto-upgrade running before flake.lock update
Remove unnecessary --impure from update alias, shift
auto-upgrade from 04:15 to 05:15 so it runs after the
Forgejo bot updates flake.lock at 04:00 UTC (05:00 BST).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-01 09:34:39 +01:00
8560c11afa fix NIC naming: use udev rules instead of .link files
systemd.network.links didn't generate files; use udev extraRules
to pin NIC names to MACs. Also disable networking.useDHCP catch-all
that silently misconfigured the LAN NIC when it got a wrong name.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-22 09:31:57 +01:00
1aebc200b6 remove matugen remnants — theming is now handled by stylix
Delete 8 unused matugen template files, remove the matugen package,
homepage custom.css watcher infrastructure, and the wallpaper shell
function. Update remaining comments to reference stylix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-20 17:45:11 +01:00
93a9f56092 macbook: increase DWT timeout from 0.3s to 0.4s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-19 17:44:35 +01:00
b52f730889 macbook: re-enable touchpad when DWT service stops
Add ExecStopPost to write 0 to bcm5974's inhibited sysfs node,
so the touchpad is always restored even if the script is killed
mid-inhibit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-19 17:41:42 +01:00