Compare commits

..

389 Commits

Author SHA1 Message Date
yukkop a8da44d438 feat: lab: generic functions for mail 2026-05-31 21:29:11 +00:00
yukkop 6dded5584e fix?: hetzner-cloud: newer generation 2026-05-31 11:26:26 +00:00
yukkop 7d0b335626 fix?: matrix-cluster-users 2026-05-31 11:09:52 +00:00
yukkop 5a069130f7 fix: matrix-cluster-users 2026-05-31 11:04:56 +00:00
yukkop 7d0c0370ed fix: hardware: some 2026-05-31 10:58:25 +00:00
yukkop 35de436105 fix: lab: gitea 2026-05-31 10:56:58 +00:00
yukkop 4099f2f27e fix: gitea: now works 2026-05-29 21:27:53 +00:00
snuff 4c7533a3df fix(gitea)?: syntax 2026-05-29 20:38:16 +03:00
snuff a9fadc65d0 fix(gitea)?: postgres socket peer auth for gitea 2026-05-29 20:17:08 +03:00
snuff 7817c65b9e fix?: +gitea v3 2026-05-29 20:07:27 +03:00
snuff 258f95cddc fix?: +gitea v2 2026-05-29 18:43:31 +03:00
snuff 0c45b64f1c fix?: +gitea 2026-05-29 18:37:02 +03:00
snuff 0835cf9b30 feat?: +gitea 2026-05-29 18:29:47 +03:00
yukkop 5813481d86 feat: matrix-cluster: hz 2026-05-27 19:04:56 +00:00
yukkop a53ad7780b Merge branch 'master' of github.com:hectic-lab/util.nix 2026-05-27 18:51:33 +00:00
yukkop 2acfddb03b fix!: matrix-cluster: +jitsy 2026-05-27 18:51:18 +00:00
yukkop cefef5c6a4 fix: mechabellum: api 2026-05-27 18:48:29 +00:00
yukkop e16f6add77 feat: matrix-cluster: shared users 2026-05-27 12:54:15 +00:00
yukkop 47167d09d2 feat: matrix-cluster: shared users 2026-05-27 12:41:51 +00:00
yukkop dbea099675 fix: matrix 2026-05-25 23:12:05 +00:00
yukkop a72cf624aa feat: matrix prepare move to poland 2026-05-25 07:48:16 +00:00
yukkop 8fb937d77c feat: matrix: diferent servers one home server 2026-05-25 07:11:43 +00:00
yukkop 9b8428c8ce fix: some recomendations 2026-05-24 15:08:40 +00:00
yukkop abbbcc4ba8 fix: element 2026-05-24 14:54:01 +00:00
yukkop e2448eab8d fix: element 2026-05-23 23:11:58 +00:00
yukkop 72319bdf69 some 2026-05-23 22:57:09 +00:00
yukkop 007d3a71fe fix: hectic-lab: mechabellum 2026-05-23 20:53:30 +00:00
yukkop 88a937beee feat: hectic-lab: mechabellum for lismy 2026-05-23 19:40:36 +00:00
yukkop eab1ba5064 chore: devide xrays systems 2026-05-23 18:27:02 +00:00
yukkop 9f03d1a804 chore: hectic-lab: +vismajor in matrix 2026-05-23 18:17:27 +00:00
yukkop e0a17460d9 fix 2026-05-23 17:13:49 +00:00
yukkop 95e8e041a9 chore: hecitc-lab: +lvgkcfjl email to hectic-lab 2026-05-23 14:11:27 +00:00
yukkop d2bdcb3667 fix: media-browser: view button 2026-05-23 12:18:05 +00:00
yukkop 56f369cf61 fix: media-browser: synced files 2026-05-23 12:03:56 +00:00
yukkop e4b0b3d96e feat: media-browser: preview for local files 2026-05-23 11:56:04 +00:00
yukkop 3de60e9701 feat: media-browser for matrix 2026-05-23 11:46:58 +00:00
yukkop e2720b7d5b fix: matrix: s3 sync 2026-05-23 11:22:49 +00:00
yukkop 919190e7b4 feat: matrix: s3 object storage 2026-05-23 09:59:34 +00:00
yukkop 990e184ae3 fix?: support bot 2026-05-23 08:50:10 +00:00
yukkop 16178ede49 chore: hecitc-lab: add lvgkcfjl to matrix 2026-05-23 08:49:51 +00:00
yukkop 5eb5f5985d feat: hectic-lab: matrix 100mb max file 2026-05-23 06:47:34 +00:00
yukkop 559bcddcdc feat: hectic-lab: users for matrix 2026-05-22 21:19:52 +00:00
yukkop af0fb1055c feat: module: ~matrix 2026-05-22 20:13:47 +00:00
yukkop 87aff4e447 feat: +package merge-archive 2026-05-22 07:45:47 +00:00
yukkop 2cabde19fe feat: deploy: 1 no tty option 2026-05-05 20:19:52 +00:00
yukkop 1701a07649 feat: lab: +models 2026-05-04 10:19:38 +00:00
yukkop a04e8f0849 feat: lab: configure olama models 2026-05-04 05:41:25 +00:00
yukkop 3c579f5a2f Merge branch 'master' of github.com:hectic-lab/util.nix 2026-05-03 22:07:13 +00:00
yukkop 11fd897a25 feat: lab: configure olama 2026-05-03 22:06:57 +00:00
yukkop 36052b9602 fix: db-tool: NO_TTY 2026-05-03 15:35:22 +00:00
yukkop 1dd2d5bb98 fix: posix-helpers 2026-05-03 05:23:23 +00:00
yukkop fa510a08cb fix(db-tool): prevent fd leak from logger to long-running daemons
The hectic logger opens fd 3 as a dup of stderr. Child processes inherit
this fd, and daemonized PostgreSQL/PostgREST keeping it open prevents the
terminal from returning to the prompt after the spawning script exits.

- Add with_closed_fds helper that runs commands in a subshell with fds
  3-9 redirected to /dev/null
