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" ];
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 (
map (name: {
name = "matrix/users/${name}/password";
value = {
key = "matrix/users/${name}/password";
owner = "matrix-synapse";
sopsFile = "${flake}/sus/matrix-cluster.yaml";
};
}) userNames
);
cfg = config.hectic.generic.matrix-cluster;
in {
config = lib.mkIf cfg.enable {
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 (
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
cfg = config.hectic.hardware.hetzner-cloud;
isNewer = cfg.generation == "newer";
in {
options.hectic.hardware.hetzner-cloud = {
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 {
# type = with lib.types; nullOr oneOf [
# (lib.types.strMatching "^[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}$")
@@ -41,22 +53,23 @@ in {
};
device = lib.mkOption {
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";
description = ''
boot device uuid
if it is null then will use "/dev/sda"
/dev/sda - default hetzner cloud device
/dev/nvme0n1 - default for newer Hetzner generations
!! But can changes on reboot if server have volumes
!! So use IDs
'';
};
networkMatchConfigName = lib.mkOption {
type = lib.types.strMatching "^(enp1s0|ens3)$";
type = lib.types.strMatching "^(enp1s0|ens3|eth0)$";
example = "enp1s0";
description = ''
type of network conection,
on older hetzner servers may be `ens3`
on older hetzner servers may be `ens3` or else
on newer probably `enp1s0`
you can use `networkctl list` on server to know it
@@ -9,10 +9,10 @@
config,
...
}: let
cfg = config.hectic.hardware.zombro;
cfg = config.hectic.hardware.zomro;
in {
options.hectic.hardware.zombro = {
enable = lib.mkEnableOption "Enable zombro hardware configurations";
options.hectic.hardware.zomro = {
enable = lib.mkEnableOption "Enable zomro hardware configurations";
device = lib.mkOption {
type = lib.types.str;
default = "/dev/vda";
@@ -20,7 +20,7 @@ in {
description = ''
boot device uuid
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
!! So use IDs
'';
+7 -4
View File
@@ -10,12 +10,15 @@
...
}: let
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 =
clusterCfg.enable
&& (if clusterCfg.overrideEnableSynapse != null then clusterCfg.overrideEnableSynapse else clusterCfg.role == "primary");
if hasClusterCfg
then clusterCfg.enable
&& (if clusterCfg.overrideEnableSynapse != null then clusterCfg.overrideEnableSynapse else clusterCfg.role == "primary")
else false;
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 {
config = lib.mkIf enabled (let
keyFile = "/run/livekit.key";
+8 -5
View File
@@ -10,16 +10,19 @@
...
}: let
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 =
clusterCfg.enable
&& (if clusterCfg.overrideEnableSynapse != null then clusterCfg.overrideEnableSynapse else clusterCfg.role == "primary");
if hasClusterCfg
then clusterCfg.enable
&& (if clusterCfg.overrideEnableSynapse != null then clusterCfg.overrideEnableSynapse else clusterCfg.role == "primary")
else false;
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 =
if legacyCfg.enable && config.hectic.services.jitsi.enable
then config.hectic.services.jitsi.hostName
else clusterCfg.jitsi.preferredDomain;
else if hasClusterCfg then clusterCfg.jitsi.preferredDomain else null;
in {
config = lib.mkIf enabled {
services.nginx.virtualHosts."element.${matrixDomain}" = {
+42 -42
View File
@@ -16,6 +16,26 @@ with lib;
let
domain = "hectic-lab.com";
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 = {
sslCertificate = config.sops.secrets."ssl/porkbun/${domain}/domain.cert.pem".path;
sslCertificateKey = config.sops.secrets."ssl/porkbun/${domain}/private.key.pem".path;
@@ -91,6 +111,24 @@ in {
gnupg.sshKeyPaths = [ ];
age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
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 = [
@@ -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 = {
enable = true;
domain = domain;
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;
};
};
loginAccounts = builtins.listToAttrs (map mkMailLoginAccount mailUserNames);
};
mailserver.stateVersion = 3;
@@ -196,10 +201,6 @@ in {
"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 = {
enable = true;
# NOTE(yukkop): virtualHosts.${domain} is owned by the hectic-landing module
@@ -257,8 +258,9 @@ in {
enable = true;
settings.service.DISABLE_REGISTRATION = false;
settings.server = {
HTTP_PORT = 11011;
SSH_PORT = 11012;
HTTP_PORT = 11011;
#SSH_PORT = 11012;
SSH_DOMAIN = "hectic-lab.com";
};
database = {
createDatabase = true;
@@ -272,8 +274,6 @@ in {
# === WireGuard (disabled) ===
sops.secrets."wg-bfs/private-key" = {};
# networking.wireguard.interfaces = let
# subnet = "10.13.37";
# 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]
daniil-perlyk:
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:
hashedPassword: ENC[AES256_GCM,data:E+Xu/Ul3rFLlYDD0LGGRnc6RADlWmXpOM2OfkZFSzAf5thm8leRi9x5sroP25cO8CcSyBcOiUCBv3RC5ooXklm4cmpOx8LA8ug==,iv:RLbU6SBHKOBRCNZ6naxQMaNjWZOlNui6OaaVM2QkdZs=,tag:sO7CD+PVkdtvPvlUrpzW+g==,type:str]
snuff:
@@ -75,7 +77,7 @@ sops:
Yk43ZmlTc09aNFV1VjdjN2RWQlFWTDQKcYSvA2lHP8GS0lkYY19Tm8RXmFHQX5Ck
qV2Fn22Fic4M5FVKDEMfaO6WmeXgki9a8dGeO9LlC+Phf16SOq7eLw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-05-27T12:36:35Z"
mac: ENC[AES256_GCM,data:dqVqDqMRJFVhT78mO8q+X+Mf4TUqxY4ApOdkMAF9bvyvPAPW7kxbKEvn9H5LBDev9CNxfNF9siqaa7aEdATM6ylhrcWPdzPN04LorojdMNRQy/WFQ0rB1Lz1RrIvwltQD5K8RSPFCWWtF8rhqVTGdFafwCWpdmuKTx0HEPNXsPY=,iv:cWHx326j4aycz17N+q2NNqq0VwfeupmOiPdAtZRz7ws=,tag:LOKuvivMogAGQoVlSTu/vg==,type:str]
lastmodified: "2026-05-31T17:04:00Z"
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
version: 3.10.2