Commit Graph
100 Commits
Author SHA1 Message Date
yukkop fa97bb9d38 fix: db-tool: envcontent 2026-05-01 12:31:44 +00:00
yukkop f4e73e934b fix(db-tool): typo hydate.stdout.log -> hydrate.stdout.log 2026-04-30 23:10:46 +00:00
yukkop df8bce0132 docs(postgres-hooks): document hectic bundle + responsibility split
Add lib/hook/sql/README.md describing bundle layout, apply order, Nix API
(self.lib.hectic.*), shell helper contract, and the steps for adding a new
SQL file. Rewrite db-tool README's hectic section: drop stale
PG_HECTIC_INHERITANCE / HECTIC_INHERITANCE_SQL env vars, add
HECTIC_DOTENV_FILE, document the postgres-init / migrator init / database
hydrate responsibility split.
2026-04-30 22:12:18 +00:00
yukkop 0ec8e910a0 test(postgres-hooks): retarget hectic bundle tests to migrator init + db-tool hydrate
Move postgres-init-hectic-inheritance test (13 cases) to
migrator/init-hectic-bundle since the bundle is now applied by `migrator init`
instead of `postgres-init`. Drop init-migrator-with-inherits since
`--inherits` is now a deprecation warning, not an error. Add db-tool
hydrate-hook test (5 cases) covering --no-hook skip, default apply,
idempotency, and HECTIC_DOTENV_FILE. Augment init-migrator with
hectic.version and hectic.secret table assertions.
2026-04-30 22:12:09 +00:00
yukkop 6ef0d8338a feat: postgres hooks 2026-04-30 21:59:53 +00:00
yukkop c2edda9c20 feat: start impliment postgres hooks 2026-04-30 21:36:22 +00:00
yukkop 5e018c2b1c feat: include hectic-landing to hectic 2026-04-30 19:33:21 +00:00
yukkop 72955d606a feat(db-tool): hectic-inheritance: add hectic.immutable + diff coverage
Add a hectic.immutable parent table. Tables inheriting it get auto-attached
BEFORE INSERT/UPDATE/DELETE/TRUNCATE row+statement triggers that block DML
unless the session sets hectic.migration_mode='on' (intended use: SET LOCAL
inside a migration transaction). Same exemptions as the rest of the bundle
apply (hectic schema, partitions, temp tables, GUC-excluded schemas).

database diff now appends an --- IMMUTABLE TABLE DATA --- section to its
output, with per-table unified row diffs of every table inheriting
hectic.immutable, surfacing drift in 'frozen' reference data alongside schema
drift. Subcommand exits non-zero when either schema or data differs.

Test postgres-init-hectic-inheritance extended to 10 cases covering
immutable triggers, DML blocked outside migration_mode, SET LOCAL allowing
DML inside a transaction, GUC not leaking past COMMIT, and TRUNCATE under
migration_mode.
2026-04-30 16:10:38 +00:00
yukkop 3cf28f2dac feat(db-tool): postgres-init: apply hectic-inheritance by default
Flip PG_HECTIC_INHERITANCE default 0 -> 1. Set PG_HECTIC_INHERITANCE=0 to opt out.
2026-04-30 15:48:33 +00:00
yukkop 1d1c28f7f3 feat(db-tool): hectic-inheritance: bootstrap hectic.created_at / hectic.updated_at inheritance hook
Adds a SQL bundle plus event triggers that enforce `INHERITS (hectic.created_at)`
on every user CREATE TABLE and auto-attach a BEFORE UPDATE row trigger when a
table inherits `hectic.updated_at`. Always-exempt: `hectic`, `information_schema`,
`pg_*`, declarative partitions, temp tables. Per-DB opt-out via the GUC
`hectic.inheritance_extra_excluded_schemas`.

Exposed three ways:
  * `pkgs.hectic.hectic-inheritance` — derivation with the SQL at
    $out/share/hectic/hectic-inheritance.sql
  * `self.lib.hecticInheritance.{sql,path}` — pkgs-free Nix surface
  * `postgres-init` opt-in via `PG_HECTIC_INHERITANCE=1` (HECTIC_INHERITANCE_SQL
    overrides the default)

