374 Commits
Author SHA1 Message Date
m3tam3re 69fce234a8 basecamp: 0.7.2 -> 0.8.0-rc.1, vibetyper: 1.4.0 -> 1.4.1
basecamp: bump flake input to github:basecamp/basecamp-cli/v0.8.0-rc.1.
The rc.1 tag ships a stale nix/package.nix whose vendorHash does not
match the tagged go.sum (buildGoModule FOD fails) and whose `version`
was not bumped (still reads 0.7.2). Override both on the pass-through so
the input builds and reports 0.8.0-rc.1. Drop the override back to a
plain pass-through once upstream fixes package.nix for the 0.8.0 final.

vibetyper: 1.4.0 -> 1.4.1 with refreshed AppImage sha256.
2026-08-02 13:35:26 +02:00
m3tam3re 09d9c1503b n8n: 2.32.6 -> 2.32.7 2026-08-02 13:13:31 +02:00
m3tam3re 1cbde05767 fix(openwork): use renamed com.differentai.openwork.desktop from AppImage
Upstream renamed the desktop file from openwork.desktop to
com.differentai.openwork.desktop (reverse-DNS), causing the build to
fail with "cannot stat '.../openwork.desktop'". Source the new name
while keeping the install destination as openwork.desktop so icon and
Exec substitution stay unchanged.
2026-07-30 09:40:55 +02:00
m3tam3re e3ebb76b1c fix: basecam rollback as new rc version does not have a source hash 2026-07-30 09:19:05 +02:00
m3tam3re f5cfed340b chore: update openwork 2026-07-30 08:10:14 +02:00
m3tam3re 8d9b0cf742 n8n: 2.31.6 → 2.32.6, drop obsolete xlsx lockfile workaround, harden update.sh
n8n 2.32 replaced the sheetjs-CDN xlsx@0.20.2 tarball (which lacked an
integrity checksum and had to be patched into pnpm-lock.yaml) with the
regular npm package @e965/xlsx@0.20.3, which already carries an integrity
field. The patchXlsxLockfile workaround is therefore obsolete and actively
harmful: substituteInPlace --replace-fail no longer matches, making
fetchPnpmDeps fail with a build error (not a hash mismatch), which left the
fake-hash sentinel behind in n8n.nix on update.

- overlays/mods/n8n.nix: remove xlsx workaround; bump to 2.32.6 with real
  src (sha256-wWm6...) and pnpmDeps (sha256-QzUJCF+...) hashes.
- tests/n8n-overlay-test.nix: update expectations to 2.32.6; drop the
  obsolete checkXlsxIntegrityPatch.
- overlays/mods/update.sh: use a literal SRI sentinel instead of lib.fakeHash
  (lib is not in scope inside the {prev}: overlay); add a snapshot-based EXIT
  trap that restores n8n.nix on any failure (error/SIGINT/SIGTERM/killed
  build) while preserving pre-existing working-tree edits; surface a clearer
  message when fetchPnpmDeps fails for a non-hash reason.
2026-07-30 08:09:36 +02:00
m3tam3re ab7f14dac6 chore: flake update 2026-07-30 07:27:42 +02:00
m3tam3re 11fa9b862b chore: update basecamp input 2026-07-30 07:18:37 +02:00
m3tam3re 8d46992bd1 feat: re-add opencode-desktop as pass-through from anomalyco/opencode
Expose the opencode-desktop Electron app as a package via a pure
pass-through from a new 'opencode' flake input
(github:anomalyco/opencode/dev).

The input intentionally does NOT follow nixpkgs: upstream pins a
node_modules fixed-output derivation hash in nix/hashes.json against
its own nixpkgs snapshot, so following would risk FOD hash mismatches.

- flake.nix: add 'opencode' input (own nixpkgs, dev branch)
- pkgs/default.nix: opencode-desktop pass-through
- docs/packages/opencode.md + README.md: refreshed (Electron, not Tauri)
- CHANGELOG: unreleased entry

Verified: nix flake show lists opencode-desktop (all 4 systems);
output opencode-desktop-1.18.9+f720490 builds & wraps electron-41.
2026-07-30 07:01:22 +02:00
m3tam3re d73d377b93 test: update n8n overlay test expectations to 2.31.6
The pinned n8n version moved to 2.31.6 in 30c753f but the test was still
asserting 2.29.8 with the old src/pnpmDeps hashes, so the test broke.
Sync expectedVersion, expectedSrcHash and expectedPnpmHash to the values
currently in overlays/mods/n8n.nix.
2026-07-26 12:10:40 +02:00
m3tam3re 500207f18a fix: remove broken eigent reference
The eigent package directory was deleted in 96f5d7f (which was titled
"chore: update n8n, openwork, vibetyper") but the callPackage reference
in pkgs/default.nix and the row in docs/packages/README.md were left
behind. As a result `nix build .#eigent` and `nix flake check` failed
with "undefined variable" errors when the eigent attribute was forced.

