100 Commits
Author SHA1 Message Date
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 548507d60b flake: Pin hyprland to pre-0.56.0 rev, keep own nixpkgs
Hyprland 0.56.0 dropped the hyprlang (.conf) config backend entirely
in favor of a Lua-only config, breaking the deployed hyprland.conf on
pinwheel. Pin back to 79bc0ca (last hyprlang-supporting build) until
the config is migrated to Lua.

Also drop hyprland's nixpkgs.follows override: building the old
Hyprland rev against the current (newer) root nixpkgs caused a
libstdc++ ABI mismatch between the cached hyprtoolkit binary and a
freshly-compiled hyprland-guiutils.
2026-08-26 12:54:43 +02:00
Alexander Heldt 9d15eb0e9f Update flake inputs 2026-08-18 09:39:02 +00:00
Alexander Heldt 4dbd2ccded Update todo flake input 2026-08-18 09:32:39 +00:00
Alexander Heldt b5c2c8d187 flake: Flip todo input to git.ppp.pm gitea host 2026-08-16 14:34:57 +00:00
Alexander Heldt 34990eaaa4 manatee: Back up service state (databases etc.) via restic 2026-08-16 14:23:51 +00:00
Alexander Heldt f5d62b276d backwards: Remove syncthing, repoint pinwheel folders to manatee 2026-08-16 13:48:10 +00:00
Alexander Heldt 7a170ff59c manatee: Sync personal, work and phone-gps, peer phone to org 2026-08-16 13:41:52 +00:00
Alexander Heldt 0a5da7a293 backwards: Pin firefox legacy configPath 2026-08-16 14:19:59 +02:00
Alexander Heldt fbf8db1558 pinwheel: Manage claude settings through nix 2026-08-16 14:19:58 +02:00
Alexander Heldt 8eefa99ca8 tadpole: Use programs.ssh.settings 2026-08-16 14:19:58 +02:00
Alexander Heldt 0d2496c600 backwards: Use programs.ssh.settings 2026-08-16 14:19:58 +02:00
Alexander Heldt 81a1b9714f pinwheel: Use programs.ssh.settings 2026-08-16 14:19:58 +02:00
Alexander Heldt 77628fd6bb pinwheel: Pin firefox legacy configPath 2026-08-16 14:19:58 +02:00
Alexander Heldt 5aaf0fc7f8 pinwheel: Use beamPackages.erlang 2026-08-16 14:19:58 +02:00
Alexander Heldt f33c26a5e4 pinwheel: Enable programs.fuse for sshfs 2026-08-16 14:19:58 +02:00
Alexander Heldt 2a8a72b7cb backwards/manatee: Move restic backup to mantee 2026-08-16 14:02:33 +02:00
Alexander Heldt 6f68f7d9e6 manatee: Add support for pdfs in komga-reader 2026-08-16 07:41:45 +00:00
Alexander Heldt cffaec5fe8 manatee: add self-hosted todo app
Wire the offline-first todo app (github: local /home/alex/code/todo) into
manatee, following the app-module convention:

- flake input `todo` (local git checkout for now; gitea URL commented) with
  nixpkgs following.
- hosts/manatee/modules/todo: mod.todo option importing the app's NixOS module;
  runs on 127.0.0.1:8091, secureCookies, token from agenix; the host owns the
  nginx vhost (todo.ppp.pm, forceSSL + useACMEHost) and homepage card.