- Inline the helper into both database and postgres-init builds
- Wrap pg_ctl start and postgrest with the helper
2026-05-03 03:14:15 +00:00
yukkop 9d2d6c15c9 feat: windows-devshell 2026-05-02 15:31:26 +00:00
yukkop f9903206af fix: linux-devshell for ubuntu 2026-05-01 23:11:23 +00:00
yukkop 47c43e0d9d fix: linux-devshell from root 2026-05-01 22:56:03 +00:00
yukkop 7c12d2dfeb chore: fix nixpkgs 25.05 deprecation warnings 2026-05-01 22:26:29 +00:00
yukkop ff608e56c5 test: fix: . 2026-05-01 22:19:43 +00:00
yukkop 5fd0dec6fe fix: wsl system 2026-05-01 21:57:41 +00:00
yukkop 88c8c8d44f test: arch 2026-05-01 21:40:54 +00:00
yukkop 7c0a25eb15 test: linux-devshell 2026-05-01 21:13:15 +00:00
yukkop 433d8283fb feat: linux-devshell: init 2026-05-01 20:39:38 +00:00
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
yukkop 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
snuff 208521bb34 feat?(neuro): create aeronautics minecraft server 2026-04-28 14:04:14 +03: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
snuff 91c856efee chore: removed excess variables 2026-01-13 18:13:52 +03: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
snuff 5f122aaf6c fix: matrix works with self-hosted element 2025-12-06 00:36:01 +03: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
yukkop 260489fcdd feat(package): hemar: add tree sitter hightlights 2025-11-27 19:45:12 +00:00
yukkop 0213f98515 fix(package): hemar: treesitter language name 2025-11-27 19:15:35 +00:00
yukkop 75bb993d0a fix(package): hemar: treesitter language name 2025-11-27 19:13:07 +00:00
yukkop eccfbda649 feat(package): hemar: tree sitter grammar 2025-11-27 17:53:49 +00:00
yukkop 8a14cef524 feat(package): hemar: antlr grammar, but still does not work 2025-11-26 14:48:51 +00:00
yukkop 35b52733ab feat(package): hemar: I think I was wrong 2025-11-25 15:45:02 +00:00
yukkop 68d850655c feat(package): hemar: some stages of parsing 2025-11-25 13:19:45 +00:00
yukkop 0205b9782c feat(package): hemar: conected to nix config 2025-11-24 14:33:45 +00:00
yukkop 278a8386d7 fix(package): migrator: init migration 2025-11-22 11:50:42 +00:00
yukkop 8ac20396e1 feat(package): migrator: some migrate up works and init 2025-11-17 16:26:25 +00:00
yukkop 1c8e233109 test: fix: migrator: multifile test 2025-11-17 01:57:32 +00:00
yukkop 7211b7b590 feat(legacy): helpers: allow HECTIC_NAMESPACE be empty 2025-11-16 16:56:26 +00:00
yukkop b72e240a83 feat(legacy): helpers: update log, unefficient but works 2025-11-16 16:38:38 +00:00
yukkop dd943267f0 refactor: remove nix warnings 2025-11-14 21:13:32 +00:00
yukkop 36bcfa788e feat(package): nbt2json: pack into nix 2025-11-14 21:12:41 +00:00
yukkop 90067ebc04 fix(template): correct hectic utils input 2025-11-14 15:53:12 +00:00
yukkop 1ff27bd96c feat(package): voronoi: simple voronoi algoritm realization 2025-11-14 15:51:28 +00:00
yukkop e162de4471 feat(package): migrator: ! migration up 2025-11-14 15:50:55 +00:00
yukkop 6ca49bbdd1 feat(package): migrator: init migration table 2025-11-04 13:21:15 +00:00
yukkop 0156ad64e0 feat(package): migrator: create new migration 2025-11-04 12:15:29 +00:00
yukkop f363a91138 refactor(package): pull out all realization from default.nix 2025-11-03 20:08:20 +00:00
yukkop 4558ba4755 fix(package): in default.nix migratior -> migrator 2025-11-03 19:15:57 +00:00
yukkop 464c56e672 feat: +checks flake output 2025-11-03 19:02:50 +00:00
yukkop 4e2ca9cd1e feat(package): +migrator 2025-11-03 18:55:35 +00:00
yukkop ff95cb447a feat(legacy): +writeDash +helpers 2025-11-03 18:51:38 +00:00
yukkop 4ec1f7dc98 fix(nixos): hardwares 2025-10-30 09:38:58 +00:00
yukkop e00c2663e5 feat(nixos): cloudzy hardware 2025-10-28 16:16:01 +00:00
yukkop c3f1d34767 feat(template): +avarage 2025-10-28 11:41:26 +00:00
yukkop df138a3f22 feat(package): sentinella: sqlschema 2025-10-28 11:37:22 +00:00
yukkop f2a5152924 refactor(package): sentinella: +logging 2025-10-25 09:54:57 +00:00
yukkop e1c9c503c0 fix(nixos): module: wrong separator 2025-10-25 07:21:07 +00:00
yukkop d56b33e114 feat(package): sentinel: some changes 2025-10-25 06:48:48 +00:00
yukkop 5e2a2542e2 feat(package): deploy: rollback 2025-10-23 14:48:10 +00:00
yukkop 84f00a17fd refactor(nixos): modules: hetzner network config 2025-10-23 11:49:34 +00:00
yukkop 819d4df645 some fixes 2025-10-23 11:28:56 +00:00
yukkop 8879352a3a feat(package): +deploy 2025-10-23 10:22:48 +00:00
yukkop aa162d3f2a refactor(nixos): modules: hetzner hardware 2025-10-22 09:32:41 +00:00
yukkop a9de125131 feat(nixos): modules: +network configuration to hetzner hardware 2025-10-22 08:20:27 +00:00
yukkop 6c6b365c2b ruined every thing again 2025-10-21 17:27:09 +00:00
yukkop 4d85b5671e ruined every thing 2025-10-20 17:17:08 +00:00
yukkop 5b860d849c feat(package): sentinèlla: sentinel: loging 2025-10-19 15:16:38 +00:00
yukkop 908bc96aeb feat(nixos): lenovo hardware 2025-10-16 12:22:19 +00:00
yukkop 5d85a6ddd3 fix: lib systems 2025-10-16 09:52:49 +00:00
yukkop a531c3b581 fix(nixos): senttinèlla-probe: module args 2025-10-12 08:59:03 +00:00
yukkop f55dde1b65 fix: writers & overlays 2025-10-11 14:56:25 +00:00
yukkop a153298a2e refactor: legacyPackages 2025-10-10 13:13:03 +00:00
yukkop 1d0ed49431 feat(package): onlinepubs: init 2025-10-08 15:58:35 +00:00
yukkop 66045e61cc fix(package): `sentinèlla one more unset error 2025-10-07 10:55:37 +00:00
yukkop bb56405dbf fix(package): `sentinèlla unset error 2025-10-07 04:02:49 +00:00
yukkop 579d4546ca fix(package): sentinèlla: base64 logic 2025-10-03 19:02:33 +00:00
yukkop facf3cf0a2 feat(package): sentinèlla: add auth 2025-10-03 02:30:24 +00:00
yukkop 329f9e9877 feat(package): hemar: continios work 2025-10-01 11:09:09 +00:00
yukkop befdb1c9e4 refactor: hemar reboot 2025-09-28 04:44:46 +00:00
yukkop d20d34d829 feat: appropriate sops dream wrapper 2025-09-12 17:17:29 +00:00
yukkop bf7fb382aa fix 2025-09-02 10:33:04 +00:00
yukkop b80dd6d781 fix: stupid error 2025-08-31 16:01:00 +00:00
yukkop aa9f8f6b5b refactor(nixos): module: hectic services config path 2025-08-28 18:17:18 +00:00
yukkop 7896589fac feat(nixos): module: +support-bot 2025-08-28 15:02:58 +00:00
yukkop a777d186ea feat(package): shellplot: created 2025-08-23 16:37:08 +00:00
yukkop 13c783bcd2 feat(package): server-health: created 2025-08-23 15:16:15 +00:00
yukkop d24df7ad21 feat: add templates 2025-08-05 04:41:27 +00:00
yukkop a7fbd59144 fix(package): nix-derivation-hash: purify 2025-07-24 19:33:51 +00:00
yukkop 6433dfccff feat(package): nix-derivation-hash 2025-07-23 20:15:53 +00:00
yukkop 46763ff6da feat(lib): shell: local-dir 2025-07-22 21:15:42 +00:00
yukkop 0f279508f5 feat: service.postgresql module extension 2025-07-22 02:11:32 +00:00
yukkop 02a5b42ef2 fix(lib): shell: remove unneccessary ''$ 2025-07-18 03:23:25 +00:00
yukkop 04cdb31c25 fix(nixos): module: user 2025-07-17 16:53:48 +00:00
yukkop 52930f2bd6 feat(lib): shell: +check-tool 2025-07-17 16:22:31 +00:00
yukkop f32ff17cea fix(lib): logs: mkdir error work around 2025-07-17 16:17:43 +00:00
yukkop b9ba47174b feat(nixos): module: +user.yukkop 2025-07-17 16:10:04 +00:00
yukkop d0a45d313f refactor: consistence 2025-07-17 16:00:59 +00:00
yukkop b2e5bb7f60 refactor: pull out flake devshells 2025-07-17 15:48:20 +00:00
yukkop f2e7f57c5d refactor: pull out flake packages 2025-07-17 15:28:29 +00:00
yukkop 6d7217e8f9 refactor: pull out systems 2025-07-17 15:21:06 +00:00
yukkop f9d37f0bdd feat: modules 2025-07-17 13:37:33 +00:00
yukkop 79e7c489bf feat: shell modules 2025-07-16 06:36:27 +00:00
yukkop 87168a0e1f feat: +some python packages 2025-07-06 22:12:14 +00:00
yukkop 4f33d0d937 feat: remove vmw_pvscsi on aarch64-linux 2025-07-05 23:24:58 +00:00
yukkop 54cc7fa9f6 feat(package): slpt: jq dependency 2025-07-03 01:21:44 +00:00
yukkop d1ee6a6fe7 feat(package): update slpt 2025-07-02 16:08:30 +00:00
yukkop c10a12cdf8 feat(package) add slpt 2025-07-01 02:26:34 +00:00
yukkop 3aaf40a0da fix(package): bolt-unpack update nodejs_22 2025-06-30 23:48:14 +00:00
yukkop ff511679c8 Merge branch 'master' of github.com:hectic-lab/util.nix 2025-06-30 21:00:04 +00:00
yukkop c814cf72c7 refactor: move to nixpkgs 25.05 2025-06-30 20:43:38 +00:00
yukkop 24946e4800 fix: plsh 2025-06-30 16:31:04 +00:00
yukkop 234740ad03 fix: remove broken haskell 2025-06-30 16:24:56 +00:00
yukkop b1892f6280 feat: plsh 2025-06-30 16:06:43 +00:00
yukkop 6b5055d5cf feat: aliases to system preset 2025-06-11 22:38:54 +00:00
yukkop 276a5f2a80 chore: pager AnsiEsc 2025-06-11 22:25:34 +00:00
yukkop 54fc4408f5 feat: find a way separate pg extension from overlay 2025-05-22 11:57:09 +00:00
yukkop cf4327b3db done 2025-05-21 20:00:02 +00:00
yukkop 65884480f4 checkpoint 2025-05-21 19:50:47 +00:00
yukkop b8ef79df33 test: hemar: fix parse tests according code cahnges 2025-05-19 14:36:37 +00:00
yukkop 2ab1f4645b fix: hemar: EBUCHIE WHITESPACЫ 2025-05-19 13:59:26 +00:00
yukkop bec7864618 fix: hemar: section whitespaces checkpoint 2025-05-19 11:07:10 +00:00
yukkop e534edd448 fix: hemar: include object does not exists 2025-05-18 20:18:54 +00:00
yukkop 1a2af49a6d test: hemar: test all at once 2025-05-18 19:58:04 +00:00
yukkop 440b2d9663 feat: hemar: included tag 2025-05-18 18:51:21 +00:00
yukkop 3d69cf24b1 fix: hemar: section implimentation 2025-05-18 13:20:57 +00:00
yukkop 8d339555ca feat: hemar: section checkpoint 2025-05-18 10:27:38 +00:00
yukkop d8d7b707f1 fix: hemar: jsonb_value_by_path string copy 2025-05-17 17:59:10 +00:00
yukkop b613c42e9b chore: hemar: more logs for god of logs 2025-05-17 15:56:46 +00:00
yukkop 92f8752977 feat: hemar: separate jsonb_get_by_path form postgresql 2025-05-17 14:30:18 +00:00
yukkop 515019c053 chore: forgoten changes 2025-05-17 14:13:11 +00:00
yukkop c4c44b5064 test: exec 2025-05-17 13:39:40 +00:00
yukkop 2709bd6da8 test: hemar: more tests for god of tests 2025-05-16 01:18:01 +00:00
yukkop bcb3b7f680 feat: hemar: exec handle the {{ }} inside 2025-05-16 00:37:30 +00:00
yukkop 05a52d9a63 fix: hemar: parser 2025-05-16 00:30:11 +00:00
yukkop d64a850809 test: hemar: puh 2025-05-15 23:57:18 +00:00
yukkop e4acdba080 test: hemar: +20 tests for parsing 2025-05-15 18:54:56 +00:00
yukkop d6b824d034 test: hemar: +10 complex tests 2025-05-15 17:53:45 +00:00
yukkop e82793f82c feat: find element in jsonb by path is works!!! 2025-05-15 17:48:28 +00:00
yukkop e8b17bc04c feat!: vpizdu 2025-05-15 15:33:53 +00:00
yukkop e5173818be feat: hemar: handling [] in path 2025-05-14 21:52:01 +00:00
yukkop 896c20b8fd feat: something 2025-05-14 21:30:16 +00:00
yukkop 9c700bbf55 feat: array with objects 2025-05-14 18:56:42 +00:00
yukkop 52d0a93e60 fix: more parsing errors handling, section body fix 2025-05-14 14:09:48 +00:00
yukkop 43a412df9f feat!: to the moon 2025-05-14 12:15:45 +00:00
yukkop e0d101fd06 feat!: one more checkpoint 2025-05-13 21:56:27 +00:00
yukkop d52bec5025 feat!: better? 2025-05-13 21:41:37 +00:00
yukkop c9c982036f feat!: some section parse issue 2025-05-13 15:44:55 +00:00
yukkop d1c27f0540 refactor: gemar grand rework 2025-05-13 12:12:57 +00:00
yukkop 9e93f0b26a fix: hemar & hectic: nothing 2025-05-13 02:30:15 +00:00
yukkop 76dd4f26c3 fix: hemar: unbeliveble, without memmory error? not true 2025-05-13 01:15:43 +00:00
yukkop b46fdb6ad9 feat!: many work useles with hemar 2025-05-10 11:00:36 +00:00
yukkop b766f0d07a fix: hectic C: template parse sections 2025-05-04 19:33:52 +00:00
yukkop 5c4572d421 fix: hectic C: template parse 2025-05-04 13:49:29 +00:00
yukkop 5411b5605c refactor: hemar: logs 2025-04-24 00:37:03 +00:00
yukkop c2dbf72f14 feat: hel -> hemar--amend 2025-04-23 12:47:28 +00:00
yukkop e35d2fad05 feat: static page for fun 2025-04-23 12:37:32 +00:00
yukkop 63622960f9 feat hectic C: logger log in file 2025-04-23 01:04:49 +00:00
yukkop fef42c6e53 feat hectic C: no asan option 2025-04-22 15:09:47 +00:00
zerosummed 2d75500f15 feat(package): +support-bot 2025-04-22 10:00:33 +03:00
yukkop 214109854e feat: wrapper for pg_dump 2025-04-22 01:13:23 +00:00
yukkop ad6d25ea6e feat: wrapper for pg_dumpall 2025-04-22 00:44:52 +00:00
yukkop 8d3039c8e8 refactor: hectic C: static-asan 2025-04-20 13:38:16 +00:00
yukkop bfbcf5893d refactor: hectic C: perfavor 2025-04-20 13:32:22 +00:00
yukkop 2bd2e17053 refactor: hectic C: libhectic.so -> hectic.so 2025-04-20 09:57:32 +00:00
yukkop be71d59270 fix: hel: anus linking 2025-04-20 00:33:34 +00:00
yukkop 3d071e9a0c build: hectic C: shared library in build 2025-04-19 23:44:39 +00:00
yukkop aa506a5036 fix: hectic: lib building 2025-04-19 23:23:09 +00:00
yukkop a603d269d8 fix: hel: Makefile LIBS 2025-04-19 23:10:13 +00:00
yukkop 67d9c8fd44 feat: hel: c89... 2025-04-19 23:04:29 +00:00
yukkop 14f3804a54 feat: hel: "" -> <> 2025-04-19 22:38:58 +00:00
yukkop d58994db6e feat: hecitc C: add hectic-config 2025-04-19 22:05:56 +00:00
yukkop 951786c882 feat: hel: render without execute 2025-04-19 20:30:00 +00:00
yukkop 1bc487328d fix: overlay postgres extensions 2025-04-19 02:39:10 +00:00
zerosummed 02a09446c7 fix?(package): postgreact: ~stir the stupid shit till it works [3] 2025-04-18 21:37:23 +03:00
zerosummed b7ec06096f fix?(package): postgreact: ~stir the stupid shit till it works [2] 2025-04-17 07:06:34 +03:00
zerosummed 3fdb01d7bd fix?(package): postgreact: ~stir the stupid shit till it works [1] 2025-04-17 07:06:31 +03:00
zerosummed 067082f24a fix?(package): postgreact 2025-04-17 06:22:21 +03:00
zerosummed 8f5c89f6ce style: ~apply alejandra 2025-04-17 03:57:54 +03:00
zerosummed 6dc09c55f0 refactor: postgreact: ~file modes, control file 2025-04-17 03:46:53 +03:00
yukkop 2420e0b6d7 feat: postgreact: hello world 2025-04-15 20:05:53 +00:00
yukkop de2a06334b Merge branch 'master' of github.com:hectic-lab/util.nix 2025-04-15 17:04:12 +00:00
yukkop 151f8c1209 test: hectic C!: templater sectin 2025-04-15 17:03:15 +00:00
yukkop abbc480a61 test: hectic C: templater interpolation 2025-04-15 16:33:49 +00:00
yukkop e2882aac03 feat: hectic C: prettify debug strings 2025-04-15 15:53:39 +00:00
yukkop 87730d5023 feat: +plhaskell package 2025-04-15 05:51:37 +00:00
yukkop 42284eaa3d feat: hectic C: some sigfault 2025-04-15 04:54:31 +00:00
yukkop 9688160a8d feat: hectic C: debug to json parser 2025-04-14 19:43:57 +00:00
yukkop 78d17b72ab fix: hectic C: union debug string constructor 2025-04-14 17:27:32 +00:00
yukkop 318aee6381 feat: hectic C: union in debug string constructor 2025-04-14 16:28:16 +00:00
yukkop 58f68a2aee fix: hectic C: impruve cycle detection for debug strig constructor 2025-04-13 23:13:28 +00:00
yukkop a2f7886f8e refactor: hectic C: logger rules and results 2025-04-13 19:38:11 +00:00
yukkop 045aaf00a2 feat: hectic C: template node debug, but union issue in debug string constructor 2025-04-12 18:25:25 +00:00
yukkop fe59708f5e test: hectic C: fix logger test 2025-04-12 15:38:06 +00:00
yukkop f43bc7e666 feat: hectic C: generic result 2025-04-12 15:21:33 +00:00
yukkop 84d5eac1aa test: hectic C: debug constructor 2025-04-12 01:38:40 +00:00
yukkop 8aeff83e79 feat: hectic C: debug constructor impruve 2025-04-12 01:07:20 +00:00
yukkop d801d7641a feat: hectic C: debug constructor wroks!!! 2025-04-11 22:34:43 +00:00
yukkop 8a9813d97c feat: hectic C: debug string constructor init 2025-04-11 10:33:20 +00:00
yukkop 77dfa58f04 fix: hectic C: template parser config 2025-04-10 14:26:21 +00:00
yukkop cf1c77c548 feat: hectic C: template parser, template to json 2025-04-09 19:52:43 +00:00
yukkop 596ee3b9c9 docs: hectic C: macro for reduse boilerplane with code position 2025-04-07 22:55:37 +00:00
yukkop d96782384d docs: hectic C: types for template parser 2025-04-07 22:44:05 +00:00
yukkop 1beab62935 feat: hectic C: logging settings 2025-04-07 16:54:26 +00:00
yukkop 9d29c6e2a2 fix: hectic C: impruve logging guidelines 2025-04-07 05:26:30 +00:00
yukkop cd1e463eaa fix: hectic C: impruve logging 2025-04-06 19:18:14 +00:00
yukkop fb566113c4 fix: hmpl: section blocks 2025-04-06 15:51:21 +00:00
yukkop 42bb81c2a3 feat: hectic C: debug print 2025-04-06 15:17:26 +00:00
yukkop 1954b83c7d feat: hmpl: section test passeeed 2025-04-05 21:31:35 +00:00
yukkop 77f9c7acbe refactor: change packages names 2025-04-05 19:09:13 +00:00
yukkop 6454ae65ef feat: some python packages 2025-04-05 17:04:29 +00:00
yukkop 7d746f78ca fix: c: log colorized with terminal mode 2025-04-04 14:13:54 +00:00
yukkop da4c767974 feat: c: log colorized 2025-04-04 14:07:17 +00:00
yukkop 28de673dc0 fix: hectic C: func definitions 2025-04-04 02:26:55 +00:00
yukkop 95586d02c1 feat: watch: try pager mode.. 2025-04-04 02:09:43 +00:00
yukkop 1a7f230b7c feat: some nix shit 2025-04-04 01:59:57 +00:00
yukkop 3256cd97d6 feat: watch: paterns 2025-04-03 22:57:55 +00:00
yukkop e86ac0d142 feat: watch: init 2025-04-03 22:34:50 +00:00
yukkop 75b9035178 test(hectic C): slice 2025-03-27 21:07:00 +00:00
yukkop 267bd497df refactor(hmpl): fix warnings 2025-03-24 19:27:11 +00:00
yukkop b169105ddd refactor(hectic C): fix warnings 2025-03-24 14:21:00 +00:00
yukkop 5294ad32f0 refactor(hmpl,hectic): warnings 2025-03-24 13:36:31 +00:00
yukkop 79eaa8bef0 refactor(hmpl): eval 2025-03-22 19:45:17 +00:00
yukkop 0f4591813f test(hmpl): render interpolation tags with prefix 2025-03-22 15:08:48 +00:00
yukkop 02f60509b1 test(hmpl): render interpolation tags 2025-03-22 14:56:03 +00:00
yukkop 72113fe866 fix: json eval 2025-03-22 04:15:58 +00:00
yukkop c8889170d0 fix: segfalt in json_get_object_item 2025-03-22 03:18:34 +00:00
yukkop 12ea3e88f1 feat(hectic C): json api 2025-03-22 01:22:36 +00:00
yukkop 8cda8ec6c1 refactor(hmpl): rewrite via arenas 2025-03-21 15:29:00 +00:00
yukkop 37c3fd4831 fix(hmpl): memory leak 2025-03-21 13:33:01 +00:00
yukkop bbd987f3ec feat(hmpl): render simple placeholder with memory leak of course 2025-03-21 04:00:23 +00:00
yukkop a4b43f18f8 fix(libhectic): arena allocators 2025-03-21 02:54:47 +00:00
yukkop a1a1172d98 feat(libhectic): arenas 2025-03-21 01:53:02 +00:00
yukkop cb4382ca87 test: fix: test raise generic 2025-03-20 18:47:44 +00:00
yukkop 715d4064f0 Merge branch 'master' of github.com:hectic-lab/util.nix 2025-03-20 18:16:04 +00:00
yukkop ca871022e1 test: libhectic 2025-03-20 18:15:52 +00:00
zerosummed d69566fb8b feat!: makeEnvironment: +strip prefix, ~rename to readEnvironment 2025-03-20 14:00:10 +03:00
yukkop 8e023a2cc3 feat: min C writer 2025-03-19 01:44:19 +00:00
yukkop 446fc82a0f Merge branch 'feat/pg-neo-migration' of github.com:hectic-lab/util.nix into feat/pg-neo-migration 2025-03-19 01:43:46 +00:00
yukkop 999ff2e107 feat: C writer 2025-03-19 01:09:47 +00:00
yukkop bd96f363c5 feat(c): extrude lib c 2025-03-12 23:19:45 +01:00
yukkop 493900d9ea refactor: stir some shit around again 2025-03-07 00:40:00 +00:00
yukkop d46ce1cbf6 refector(pg-neo-migration): stir some shit around trust me it's fine 2025-03-06 16:07:53 +01:00
yukkop 093c10e1d9 feat(pg-neo-migration): init 2025-03-05 19:13:00 +00:00
yukkop 88997cf96d feat(pg-schema): init 2025-03-02 10:48:52 +00:00
yukkop d8b088998d fix(pg-migration): db_url fetch 2025-02-16 17:21:02 +00:00
yukkop dfc30f946c fix(pg-migration): postgres build inputs 2025-02-16 17:03:59 +00:00
yukkop d1bb606b8e feat(pg-migration): variable providing for migrations 2025-02-16 15:58:31 +00:00
yukkop f5df53082e feat: inheritance for migration table 2025-02-16 14:21:20 +00:00
yukkop bef5ea366e feat: postgres extension pg_smtp_client 2025-02-16 10:32:37 +00:00
zerosummed f73d43451d fix: nix check errors 2025-02-14 21:27:48 +03:00
zerosummed a48bf89168 style: format (alejandra) 2025-02-14 21:06:51 +03:00
7 changed files with 106 additions and 81 deletions
+25 -21
View File
@@ -18,26 +18,30 @@
]; ];
adminNames = [ "yukkop" ]; adminNames = [ "yukkop" ];
in {
hectic.generic.matrix-cluster.users = builtins.listToAttrs (
map (name: {
inherit name;
value = {
passwordFile = config.sops.secrets."matrix/users/${name}/password".path;
} // lib.optionalAttrs (builtins.elem name adminNames) {
admin = true;
};
}) userNames
);
sops.secrets = builtins.listToAttrs ( cfg = config.hectic.generic.matrix-cluster;
map (name: { in {
name = "matrix/users/${name}/password"; config = lib.mkIf cfg.enable {
value = { hectic.generic.matrix-cluster.users = builtins.listToAttrs (
key = "matrix/users/${name}/password"; map (name: {
owner = "matrix-synapse"; inherit name;
sopsFile = "${flake}/sus/matrix-cluster.yaml"; value = {
}; passwordFile = config.sops.secrets."matrix/users/${name}/password".path;
}) userNames } // lib.optionalAttrs (builtins.elem name adminNames) {
); admin = true;
};
}) userNames
);
sops.secrets = builtins.listToAttrs (
map (name: {
name = "matrix/users/${name}/password";
value = {
key = "matrix/users/${name}/password";
owner = "matrix-synapse";
sopsFile = "${flake}/sus/matrix-cluster.yaml";
};
}) userNames
);
}
} }
+16 -3
View File
@@ -10,9 +10,21 @@
... ...
}: let }: let
cfg = config.hectic.hardware.hetzner-cloud; cfg = config.hectic.hardware.hetzner-cloud;
isNewer = cfg.generation == "newer";
in { in {
options.hectic.hardware.hetzner-cloud = { options.hectic.hardware.hetzner-cloud = {
enable = lib.mkEnableOption "Enable hetzner-cloud hardware configurations"; enable = lib.mkEnableOption "Enable hetzner-cloud hardware configurations";
generation = lib.mkOption {
type = lib.types.enum [ "classic" "newer" ];
default = "classic";
description = ''
Hetzner server generation profile.
`classic` keeps the historical `/dev/sda` assumption.
`newer` is for ccx/NVMe-era servers and defaults the disk device to
`/dev/nvme0n1`.
'';
};
#bootParUuid = lib.mkOption { #bootParUuid = lib.mkOption {
# type = with lib.types; nullOr oneOf [ # type = with lib.types; nullOr oneOf [
# (lib.types.strMatching "^[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}$") # (lib.types.strMatching "^[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}$")
@@ -41,22 +53,23 @@ in {
}; };
device = lib.mkOption { device = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = "/dev/sda"; default = if isNewer then "/dev/nvme0n1" else "/dev/sda";
example = "/dev/disk/by-uuid/f184a16b-6eca-41cb-b48a-ff37cdce1d79"; example = "/dev/disk/by-uuid/f184a16b-6eca-41cb-b48a-ff37cdce1d79";
description = '' description = ''
boot device uuid boot device uuid
if it is null then will use "/dev/sda" if it is null then will use "/dev/sda"
/dev/sda - default hetzner cloud device /dev/sda - default hetzner cloud device
/dev/nvme0n1 - default for newer Hetzner generations
!! But can changes on reboot if server have volumes !! But can changes on reboot if server have volumes
!! So use IDs !! So use IDs
''; '';
}; };
networkMatchConfigName = lib.mkOption { networkMatchConfigName = lib.mkOption {
type = lib.types.strMatching "^(enp1s0|ens3)$"; type = lib.types.strMatching "^(enp1s0|ens3|eth0)$";
example = "enp1s0"; example = "enp1s0";
description = '' description = ''
type of network conection, type of network conection,
on older hetzner servers may be `ens3` on older hetzner servers may be `ens3` or else
on newer probably `enp1s0` on newer probably `enp1s0`
you can use `networkctl list` on server to know it you can use `networkctl list` on server to know it
@@ -9,10 +9,10 @@
config, config,
... ...
}: let }: let
cfg = config.hectic.hardware.zombro; cfg = config.hectic.hardware.zomro;
in { in {
options.hectic.hardware.zombro = { options.hectic.hardware.zomro = {
enable = lib.mkEnableOption "Enable zombro hardware configurations"; enable = lib.mkEnableOption "Enable zomro hardware configurations";
device = lib.mkOption { device = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = "/dev/vda"; default = "/dev/vda";
@@ -20,7 +20,7 @@ in {
description = '' description = ''
boot device uuid boot device uuid
if it is null then will use "/dev/vda" if it is null then will use "/dev/vda"
/dev/vda - default zombro device /dev/vda - default zomro device
!! But can changes on reboot if server have volumes !! But can changes on reboot if server have volumes
!! So use IDs !! So use IDs
''; '';
+7 -4
View File
@@ -10,12 +10,15 @@
... ...
}: let }: let
legacyCfg = config.hectic.services.matrix; legacyCfg = config.hectic.services.matrix;
clusterCfg = config.hectic.generic.matrix-cluster; hasClusterCfg = config.hectic ? generic && config.hectic.generic ? matrix-cluster;
clusterCfg = if hasClusterCfg then config.hectic.generic.matrix-cluster else null;
clusterSynapseEnabled = clusterSynapseEnabled =
clusterCfg.enable if hasClusterCfg
&& (if clusterCfg.overrideEnableSynapse != null then clusterCfg.overrideEnableSynapse else clusterCfg.role == "primary"); then clusterCfg.enable
&& (if clusterCfg.overrideEnableSynapse != null then clusterCfg.overrideEnableSynapse else clusterCfg.role == "primary")
else false;
enabled = legacyCfg.enable || clusterSynapseEnabled; enabled = legacyCfg.enable || clusterSynapseEnabled;
matrixDomain = if legacyCfg.enable then legacyCfg.matrixDomain else clusterCfg.matrixDomain; matrixDomain = if legacyCfg.enable then legacyCfg.matrixDomain else if hasClusterCfg then clusterCfg.matrixDomain else "";
in { in {
config = lib.mkIf enabled (let config = lib.mkIf enabled (let
keyFile = "/run/livekit.key"; keyFile = "/run/livekit.key";
+8 -5
View File
@@ -10,16 +10,19 @@
... ...
}: let }: let
legacyCfg = config.hectic.services.matrix; legacyCfg = config.hectic.services.matrix;
clusterCfg = config.hectic.generic.matrix-cluster; hasClusterCfg = config.hectic ? generic && config.hectic.generic ? matrix-cluster;
clusterCfg = if hasClusterCfg then config.hectic.generic.matrix-cluster else null;
clusterSynapseEnabled = clusterSynapseEnabled =
clusterCfg.enable if hasClusterCfg
&& (if clusterCfg.overrideEnableSynapse != null then clusterCfg.overrideEnableSynapse else clusterCfg.role == "primary"); then clusterCfg.enable
&& (if clusterCfg.overrideEnableSynapse != null then clusterCfg.overrideEnableSynapse else clusterCfg.role == "primary")
else false;
enabled = legacyCfg.enable || clusterSynapseEnabled; enabled = legacyCfg.enable || clusterSynapseEnabled;
matrixDomain = if legacyCfg.enable then legacyCfg.matrixDomain else clusterCfg.matrixDomain; matrixDomain = if legacyCfg.enable then legacyCfg.matrixDomain else if hasClusterCfg then clusterCfg.matrixDomain else "";
jitsiPreferredDomain = jitsiPreferredDomain =
if legacyCfg.enable && config.hectic.services.jitsi.enable if legacyCfg.enable && config.hectic.services.jitsi.enable
then config.hectic.services.jitsi.hostName then config.hectic.services.jitsi.hostName
else clusterCfg.jitsi.preferredDomain; else if hasClusterCfg then clusterCfg.jitsi.preferredDomain else null;
in { in {
config = lib.mkIf enabled { config = lib.mkIf enabled {
services.nginx.virtualHosts."element.${matrixDomain}" = { services.nginx.virtualHosts."element.${matrixDomain}" = {
+42 -42
View File
@@ -16,6 +16,26 @@ with lib;
let let
domain = "hectic-lab.com"; domain = "hectic-lab.com";
matrixDomain = "accord.tube"; matrixDomain = "accord.tube";
mailUserNames = [
"security"
"founders"
"lvgkcfjl"
"yukkop"
"daniil-perlyk"
"iana-perlyk"
"snuff"
"antoshka"
];
mkMailPasswordSecret = name: {
name = "mailserver/${name}/hashedPassword";
value = {};
};
mkMailLoginAccount = name: {
inherit name;
value = {
hashedPasswordFile = config.sops.secrets."mailserver/${name}/hashedPassword".path;
};
};
sslOpts = { sslOpts = {
sslCertificate = config.sops.secrets."ssl/porkbun/${domain}/domain.cert.pem".path; sslCertificate = config.sops.secrets."ssl/porkbun/${domain}/domain.cert.pem".path;
sslCertificateKey = config.sops.secrets."ssl/porkbun/${domain}/private.key.pem".path; sslCertificateKey = config.sops.secrets."ssl/porkbun/${domain}/private.key.pem".path;
@@ -91,6 +111,24 @@ in {
gnupg.sshKeyPaths = [ ]; gnupg.sshKeyPaths = [ ];
age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
defaultSopsFile = "${flake}/sus/hectic-lab.yaml"; defaultSopsFile = "${flake}/sus/hectic-lab.yaml";
secrets = builtins.listToAttrs (map mkMailPasswordSecret mailUserNames) // {
"init-postgresql" = {
key = "init-postgresql";
};
"ssl/porkbun/${domain}/domain.cert.pem" = {
group = "nginx";
mode = "0440";
};
"ssl/porkbun/${domain}/private.key.pem" = {
group = "nginx";
mode = "0440";
};
"ssl/porkbun/${domain}/public.key.pem" = {
group = "nginx";
mode = "0440";
};
"wg-bfs/private-key" = {};
};
}; };
users.users.root.openssh.authorizedKeys.keys = [ users.users.root.openssh.authorizedKeys.keys = [
@@ -120,43 +158,10 @@ in {
]; ];
}; };
sops.secrets."mailserver/security/hashedPassword" = {};
sops.secrets."mailserver/yukkop/hashedPassword" = {};
sops.secrets."mailserver/daniil-perlyk/hashedPassword" = {};
sops.secrets."mailserver/snuff/hashedPassword" = {};
sops.secrets."mailserver/antoshka/hashedPassword" = {};
sops.secrets."mailserver/founders/hashedPassword" = {};
sops.secrets."mailserver/lvgkcfjl/hashedPassword" = {};
sops.secrets."init-postgresql" = {
key = "init-postgresql";
};
services.mailserver = { services.mailserver = {
enable = true; enable = true;
domain = domain; domain = domain;
loginAccounts = { loginAccounts = builtins.listToAttrs (map mkMailLoginAccount mailUserNames);
"security" = {
hashedPasswordFile = config.sops.secrets."mailserver/security/hashedPassword".path;
};
"founders" = {
hashedPasswordFile = config.sops.secrets."mailserver/founders/hashedPassword".path;
};
"lvgkcfjl" = {
hashedPasswordFile = config.sops.secrets."mailserver/lvgkcfjl/hashedPassword".path;
};
"yukkop" = {
hashedPasswordFile = config.sops.secrets."mailserver/yukkop/hashedPassword".path;
};
"daniil-perlyk" = {
hashedPasswordFile = config.sops.secrets."mailserver/daniil-perlyk/hashedPassword".path;
};
"snuff" = {
hashedPasswordFile = config.sops.secrets."mailserver/snuff/hashedPassword".path;
};
"antoshka" = {
hashedPasswordFile = config.sops.secrets."mailserver/antoshka/hashedPassword".path;
};
};
}; };
mailserver.stateVersion = 3; mailserver.stateVersion = 3;
@@ -196,10 +201,6 @@ in {
"d /var/www/store 0755 nginx nginx -" "d /var/www/store 0755 nginx nginx -"
]; ];
sops.secrets."ssl/porkbun/${domain}/domain.cert.pem" = { group = "nginx"; mode = "0440"; };
sops.secrets."ssl/porkbun/${domain}/private.key.pem" = { group = "nginx"; mode = "0440"; };
sops.secrets."ssl/porkbun/${domain}/public.key.pem" = { group = "nginx"; mode = "0440"; };
services.nginx = { services.nginx = {
enable = true; enable = true;
# NOTE(yukkop): virtualHosts.${domain} is owned by the hectic-landing module # NOTE(yukkop): virtualHosts.${domain} is owned by the hectic-landing module
@@ -257,8 +258,9 @@ in {
enable = true; enable = true;
settings.service.DISABLE_REGISTRATION = false; settings.service.DISABLE_REGISTRATION = false;
settings.server = { settings.server = {
HTTP_PORT = 11011; HTTP_PORT = 11011;
SSH_PORT = 11012; #SSH_PORT = 11012;
SSH_DOMAIN = "hectic-lab.com";
}; };
database = { database = {
createDatabase = true; createDatabase = true;
@@ -272,8 +274,6 @@ in {
# === WireGuard (disabled) === # === WireGuard (disabled) ===
sops.secrets."wg-bfs/private-key" = {};
# networking.wireguard.interfaces = let # networking.wireguard.interfaces = let
# subnet = "10.13.37"; # subnet = "10.13.37";
# externalInterface = "eth0"; # externalInterface = "eth0";
+4 -2
View File
@@ -5,6 +5,8 @@ mailserver:
hashedPassword: ENC[AES256_GCM,data:zjhCFkmmMzQHn09uRz1S4NTNU8hVRY5ZSYRHn6Gd0u09Fc7inNVSPrO+Br41UagPmv526w9MMQoIbV3RiJq6E/mfhAouqybYbQ==,iv:aVjn+/X2ESgZU7p7jETONaqtsD2/NAFOd7IIbunTRaI=,tag:kueml9QdQYVBceFMCgWoGA==,type:str] hashedPassword: ENC[AES256_GCM,data:zjhCFkmmMzQHn09uRz1S4NTNU8hVRY5ZSYRHn6Gd0u09Fc7inNVSPrO+Br41UagPmv526w9MMQoIbV3RiJq6E/mfhAouqybYbQ==,iv:aVjn+/X2ESgZU7p7jETONaqtsD2/NAFOd7IIbunTRaI=,tag:kueml9QdQYVBceFMCgWoGA==,type:str]
daniil-perlyk: daniil-perlyk:
hashedPassword: ENC[AES256_GCM,data:vlmz39OxJ0iavBYW1ij2pn/1wFOx+yBWR16ZCDlnGvc9/BNwd8vhAPJw7D+bujA89UMAvIC7ERiSNzR2uamp0+aH8gKyzchEXg==,iv:H1NVynfp5X18PcyR2/R4mNZ69KpcbzAc+D2akl3aAmE=,tag:YjYh/y5o3bkajWDsyctJUw==,type:str] hashedPassword: ENC[AES256_GCM,data:vlmz39OxJ0iavBYW1ij2pn/1wFOx+yBWR16ZCDlnGvc9/BNwd8vhAPJw7D+bujA89UMAvIC7ERiSNzR2uamp0+aH8gKyzchEXg==,iv:H1NVynfp5X18PcyR2/R4mNZ69KpcbzAc+D2akl3aAmE=,tag:YjYh/y5o3bkajWDsyctJUw==,type:str]
iana-perlyk:
hashedPassword: ENC[AES256_GCM,data:RkMAMTIBvI84nccOU69GZsx3iblDPm11SnTGjTqVBFWES24bXH4bcU3Xq7lszY5xcH0W93uFULqGI3wom+szA1XefiGcpKhR9Q==,iv:DjahflSSkOoJyjBAC19AMu+OqOkD3H9PwenE4ylI9W4=,tag:qbcNFnKo7nipC3POsAxtdQ==,type:str]
founders: founders:
hashedPassword: ENC[AES256_GCM,data:E+Xu/Ul3rFLlYDD0LGGRnc6RADlWmXpOM2OfkZFSzAf5thm8leRi9x5sroP25cO8CcSyBcOiUCBv3RC5ooXklm4cmpOx8LA8ug==,iv:RLbU6SBHKOBRCNZ6naxQMaNjWZOlNui6OaaVM2QkdZs=,tag:sO7CD+PVkdtvPvlUrpzW+g==,type:str] hashedPassword: ENC[AES256_GCM,data:E+Xu/Ul3rFLlYDD0LGGRnc6RADlWmXpOM2OfkZFSzAf5thm8leRi9x5sroP25cO8CcSyBcOiUCBv3RC5ooXklm4cmpOx8LA8ug==,iv:RLbU6SBHKOBRCNZ6naxQMaNjWZOlNui6OaaVM2QkdZs=,tag:sO7CD+PVkdtvPvlUrpzW+g==,type:str]
snuff: snuff:
@@ -75,7 +77,7 @@ sops:
Yk43ZmlTc09aNFV1VjdjN2RWQlFWTDQKcYSvA2lHP8GS0lkYY19Tm8RXmFHQX5Ck Yk43ZmlTc09aNFV1VjdjN2RWQlFWTDQKcYSvA2lHP8GS0lkYY19Tm8RXmFHQX5Ck
qV2Fn22Fic4M5FVKDEMfaO6WmeXgki9a8dGeO9LlC+Phf16SOq7eLw== qV2Fn22Fic4M5FVKDEMfaO6WmeXgki9a8dGeO9LlC+Phf16SOq7eLw==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2026-05-27T12:36:35Z" lastmodified: "2026-05-31T17:04:00Z"
mac: ENC[AES256_GCM,data:dqVqDqMRJFVhT78mO8q+X+Mf4TUqxY4ApOdkMAF9bvyvPAPW7kxbKEvn9H5LBDev9CNxfNF9siqaa7aEdATM6ylhrcWPdzPN04LorojdMNRQy/WFQ0rB1Lz1RrIvwltQD5K8RSPFCWWtF8rhqVTGdFafwCWpdmuKTx0HEPNXsPY=,iv:cWHx326j4aycz17N+q2NNqq0VwfeupmOiPdAtZRz7ws=,tag:LOKuvivMogAGQoVlSTu/vg==,type:str] mac: ENC[AES256_GCM,data:wkOHWvNXw3Cfh5ettROAstBdqNj2q5vna4LyOrhkyko4x4U+RhMDghUhtVy/AS48hX2yf5w13eIub/+10jm+HGxw70KA9LK9JuqsjdX8/IpJgWD52/ueZu+iO+dGGCXHLtu2ufWXwuqYAF0ea2sfQygChfhBclgNXYdmnJeOycQ=,iv:/i/0OGCziRYZodT0+dP72wzPV6lsKjieJavp/9LQXj0=,tag:OsM0Qy9o0wzmcgCNr6Bo0Q==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.10.2 version: 3.10.2