feat(herdr): bump to v0.7.5, add omp activation hook and collie module #23

Merged
yuris merged 3 commits from feat/herdr-ecosystem into main 2026-08-04 00:38:17 +00:00
Owner

Summary

herdr version bump, omp integration, the new Collie phone web UI module, and a dendritic-pattern fix for how the herdr package is shared.

flake.lock was moved out of this PR into #28 — the bump requires the noctalia and vesktop changes to evaluate, so those three ship atomically.

Changes

pkgs/herdr.nix + docs/maintenance.md

Bump herdr v0.7.3 → v0.7.5. Update the pinned-version note in maintenance docs.

modules/apps/herdr.nix (new) — dendritic fix

Previously modules/system/packages.nix did pkgs.callPackage ../../pkgs/herdr.nix {}, and this PR's first draft added a second identical callPackage in omp.nix — two instantiations of the same derivation, with the relative path hardcoded twice. The dendritic pattern shares values through the top-level config rather than re-deriving per consumer.

This file now owns the herdr feature end to end: it registers a nixpkgs overlay exposing pkgs.herdr and installs it system-wide. home-manager runs with useGlobalPkgs, so hm modules resolve the same instantiation.

pkgs/herdr.nix stays a plain callPackage file outside modules/, so import-tree correctly skips it — the documented exception for callPackage files.

Verified single instantiation:

.#nixosConfigurations.suda.pkgs.herdr
  → /nix/store/mz55hdzglgnbw370k1dfyfjyiqkda2f0-herdr-0.7.5

home-manager activation script for user yuris
  → /nix/store/mz55hdzglgnbw370k1dfyfjyiqkda2f0-herdr-0.7.5/bin/herdr integration install omp

Same store path on both sides.

modules/system/packages.nix

Drop the callPackage line; herdr now comes from its own module.

modules/apps/omp.nix

Register omp's agent-state hook via home.activation.herdrOmpIntegration so herdr surfaces working/blocked/done. Uses the absolute pkgs.herdr store path rather than relying on PATH, which isn't reliably populated during activation. Also restores the _: module-arg head to match repo convention (every other module is _: { or {inputs, ...}: {).

modules/apps/collie.nix (new)

Add Collie — the herdr phone web UI (github.com/AltanS/collie). Implemented as a live git checkout + bun build at runtime rather than a Nix derivation: Collie self-updates via git pull and writes mutable state (~/.config/collie/.env, audit.log), both of which a derivation would fight. Nix owns only the supervision, by absolute bun store-path, so bun never enters the profile.

Verification

nix eval .#nixosConfigurations.suda.config.system.build.toplevel.drvPath
→ /nix/store/hqr24l1rxlh6icrksc3kbhjhm55bd38w-nixos-system-suda-26.11.20260715.753cc8a.drv
## Summary herdr version bump, omp integration, the new Collie phone web UI module, and a dendritic-pattern fix for how the herdr package is shared. > `flake.lock` was moved out of this PR into #28 — the bump requires the noctalia and vesktop changes to evaluate, so those three ship atomically. ## Changes ### `pkgs/herdr.nix` + `docs/maintenance.md` Bump herdr v0.7.3 → v0.7.5. Update the pinned-version note in maintenance docs. ### `modules/apps/herdr.nix` *(new)* — dendritic fix Previously `modules/system/packages.nix` did `pkgs.callPackage ../../pkgs/herdr.nix {}`, and this PR's first draft added a *second* identical `callPackage` in `omp.nix` — two instantiations of the same derivation, with the relative path hardcoded twice. The [dendritic pattern](https://github.com/mightyiam/dendritic) shares values through the top-level config rather than re-deriving per consumer. This file now owns the herdr feature end to end: it registers a nixpkgs overlay exposing `pkgs.herdr` and installs it system-wide. home-manager runs with `useGlobalPkgs`, so hm modules resolve the same instantiation. `pkgs/herdr.nix` stays a plain `callPackage` file outside `modules/`, so `import-tree` correctly skips it — the documented exception for callPackage files. **Verified single instantiation:** ``` .#nixosConfigurations.suda.pkgs.herdr → /nix/store/mz55hdzglgnbw370k1dfyfjyiqkda2f0-herdr-0.7.5 home-manager activation script for user yuris → /nix/store/mz55hdzglgnbw370k1dfyfjyiqkda2f0-herdr-0.7.5/bin/herdr integration install omp ``` Same store path on both sides. ### `modules/system/packages.nix` Drop the `callPackage` line; herdr now comes from its own module. ### `modules/apps/omp.nix` Register omp's agent-state hook via `home.activation.herdrOmpIntegration` so herdr surfaces working/blocked/done. Uses the absolute `pkgs.herdr` store path rather than relying on `PATH`, which isn't reliably populated during activation. Also restores the `_:` module-arg head to match repo convention (every other module is `_: {` or `{inputs, ...}: {`). ### `modules/apps/collie.nix` *(new)* Add Collie — the herdr phone web UI ([github.com/AltanS/collie](https://github.com/AltanS/collie)). Implemented as a live git checkout + `bun build` at runtime rather than a Nix derivation: Collie self-updates via `git pull` and writes mutable state (`~/.config/collie/.env`, `audit.log`), both of which a derivation would fight. Nix owns only the supervision, by absolute bun store-path, so bun never enters the profile. ## Verification ``` nix eval .#nixosConfigurations.suda.config.system.build.toplevel.drvPath → /nix/store/hqr24l1rxlh6icrksc3kbhjhm55bd38w-nixos-system-suda-26.11.20260715.753cc8a.drv ```
- pkgs/herdr.nix: bump v0.7.3 → v0.7.5
- docs/maintenance.md: update pinned version note
- modules/apps/omp.nix: register herdr agent-state hook via home.activation
  so herdr tracks omp working/blocked/done state; re-runs on each switch to
  follow the installed herdr binary
- modules/apps/collie.nix: new module for Collie (herdr phone web UI);
  live git checkout + bun build at runtime, self-updates via git pull;
  kept as mutable checkout rather than derivation since it writes
  ~/.config/collie/.env and audit.log at runtime
- flake.lock: bump nixpkgs and other inputs
Both modules/system/packages.nix and modules/apps/omp.nix were each doing
pkgs.callPackage ../../pkgs/herdr.nix {}, instantiating the derivation twice
and hardcoding the relative path in two places. Per the dendritic pattern,
values are shared through the top-level config rather than re-derived per
consumer.

- modules/apps/herdr.nix (new): owns the herdr feature; registers a nixpkgs
  overlay exposing pkgs.herdr and installs it system-wide. home-manager runs
  with useGlobalPkgs so hm modules see the same instantiation.
- modules/system/packages.nix: drop the callPackage line
- modules/apps/omp.nix: read pkgs.herdr; restore the '_:' module-arg head to
  match repo convention

Move flake.lock out of this branch: the bump requires the noctalia import
removal to evaluate, so those two ship together in their own PR.
yuris merged commit 379582d080 into main 2026-08-04 00:38:17 +00:00
yuris deleted branch feat/herdr-ecosystem 2026-08-04 00:38:18 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
yuris/nixos-config!23
No description provided.