- mod.todo.enable = true.
- certs: todo.ppp.pm DNS-01 cert via hetzner.
- home-assistant DNS updater: add `todo` to the Hetzner subdomain list.
- secrets: todo-token.age (encrypted access token) + recipients in secrets.nix.
2026-08-13 12:36:18 +00:00
Alexander Heldt d0ef7f5b7e manatee: Add wl-clipboard 2026-07-26 07:36:05 +00:00
Alexander Heldt 5eacb60b50 manatee: Add claude 2026-07-26 07:35:53 +00:00
Alexander Heldt a33a22aa50 Update solo-referee flake input 2026-07-26 07:34:21 +00:00
Alexander Heldt 56c04b1f70 manatee: Guard podman containers against crash-looping
Add a start-limit (5 restarts / 5 min) to the romm, romm-db, romm-redis
and homeassistant podman services so a failing container enters a
`failed` state instead of retrying forever. A slow crash-loop (~5s per
attempt) stays under systemd's default 5-starts-per-10s limit, so a
longer window is needed to catch it.
2026-07-26 07:32:16 +00:00
Alexander Heldt cd81da9bfd Update puppy-tracker flake input 2026-07-24 15:19:12 +00:00
Alexander Heldt ed3e5844a0 Update puppy-tracker flake input 2026-07-24 12:31:14 +00:00
Alexander Heldt 08a3bae6c6 manatee: Add solo-referee module 2026-07-24 12:26:33 +00:00
Alexander Heldt cdb657bd36 pinwheel: Set hyprland config variant 2026-07-23 10:56:37 +02:00
Alexander Heldt 538fb0390a pinwheel: set ASKPASS
And cache the git signing key
2026-07-23 10:56:01 +02:00
Alexander Heldt 8f22f82066 pinwheel: Fix emacs startup
And don't force the async path, wait at least 0.1sec for terminal to
answer with capabilities. Using the async path broke the answer and
inserted 4 spaces in the beginning of the buffer
2026-07-23 10:55:00 +02:00
Alexander Heldt 82b7ce8ccc pinwheel/tadpole: Rename alex.pinwheel-tadpole-ed25519 2026-07-21 09:38:35 +02:00
Alexander Heldt 99b5cb3380 Update puppy-tracker flake input 2026-07-21 07:20:31 +00:00
Alexander Heldt 100a7c455f pinwheel: Remove bitwarden gui client 2026-07-21 08:58:55 +02:00
Alexander Heldt 23bc741d5e Update flake inputs 2026-07-21 08:58:53 +02:00
Alexander Heldt 64e71cce31 pinwheel: Add ai module
With work/personal claude configs
2026-07-21 08:58:52 +02:00
Alexander Heldt 0b3e8c162a pinwheel: Ensure hyprland monitor detection works on start 2026-07-21 08:58:50 +02:00
Alexander Heldt 421c6179d6 manatee: Add tmux module 2026-07-17 09:15:46 +00:00
Alexander Heldt 2c80e01a6e Update puppy-tracker flake input 2026-07-13 06:16:35 +00:00
Alexander Heldt 12eb945230 Update puppy-tracker flake input 2026-07-09 19:51:51 +00:00
Alexander Heldt 42079c2268 Update puppy-tracker flake input 2026-07-09 20:35:48 +02:00
Alexander Heldt 4742e0f593 manatee: Add puppy-tracker behind virtual host puppy.ppp.pm 2026-07-09 20:34:43 +02:00
Alexander Heldt 3446756cc1 manatee: Add invite code secret for puppy-tracker 2026-07-09 20:34:12 +02:00
Alexander Heldt aa7ef695f4 manatee: Add ability to specify public url for homepage card 2026-07-09 20:33:22 +02:00
Alexander Heldt ff02728d82 manatee: Add puppy.ppp.pm sub-domain
With cert and ip update
2026-07-09 16:59:13 +00:00
Alexander Heldt e2f62568b5 Update puppy-tracker flake input 2026-07-04 09:27:46 +00:00
Alexander Heldt 304d07fea3 Update puppy-tracker flake input 2026-07-04 09:21:06 +00:00
Alexander Heldt bdcc75980d manatee: Fix komga-reading-stats secret permissions 2026-06-25 14:28:28 +00:00
Alexander Heldt 0b27829c2a Update flake inputs 2026-06-25 14:28:15 +00:00
Alexander Heldt f628e3a16a Update flake inputs 2026-06-21 18:08:50 +00:00
Alexander Heldt c07d9fca36 Update flake inputs 2026-06-21 17:59:25 +00:00
Alexander Heldt 6477f2b39b manatee: Add puppy-tracker module 2026-06-21 17:50:51 +00:00
Alexander Heldt 80ed5a1017 Update flake inputs (and add puppy-tracker) 2026-06-21 17:50:51 +00:00
Alexander Heldt b6fcd199c1 pinwheel/tadpole: Add ed25519 ssh key 2026-06-17 08:35:07 +02:00
Alexander Heldt 9a49839eee Update whib-frontend flake input 2026-06-03 12:59:11 +02:00
Alexander Heldt 2606f1a1c6 tadpole: Scope authorized_keys_command to alex
The command was hijacking auth for all users, including `gitea`, which
broke `git push` over SSH — `gitea`'s `authorized_keys` (with the
`gitea serv` command restriction) was being bypassed, and sshd would
try to exec the raw `git-receive-pack` instead.

