Commit Graph
537 Commits
Author SHA1 Message Date
Alexander Heldt ef585c9cf3 pinwheel: Make tmux pane borders visible
The borders used the terminal background color since the switch to
the grayscale palette, which hid them against the panes. Draw them in
the dim gray used for inactive window names instead.
2026-11-03 14:27:56 +01:00
Alexander Heldt 44afaf3936 pinwheel: Restore claude and emacs panes with tmux-resurrect 2026-11-03 14:22:55 +01:00
Alexander Heldt 65c16f2ea6 pinwheel: Increase foot font size to 17 2026-11-03 14:21:39 +01:00
Alexander Heldt ee0cb23acc pinwheel: Save and restore tmux sessions with resurrect and continuum 2026-11-03 13:46:56 +01:00
Alexander Heldt 64640e98aa pinwheel: Fix intermittent webcam failure from IPU6 isys oops
On 7.3 the in-tree IPU6 isys driver can be runtime-suspended while
isys_probe() is still running, before it has set drvdata. The suspend
callback then dereferences a NULL isys, oopses, and psys never probes,
so /dev/ipu-psys0 is missing and the camera HAL fails with "Failed to
open PSYS".

Patch the isys runtime PM callbacks to return early when drvdata is
not set yet. The patched module is built on its own from the kernel
source and installed under updates/, so it overrides the in-tree one
without having to rebuild the whole kernel.
2026-11-03 13:46:56 +01:00
Alexander Heldt 4dfce548bf pinwheel: Make claude settings writable with nix as defaults 2026-11-03 12:05:53 +01:00
Alexander Heldt 04f277014e pinwheel: Rename Emacs theme to sodium 2026-11-03 10:18:40 +01:00
Alexander Heldt 001f201221 pinwheel: Match tig colors to theme and show added lines in green 2026-11-03 10:05:27 +01:00
Alexander Heldt d8df987268 pinwheel: Show green as a muted green in terminals 2026-11-03 09:48:52 +01:00
Alexander Heldt 8d0f2bbf52 pinwheel: Brighten terminal background and soften text color 2026-11-03 09:28:12 +01:00
Alexander Heldt 20118ad828 pinwheel: Use amber instead of red for decorative Emacs faces 2026-11-03 09:28:12 +01:00
Alexander Heldt 4a1f524864 pinwheel: Replace purple color scheme with grayscale and amber
Terminals, tmux and Emacs share a grayscale palette with amber
accents instead of Dracula, and the desktop bars and menus use a
matching gray background.
2026-11-03 09:28:12 +01:00
Alexander Heldt 79df296690 pinwheel: Tint work Firefox toolbars instead of outlining the window 2026-11-03 09:28:12 +01:00
Alexander Heldt e88cc48bf0 pinwheel: Outline work Firefox window instead of tab tops 2026-11-03 09:28:12 +01:00
Alexander Heldt 91d0d8d34b pinwheel: Restore rounded corners on Firefox tabs 2026-11-03 09:28:12 +01:00
Alexander Heldt abf6230995 pinwheel: Unpin tailscale 2026-11-02 10:08:06 +01:00
Alexander Heldt 5da548741a pinwheel: Remove rounded corners from Firefox tabs 2026-11-02 10:07:11 +01:00
Alexander Heldt 1d172e315e pinwheel: Disable Firefox "Smart Window" 2026-11-02 10:06:04 +01:00
Alexander Heldt 3f4a790b53 pinwheel: Configure ct through its Home Manager module 2026-10-29 11:45:02 +01:00
Alexander Heldt cf5b74e251 pinwheel/manatee: Drop tmux r reload binding in favour of R from tmux-sensible 2026-10-29 08:45:28 +01:00
Alexander Heldt cd807b550f pinwheel: Add ct for side threads in Claude Code sessions
Install ct from its flake, with its config, a tmux menu on prefix T and a user service for the web UI. Also keep Claude Code transcripts for ten years instead of 30 days, since threads are meant to be revisited.
2026-10-27 14:49:43 +01:00
Alexander Heldt a74e75d9ab pinwheel: Add screenshot annotation with satty
Shift-prefixed screenshot bindings pipe the capture to satty, and notifications use a short timeout so they are not captured.
2026-10-27 09:59:09 +01:00
Alexander Heldt b74c715164 pinwheel: Copy to clipboard via OSC 52 in Emacs so it works over SSH 2026-10-26 15:41:53 +01:00
Alexander Heldt 8088bc5199 pinwheel: Add Emacs command to copy file path with line number 2026-10-26 15:41:53 +01:00
Alexander Heldt 48248e8c7d pinwheel: Lock instead of suspend on lid close
Have logind ignore the lid switch and suspend/hibernate keys so the
machine stays reachable over SSH with the lid closed. SUPER + SHIFT + x
remains the way to suspend; closing the lid now only locks the screen.
2026-10-22 19:37:42 +02:00
Alexander Heldt 36292c4f14 pinwheel: Fix webcam frame drops and raise resolution to 1080p
With the default 6 icamerasrc buffers the camera HAL ran out of pending
requests and dropped every fourth sensor frame, capping output at ~22.5 fps.
Using 10 buffers keeps the request queue fed and restores 30 fps.
2026-10-22 19:37:42 +02:00
Alexander Heldt 4d0977c482 backwards/pinwheel: Add SSH key for backwards to access pinwheel
Pinwheel's sshd had no way to accept keys from other hosts. Give it the
same `authorizedKeysCommand` setup as backwards and manatee, and authorize
a new `alex.backwards-pinwheel` key that backwards uses for `ssh pinwheel`.
2026-10-20 21:59:21 +02:00
Alexander Heldt 40b9f3e861 pinwheel: Add dagbok Emacs client
Built from the dagbok flake's Emacs overlay, reading the shared token
from agenix.
2026-10-12 16:31:14 +02:00
Alexander Heldt 00475b637b pinwheel: Give the webcam v4l2loopback device more buffers 2026-10-02 09:45:20 +02:00
Alexander Heldt cae7c4cbcf pinwheel: Route browser links to work firefox profile from work checkouts 2026-10-02 09:16:32 +02:00
Alexander Heldt 935b3022e2 pinwheel: Open gcloud links in work firefox profile 2026-10-02 08:59:12 +02:00
Alexander Heldt 5d4f43c5f8 pinwheel: Use alt instead of ctrl for atuin numeric shortcuts 2026-10-02 08:55:17 +02:00
Alexander Heldt 6ee912e39f pinwheel: Skip local network access checks for work domains in firefox 2026-10-02 08:54:52 +02:00
Alexander Heldt 94232b1ff6 pinwheel: Read atuin key from age secret, keep up arrow for zsh history 2026-10-01 08:56:55 +02:00
Alexander Heldt 19e6929219 pinwheel: Add atuin, syncing to manatee 2026-10-01 08:34:32 +02:00
Alexander Heldt f638b7d331 pinwheel: Use empty strings for ai attribution settings 2026-09-30 10:00:14 +02:00
Alexander Heldt 17885cf054 pinwheel: Disable commit and PR attribution in ai settings 2026-09-30 09:32:21 +02:00
Alexander Heldt 53644b5d25 pinwheel: Open graphite links in work firefox profile 2026-09-30 09:30:46 +02:00
Alexander Heldt b27c4be4f4 pinwheel: Set alex as tailscale operator 2026-09-30 08:42:58 +02:00
Alexander Heldt dbd9425843 pinwheel: Add naviterm config secret, fix syncthing dir ownership 2026-09-29 16:42:47 +02:00
Alexander Heldt 1ce4d10e4b pinwheel: Swap to new machine 2026-09-29 16:41:55 +02:00
Alexander Heldt 5c5c87d5f7 pinwheel: Fix swapped ai shell aliases, default to personal account 2026-09-29 15:08:34 +02:00
Alexander Heldt da2fbe4f42 pinwheel: fix ~/code/work ownership, drop custom secret paths
systemd-tmpfiles now ensures ~/code and ~/code/work are owned by
alex, since agenix previously created ~/code/work as root when the
work secrets pointed there directly.