Test postgres-init-hectic-inheritance covers all six branches: bootstrap,
non-inheriting reject, accepting inheritance, auto updated_at trigger fires,
GUC exclusion, declarative partition exemption.
2026-04-30 15:16:57 +00:00
yukkop 47c7fa9bf8 fix(db-tool): postgres-init: createdb on reuse when target DB missing
Previously when PG_REUSE=1 and PG_VERSION existed but the target database had
never been successfully created (e.g. devshell exited mid-init in a prior run),
postgres-init skipped createdb and the subsequent psql connection failed with
'database "<db>" does not exist'.

Now on reuse path we probe pg_database and create the target DB if missing,
making postgres-init fully idempotent across stale-state recovery.

Adds postgres-init-reuse-missing-db test.
2026-04-30 12:16:09 +00:00
yukkop 3e4ce505c3 feat(db-tool): expose overridable postgresql arg and PG_CONF_FILE env
Wrap db-tool, postgres-init, postgres-cleanup with lib.makeOverridable so
consumers can inject extension-enabled PostgreSQL via .override { postgresql = ...; }.
Add PG_CONF_FILE: when set, replaces script-generated postgresql.conf entirely
(runtime port and unix_socket_directories still appended/overridden).
2026-04-30 12:00:08 +00:00
yukkop 94dd68587b fix(db-tool): postgres-init: always invoke main so sourcing exports vars
Previous basename guard only ran the function when invoked as the
postgres-init binary, but consumer shellHooks source the script to
inherit POSTGRESQL_HOST/PGURL/etc. Sourcing left the function defined
but never called, leaving WIPE_PGURL/PGURL unset and breaking devshell
entry in proxydoe and ruststats.
2026-04-30 11:37:19 +00:00
yukkopandSisyphus e67c2e0c47 fix(package): db-tool: call postgres-init/cleanup binaries instead of local devshell scripts
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-30 10:10:11 +00:00
yukkop 26010eebbf fix(package): db-tool: default PGURL to empty in dispatch to fix pull_staging exit=3 contract 2026-04-30 09:24:58 +00:00
yukkop 977b2cfa95 feat(\db-tool\): introduce unified db-tool package with postgres harness and tests (T0-T8) 2026-04-30 09:06:44 +00:00
yukkop 0db5b0030b Merge branch 'master' of github.com:hectic-lab/util.nix 2026-04-29 09:57:40 +00:00
yukkop d1d463fdbc fix(package): sentinèlla: use dig(1) instead of host(1) which is not in bind.dnsutils 2026-04-27 17:30:01 +00:00
yukkop af04210a69 debug(package): sentinèlla: surface host(1) and SRV-parse failures in watcher 2026-04-27 17:28:01 +00:00
yukkop 63d2df5fcd fix(package): sentinèlla: use ip(8) for local-IP detection (inetutils hostname lacks -I); harden numeric parsing 2026-04-27 17:21:00 +00:00
yukkop 13b55ecf9f feat(package): sentinèlla: switch peer discovery from A records to SRV records 2026-04-27 14:08:23 +00:00
yukkop 62a7f25b8e fix(package): sentinèlla: probe — use socat EXEC pipes to avoid pty CR/LF mangling 2026-04-27 13:34:52 +00:00
yukkop def84b0890 feat: sentinella: some 2026-04-27 12:58:36 +00:00
yukkop e6df3b8456 fix: hectic-lab: email name 2026-04-26 22:22:31 +00:00
yukkop 8f3fa1e06e feat: sentinella: update 2026-04-26 22:22:15 +00:00
yukkop bb8095bea0 feat(hectic-lab): enable sentinèlla watcher service
Enable the p2p watcher alongside the existing probe. Peers are discovered
via DNS name peers.hectic-lab.com. TG credentials are loaded from a SOPS
secret sentinèlla/watcher/environment (to be populated with TG_TOKEN and
TG_CHAT_ID).
2026-04-26 22:04:35 +00:00
yukkop 7bdaf7ffec feat(sentinèlla): p2p topology with DNS peer discovery
- Replace central sentinel with watcher: each node polls peers discovered
  via a single DNS name with multiple A records (e.g. peers.sentinella.com)
- Auto-detect own IPs via hostname -I; SELF env var available as optional
  override for NAT/floating-IP setups