Pass `%u` to the command and short-circuit unless the requested user
is `alex`, so other users fall back to their own `~/.ssh/authorized_keys`.
2026-06-03 12:58:08 +02:00
Alexander Heldt 331a86deb0 pinwheel: Use opensshs ssh-agent for SSH
As gnomes gcr-ssh-agent stalls RSA signing
2026-06-03 12:58:07 +02:00
Alexander Heldt 5cf4c1037a pinwheel: Load direnv ZSH on devshell load 2026-06-03 12:58:05 +02:00
Alexander Heldt 50bf270d1c pinwheel: Pin tailscale version 2026-06-03 12:58:04 +02:00
Alexander Heldt 6e7e3aeebd pinwheel: Fix ts LSP package location 2026-06-03 12:58:02 +02:00
Alexander Heldt 477d54c7db pinwheel: Fix hyprland lock input 2026-06-03 12:58:01 +02:00
Alexander Heldt e02b21013b Update whib-backend flake input 2026-06-03 10:25:19 +00:00
Alexander Heldt 4a63c4eb5e manatee: Update monitoring in home-assistant
- Add all disks to smartd
- Generate home-assistant config in nix
- Add metrics for all HDDs
2026-05-30 16:54:40 +00:00
Alexander Heldt d291633fe2 manatee: Update ssh module
- current naming
- set defaults to off
2026-05-30 16:45:27 +00:00
Alexander Heldt 188ad0a75a manatee: Make romm network creation idempotent 2026-05-30 16:44:30 +00:00
Alexander Heldt 993528418c Update flake inputs 2026-05-20 09:26:39 +02:00
Alexander Heldt f8907ccd05 manatee: Add romm module 2026-05-17 13:25:01 +00:00
Alexander Heldt d72a4ebb61 manatee: Disable immich 2026-05-17 13:25:01 +00:00
Alexander Heldt f8a2f7f3c5 manatee: Fix permissions for komga-reading-stats 2026-05-17 13:25:01 +00:00
Alexander Heldt db2cf7a900 pinwheel: Update .ssh/config on build 2026-05-05 12:53:44 +02:00
Alexander Heldt 306eb325e4 pinwheel: Update work-gitconfig with new email 2026-04-23 15:44:47 +02:00
Alexander Heldt 3311a9feb3 Update flake inputs 2026-04-23 15:44:25 +02:00
Alexander Heldt ce6d9715a9 pinwheel: Remove eglot-booster from emacs
As it was outdated and failed UTF-8 encoding
2026-04-14 09:29:46 +02:00
Alexander Heldt d19dcae3b2 manatee: Set correct user on komga-reading-stats secrets 2026-03-22 19:10:46 +01:00
Alexander Heldt 07fe75775e manatee: Fix komga-reading-stats secret permissions 2026-03-22 19:01:49 +01:00
Alexander Heldt 8036a8d74a Update flake inputs 2026-03-22 18:51:59 +01:00
Alexander Heldt c823e379b9 manatee: Add komga-reading-stats 2026-03-22 18:48:51 +01:00
Alexander Heldt b3ae7e4c07 Add input komga-reading-stats 2026-03-22 18:45:30 +01:00
Alexander Heldt adc6e4ed57 manatee: Add secrets for komga-reading-stats 2026-03-22 18:45:05 +01:00
Alexander Heldt fd7fccd9ae pinwheel: Install slack for work 2026-03-22 18:36:07 +01:00
Alexander Heldt d182b515d8 pinwheel: Ignore .direnv in intellij 2026-03-22 18:35:42 +01:00
Alexander Heldt d8b61a42f3 Pin nh version 2026-03-19 13:05:51 +01:00
Alexander Heldt 6b054a238d pinwheel: Replace light with brightnessctl 2026-03-19 11:09:15 +01:00
Alexander Heldt 6e24a4557f Update flake inputs 2026-03-19 11:03:15 +01:00
Alexander Heldt 10feb73843 pinwheel: Add opencode and claude 2026-03-19 11:02:27 +01:00
Alexander Heldt f42612e932 pinwheel: Fix cursor escape codes in tmux 2026-03-19 11:02:27 +01:00
Alexander Heldt 1e771c0d8d pinwheel: Ensure opencode has access to interactive bash 2026-03-19 11:02:27 +01:00
Alexander Heldt e196ce3572 pinwheel: Use GUI key manager for ssh 2026-03-19 11:02:27 +01:00
Alexander Heldt 9e61c6cad3 pinwheel: Assign default workspaces to monitor(s) 2026-03-19 11:02:27 +01:00
Alexander Heldt dee1aa02e6 pinwheel: Batch workspace monitor assignments atomically
Use hyprctl --batch to send all workspace rules and moves in a
single IPC call, avoiding races that caused workspaces to end up
on the wrong monitor.
2026-03-19 11:02:27 +01:00
Alexander Heldt edafaf04de pinwheel: Start Hyprland with uwsm 2026-03-19 11:02:26 +01:00
Alexander Heldt ed401a38d6 pinwheel: Always clean up swayidle after hyprlock exits
Use ; instead of && so pkill swayidle runs regardless of hyprlock's
exit status, preventing leaked swayidle processes from blanking screens.
2026-03-19 11:02:26 +01:00
Alexander Heldt c628c816d8 pinwheel: Pause all players on screen lock
Use playerctl -a to pause all active media players instead of only
targeting spotify.
2026-03-19 11:02:26 +01:00
Alexander Heldt 7d2cf97ea6 pinwheel: Move workspaces to monitor on hotplug
Workspace rules alone only affect future workspace creation. Add
moveworkspacetomonitor dispatches so existing workspaces are moved
to the correct monitor when an external display is connected.
2026-03-19 11:02:26 +01:00
Alexander Heldt ac1c5c372f pinwheel: Replace swaylock with hyprlock
Fixes black internal screen after unlocking with external monitor
disconnected, and occasional Hyprland crashes on lock.
2026-03-19 11:02:26 +01:00
Alexander Heldt 7d6785f27e manatee: Remove calibre-web module 2026-03-07 12:10:30 +00:00
Alexander Heldt f446706a9c manatee: nixfmt 2026-03-07 12:08:01 +00:00
Alexander Heldt 6ea5db6d37 manatee: Add komga-bookmanager service 2026-03-07 12:07:05 +00:00
Alexander Heldt e46b5689a2 Add komga-bookmanager input 2026-03-07 12:05:41 +00:00
Alexander Heldt 8fa60a1b06 Update komga-comictracker input 2026-03-07 12:05:07 +00:00