Also drop the custom path= on work-gitconfig, work-github-token, and
work-go-private so they use agenix's default secret path instead of
living under ~/code/work.
2026-09-29 09:20:18 +02:00
Alexander Heldt c795bcd492 pinwheel: enable IPU6 MIPI webcam (ov08x40)
Adds hardware.ipu6 for the built-in MIPI camera, plus two overlay
fixes needed for it to actually work on this hardware:

- Pin icamerasrc-ipu6epmtl to the same release tag already used by
  ipu6-camera-bins/ipu6-camera-hal (20250923_ov02e). The version
  nixpkgs currently pulls is an Intel internal IoT/Panther-Lake
  validation build whose device table only lists external USB
  AR0234 test sensors, never the real ov08x40, so the camera never
  gets selected.

- Patch ipu6-camera-hal's hardcoded IVSC/CVS entity name from
  "Intel IVSC CSI" (the out-of-tree ivsc driver's name) to "Intel
  CVS" (the mainlined intel_cvs driver's name). The mismatch broke
  I2C bus address resolution for the sensor, which cascaded into
  wrong stream configs and black/missing video.
2026-09-29 08:25:37 +02:00
Alexander Heldt babec6336f waybar: Pin battery module to BAT0
Bluetooth HID devices (e.g. a mouse) appearing as power_supply
entries in sysfs make waybar's Battery::refreshBatteries() throw
an uncaught exception and abort. Restricting to BAT0 avoids
enumerating those devices.
2026-09-01 10:07:07 +02:00
Alexander Heldt 5ec6f7d636 hyprland: Fix mouse binds, hl.bindm does not exist
Hyprland's lua API only registers hl.bind; there is no separate
hl.bindm. The settings.bindm key rendered as a literal hl.bindm(...)
call, which errored with "attempt to call a nil value" at runtime.
Fold the mouse binds into settings.bind with { mouse = true }, per
the wiki's own example config.
2026-08-26 14:14:07 +02:00
Alexander Heldt acebeaf180 hyprland: Migrate config to Lua, bump back to current
Hyprland 0.56.x dropped the hyprlang (.conf) config backend in favor
of Lua-only config. Switch configType to "lua" and rewrite monitors,
workspace/window rules, binds, env vars, and autostart using the new
hl.* dispatcher API. Un-pin the hyprland flake input (back to current,
following root nixpkgs) now that the config no longer depends on the
old hyprlang backend.

Every module that injects Hyprland keybinds (foot, wezterm, bemenu,
music, light, sound, screenshot, physlock, hyprlock) is converted to
the same Lua bind syntax, since the config is all-or-nothing per
configType. hyprlock's swayidle dpms toggle and the hyprland-monitors
hotplug script's hyprctl dispatch calls are updated to the new
hl.dsp.* expression syntax the same way.

One behavior change: hl.workspace_rule keeps only the last monitor set
per workspace (unlike hyprlang's rule list), so workspaces that used
to declare two candidate monitors now declare one static default;
the hyprland-monitors service still re-dispatches the correct monitor
on startup and hotplug.
2026-08-26 14:08:28 +02:00
Alexander Heldt f5d62b276d backwards: Remove syncthing, repoint pinwheel folders to manatee 2026-08-16 13:48:10 +00:00
Alexander Heldt fbf8db1558 pinwheel: Manage claude settings through nix 2026-08-16 14:19:58 +02:00
Alexander Heldt 81a1b9714f pinwheel: Use programs.ssh.settings 2026-08-16 14:19:58 +02:00