- Fix Basic Auth bug in router.sh: compare tok against AUTH_TOKENS instead
  of unset $USER/$PASS
- Rename sentinel binary to watcher; drop unused shellplot dep
- Add inetutils to watcher runtime deps for hostname -I
- Update NixOS module: replace sentinel options with watcher p2p options
  (peersDns, self, peersPort, peersScheme, pollingIntervalSec)
- Add sentinèlla test suite: probe-status-empty, probe-disk, watcher-state-file
2026-04-26 21:54:07 +00:00
yukkop d6eb724b02 docs: +plan 2026-04-26 14:11:37 +00:00
yukkop cd19fe604a Merge branch 'merge-hectic-lab' 2026-04-26 13:52:17 +00:00
yukkop 4c978d1e88 fix: hectic-lab: something 2026-04-26 13:48:36 +00:00
yukkop 52734effa6 feat: hectic-lab: mail server 2026-04-26 10:33:28 +00:00
yukkop fdf3d97a41 chore: config 2026-04-25 15:18:01 +00:00
yukkop 9da1be0fef zalupa 2026-04-18 20:53:44 +00:00
yukkop df21de498c feat: work on profinity 2026-04-14 08:43:56 +00:00
yukkop a80f39eab6 docs: neuro: router forwarding 2026-03-31 20:09:27 +00:00
yukkop b74fe93e17 feat: bfs: add xray package 2026-03-31 19:59:40 +00:00
yukkop 292cee1e5c chore: bfs: add 3 cert 2026-03-23 19:47:54 +00:00
yukkop 695a9b3bbb some jitsi shit 2026-03-23 19:22:40 +00:00
yukkop 936aab8723 some 2026-03-22 06:55:10 +00:00
yukkop e07e931504 feat: wsl: some things 2026-03-15 10:59:19 +00:00
yukkop 739981cb91 fix: deploy: logs 2026-03-01 09:36:22 +00:00
yukkop fee41074aa feat: migrator: +multifiles migrations 2026-02-28 21:19:29 +00:00
yukkop 356542d059 chore: 2026-02-28 20:25:13 +00:00
yukkop ed961d59c0 feat: merge own wsl config 2026-02-28 01:57:42 +00:00
yukkop 6928fa9969 feat: init hectic-lab merge 2026-02-27 19:57:44 +00:00
yukkop fa31b8ac06 feat: neuro: some 2026-02-27 12:53:51 +00:00
yukkop 594ca4156f fix: some warnings 2026-02-23 18:27:36 +00:00
yukkop 8e242979b6 refactor: derustification 2026-02-20 17:36:20 +00:00
yukkop 60cdb2f97e fix: +fixed nixpkgs 2026-02-20 17:30:36 +00:00
yukkop db86014b28 refactor: update to 25.11 2026-02-20 17:18:38 +00:00
yukkop 9b1118ec00 feat: nixvim + zsh, fix: warnings 2026-02-20 16:41:18 +00:00
yukkop e12e8dcccd apply patch from neuro 2026-02-20 12:51:32 +00:00
yukkop 519f531dd5 feat: +neuro devshell 2026-02-20 12:06:55 +00:00
yukkop 2d289c7f0c refactor: deploy: update logs 2026-02-20 12:04:15 +00:00
yukkop 707305e65d fix: migrator: more accurate check for hectic.migrator isntalled 2026-02-17 16:50:08 +00:00
yukkop fa691cdb05 chore: something about hemar tree sitter 2026-02-17 16:17:47 +00:00
yukkop 91e70b9734 feat: +pol bfs server 2026-02-17 16:13:58 +00:00
yukkop 4be09990d1 fix: nvim-pager close all pages on q 2026-02-17 08:55:41 +00:00
yukkop ae60db5632 hz 2026-02-14 18:35:04 +00:00
yukkop 87fc53c8c0 hz 2026-02-14 15:59:13 +00:00
yukkop cdc4f37c40 feat: migrator: colorize help in migrator.sh 2026-02-06 08:38:36 +00:00
yukkop 31d1aa3820 feat: stong &2 in log.sh 2026-02-05 06:50:54 +00:00
yukkop 2751eec8ea feat(nixos): postgresql: +settings script 2026-01-29 18:56:22 +00:00
yukkop a229f6649e Merge branch 'master' of github.com:hectic-lab/util.nix 2026-01-16 16:16:43 +00:00
yukkop 0f2f57a34f feat(nixos): +zombro hardware 2026-01-16 16:16:13 +00:00
yukkop 4c19f20f0f iso 2026-01-13 15:04:33 +00:00
yukkop 2e1838b82b feat(template): +nodejs 2026-01-04 20:40:43 +00:00
yukkop e5307a51bb feat(nixos): some moves to nixos server 2025-12-28 19:18:15 +00:00
yukkop c923a5f1e9 feat(nixos): +neuro system 2025-12-26 20:04:42 +00:00
yukkop d152170e1e fix(package): migrator: sqlite transactions 2025-12-23 19:31:44 +00:00
yukkop ce9f3c87c6 fix(package): migrator: handle sqlite posible settings 2025-12-23 18:30:26 +00:00
yukkop cc918864fd fix(pakcage): migrator: -z -> +x 2025-12-23 18:18:51 +00:00
yukkop f840c6e062 fix(package): migrator: awk dependency 2025-12-21 13:19:46 +00:00
yukkop d9f997868d feat(pakcage): migrator: add dependency 2025-12-20 01:19:40 +00:00
yukkop caada00fe6 feat(package): migrator: up to latest 2025-12-18 00:45:09 +00:00
yukkop e8d4d7afe4 fix(package): migrator: uncomplite RAISE on sqlite 2025-12-17 03:28:03 +00:00
yukkop 849db431b7 feat(package): migrator: ! sqlite support 2025-12-17 03:24:59 +00:00
yukkop ef2bd26ead feat(package): migrator: mvp 2025-12-16 17:28:36 +00:00
yukkop b763257783 test(hemar): update parser test to match better paths 2025-12-09 14:21:03 +00:00
yukkop 2a824db6b1 fix(package): hemar: paths better handling 2025-12-09 14:13:34 +00:00
yukkop 6102f00de3 test(hemar): many tests but not pass 2025-12-09 13:49:43 +00:00
yukkop aa5cc832df feat(package): hemar: json_escape() 2025-12-09 03:47:27 +00:00
yukkop 2a846d0375 feat(package): hemar: interpolation 2025-12-08 23:47:33 +00:00
yukkop 361714cdba feat(package): accord: some cli things 2025-12-08 01:55:33 +00:00
yukkop 22a05fa8de feat(nixos): bgs: vless 2025-12-07 03:40:07 +00:00
yukkop 4f0e92c5e7 refactor(nixos): bfs: some secrets 2025-12-07 02:25:29 +00:00
yukkop d417e9f6d8 feate(package): accord: init 2025-12-06 23:49:14 +00:00
yukkop 788748433c Merge branch 'master' of github.com:hectic-lab/util.nix 2025-12-06 04:47:46 +00:00
yukkop f1337db536 fix(package): migrator: index_of subshell issue 2025-12-06 04:47:31 +00:00
yukkop 517bab60e1 fix: bfs nixosConfiguration check 2025-12-05 21:01:53 +00:00
yukkop 7aacc14a58 feate(nixos) bfs: matrix, element, bla bla bla 2025-12-05 19:36:53 +00:00
yukkop d3450a334b feat(nixos): bfs: fix: element-rtc 2025-12-05 18:17:41 +00:00
yukkop 567f28d677 feat(nixos): bfs: +matrix, very unsave 2025-12-05 16:30:34 +00:00
yukkop cac1b65498 feat(nixos): netherlands xray 2025-12-05 00:56:08 +00:00
yukkop 6008da3af1 feat(nixos): xray 2025-12-04 21:03:01 +00:00
yukkop 659ede1043 feat(package): migrator: something 2025-12-04 21:02:38 +00:00
yukkop 758c431fb4 feat(package): hemar: more grammar parsing 2025-11-30 13:31:40 +00:00
yukkop ca7f8a14e9 fix(nixos): generic postgresql 2025-11-29 13:48:57 +00:00
yukkop b78feba410 feat(package): hemar: some parser work 2025-11-29 00:30:27 +00:00
yukkop 7976c073e4 feat(package): hemar: add indexes to tree-sitter 2025-11-28 10:29:59 +00:00