Drop both references so the package set evaluates cleanly.
2026-07-26 12:10:40 +02:00
m3tam3re 5477cfc71b feat: add automatic n8n overlay updates
- overlays/mods/n8n.nix: add passthru.updateScript pointing to ./update.sh
- overlays/mods/update.sh: self-contained updater that fetches the latest
  stable n8n-io/n8n release, recomputes both src and pnpmDeps hashes
  (src via nix-prefetch-url with --name workaround for the `@` in the tag,
  pnpmDeps via the lib.fakeHash mismatch trick)
- .gitea/workflows/nix-update.yml: discover and run overlays/mods/*/update.sh
  after the pkgs/ loop; verify step skips overlay/* entries (covered by flake check)

The test suite (tests/n8n-overlay-test.nix) forbids exporting a local n8n
package, so the overlay cannot be exposed via pkgs/n8n/ — the workflow gets
an explicit overlay-discovery block instead.
2026-07-26 12:09:22 +02:00
m3tam3re 20feae2098 feat: add automatic updates for vibetyper, msty-studio, zellij-ps
- vibetyper/msty-studio: unversioned AppImage URLs → HEAD/Last-Modified
  check via custom update.sh, refreshes sha256 when upstream binary changes
- zellij-ps: switch to branch-tracking (master tip via Gitea API) since
  helper-scripts repo has no tags
- all three expose passthru.updateScript so the existing CI workflow
  discovers them via is_custom_update_script
2026-07-26 12:09:22 +02:00
m3tam3re 8ac7ef346b zellij-ps: update helper-scripts to d30382d869 2026-07-26 10:13:50 +02:00
m3tam3re 30c753f4ca chore: updates 2026-07-25 11:44:00 +02:00
m3tam3re d932db10c4 chore: some updates 2026-07-16 17:05:41 +02:00
m3tam3re 01bede8826 fix: add n8n xlsx lockfile integrity workaround 2026-07-10 13:22:27 +02:00
m3tam3re 5dc91eeebb fix: update n8n overlay to 2.29.8 2026-07-10 12:42:04 +02:00
m3tam3re f279ae9c89 fix: n8n overlay 2026-07-05 18:41:05 +02:00
m3tam3re 94af31806a Merge pull request 'refactor: split n8n overlay override' (#26) from feat/n8n-overlay-override into master
Reviewed-on: #26
2026-07-04 09:32:57 +02:00
m3tam3re eedac010ca refactor: split n8n overlay override 2026-07-04 09:30:16 +02:00
m3tam3re c767d792af Merge pull request 'refactor: replace n8n package with overlay override' (#25) from feat/n8n-overlay-override into master
Reviewed-on: #25
2026-07-04 09:22:11 +02:00
m3tam3re 670c6e54d7 refactor: replace n8n package with overlay override 2026-07-04 09:16:30 +02:00
m3tam3re 399cec6283 chore: n8n update 2026-07-03 12:54:10 +02:00
m3tam3re fc5092d72d Merge pull request 'feat(talk): read API key from agenix file' (#24) from feat/talk-agenix-key into master
Reviewed-on: #24
2026-07-02 20:15:29 +02:00
m3ta-chiron e7765ee39f feat(talk): read API key from agenix file instead of env var
Primary: /run/agenix/elevenlabs-key (read via 'read -r' which strips
the trailing newline agenix files contain).
Fallback: ELEVENLABS_API_KEY env var (backwards compatible).

No need to export the key in shell environment anymore — if the
agenix secret exists, talk picks it up automatically.

Override path via ELEVENLABS_KEY_FILE env var if needed.
2026-07-02 20:14:45 +02:00
m3tam3re 3d6b3160b2 Merge pull request 'docs: add README for talk and crunch packages' (#23) from docs/talk-crunch-readmes into master
Reviewed-on: #23
2026-07-02 20:09:40 +02:00
m3ta-chiron 75b88553c6 docs: add README for talk and crunch packages
Each README covers usage, environment variables, integration patterns,
NixOS installation, and how-it-works diagrams.
2026-07-02 20:00:58 +02:00
m3tam3re 0341a1348e Merge pull request 'feat(crunch): add script mode for custom pipeline jobs' (#22) from feat/crunch-script-mode into master
Reviewed-on: #22
2026-07-02 19:56:48 +02:00
m3ta-chiron 8b3d762bc9 feat(crunch): add script mode for custom pipeline jobs
crunch script <type> <time> <script.sh> [args...]

Runs any shell script on schedule. Script stdout is piped to talk
for voice output. Empty stdout = silence (no error thrown).

Enables complex multi-step pipelines:
  - Fetch data (basecamp, gh, curl)
  - Write reports to disk
  - Pipe through pi/opencode for AI summarization
  - Final stdout → talk voice notification

Example:
  crunch script daily '08:00' ~/scripts/basecamp-daily.sh
2026-07-02 19:55:31 +02:00
m3tam3re 9e96e92cfe Merge pull request 'fix(talk): cancel button now stops audio playback' (#21) from fix/talk-cancel-button into master
Reviewed-on: #21
2026-07-02 19:44:48 +02:00
m3ta-chiron c94ff86c12 fix(talk): cancel button now stops audio playback
The shell '>' redirect creates ACTION_FILE immediately as an empty file.
The poll loop checked [ -f ] (exists) instead of [ -s ] (non-empty),
so it matched on the first 0.2s iteration, found no 'cancel' string,
and broke out of the loop — leaving mpv running with no listener.

[ -s ] only returns true once notify-send writes 'cancel' to the file
(i.e. when the user actually clicks the Abbrechen action).
2026-07-02 19:43:53 +02:00
m3tam3re 02911c40ca Merge pull request 'feat(crunch): voice-notified reminders and AI crunch jobs' (#20) from feat/crunch-package into master
Reviewed-on: #20
2026-07-02 19:39:39 +02:00
m3ta-chiron 8c9ed72857 feat(crunch): voice-notified reminders and AI crunch jobs via systemd timers
crunch schedules transient systemd --user timers that fire talk (TTS)
or AI agents (pi/opencode) → talk at specified times.

Commands:
  crunch at <time> <message>           One-shot
  crunch in <duration> <message>       One-shot after delay
  crunch daily <time> <message>        Recurring daily
  crunch weekly <day> <time> <message> Recurring weekly
  crunch ai <engine> <type> <time> <prompt>  AI crunch
  crunch list                          List jobs
  crunch cancel <name>                 Cancel job
  crunch purge                         Clean fired jobs

Supports German and English day names (Montag→Mon, etc).
2026-07-02 19:36:24 +02:00
m3tam3re f471f908ba Merge pull request 'talk: chiron.jpeg notification icon' (#19) from feat/talk-chiron-icon into master
Reviewed-on: #19
2026-07-02 19:26:03 +02:00
m3ta-chiron 09098d902b talk: use chiron.jpeg as notification icon
Replace generic audio-x-generic icon with chiron.jpeg fetched from S3
into the nix store at build time.
2026-07-02 19:25:36 +02:00
m3tam3re 0306624074 Merge pull request 'feat(talk): ElevenLabs TTS voice notification package' (#18) from feat/talk-package into master
Reviewed-on: #18
2026-07-02 19:11:23 +02:00
m3ta-chiron fa2f3dfbc6 feat(talk): support stdin piping
Argument has priority, otherwise read from stdin when piped.
Enables: echo 'Build fertig' | talk
         nixos-rebuild build 2>&1 | tail -3 | talk
2026-07-02 19:09:52 +02:00
m3tam3re 0aa34ae368 Merge pull request 'feat(talk): ElevenLabs TTS voice notification package' (#17) from feat/talk-package into master
Reviewed-on: #17
2026-07-02 18:53:06 +02:00
m3ta-chiron b7ba13db9b feat(talk): add ElevenLabs TTS voice notification package
- writeShellScriptBin with mpv audio + notify-send cancel button
- Simultaneous audio playback and notification popup
- VOICE_NOTIFY=0 toggle for disabling
- Uses eleven_multilingual_v2 model with configurable voice ID
- Cruncher job wrapper for task completion notifications
2026-07-02 18:51:31 +02:00
m3ta-chiron abd910d667 chore: update n8n + vibetyper 2026-07-01 18:51:40 +02:00
Sascha König e695a8c636 chore: update agent sources 2026-06-30 08:17:29 +02:00
m3tam3re d42a6f57f5 chore: some updates 2026-06-27 08:28:12 +02:00
m3tam3re f0c028a62c chore n8n update 2026-06-25 07:09:59 +02:00
m3tam3re b50dcf843b fix: vibetyper window rules 2026-06-20 10:56:01 +02:00
m3tam3re 96f5d7f378 chore: update n8n, openwork, vibetyper 2026-06-19 14:32:38 +02:00
m3ta-chiron 5aa54c6e34 chore: vibetyper update 2026-06-16 19:26:47 +02:00
Sascha König 050c273c65 openwork: init at 0.16.4 2026-06-15 07:11:19 +02:00
Sascha König aa0108936c kestractl: 1.4.0 -> 1.15.0 2026-06-15 07:00:23 +02:00
Sascha König 2017d27733 openshell: 0.0.23 -> 0.0.62 2026-06-15 07:00:07 +02:00