Compare commits

..

383 Commits

Author SHA1 Message Date
yukkop e38c0c499f fix: gitea: now works 2026-05-29 21:27:53 +00:00
snuff 7d254cd8c4 fix(gitea)?: syntax 2026-05-29 20:38:16 +03:00
snuff 2e66319cfc fix(gitea)?: postgres socket peer auth for gitea 2026-05-29 20:17:08 +03:00
snuff e41f0aff7e fix?: +gitea v3 2026-05-29 20:07:27 +03:00
snuff ab4fa3140e fix?: +gitea v2 2026-05-29 18:43:31 +03:00
snuff 3130ae3dd7 fix?: +gitea 2026-05-29 18:37:02 +03:00
snuff fe8ff3d895 feat?: +gitea 2026-05-29 18:29:47 +03:00
yukkop f4ec839241 feat: matrix-cluster: hz 2026-05-27 19:04:56 +00:00
yukkop 5dc83564af Merge branch 'master' of github.com:hectic-lab/util.nix 2026-05-27 18:51:33 +00:00
yukkop a68f3a329a fix!: matrix-cluster: +jitsy 2026-05-27 18:51:18 +00:00
yukkop 74ed204e6b fix: mechabellum: api 2026-05-27 18:48:29 +00:00
yukkop 8625000952 feat: matrix-cluster: shared users 2026-05-27 12:54:15 +00:00
yukkop a8dd82d05f feat: matrix-cluster: shared users 2026-05-27 12:41:51 +00:00
yukkop 92f55320b5 fix: matrix 2026-05-25 23:12:05 +00:00
yukkop 4ce1945abe feat: matrix prepare move to poland 2026-05-25 07:48:16 +00:00
yukkop e29f09a694 feat: matrix: diferent servers one home server 2026-05-25 07:11:43 +00:00
yukkop ecabc0b6c2 fix: some recomendations 2026-05-24 15:08:40 +00:00
yukkop bcf5ae5da7 fix: element 2026-05-24 14:54:01 +00:00
yukkop 0eecea6324 fix: element 2026-05-23 23:11:58 +00:00
yukkop 4c0a178646 some 2026-05-23 22:57:09 +00:00
yukkop 9c6de9d067 fix: hectic-lab: mechabellum 2026-05-23 20:53:30 +00:00
yukkop 934c02609a feat: hectic-lab: mechabellum for lismy 2026-05-23 19:40:36 +00:00
yukkop fb6ee3cb54 chore: devide xrays systems 2026-05-23 18:27:02 +00:00
yukkop bce720fcff chore: hectic-lab: +vismajor in matrix 2026-05-23 18:17:27 +00:00
yukkop 7f39fc2dc3 fix 2026-05-23 17:13:49 +00:00
yukkop 819f1691b4 chore: hecitc-lab: +lvgkcfjl email to hectic-lab 2026-05-23 14:11:27 +00:00
yukkop 0a6e97f456 fix: media-browser: view button 2026-05-23 12:18:05 +00:00
yukkop d220a4588f fix: media-browser: synced files 2026-05-23 12:03:56 +00:00
yukkop 7dc66abc21 feat: media-browser: preview for local files 2026-05-23 11:56:04 +00:00
yukkop e38bf7582d feat: media-browser for matrix 2026-05-23 11:46:58 +00:00
yukkop afd4970cf4 fix: matrix: s3 sync 2026-05-23 11:22:49 +00:00
yukkop ef59f14372 feat: matrix: s3 object storage 2026-05-23 09:59:34 +00:00
yukkop d86eeae4a5 fix?: support bot 2026-05-23 08:50:10 +00:00
yukkop 4d7908de4b chore: hecitc-lab: add lvgkcfjl to matrix 2026-05-23 08:49:51 +00:00
yukkop 20b12d42a8 feat: hectic-lab: matrix 100mb max file 2026-05-23 06:47:34 +00:00
yukkop 51d40841ce feat: hectic-lab: users for matrix 2026-05-22 21:19:52 +00:00
yukkop 09ed045da9 feat: module: ~matrix 2026-05-22 20:13:47 +00:00
yukkop 56881b766a feat: +package merge-archive 2026-05-22 07:45:47 +00:00
yukkop 19b95e707d feat: deploy: 1 no tty option 2026-05-05 20:19:52 +00:00
yukkop e71886c34e feat: lab: +models 2026-05-04 10:19:38 +00:00
yukkop da999fc37b feat: lab: configure olama models 2026-05-04 05:41:25 +00:00
yukkop f9c292643d Merge branch 'master' of github.com:hectic-lab/util.nix 2026-05-03 22:07:13 +00:00
yukkop bcdc8f0836 feat: lab: configure olama 2026-05-03 22:06:57 +00:00
yukkop 66722bd8a4 fix: db-tool: NO_TTY 2026-05-03 15:35:22 +00:00
yukkop 1aaf21e9c0 fix: posix-helpers 2026-05-03 05:23:23 +00:00
yukkop 4204d68eed 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 4378b13877 feat: windows-devshell 2026-05-02 15:31:26 +00:00
yukkop c041f2e88d fix: linux-devshell for ubuntu 2026-05-01 23:11:23 +00:00
yukkop 61861ff170 fix: linux-devshell from root 2026-05-01 22:56:03 +00:00
yukkop d64314d68b chore: fix nixpkgs 25.05 deprecation warnings 2026-05-01 22:26:29 +00:00
yukkop 35e35980b4 test: fix: . 2026-05-01 22:19:43 +00:00
yukkop 0a54a41670 fix: wsl system 2026-05-01 21:57:41 +00:00
yukkop d5d4d5a5c3 test: arch 2026-05-01 21:40:54 +00:00
yukkop ff0766519c test: linux-devshell 2026-05-01 21:13:15 +00:00
yukkop 87b57d5011 feat: linux-devshell: init 2026-05-01 20:39:38 +00:00
yukkop e46a4bf8a1 fix: db-tool: envcontent 2026-05-01 12:31:44 +00:00
yukkop 8b7a9b5141 fix(db-tool): typo hydate.stdout.log -> hydrate.stdout.log 2026-04-30 23:10:46 +00:00
yukkop d3cdbdf3e2 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 1a209f6960 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 3d5e3fdb36 feat: postgres hooks 2026-04-30 21:59:53 +00:00
yukkop bf7ee34716 feat: start impliment postgres hooks 2026-04-30 21:36:22 +00:00
yukkop 70c44f1fa7 feat: include hectic-landing to hectic 2026-04-30 19:33:21 +00:00
yukkop 2eaa568f5b 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 31d2994997 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 58e9aa8fad 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 7d5300853b 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 e732ecb878 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 705f5bbd01 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 06a5d16ee3 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 5713eaad14 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 b5dcbf08a1 feat(\db-tool\): introduce unified db-tool package with postgres harness and tests (T0-T8) 2026-04-30 09:06:44 +00:00
yukkop 395bddee94 Merge branch 'master' of github.com:hectic-lab/util.nix 2026-04-29 09:57:40 +00:00
snuff d8312b69b8 feat?(neuro): create aeronautics minecraft server 2026-04-28 14:04:14 +03:00
yukkop 62757df384 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 f2ea372742 debug(package): sentinèlla: surface host(1) and SRV-parse failures in watcher 2026-04-27 17:28:01 +00:00
yukkop f158a80492 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 0c81c0454d feat(package): sentinèlla: switch peer discovery from A records to SRV records 2026-04-27 14:08:23 +00:00
yukkop 7268ec3704 fix(package): sentinèlla: probe — use socat EXEC pipes to avoid pty CR/LF mangling 2026-04-27 13:34:52 +00:00
yukkop 0dfbee6472 feat: sentinella: some 2026-04-27 12:58:36 +00:00
yukkop 50d682d6f7 fix: hectic-lab: email name 2026-04-26 22:22:31 +00:00
yukkop 3ca4d4fb86 feat: sentinella: update 2026-04-26 22:22:15 +00:00
yukkop 4fae68764c 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 6035397e9b 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 249d027f6b docs: +plan 2026-04-26 14:11:37 +00:00
yukkop 3343a8be6e Merge branch 'merge-hectic-lab' 2026-04-26 13:52:17 +00:00
yukkop b8fc0971c6 fix: hectic-lab: something 2026-04-26 13:48:36 +00:00
yukkop 406acf662e feat: hectic-lab: mail server 2026-04-26 10:33:28 +00:00
yukkop 970c1214af chore: config 2026-04-25 15:18:01 +00:00
yukkop 0316d0b535 zalupa 2026-04-18 20:53:44 +00:00
yukkop 305efdbbae feat: work on profinity 2026-04-14 08:43:56 +00:00
yukkop 6e72841337 docs: neuro: router forwarding 2026-03-31 20:09:27 +00:00
yukkop 29acdc9ad6 feat: bfs: add xray package 2026-03-31 19:59:40 +00:00
yukkop 04bc83e004 chore: bfs: add 3 cert 2026-03-23 19:47:54 +00:00
yukkop 2513b76658 some jitsi shit 2026-03-23 19:22:40 +00:00
yukkop 62b7742ef0 some 2026-03-22 06:55:10 +00:00
yukkop f23720e151 feat: wsl: some things 2026-03-15 10:59:19 +00:00
yukkop b9730784ba fix: deploy: logs 2026-03-01 09:36:22 +00:00
yukkop 577c167d5a feat: migrator: +multifiles migrations 2026-02-28 21:19:29 +00:00
yukkop 525c6a220b chore: 2026-02-28 20:25:13 +00:00
yukkop bf41ee6e0a feat: merge own wsl config 2026-02-28 01:57:42 +00:00
yukkop cfcd6647ae feat: init hectic-lab merge 2026-02-27 19:57:44 +00:00
yukkop 4e2264dc03 feat: neuro: some 2026-02-27 12:53:51 +00:00
yukkop 3414edf2a8 fix: some warnings 2026-02-23 18:27:36 +00:00
yukkop 0d7b84e3bc refactor: derustification 2026-02-20 17:36:20 +00:00
yukkop bea9ca602e fix: +fixed nixpkgs 2026-02-20 17:30:36 +00:00
yukkop d8a51cd389 refactor: update to 25.11 2026-02-20 17:18:38 +00:00
yukkop f93e12accd feat: nixvim + zsh, fix: warnings 2026-02-20 16:41:18 +00:00
yukkop 63a7fd716f apply patch from neuro 2026-02-20 12:51:32 +00:00
yukkop 799ad9a15d feat: +neuro devshell 2026-02-20 12:06:55 +00:00
yukkop 9010b2678e refactor: deploy: update logs 2026-02-20 12:04:15 +00:00
yukkop 26bdecb8e0 fix: migrator: more accurate check for hectic.migrator isntalled 2026-02-17 16:50:08 +00:00
yukkop ff87e8c411 chore: something about hemar tree sitter 2026-02-17 16:17:47 +00:00
yukkop d7ada535d4 feat: +pol bfs server 2026-02-17 16:13:58 +00:00
yukkop 7490ef2fe9 fix: nvim-pager close all pages on q 2026-02-17 08:55:41 +00:00
yukkop a7cb54d04c hz 2026-02-14 18:35:04 +00:00
yukkop 0f4f6a6339 hz 2026-02-14 15:59:13 +00:00
yukkop 043b333654 feat: migrator: colorize help in migrator.sh 2026-02-06 08:38:36 +00:00
yukkop 683370a71c feat: stong &2 in log.sh 2026-02-05 06:50:54 +00:00
yukkop 2724295bcf feat(nixos): postgresql: +settings script 2026-01-29 18:56:22 +00:00
yukkop 78a3329271 Merge branch 'master' of github.com:hectic-lab/util.nix 2026-01-16 16:16:43 +00:00
yukkop a61f2cfe5e feat(nixos): +zombro hardware 2026-01-16 16:16:13 +00:00
ISNUFFI ed5c1cc1af chore: removed excess variables 2026-01-13 18:13:52 +03:00
yukkop 8ffe9ad244 iso 2026-01-13 15:04:33 +00:00
yukkop bf72ac7e97 feat(template): +nodejs 2026-01-04 20:40:43 +00:00
yukkop 4a9bb42015 feat(nixos): some moves to nixos server 2025-12-28 19:18:15 +00:00
yukkop 96782b7b51 feat(nixos): +neuro system 2025-12-26 20:04:42 +00:00
yukkop 3d84864382 fix(package): migrator: sqlite transactions 2025-12-23 19:31:44 +00:00
yukkop cb96de6125 fix(package): migrator: handle sqlite posible settings 2025-12-23 18:30:26 +00:00
yukkop 686a794a69 fix(pakcage): migrator: -z -> +x 2025-12-23 18:18:51 +00:00
yukkop 2ffe187b12 fix(package): migrator: awk dependency 2025-12-21 13:19:46 +00:00
yukkop 89ab7d56af feat(pakcage): migrator: add dependency 2025-12-20 01:19:40 +00:00
yukkop 01f13723a8 feat(package): migrator: up to latest 2025-12-18 00:45:09 +00:00
yukkop 9c25e82c79 fix(package): migrator: uncomplite RAISE on sqlite 2025-12-17 03:28:03 +00:00
yukkop 956239ab79 feat(package): migrator: ! sqlite support 2025-12-17 03:24:59 +00:00
yukkop bb2ae34758 feat(package): migrator: mvp 2025-12-16 17:28:36 +00:00
yukkop 13fdfac2ef test(hemar): update parser test to match better paths 2025-12-09 14:21:03 +00:00
yukkop 93a7636c61 fix(package): hemar: paths better handling 2025-12-09 14:13:34 +00:00
yukkop 6fb3ee1af8 test(hemar): many tests but not pass 2025-12-09 13:49:43 +00:00
yukkop 73dc9aee9e feat(package): hemar: json_escape() 2025-12-09 03:47:27 +00:00
yukkop 71082b6414 feat(package): hemar: interpolation 2025-12-08 23:47:33 +00:00
yukkop 65a96c860b feat(package): accord: some cli things 2025-12-08 01:55:33 +00:00
yukkop 9b9254bb93 feat(nixos): bgs: vless 2025-12-07 03:40:07 +00:00
yukkop 1beb980b95 refactor(nixos): bfs: some secrets 2025-12-07 02:25:29 +00:00
yukkop 082b80f252 feate(package): accord: init 2025-12-06 23:49:14 +00:00
yukkop f4a65afb01 Merge branch 'master' of github.com:hectic-lab/util.nix 2025-12-06 04:47:46 +00:00
yukkop 373a3fe3f0 fix(package): migrator: index_of subshell issue 2025-12-06 04:47:31 +00:00
snuff 8bbc0eda8f fix: matrix works with self-hosted element 2025-12-06 00:36:01 +03:00
yukkop 3b506a7888 fix: bfs nixosConfiguration check 2025-12-05 21:01:53 +00:00
yukkop 9a5bfa3f80 feate(nixos) bfs: matrix, element, bla bla bla 2025-12-05 19:36:53 +00:00
yukkop 5177f9a1f6 feat(nixos): bfs: fix: element-rtc 2025-12-05 18:17:41 +00:00
yukkop 49bf4c6d91 feat(nixos): bfs: +matrix, very unsave 2025-12-05 16:30:34 +00:00
yukkop 9d914ed863 feat(nixos): netherlands xray 2025-12-05 00:56:08 +00:00
yukkop 3e6bf6ce7f feat(nixos): xray 2025-12-04 21:03:01 +00:00
yukkop b786098867 feat(package): migrator: something 2025-12-04 21:02:38 +00:00
yukkop dfa76b2a19 feat(package): hemar: more grammar parsing 2025-11-30 13:31:40 +00:00
yukkop 6dad0d95fb fix(nixos): generic postgresql 2025-11-29 13:48:57 +00:00
yukkop 78f4777141 feat(package): hemar: some parser work 2025-11-29 00:30:27 +00:00
yukkop 48077aaccc feat(package): hemar: add indexes to tree-sitter 2025-11-28 10:29:59 +00:00
yukkop 4b4ea7a1d2 feat(package): hemar: add tree sitter hightlights 2025-11-27 19:45:12 +00:00
yukkop d1353d3a36 fix(package): hemar: treesitter language name 2025-11-27 19:15:35 +00:00
yukkop 8048c4adff fix(package): hemar: treesitter language name 2025-11-27 19:13:07 +00:00
yukkop 345f94742e feat(package): hemar: tree sitter grammar 2025-11-27 17:53:49 +00:00
yukkop 777d48bf3d feat(package): hemar: antlr grammar, but still does not work 2025-11-26 14:48:51 +00:00
yukkop 8a08272f68 feat(package): hemar: I think I was wrong 2025-11-25 15:45:02 +00:00
yukkop 4729770b59 feat(package): hemar: some stages of parsing 2025-11-25 13:19:45 +00:00
yukkop f5d412997e feat(package): hemar: conected to nix config 2025-11-24 14:33:45 +00:00
yukkop 783cbe20e8 fix(package): migrator: init migration 2025-11-22 11:50:42 +00:00
yukkop 9a7e7d677a feat(package): migrator: some migrate up works and init 2025-11-17 16:26:25 +00:00
yukkop 5b1f05589d test: fix: migrator: multifile test 2025-11-17 01:57:32 +00:00
yukkop 00f05cc3db feat(legacy): helpers: allow HECTIC_NAMESPACE be empty 2025-11-16 16:56:26 +00:00
yukkop bb99ef9a8a feat(legacy): helpers: update log, unefficient but works 2025-11-16 16:38:38 +00:00
yukkop 33cdebb64a refactor: remove nix warnings 2025-11-14 21:13:32 +00:00
yukkop 88573ea4aa feat(package): nbt2json: pack into nix 2025-11-14 21:12:41 +00:00
yukkop 4ae460f6e3 fix(template): correct hectic utils input 2025-11-14 15:53:12 +00:00
yukkop 5a8fd0a275 feat(package): voronoi: simple voronoi algoritm realization 2025-11-14 15:51:28 +00:00
yukkop 6204ba5abb feat(package): migrator: ! migration up 2025-11-14 15:50:55 +00:00
yukkop 00bbd42cab feat(package): migrator: init migration table 2025-11-04 13:21:15 +00:00
yukkop 111db5a1ca feat(package): migrator: create new migration 2025-11-04 12:15:29 +00:00
yukkop 9d97fd8d87 refactor(package): pull out all realization from default.nix 2025-11-03 20:08:20 +00:00
yukkop 94fbbdf0d9 fix(package): in default.nix migratior -> migrator 2025-11-03 19:15:57 +00:00
yukkop 43dc59a04f feat: +checks flake output 2025-11-03 19:02:50 +00:00
yukkop e3167ce6e5 feat(package): +migrator 2025-11-03 18:55:35 +00:00
yukkop 532f4b0901 feat(legacy): +writeDash +helpers 2025-11-03 18:51:38 +00:00
yukkop ad00891e6b fix(nixos): hardwares 2025-10-30 09:38:58 +00:00
yukkop 60bd185fa4 feat(nixos): cloudzy hardware 2025-10-28 16:16:01 +00:00
yukkop f08bd1e702 feat(template): +avarage 2025-10-28 11:41:26 +00:00
yukkop d01674e6a4 feat(package): sentinella: sqlschema 2025-10-28 11:37:22 +00:00
yukkop 39abe553f5 refactor(package): sentinella: +logging 2025-10-25 09:54:57 +00:00
yukkop af5d46b3f0 fix(nixos): module: wrong separator 2025-10-25 07:21:07 +00:00
yukkop 450ba9229b feat(package): sentinel: some changes 2025-10-25 06:48:48 +00:00
yukkop 9903e83f68 feat(package): deploy: rollback 2025-10-23 14:48:10 +00:00
yukkop 3ee41979bd refactor(nixos): modules: hetzner network config 2025-10-23 11:49:34 +00:00
yukkop b400acd18e some fixes 2025-10-23 11:28:56 +00:00
yukkop dd0d823e36 feat(package): +deploy 2025-10-23 10:22:48 +00:00
yukkop fafc1c4664 refactor(nixos): modules: hetzner hardware 2025-10-22 09:32:41 +00:00
yukkop 3bfc5799c7 feat(nixos): modules: +network configuration to hetzner hardware 2025-10-22 08:20:27 +00:00
yukkop e7423780e8 ruined every thing again 2025-10-21 17:27:09 +00:00
yukkop b3041edbdc ruined every thing 2025-10-20 17:17:08 +00:00
yukkop dbe4dfc2bc feat(package): sentinèlla: sentinel: loging 2025-10-19 15:16:38 +00:00
yukkop abdc808693 feat(nixos): lenovo hardware 2025-10-16 12:22:19 +00:00
yukkop 3139fd1d9f fix: lib systems 2025-10-16 09:52:49 +00:00
yukkop dc6ca7a0a9 fix(nixos): senttinèlla-probe: module args 2025-10-12 08:59:03 +00:00
yukkop 6dd7d112c5 fix: writers & overlays 2025-10-11 14:56:25 +00:00
yukkop 65fa944df8 refactor: legacyPackages 2025-10-10 13:13:03 +00:00
yukkop 7d55064a44 feat(package): onlinepubs: init 2025-10-08 15:58:35 +00:00
yukkop a1b31b1684 fix(package): `sentinèlla one more unset error 2025-10-07 10:55:37 +00:00
yukkop d446b24c47 fix(package): `sentinèlla unset error 2025-10-07 04:02:49 +00:00
yukkop 76e09ce5c3 fix(package): sentinèlla: base64 logic 2025-10-03 19:02:33 +00:00
yukkop 7fd3ba46c9 feat(package): sentinèlla: add auth 2025-10-03 02:30:24 +00:00
yukkop 0eb95197bc feat(package): hemar: continios work 2025-10-01 11:09:09 +00:00
yukkop 38bf9151eb refactor: hemar reboot 2025-09-28 04:44:46 +00:00
yukkop 5dd03a947f feat: appropriate sops dream wrapper 2025-09-12 17:17:29 +00:00
yukkop adbd946f50 fix 2025-09-02 10:33:04 +00:00
yukkop 78dcb215cc fix: stupid error 2025-08-31 16:01:00 +00:00
yukkop 744a8c9cf4 refactor(nixos): module: hectic services config path 2025-08-28 18:17:18 +00:00
yukkop 00e02f328a feat(nixos): module: +support-bot 2025-08-28 15:02:58 +00:00
yukkop 7dadd2290f feat(package): shellplot: created 2025-08-23 16:37:08 +00:00
yukkop 25575a69f3 feat(package): server-health: created 2025-08-23 15:16:15 +00:00
yukkop bb16555d4f feat: add templates 2025-08-05 04:41:27 +00:00
yukkop 492597b7ab fix(package): nix-derivation-hash: purify 2025-07-24 19:33:51 +00:00
yukkop 52cb6b2410 feat(package): nix-derivation-hash 2025-07-23 20:15:53 +00:00
yukkop 6e77853453 feat(lib): shell: local-dir 2025-07-22 21:15:42 +00:00
yukkop 8f4ff74546 feat: service.postgresql module extension 2025-07-22 02:11:32 +00:00
yukkop e74ef30dc6 fix(lib): shell: remove unneccessary ''$ 2025-07-18 03:23:25 +00:00
yukkop 3516d24868 fix(nixos): module: user 2025-07-17 16:53:48 +00:00
yukkop 92def64fea feat(lib): shell: +check-tool 2025-07-17 16:22:31 +00:00
yukkop be3aab9b48 fix(lib): logs: mkdir error work around 2025-07-17 16:17:43 +00:00
yukkop 5cac466f90 feat(nixos): module: +user.yukkop 2025-07-17 16:10:04 +00:00
yukkop 8cbfdcc0ea refactor: consistence 2025-07-17 16:00:59 +00:00
yukkop 3d0fd7a030 refactor: pull out flake devshells 2025-07-17 15:48:20 +00:00
yukkop 33422320a5 refactor: pull out flake packages 2025-07-17 15:28:29 +00:00
yukkop 23d9db27e6 refactor: pull out systems 2025-07-17 15:21:06 +00:00
yukkop 20dcbdfdc4 feat: modules 2025-07-17 13:37:33 +00:00
yukkop 8fb996501c feat: shell modules 2025-07-16 06:36:27 +00:00
yukkop b433fd7ea0 feat: +some python packages 2025-07-06 22:12:14 +00:00
yukkop f0596784a1 feat: remove vmw_pvscsi on aarch64-linux 2025-07-05 23:24:58 +00:00
yukkop 5670f11510 feat(package): slpt: jq dependency 2025-07-03 01:21:44 +00:00
yukkop 0db6ce3dd4 feat(package): update slpt 2025-07-02 16:08:30 +00:00
yukkop 2c16cebf9a feat(package) add slpt 2025-07-01 02:26:34 +00:00
yukkop 497213a2ea fix(package): bolt-unpack update nodejs_22 2025-06-30 23:48:14 +00:00
yukkop c73c887a9c Merge branch 'master' of github.com:hectic-lab/util.nix 2025-06-30 21:00:04 +00:00
yukkop f7fda629f5 refactor: move to nixpkgs 25.05 2025-06-30 20:43:38 +00:00
yukkop 5e112f5df8 fix: plsh 2025-06-30 16:31:04 +00:00
yukkop 510c350b7a fix: remove broken haskell 2025-06-30 16:24:56 +00:00
yukkop 8a13b8c8fd feat: plsh 2025-06-30 16:06:43 +00:00
yukkop 0ab2061776 feat: aliases to system preset 2025-06-11 22:38:54 +00:00
yukkop 8631eac0d4 chore: pager AnsiEsc 2025-06-11 22:25:34 +00:00
yukkop 9c8a3790c5 feat: find a way separate pg extension from overlay 2025-05-22 11:57:09 +00:00
yukkop 70253c9a3a done 2025-05-21 20:00:02 +00:00
yukkop 3b7c4d71e7 checkpoint 2025-05-21 19:50:47 +00:00
yukkop d1b0d7154d test: hemar: fix parse tests according code cahnges 2025-05-19 14:36:37 +00:00
yukkop 7ce48d75f8 fix: hemar: EBUCHIE WHITESPACЫ 2025-05-19 13:59:26 +00:00
yukkop 6c953563d0 fix: hemar: section whitespaces checkpoint 2025-05-19 11:07:10 +00:00
yukkop ef314495ba fix: hemar: include object does not exists 2025-05-18 20:18:54 +00:00
yukkop 1b1deaf721 test: hemar: test all at once 2025-05-18 19:58:04 +00:00
yukkop 746779e952 feat: hemar: included tag 2025-05-18 18:51:21 +00:00
yukkop 5cabf6c04d fix: hemar: section implimentation 2025-05-18 13:20:57 +00:00
yukkop 3493c14686 feat: hemar: section checkpoint 2025-05-18 10:27:38 +00:00
yukkop 19ea8992a0 fix: hemar: jsonb_value_by_path string copy 2025-05-17 17:59:10 +00:00
yukkop a17a20b7d6 chore: hemar: more logs for god of logs 2025-05-17 15:56:46 +00:00
yukkop eabfbbdc95 feat: hemar: separate jsonb_get_by_path form postgresql 2025-05-17 14:30:18 +00:00
yukkop 86d30ea494 chore: forgoten changes 2025-05-17 14:13:11 +00:00
yukkop bcc755d325 test: exec 2025-05-17 13:39:40 +00:00
yukkop 6a2f7cd1fa test: hemar: more tests for god of tests 2025-05-16 01:18:01 +00:00
yukkop 39495115a2 feat: hemar: exec handle the {{ }} inside 2025-05-16 00:37:30 +00:00
yukkop f0d7ca60fe fix: hemar: parser 2025-05-16 00:30:11 +00:00
yukkop 725f6eea30 test: hemar: puh 2025-05-15 23:57:18 +00:00
yukkop 421cc6e870 test: hemar: +20 tests for parsing 2025-05-15 18:54:56 +00:00
yukkop 653330dd48 test: hemar: +10 complex tests 2025-05-15 17:53:45 +00:00
yukkop 54684c0f78 feat: find element in jsonb by path is works!!! 2025-05-15 17:48:28 +00:00
yukkop c28e7fcfd5 feat!: vpizdu 2025-05-15 15:33:53 +00:00
yukkop a770215f0c feat: hemar: handling [] in path 2025-05-14 21:52:01 +00:00
yukkop b3172edbd7 feat: something 2025-05-14 21:30:16 +00:00
yukkop 83029b52ea feat: array with objects 2025-05-14 18:56:42 +00:00
yukkop 56fa799d53 fix: more parsing errors handling, section body fix 2025-05-14 14:09:48 +00:00
yukkop e9ba38f4eb feat!: to the moon 2025-05-14 12:15:45 +00:00
yukkop bcb8afbbf4 feat!: one more checkpoint 2025-05-13 21:56:27 +00:00
yukkop 598eae7e71 feat!: better? 2025-05-13 21:41:37 +00:00
yukkop e260e8f7cc feat!: some section parse issue 2025-05-13 15:44:55 +00:00
yukkop 7f58985c41 refactor: gemar grand rework 2025-05-13 12:12:57 +00:00
yukkop 88327be038 fix: hemar & hectic: nothing 2025-05-13 02:30:15 +00:00
yukkop 609bae352f fix: hemar: unbeliveble, without memmory error? not true 2025-05-13 01:15:43 +00:00
yukkop 5f52fc42af feat!: many work useles with hemar 2025-05-10 11:00:36 +00:00
yukkop 4db5cc171b fix: hectic C: template parse sections 2025-05-04 19:33:52 +00:00
yukkop 9b045b71f9 fix: hectic C: template parse 2025-05-04 13:49:29 +00:00
yukkop e800f11103 refactor: hemar: logs 2025-04-24 00:37:03 +00:00
yukkop e55437b856 feat: hel -> hemar--amend 2025-04-23 12:47:28 +00:00
yukkop cda46a7e13 feat: static page for fun 2025-04-23 12:37:32 +00:00
yukkop cc7de6c0dd feat hectic C: logger log in file 2025-04-23 01:04:49 +00:00
yukkop e25190422b feat hectic C: no asan option 2025-04-22 15:09:47 +00:00
zerosummed 016db3d06a feat(package): +support-bot 2025-04-22 10:00:33 +03:00
yukkop 286555e026 feat: wrapper for pg_dump 2025-04-22 01:13:23 +00:00
yukkop dc93bada89 feat: wrapper for pg_dumpall 2025-04-22 00:44:52 +00:00
yukkop 8857835409 refactor: hectic C: static-asan 2025-04-20 13:38:16 +00:00
yukkop 30778b1955 refactor: hectic C: perfavor 2025-04-20 13:32:22 +00:00
yukkop 791ff77e14 refactor: hectic C: libhectic.so -> hectic.so 2025-04-20 09:57:32 +00:00
yukkop 17acafd50a fix: hel: anus linking 2025-04-20 00:33:34 +00:00
yukkop 7ddceab11c build: hectic C: shared library in build 2025-04-19 23:44:39 +00:00
yukkop 0abd4fc70e fix: hectic: lib building 2025-04-19 23:23:09 +00:00
yukkop f97e451af1 fix: hel: Makefile LIBS 2025-04-19 23:10:13 +00:00
yukkop a9d64fe059 feat: hel: c89... 2025-04-19 23:04:29 +00:00
yukkop 62abe7b846 feat: hel: "" -> <> 2025-04-19 22:38:58 +00:00
yukkop 0c58befc43 feat: hecitc C: add hectic-config 2025-04-19 22:05:56 +00:00
yukkop 2229cf072b feat: hel: render without execute 2025-04-19 20:30:00 +00:00
yukkop 10a0a08dcd fix: overlay postgres extensions 2025-04-19 02:39:10 +00:00
zerosummed 60d977110c fix?(package): postgreact: ~stir the stupid shit till it works [3] 2025-04-18 21:37:23 +03:00
zerosummed aec4876832 fix?(package): postgreact: ~stir the stupid shit till it works [2] 2025-04-17 07:06:34 +03:00
zerosummed 90f588843a fix?(package): postgreact: ~stir the stupid shit till it works [1] 2025-04-17 07:06:31 +03:00
zerosummed fb8fa34ff2 fix?(package): postgreact 2025-04-17 06:22:21 +03:00
zerosummed 29ff6989e5 style: ~apply alejandra 2025-04-17 03:57:54 +03:00
zerosummed 3dfe3d61f6 refactor: postgreact: ~file modes, control file 2025-04-17 03:46:53 +03:00
yukkop e607bf09fa feat: postgreact: hello world 2025-04-15 20:05:53 +00:00
yukkop 1612799fb7 Merge branch 'master' of github.com:hectic-lab/util.nix 2025-04-15 17:04:12 +00:00
yukkop 5055983881 test: hectic C!: templater sectin 2025-04-15 17:03:15 +00:00
yukkop 1da02a7ad6 test: hectic C: templater interpolation 2025-04-15 16:33:49 +00:00
yukkop 6b8e825a4b feat: hectic C: prettify debug strings 2025-04-15 15:53:39 +00:00
yukkop ba6ec7a113 feat: +plhaskell package 2025-04-15 05:51:37 +00:00
yukkop 8697b00cfc feat: hectic C: some sigfault 2025-04-15 04:54:31 +00:00
yukkop d45307336a feat: hectic C: debug to json parser 2025-04-14 19:43:57 +00:00
yukkop 1dcb165abf fix: hectic C: union debug string constructor 2025-04-14 17:27:32 +00:00
yukkop abf1e706b7 feat: hectic C: union in debug string constructor 2025-04-14 16:28:16 +00:00
yukkop 807ea83892 fix: hectic C: impruve cycle detection for debug strig constructor 2025-04-13 23:13:28 +00:00
yukkop 267d0ec464 refactor: hectic C: logger rules and results 2025-04-13 19:38:11 +00:00
yukkop 2f6806185d feat: hectic C: template node debug, but union issue in debug string constructor 2025-04-12 18:25:25 +00:00
yukkop 8981af315c test: hectic C: fix logger test 2025-04-12 15:38:06 +00:00
yukkop 1f25c4fcad feat: hectic C: generic result 2025-04-12 15:21:33 +00:00
yukkop db5b88388e test: hectic C: debug constructor 2025-04-12 01:38:40 +00:00
yukkop 2cb814f054 feat: hectic C: debug constructor impruve 2025-04-12 01:07:20 +00:00
yukkop d7bdc0722f feat: hectic C: debug constructor wroks!!! 2025-04-11 22:34:43 +00:00
yukkop 80eac39b90 feat: hectic C: debug string constructor init 2025-04-11 10:33:20 +00:00
yukkop de08900297 fix: hectic C: template parser config 2025-04-10 14:26:21 +00:00
yukkop b3d040d6fd feat: hectic C: template parser, template to json 2025-04-09 19:52:43 +00:00
yukkop 7c82a5a866 docs: hectic C: macro for reduse boilerplane with code position 2025-04-07 22:55:37 +00:00
yukkop cda65a56eb docs: hectic C: types for template parser 2025-04-07 22:44:05 +00:00
yukkop d04a78de23 feat: hectic C: logging settings 2025-04-07 16:54:26 +00:00
yukkop 98a26f1f61 fix: hectic C: impruve logging guidelines 2025-04-07 05:26:30 +00:00
yukkop 11150151f9 fix: hectic C: impruve logging 2025-04-06 19:18:14 +00:00
yukkop bfb69b06ea fix: hmpl: section blocks 2025-04-06 15:51:21 +00:00
yukkop f151438969 feat: hectic C: debug print 2025-04-06 15:17:26 +00:00
yukkop 14c246de3e feat: hmpl: section test passeeed 2025-04-05 21:31:35 +00:00
yukkop 42f8e839d1 refactor: change packages names 2025-04-05 19:09:13 +00:00
yukkop 686344e356 feat: some python packages 2025-04-05 17:04:29 +00:00
yukkop 34c798b222 fix: c: log colorized with terminal mode 2025-04-04 14:13:54 +00:00
yukkop d5ef2bf551 feat: c: log colorized 2025-04-04 14:07:17 +00:00
yukkop 7258adbcc2 fix: hectic C: func definitions 2025-04-04 02:26:55 +00:00
yukkop c5e9d9c8cb feat: watch: try pager mode.. 2025-04-04 02:09:43 +00:00
yukkop d800266fe0 feat: some nix shit 2025-04-04 01:59:57 +00:00
yukkop 5ab0833d78 feat: watch: paterns 2025-04-03 22:57:55 +00:00
yukkop d680e080ad feat: watch: init 2025-04-03 22:34:50 +00:00
yukkop 35db5e4bf6 test(hectic C): slice 2025-03-27 21:07:00 +00:00
yukkop 3bb2b23be5 refactor(hmpl): fix warnings 2025-03-24 19:27:11 +00:00
yukkop 4280f0df95 refactor(hectic C): fix warnings 2025-03-24 14:21:00 +00:00
yukkop d39ed7f9fe refactor(hmpl,hectic): warnings 2025-03-24 13:36:31 +00:00
yukkop 972e2d2968 refactor(hmpl): eval 2025-03-22 19:45:17 +00:00
yukkop f64636fe9e test(hmpl): render interpolation tags with prefix 2025-03-22 15:08:48 +00:00
yukkop 546a35f1d2 test(hmpl): render interpolation tags 2025-03-22 14:56:03 +00:00
yukkop aeea41b0e1 fix: json eval 2025-03-22 04:15:58 +00:00
yukkop 27e42e9010 fix: segfalt in json_get_object_item 2025-03-22 03:18:34 +00:00
yukkop bcaca5038d feat(hectic C): json api 2025-03-22 01:22:36 +00:00
yukkop aff923d470 refactor(hmpl): rewrite via arenas 2025-03-21 15:29:00 +00:00
yukkop 06e5fdf1ab fix(hmpl): memory leak 2025-03-21 13:33:01 +00:00
yukkop c4d14e5aa2 feat(hmpl): render simple placeholder with memory leak of course 2025-03-21 04:00:23 +00:00
yukkop 9438280750 fix(libhectic): arena allocators 2025-03-21 02:54:47 +00:00
yukkop 4f2391e9b5 feat(libhectic): arenas 2025-03-21 01:53:02 +00:00
yukkop 647155f859 test: fix: test raise generic 2025-03-20 18:47:44 +00:00
yukkop c91b52b448 Merge branch 'master' of github.com:hectic-lab/util.nix 2025-03-20 18:16:04 +00:00
yukkop 18b36e43b7 test: libhectic 2025-03-20 18:15:52 +00:00
zerosummed c22a769e50 feat!: makeEnvironment: +strip prefix, ~rename to readEnvironment 2025-03-20 14:00:10 +03:00
yukkop a7e754f48d feat: min C writer 2025-03-19 01:44:19 +00:00
yukkop 1f1f3c7211 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 3f9d8902d5 feat: C writer 2025-03-19 01:09:47 +00:00
yukkop 58fc204f46 feat(c): extrude lib c 2025-03-12 23:19:45 +01:00
yukkop cbba9016cd refactor: stir some shit around again 2025-03-07 00:40:00 +00:00
yukkop 0bd5bb65f6 refector(pg-neo-migration): stir some shit around trust me it's fine 2025-03-06 16:07:53 +01:00
yukkop cc7bd6b1a2 feat(pg-neo-migration): init 2025-03-05 19:13:00 +00:00
yukkop e8e2890171 feat(pg-schema): init 2025-03-02 10:48:52 +00:00
yukkop 4d1c210986 fix(pg-migration): db_url fetch 2025-02-16 17:21:02 +00:00
yukkop 3e790cd18a fix(pg-migration): postgres build inputs 2025-02-16 17:03:59 +00:00
yukkop d02f559635 feat(pg-migration): variable providing for migrations 2025-02-16 15:58:31 +00:00
yukkop f3bbbeb12d feat: inheritance for migration table 2025-02-16 14:21:20 +00:00
yukkop c3cdf9858a feat: postgres extension pg_smtp_client 2025-02-16 10:32:37 +00:00
zerosummed 7cc4c6292b fix: nix check errors 2025-02-14 21:27:48 +03:00
zerosummed e1c484b1c0 style: format (alejandra) 2025-02-14 21:06:51 +03:00
7 changed files with 80 additions and 105 deletions
+20 -24
View File
@@ -18,30 +18,26 @@
]; ];
adminNames = [ "yukkop" ]; adminNames = [ "yukkop" ];
cfg = config.hectic.generic.matrix-cluster;
in { in {
config = lib.mkIf cfg.enable { hectic.generic.matrix-cluster.users = builtins.listToAttrs (
hectic.generic.matrix-cluster.users = builtins.listToAttrs ( map (name: {
map (name: { inherit name;
inherit name; value = {
value = { passwordFile = config.sops.secrets."matrix/users/${name}/password".path;
passwordFile = config.sops.secrets."matrix/users/${name}/password".path; } // lib.optionalAttrs (builtins.elem name adminNames) {
} // lib.optionalAttrs (builtins.elem name adminNames) { admin = true;
admin = true; };
}; }) userNames
}) userNames );
);
sops.secrets = builtins.listToAttrs ( sops.secrets = builtins.listToAttrs (
map (name: { map (name: {
name = "matrix/users/${name}/password"; name = "matrix/users/${name}/password";
value = { value = {
key = "matrix/users/${name}/password"; key = "matrix/users/${name}/password";
owner = "matrix-synapse"; owner = "matrix-synapse";
sopsFile = "${flake}/sus/matrix-cluster.yaml"; sopsFile = "${flake}/sus/matrix-cluster.yaml";
}; };
}) userNames }) userNames
); );
}
} }
+3 -16
View File
@@ -10,21 +10,9 @@
... ...
}: 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}$")
@@ -53,23 +41,22 @@ in {
}; };
device = lib.mkOption { device = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = if isNewer then "/dev/nvme0n1" else "/dev/sda"; default = "/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|eth0)$"; type = lib.types.strMatching "^(enp1s0|ens3)$";
example = "enp1s0"; example = "enp1s0";
description = '' description = ''
type of network conection, type of network conection,
on older hetzner servers may be `ens3` or else on older hetzner servers may be `ens3`
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.zomro; cfg = config.hectic.hardware.zombro;
in { in {
options.hectic.hardware.zomro = { options.hectic.hardware.zombro = {
enable = lib.mkEnableOption "Enable zomro hardware configurations"; enable = lib.mkEnableOption "Enable zombro 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 zomro device /dev/vda - default zombro 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
''; '';
+4 -7
View File
@@ -10,15 +10,12 @@
... ...
}: let }: let
legacyCfg = config.hectic.services.matrix; legacyCfg = config.hectic.services.matrix;
hasClusterCfg = config.hectic ? generic && config.hectic.generic ? matrix-cluster; clusterCfg = config.hectic.generic.matrix-cluster;
clusterCfg = if hasClusterCfg then config.hectic.generic.matrix-cluster else null;
clusterSynapseEnabled = clusterSynapseEnabled =
if hasClusterCfg clusterCfg.enable
then clusterCfg.enable && (if clusterCfg.overrideEnableSynapse != null then clusterCfg.overrideEnableSynapse else clusterCfg.role == "primary");
&& (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 if hasClusterCfg then clusterCfg.matrixDomain else ""; matrixDomain = if legacyCfg.enable then legacyCfg.matrixDomain else clusterCfg.matrixDomain;
in { in {
config = lib.mkIf enabled (let config = lib.mkIf enabled (let
keyFile = "/run/livekit.key"; keyFile = "/run/livekit.key";
+5 -8
View File
@@ -10,19 +10,16 @@
... ...
}: let }: let
legacyCfg = config.hectic.services.matrix; legacyCfg = config.hectic.services.matrix;
hasClusterCfg = config.hectic ? generic && config.hectic.generic ? matrix-cluster; clusterCfg = config.hectic.generic.matrix-cluster;
clusterCfg = if hasClusterCfg then config.hectic.generic.matrix-cluster else null;
clusterSynapseEnabled = clusterSynapseEnabled =
if hasClusterCfg clusterCfg.enable
then clusterCfg.enable && (if clusterCfg.overrideEnableSynapse != null then clusterCfg.overrideEnableSynapse else clusterCfg.role == "primary");
&& (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 if hasClusterCfg then clusterCfg.matrixDomain else ""; matrixDomain = if legacyCfg.enable then legacyCfg.matrixDomain else clusterCfg.matrixDomain;
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 if hasClusterCfg then clusterCfg.jitsi.preferredDomain else null; else clusterCfg.jitsi.preferredDomain;
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,26 +16,6 @@ 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;
@@ -111,24 +91,6 @@ 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 = [
@@ -158,10 +120,43 @@ 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 = builtins.listToAttrs (map mkMailLoginAccount mailUserNames); loginAccounts = {
"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;
@@ -201,6 +196,10 @@ 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
@@ -258,9 +257,8 @@ 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;
@@ -274,6 +272,8 @@ 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";
+2 -4
View File
@@ -5,8 +5,6 @@ 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:
@@ -77,7 +75,7 @@ sops:
Yk43ZmlTc09aNFV1VjdjN2RWQlFWTDQKcYSvA2lHP8GS0lkYY19Tm8RXmFHQX5Ck Yk43ZmlTc09aNFV1VjdjN2RWQlFWTDQKcYSvA2lHP8GS0lkYY19Tm8RXmFHQX5Ck
qV2Fn22Fic4M5FVKDEMfaO6WmeXgki9a8dGeO9LlC+Phf16SOq7eLw== qV2Fn22Fic4M5FVKDEMfaO6WmeXgki9a8dGeO9LlC+Phf16SOq7eLw==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2026-05-31T17:04:00Z" lastmodified: "2026-05-27T12:36:35Z"
mac: ENC[AES256_GCM,data:wkOHWvNXw3Cfh5ettROAstBdqNj2q5vna4LyOrhkyko4x4U+RhMDghUhtVy/AS48hX2yf5w13eIub/+10jm+HGxw70KA9LK9JuqsjdX8/IpJgWD52/ueZu+iO+dGGCXHLtu2ufWXwuqYAF0ea2sfQygChfhBclgNXYdmnJeOycQ=,iv:/i/0OGCziRYZodT0+dP72wzPV6lsKjieJavp/9LQXj0=,tag:OsM0Qy9o0wzmcgCNr6Bo0Q==,type:str] mac: ENC[AES256_GCM,data:dqVqDqMRJFVhT78mO8q+X+Mf4TUqxY4ApOdkMAF9bvyvPAPW7kxbKEvn9H5LBDev9CNxfNF9siqaa7aEdATM6ylhrcWPdzPN04LorojdMNRQy/WFQ0rB1Lz1RrIvwltQD5K8RSPFCWWtF8rhqVTGdFafwCWpdmuKTx0HEPNXsPY=,iv:cWHx326j4aycz17N+q2NNqq0VwfeupmOiPdAtZRz7ws=,tag:LOKuvivMogAGQoVlSTu/vg==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.10.2 version: 3.10.2