Compare commits

...
Sign in to create a new pull request.

169 commits
dns ... master

Author SHA1 Message Date
sid
d61710ff2f Merge pull request 'librechat: replace openrouter with requesty' (#100) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 27s
Reviewed-on: #100
2026-05-25 20:18:17 +02:00
sid
19d60288b3 add requesty api key
All checks were successful
Flake check / flake-check (pull_request) Successful in 18s
Build hosts / build-hosts (pull_request) Successful in 30s
2026-05-25 20:15:44 +02:00
sid
51fed84b2a librechat: replace openrouter with requesty
Some checks failed
Build hosts / build-hosts (pull_request) Failing after 21s
Flake check / flake-check (pull_request) Failing after 23s
2026-05-25 12:38:30 +02:00
sid
34be1c2ed1 Merge pull request 'netdata: trying host path 302' (#99) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 21s
Reviewed-on: #99
2026-05-23 12:37:07 +02:00
sid
3bc424eeee netdata: host path fix
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 17s
Flake check / flake-check (pull_request) Successful in 17s
2026-05-23 12:36:24 +02:00
sid
612ea64ae9 netdata: trying host path 302
Some checks failed
Build hosts / build-hosts (pull_request) Failing after 13s
Flake check / flake-check (pull_request) Failing after 19s
2026-05-23 12:32:46 +02:00
sid
a1d4425b3d Merge pull request 'netdata: rm host path' (#98) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 23s
Reviewed-on: #98
2026-05-23 12:27:37 +02:00
sid
24fe9cf6d0 netdata: rm host path
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 18s
Flake check / flake-check (pull_request) Successful in 20s
2026-05-23 12:25:37 +02:00
sid
f61aa8d878 Merge pull request 'netdata: proxy child nodes' (#97) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 29s
Reviewed-on: #97
2026-05-23 12:20:04 +02:00
sid
b6194de7bd netdata: proxy child nodes
All checks were successful
Flake check / flake-check (pull_request) Successful in 21s
Build hosts / build-hosts (pull_request) Successful in 24s
2026-05-23 12:18:21 +02:00
sid
6336814052 Merge pull request 'disable loki and promtail' (#96) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 35s
Reviewed-on: #96
2026-05-22 21:32:08 +02:00
sid
1b7f7cbcad disable loki and promtail
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 23s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-22 21:30:48 +02:00
sid
c43269fad6 Merge pull request 'netdata: ui should only be reachable inside tailnet' (#95) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 39s
Reviewed-on: #95
2026-05-22 21:28:28 +02:00
sid
6841256705 netdata: override acme host defaults
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 19s
Flake check / flake-check (pull_request) Successful in 19s
2026-05-22 21:27:58 +02:00
sid
84d04fa1ad netdata: make ui available in tailnet
Some checks failed
Build hosts / build-hosts (pull_request) Failing after 9s
Flake check / flake-check (pull_request) Failing after 7s
2026-05-22 21:23:54 +02:00
sid
eac7803895 netdata: ui should only be reachable inside tailnet
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 18s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-22 21:17:28 +02:00
sid
b9cdd8d6a5 Merge pull request 'netdata: also proxy version.txt' (#94) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 28s
Reviewed-on: #94
2026-05-22 21:15:31 +02:00
sid
69d12812df netdata: also proxy version.txt
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 21s
Flake check / flake-check (pull_request) Successful in 20s
2026-05-22 21:14:48 +02:00
sid
8ff1397a8d Merge pull request 'netdata: add old ui' (#93) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 34s
Reviewed-on: #93
2026-05-22 21:06:14 +02:00
sid
ac4e31bb7d netdata: add old ui
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 19s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-22 21:05:07 +02:00
sid
a239dfc137 Merge pull request 'finally free again' (#92) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 55s
Reviewed-on: #92
2026-05-22 20:42:28 +02:00
sid
5ee15884b4 finally free again
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 18s
Flake check / flake-check (pull_request) Successful in 20s
2026-05-22 20:41:42 +02:00
sid
0c8bea1863 Merge pull request 'netdata: add systemd-journal' (#91) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 31s
Reviewed-on: #91
2026-05-22 20:19:59 +02:00
sid
3b335c6ba4 netdata: add systemd-journal
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 19s
Flake check / flake-check (pull_request) Successful in 28s
2026-05-22 20:17:55 +02:00
sid
c3a9663942 Merge pull request 'loki: add apiVersion' (#90) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 35s
Reviewed-on: #90
2026-05-22 20:11:32 +02:00
sid
f2ebf66262 loki: add apiVersion
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 21s
Flake check / flake-check (pull_request) Successful in 22s
2026-05-22 20:09:24 +02:00
sid
530c05c78e Merge pull request 'loki: add best practices' (#89) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 1m18s
Reviewed-on: #89
2026-05-22 20:03:31 +02:00
sid
476939b9b5 loki: add best practices
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 18s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-22 20:00:00 +02:00
sid
faab3f5d55 Merge pull request 'grafana: add logs dashboard' (#88) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 1m50s
Reviewed-on: #88
2026-05-22 19:21:36 +02:00
sid
e6bfb11be0 grafana: add logs dashboard
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 22s
Flake check / flake-check (pull_request) Successful in 45s
2026-05-22 19:20:36 +02:00
sid
f4b5ffff8a Merge pull request 'grafana: add anonymous auth' (#87) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 26s
Reviewed-on: #87
2026-05-22 19:17:27 +02:00
sid
e0f0581d27 grafana: add anonymous auth
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 21s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-22 19:16:45 +02:00
sid
9a7f3bcb7a Merge pull request 'replace journald witrh loki+promtail' (#86) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 54s
Reviewed-on: #86
2026-05-22 19:12:22 +02:00
sid
4da48d5f99 replace journald witrh loki+promtail
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 20s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-22 19:10:46 +02:00
sid
ed731549f9 Merge pull request 'librechat: TODO add cohere rerank' (#85) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 39s
Reviewed-on: #85
2026-05-22 19:00:04 +02:00
sid
ded81c4cdd librechat: TODO add cohere rerank
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 22s
Flake check / flake-check (pull_request) Successful in 22s
2026-05-22 18:52:41 +02:00
sid
155d976048 Merge pull request 'librechat: add searxng' (#84) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 27s
Reviewed-on: #84
2026-05-19 22:49:02 +02:00
sid
974f11c881 librechat: add searxng
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 21s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-19 22:48:22 +02:00
sid
18e8558ded Merge pull request 'librechat: add config file' (#83) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 27s
Reviewed-on: #83
2026-05-19 22:32:04 +02:00
sid
d051ec20c3 librechat: add config file
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 21s
Flake check / flake-check (pull_request) Successful in 20s
2026-05-19 22:30:25 +02:00
sid
40c109c397 Merge pull request 'librechat: add openrouter api key' (#82) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 23s
Reviewed-on: #82
2026-05-19 21:56:45 +02:00
sid
e988008e97 librechat: fix secrets typo
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 19s
Flake check / flake-check (pull_request) Successful in 20s
2026-05-19 21:55:24 +02:00
sid
3dca169832 librechat: fix secrets typo
Some checks failed
Build hosts / build-hosts (pull_request) Failing after 6s
Flake check / flake-check (pull_request) Failing after 6s
2026-05-19 21:54:40 +02:00
sid
e693ba0340 librechat: add openrouter api key
Some checks failed
Build hosts / build-hosts (pull_request) Failing after 6s
Flake check / flake-check (pull_request) Failing after 6s
2026-05-19 21:54:01 +02:00
sid
cfa02b942e Merge pull request 'update synix input' (#81) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 28s
Reviewed-on: #81
2026-05-19 21:26:08 +02:00
sid
04e1748ef9 update synix input
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 22s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-19 21:25:58 +02:00
sid
9a8eea4916 Merge pull request 'new librechat api' (#80) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 2m26s
Reviewed-on: #80
2026-05-19 21:07:37 +02:00
sid
47f63fba59 librechat: fix secrets
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 18s
Flake check / flake-check (pull_request) Successful in 19s
2026-05-19 21:06:31 +02:00
sid
e4a429ebe6 revert to old api
Some checks failed
Build hosts / build-hosts (pull_request) Failing after 9s
Flake check / flake-check (pull_request) Failing after 19s
2026-05-19 21:03:12 +02:00
sid
afb49c7407 new librechat api
Some checks failed
Build hosts / build-hosts (pull_request) Failing after 1s
Flake check / flake-check (pull_request) Failing after 1s
2026-05-19 20:59:18 +02:00
sid
77f56d4dda Merge pull request 'librechat: add jwt tokens' (#79) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 32s
Reviewed-on: #79
2026-05-19 19:50:33 +02:00
sid
d038353260 librechat: add jwt tokens
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 19s
Flake check / flake-check (pull_request) Successful in 20s
2026-05-19 19:43:48 +02:00
sid
96da0f0dc5 Merge pull request 'update synix input' (#78) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 48s
Reviewed-on: #78
2026-05-19 19:33:50 +02:00
sid
f97186cefc update synix input
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 22s
Flake check / flake-check (pull_request) Successful in 20s
2026-05-19 19:32:47 +02:00
sid
d399a0a0e1 Merge pull request 're-enable librechat' (#77) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 26s
Reviewed-on: #77
2026-05-19 18:54:21 +02:00
sid
966a4c473a re-enable librechat
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 19s
Flake check / flake-check (pull_request) Successful in 20s
2026-05-19 18:50:14 +02:00
sid
5773db28b2 Merge pull request 'develop' (#75) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 24s
Reviewed-on: #75
2026-05-19 18:49:40 +02:00
sid
35df4f1551 rm journald-remote for now
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 21s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-19 18:48:43 +02:00
sid
7e4f2a1a07 remove AGENTS.md 2026-05-19 14:26:44 +02:00
sid
a9538ce62c Merge pull request 'journald-upload needs to wait for tailscaled' (#74) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 31s
Reviewed-on: #74
2026-05-19 14:13:15 +02:00
sid
00af06d380 fix journald upload service config
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 21s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-19 14:11:00 +02:00
sid
0c68ed16f7 journald-upload needs to wait for tailscaled
Some checks failed
Build hosts / build-hosts (pull_request) Failing after 1s
Flake check / flake-check (pull_request) Failing after 1s
2026-05-19 14:03:35 +02:00
sid
29f78f795e Merge pull request 'rm journald groups from user sid' (#73) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 26s
Reviewed-on: #73
2026-05-19 13:14:05 +02:00
sid
a5323520e2 rm journald groups from user sid
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 19s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-19 13:10:26 +02:00
sid
399347fb9e Merge pull request 'start systemd-journal-upload after tailscaled' (#72) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 49s
Reviewed-on: #72
2026-05-19 13:06:58 +02:00
sid
72265ffed7 start systemd-journal-upload after tailscaled
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 21s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-19 13:06:13 +02:00
sid
dab9d34778 Merge pull request 'disable librechat' (#71) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 20s
Reviewed-on: #71
2026-05-19 13:01:32 +02:00
sid
f6aca90009 disable librechat
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 20s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-19 13:00:26 +02:00
sid
d0e2933c9d Merge pull request 'add mcp log server via journald' (#70) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 24s
Reviewed-on: #70
2026-05-19 12:58:03 +02:00
sid
de573124ce add mcp log server via journald
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 19s
Flake check / flake-check (pull_request) Successful in 19s
2026-05-19 12:56:26 +02:00
sid
12cc2321f9 Merge pull request 'disable journald remote for now' (#69) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 25s
Reviewed-on: #69
2026-05-19 00:46:02 +02:00
sid
d6f7ce6d46 disable journald remote for now
All checks were successful
Flake check / flake-check (pull_request) Successful in 21s
Build hosts / build-hosts (pull_request) Successful in 24s
2026-05-19 00:43:49 +02:00
sid
31adac7360 Merge pull request 'develop' (#68) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 1m13s
Reviewed-on: #68
2026-05-19 00:39:09 +02:00
sid
6b4474e1ca streamline AGENTS.md
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 19s
Flake check / flake-check (pull_request) Successful in 19s
2026-05-19 00:26:45 +02:00
sid
aa51907812 add librechat-oci 2026-05-19 00:26:20 +02:00
sid
cc27c3bde4 add AGENTS.md 2026-05-18 21:50:20 +02:00
sid
5528581cb2 Merge pull request 'rm custom root ca. add remote journald' (#67) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 28s
Reviewed-on: #67
2026-05-18 20:47:35 +02:00
sid
949f403a20 rm custom root ca. add remote journald
All checks were successful
Flake check / flake-check (pull_request) Successful in 20s
Build hosts / build-hosts (pull_request) Successful in 24s
2026-05-18 20:40:38 +02:00
sid
482dcb31c8 Merge pull request 'open-webui: enable fetcher-mcp' (#66) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 23s
Reviewed-on: #66
2026-05-18 19:53:27 +02:00
sid
1410a59140 open-webui: enable fetcher-mcp
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 18s
Flake check / flake-check (pull_request) Successful in 20s
2026-05-18 19:52:38 +02:00
sid
6297b9ce37 Merge pull request 'add nixos mcp server' (#65) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 31s
Reviewed-on: #65
2026-05-18 18:46:51 +02:00
sid
2b621988e4 update synix input
All checks were successful
Flake check / flake-check (pull_request) Successful in 20s
Build hosts / build-hosts (pull_request) Successful in 35s
2026-05-18 18:45:44 +02:00
sid
9360ae4543 add nixos mcp server
Some checks failed
Build hosts / build-hosts (pull_request) Failing after 4s
Flake check / flake-check (pull_request) Failing after 4s
2026-05-18 18:42:52 +02:00
sid
3154607c4d Merge pull request 'fix vw smtp config' (#64) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 23s
Reviewed-on: #64
2026-05-17 23:26:07 +02:00
sid
c31744739f fix vw smtp config
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 21s
Flake check / flake-check (pull_request) Successful in 20s
2026-05-17 23:25:21 +02:00
sid
df9858f2d0 Merge pull request 'rm step-ca and coredns' (#63) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 27s
Reviewed-on: #63
2026-05-17 23:06:07 +02:00
sid
27492ea730 rm step-ca and coredns
All checks were successful
Flake check / flake-check (pull_request) Successful in 20s
Build hosts / build-hosts (pull_request) Successful in 24s
2026-05-17 23:01:56 +02:00
sid
be773ca03c Merge pull request 'develop' (#62) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 49s
Reviewed-on: #62
2026-05-17 22:46:28 +02:00
sid
5c8d94d03d change netdata fqdn
All checks were successful
Flake check / flake-check (pull_request) Successful in 21s
Build hosts / build-hosts (pull_request) Successful in 26s
2026-05-17 22:45:37 +02:00
sid
41ce9b892b rm coredns and step-ca. use hs extra dns records. resolve vaultwarden 2026-05-17 22:44:00 +02:00
sid
47abacc530 Merge pull request 'replace webdav with samba' (#60) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 27s
Reviewed-on: #60
2026-05-17 19:15:11 +02:00
sid
1bb2b7c194 replace webdav with samba
All checks were successful
Flake check / flake-check (pull_request) Successful in 18s
Build hosts / build-hosts (pull_request) Successful in 33s
2026-05-17 18:54:10 +02:00
sid
551cb97783 Merge pull request 'rss-bridge fork' (#59) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 24s
Reviewed-on: #59
2026-05-06 00:27:21 +02:00
sid
dab1a39866 add sha256 to rss-bridge overlay
All checks were successful
Flake check / flake-check (pull_request) Successful in 21s
Build hosts / build-hosts (pull_request) Successful in 23s
2026-05-06 00:25:32 +02:00
sid
6d2b166831 rss-bridge: overlay for fork 2026-05-06 00:24:44 +02:00
sid
cd1bf069bb Merge pull request 'add rss-bridge overlay' (#58) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 24s
Reviewed-on: #58
2026-05-05 23:49:36 +02:00
sid
14dbfbd222 rss-bridge: add extensions
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 18s
Flake check / flake-check (pull_request) Successful in 20s
2026-05-05 23:47:21 +02:00
sid
4d5a925716 add rss-bridge overlay
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 18s
Flake check / flake-check (pull_request) Successful in 18s
2026-05-05 23:40:02 +02:00
sid
5a10ff7451 Merge pull request 'disable rss-bridge overlay' (#57) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 23s
Reviewed-on: #57
2026-05-05 23:35:31 +02:00
sid
0be8c1c11a disable rss-bridge overlay
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 21s
Flake check / flake-check (pull_request) Successful in 22s
2026-05-05 23:33:43 +02:00
sid
f52ed3375b Merge pull request 'update synix input' (#56) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 26s
Reviewed-on: #56
2026-05-05 23:29:05 +02:00
sid
a5848b44b8 move rss-bridge to host sid
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 23s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-05 23:28:32 +02:00
sid
e3d05b8177 update synix input
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 19s
Flake check / flake-check (pull_request) Successful in 20s
2026-05-05 23:26:01 +02:00
sid
2679e4b938 Merge pull request 'deploy: replace .tail with tailnet ip' (#55) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 21s
Reviewed-on: #55
2026-05-05 23:18:10 +02:00
sid
e77bc847d1 deploy: replace .tail with tailnet ip
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 19s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-05 23:17:07 +02:00
sid
8206478faf Merge pull request 'remove comments from coredns config block' (#54) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 12s
Reviewed-on: #54
2026-05-05 23:15:16 +02:00
sid
34559deef6 remove comments from coredns config block
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 21s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-05 23:14:12 +02:00
sid
12954e5eb1 Merge pull request 'reordered coredns block' (#53) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 12s
Reviewed-on: #53
2026-05-05 23:13:29 +02:00
sid
745cd866ef reordered coredns block
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 18s
Flake check / flake-check (pull_request) Successful in 21s
2026-05-05 23:11:11 +02:00
sid
8677dfd342 Merge pull request 'overlay for rss-bridge v2025-06-03' (#52) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 12s
Reviewed-on: #52
2026-05-05 22:50:23 +02:00
sid
b3d8f80020 overlay for rss-bridge v2025-06-03
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 18s
Flake check / flake-check (pull_request) Successful in 18s
2026-05-05 22:48:30 +02:00
sid
01cddbba13 Merge pull request 'rss stuff back on rx4' (#51) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 24s
Reviewed-on: #51
2026-05-05 22:36:32 +02:00
sid
ed2f7e5773 rss stuff back on rx4
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 22s
Flake check / flake-check (pull_request) Successful in 24s
2026-05-05 22:35:46 +02:00
sid
b11dae39e4 Merge pull request 'rss-bridge now on unstable' (#50) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Has been cancelled
Reviewed-on: #50
2026-05-05 22:08:42 +02:00
sid
1e52acd2b8 rss-bridge now on unstable
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 36s
Flake check / flake-check (pull_request) Successful in 35s
2026-05-05 22:06:07 +02:00
sid
af0a423feb Merge pull request 'move rss services to sid' (#49) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 11s
Reviewed-on: #49
2026-05-05 20:19:03 +02:00
sid
f1d652f370 corrected port
All checks were successful
Flake check / flake-check (pull_request) Successful in 25s
Build hosts / build-hosts (pull_request) Successful in 28s
2026-05-05 20:13:49 +02:00
sid
da1e8d80ec removed double vhost on sid
Some checks failed
Build hosts / build-hosts (pull_request) Failing after 8s
Flake check / flake-check (pull_request) Failing after 6s
2026-05-05 19:31:56 +02:00
sid
43244fd370 move rss services to sid
Some checks failed
Flake check / flake-check (pull_request) Failing after 6s
Build hosts / build-hosts (pull_request) Failing after 10s
2026-05-05 19:08:32 +02:00
sid
ff2610a98d Merge pull request 'nginx debug config' (#48) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 23s
Reviewed-on: #48
2026-05-05 16:04:30 +02:00
sid
0778974a50 nginx debug config
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 20s
Flake check / flake-check (pull_request) Successful in 19s
2026-05-05 16:02:32 +02:00
sid
ff299d37d3 Merge pull request 'trying to fix open-webui websocket request' (#47) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 23s
Reviewed-on: #47
2026-05-05 15:44:17 +02:00
sid
3f21912c7d trying to fix open-webui websocket request
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 20s
Flake check / flake-check (pull_request) Successful in 19s
2026-05-05 15:41:27 +02:00
sid
ecd78dc589 Merge pull request 'netdata runs on host sid' (#46) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 27s
Reviewed-on: #46
2026-05-05 13:43:19 +02:00
sid
dda565aed5 netdata runs on host sid
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 20s
Flake check / flake-check (pull_request) Successful in 22s
2026-05-05 13:41:46 +02:00
sid
8d572c0f21 Merge pull request 'disable dhparams' (#45) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 20s
Reviewed-on: #45
2026-05-05 13:33:29 +02:00
sid
0533dfeb6d Revert to commit c2efb19
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 17s
Flake check / flake-check (pull_request) Successful in 17s
2026-05-05 13:32:31 +02:00
sid
aebbc5767e disable dhparams
Some checks failed
Build hosts / build-hosts (pull_request) Failing after 3s
Flake check / flake-check (pull_request) Failing after 3s
2026-05-05 13:28:25 +02:00
sid
4efa30095c Merge pull request 'fix intranet ip resolution' (#44) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 24s
Reviewed-on: #44
2026-05-05 13:21:32 +02:00
sid
907dcf9011 resolve intranet services on rx4
All checks were successful
Flake check / flake-check (pull_request) Successful in 20s
Build hosts / build-hosts (pull_request) Successful in 23s
2026-05-05 13:19:08 +02:00
sid
e50f7e1111 fix intranet ip resolution
All checks were successful
Build hosts / build-hosts (pull_request) Successful in 22s
Flake check / flake-check (pull_request) Successful in 20s
2026-05-05 12:30:51 +02:00
sid
2f9f236b0f Merge pull request 'update oci images' (#43) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 4m31s
Reviewed-on: #43
2026-05-04 20:54:08 +02:00
sid
c2efb19ecf update oci images
All checks were successful
Flake check / flake-check (pull_request) Successful in 21s
Build hosts / build-hosts (pull_request) Successful in 32s
2026-05-04 17:55:30 +02:00
sid
2120a235a8 Merge pull request 'update synix input' (#41) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 40s
Reviewed-on: #41
2026-05-02 23:15:05 +02:00
sid
8e1c2e779f Merge pull request 'update flake' (#40) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 1m36s
Reviewed-on: #40
2026-05-02 23:00:57 +02:00
sid
ea19380c33 Merge pull request 'add jirafeau' (#39) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 20s
Reviewed-on: #39
2026-05-02 21:35:29 +02:00
sid
bf829bcc6e Merge pull request 'enabled intranet' (#38) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 23s
Reviewed-on: #38
2026-05-02 19:57:40 +02:00
sid
560a08066f Merge pull request 'new tailscale api' (#37) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 1m37s
Reviewed-on: #37
2026-05-02 19:19:40 +02:00
sid
989daca886 Merge pull request 'ca store paths do not work. add well-knowns for acme challenges' (#36) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 4m17s
Reviewed-on: #36
2026-04-19 03:57:20 +02:00
sid
d82c3c1710 Merge pull request 'list all internal fqdns in sid-internal' (#35) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 22s
Reviewed-on: #35
2026-04-19 03:28:35 +02:00
sid
8523dc2da2 Merge pull request 'use acme host sid-internal for vaultwarden' (#34) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 30s
Reviewed-on: #34
2026-04-19 03:22:57 +02:00
sid
6a3c037095 Merge pull request 'vaultwarden binds to 0.0.0.0:8222' (#33) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 24s
Reviewed-on: #33
2026-04-19 03:03:08 +02:00
sid
7aa4b4582c Merge pull request 'resolve every service on host sid' (#32) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 1m12s
Reviewed-on: #32
2026-04-19 02:56:00 +02:00
sid
5c11b77e1b Merge pull request 'remove tailnet dns' (#31) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 21s
Reviewed-on: #31
2026-04-19 01:42:15 +02:00
sid
4d102da99f Merge pull request 'coredns binds to 0.0.0.0:53' (#30) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 22s
Reviewed-on: #30
2026-04-19 01:25:21 +02:00
sid
3a42d93302 Merge pull request 'smallstep binds to 0.0.0.0:8443' (#29) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 23s
Reviewed-on: #29
2026-04-19 01:09:41 +02:00
sid
d7b20c29ea Merge pull request 'host sid is now nameserver' (#28) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 25s
Reviewed-on: #28
2026-04-19 00:59:08 +02:00
sid
19e8dd8704 Merge pull request 'sid: change nameserver to localhost' (#27) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 4m30s
Reviewed-on: #27
2026-04-19 00:47:23 +02:00
sid
da023642ef Merge pull request 'disable tailscale dns' (#26) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 22s
Reviewed-on: #26
2026-04-19 00:27:41 +02:00
sid
ce324dc8e2 Merge pull request 'smallstep: remove tls version requirements' (#25) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 21s
Reviewed-on: #25
2026-04-19 00:17:24 +02:00
sid
8899cd04a1 Merge pull request 'mailserver: use coredns instead of kresd' (#24) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 32s
Reviewed-on: #24
2026-04-19 00:06:45 +02:00
sid
32e5fffd16 Merge pull request 'step-ca' (#23) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 39s
Reviewed-on: #23
2026-04-18 23:42:15 +02:00
sid
e7afb9a36b Merge pull request 'open-webui: hotfix: disable health checks' (#21) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 38s
Reviewed-on: #21
2026-04-16 01:09:04 +02:00
sid
698da73976 Merge pull request 'update to force trigger new build' (#20) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 1m53s
Reviewed-on: #20
2026-04-16 00:55:43 +02:00
sid
e5c545edf3 Merge pull request 'remove hetzner dns api. disable intranet' (#19) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 1m34s
Reviewed-on: #19
2026-04-16 00:28:09 +02:00
sid
eb9a06e43d Merge pull request 'open-webui: disable ollama api' (#18) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 3m0s
Reviewed-on: #18
2026-04-15 23:49:19 +02:00
sid
38f3e8de15 Merge pull request 'update flake' (#17) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 2m2s
Reviewed-on: #17
2026-04-15 22:33:42 +02:00
sid
127369802c Merge pull request 'acme ownership for hetzner api key' (#16) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 21s
Reviewed-on: #16
2026-04-03 16:45:19 +02:00
sid
365de6ebc5 Merge pull request 'hetzner api key needs prefix' (#15) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 42s
Reviewed-on: #15
2026-04-03 16:05:16 +02:00
sid
53ff79e55c Merge pull request 'use public domain for internal services via intra subdomain' (#14) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 33s
Reviewed-on: #14
2026-04-03 15:57:36 +02:00
sid
8c56beb84c Merge pull request 'remove tailnet ssl' (#13) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 21s
Reviewed-on: #13
2026-04-03 14:41:39 +02:00
sid
46b71e4079 Merge pull request 'testing tailnet ssl' (#12) from develop into master
Some checks failed
Deploy configs / deploy-configs (push) Failing after 22s
Reviewed-on: #12
2026-04-03 14:15:36 +02:00
sid
7304121e2f Merge pull request 'add vaultwarden' (#11) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 31s
Reviewed-on: #11
2026-04-03 13:45:18 +02:00
sid
677cb9bb6c Merge pull request 'add rsshub' (#10) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 41s
Reviewed-on: #10
2026-03-30 20:01:06 +02:00
sid
197c824623 Merge pull request 'update clients input' (#5) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 23s
Reviewed-on: #5
2026-03-01 17:11:12 +01:00
sid
d18da0e351 Merge pull request 'update clients input' (#4) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 21s
Reviewed-on: #4
2026-03-01 16:55:30 +01:00
sid
e91b21b183 Merge pull request 'develop' (#3) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 22s
Reviewed-on: #3
2026-03-01 16:17:50 +01:00
sid
1682f0a52b Merge pull request 'set open-webui version' (#2) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 35s
Reviewed-on: #2
2026-02-27 22:20:05 +01:00
sid
354350eb2a Merge pull request 'update deploy key' (#1) from develop into master
All checks were successful
Deploy configs / deploy-configs (push) Successful in 20s
Reviewed-on: #1
2026-02-26 21:58:45 +01:00
35 changed files with 701 additions and 378 deletions

View file

@ -25,12 +25,20 @@ rec {
subdomain = "f"; subdomain = "f";
fqdn = subdomain + "." + domain; fqdn = subdomain + "." + domain;
}; };
librechat-oci = {
fqdn = "lc." + domain;
port = 3080;
};
mailserver = rec {
subdomain = "mail";
fqdn = subdomain + "." + domain;
};
miniflux = { miniflux = {
fqdn = "rss." + domain; fqdn = "rss." + domain;
port = 8085; port = 8085;
}; };
netdata = { netdata = {
fqdn = "netdata." + intranet; fqdn = "mon." + domain;
port = 19999; port = 19999;
}; };
open-webui-oci = { open-webui-oci = {
@ -46,12 +54,8 @@ rec {
port = 1200; port = 1200;
}; };
vaultwarden = { vaultwarden = {
fqdn = "pw." + intranet; fqdn = "pw." + domain;
port = 8222; port = 8222;
}; };
webdav = {
fqdn = "dav." + intranet;
port = 8080;
};
}; };
} }

38
flake.lock generated
View file

@ -1762,11 +1762,11 @@
}, },
"flake-schemas_4": { "flake-schemas_4": {
"locked": { "locked": {
"lastModified": 1775244557, "lastModified": 1776384880,
"narHash": "sha256-iYXRXIX9eafJmwJFAhqT3YxvvpNRuPFSLRCSpvGh8Ic=", "narHash": "sha256-28Cg9HI/IwFHUm5fZyMEGCQ94L3Il6K4OfHeRf0b+Zw=",
"owner": "DeterminateSystems", "owner": "DeterminateSystems",
"repo": "flake-schemas", "repo": "flake-schemas",
"rev": "15edbeeaf77e42216dbcba8bfd907fdeabb75a2b", "rev": "b852751d29c6e09919f25c1e10754646bdc181c9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -2402,11 +2402,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775585728, "lastModified": 1776796298,
"narHash": "sha256-8Psjt+TWvE4thRKktJsXfR6PA/fWWsZ04DVaY6PUhr4=", "narHash": "sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8=",
"owner": "cachix", "owner": "cachix",
"repo": "git-hooks.nix", "repo": "git-hooks.nix",
"rev": "580633fa3fe5fc0379905986543fd7495481913d", "rev": "3cfd774b0a530725a077e17354fbdb87ea1c4aad",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -3013,11 +3013,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775425411, "lastModified": 1777851538,
"narHash": "sha256-KY6HsebJHEe5nHOWP7ur09mb0drGxYSzE3rQxy62rJo=", "narHash": "sha256-Gp8qwTEYNoy2yvmErVGlvLOQvrtEECCAKbonW7VJef8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "0d02ec1d0a05f88ef9e74b516842900c41f0f2fe", "rev": "cc09c0f9b7eaa95c2d9827338a5eb03d32505ca5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -4237,11 +4237,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1776282709, "lastModified": 1777906128,
"narHash": "sha256-T2pc27MdV3/ejCYiv24lu7tNjPmd9t6jx+RG6RYvcRQ=", "narHash": "sha256-ei9g+4pCXhacUwnYuljs9v75hwfTqnfU+J6s6s8hfvc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "55f8cf0c3aa3e144cdb158a2f1de505af0b26c54", "rev": "c278c296b010e2a32838c8d4539a2d72c1686d4d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -5081,11 +5081,11 @@
"tinted-zed": "tinted-zed_6" "tinted-zed": "tinted-zed_6"
}, },
"locked": { "locked": {
"lastModified": 1775935110, "lastModified": 1777581180,
"narHash": "sha256-twTHKUFXjNNsaAvX0KoaIClt+923jXDRbfCd9PC/f0o=", "narHash": "sha256-JcDBTZkkz68WlZKYDoD+MZG8b3dnIJXqMvyuVx3Wkdg=",
"owner": "nix-community", "owner": "nix-community",
"repo": "stylix", "repo": "stylix",
"rev": "14f248ad1a7668e7858c6d9163608c208b7daf02", "rev": "a2538cd28ae2140ffce9cee9108b8d569a9c4fed",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -5199,11 +5199,11 @@
"stylix": "stylix_6" "stylix": "stylix_6"
}, },
"locked": { "locked": {
"lastModified": 1777756274, "lastModified": 1779222589,
"narHash": "sha256-h753tgN4Ti929K2bsyRqt1q/nAiZtUAp1s1yL26USkY=", "narHash": "sha256-pFlaPXus8e+mY9C7/xQhBwux6tPk5P30K2uaN2Qluh0=",
"ref": "release-25.11", "ref": "release-25.11",
"rev": "5f6ad9ecf517ba1da78f868a0173efc427c0354c", "rev": "1ab817090ff5989578caefd8786e9450b37e3da5",
"revCount": 50, "revCount": 96,
"type": "git", "type": "git",
"url": "https://git.sid.ovh/sid/synix.git" "url": "https://git.sid.ovh/sid/synix.git"
}, },

View file

@ -57,8 +57,8 @@
}; };
}; };
mkNode = name: system: { mkNode = name: ip: system: {
hostname = name + ".tail"; hostname = ip;
profiles.system = { profiles.system = {
path = inputs.deploy-rs.lib.${system}.activate.nixos self.nixosConfigurations.${name}; path = inputs.deploy-rs.lib.${system}.activate.nixos self.nixosConfigurations.${name};
}; };
@ -90,9 +90,9 @@
"UserKnownHostsFile=/dev/null" "UserKnownHostsFile=/dev/null"
]; ];
nodes = { nodes = {
rx4 = mkNode "rx4" "x86_64-linux"; rx4 = mkNode "rx4" "100.64.0.10" "x86_64-linux";
sid = mkNode "sid" "x86_64-linux"; sid = mkNode "sid" "100.64.0.6" "x86_64-linux";
# vde = mkNode "vde" "x86_64-linux"; # NOTE: offline atm # vde = mkNode "vde" "100.64.0.1" "x86_64-linux"; # NOTE: offline atm
}; };
}; };

View file

@ -13,12 +13,17 @@ syncthing:
gui-pw: ENC[AES256_GCM,data:mN4rxYr5DZgvbpIkwSFIuPvviJE=,iv:Kyl3mZFOejVwEwBCKteJQpgbCosREp9C4T4JYhWz6KQ=,tag:6myk9lr/44CH/hyUPgRH0Q==,type:str] gui-pw: ENC[AES256_GCM,data:mN4rxYr5DZgvbpIkwSFIuPvviJE=,iv:Kyl3mZFOejVwEwBCKteJQpgbCosREp9C4T4JYhWz6KQ=,tag:6myk9lr/44CH/hyUPgRH0Q==,type:str]
forgejo-runner: forgejo-runner:
token: ENC[AES256_GCM,data:DZgi6ocpV0MplgQ6Et85vHxmkMfC4qYbLLdyRuj/4z8tJauz1w6DUQ==,iv:+SZYsv6sDn2Nc1WxhTn0dJGN9nXYZw16/HVtXJGXpHc=,tag:8Oa5mC7cUy85+lXHbRcCcg==,type:str] token: ENC[AES256_GCM,data:DZgi6ocpV0MplgQ6Et85vHxmkMfC4qYbLLdyRuj/4z8tJauz1w6DUQ==,iv:+SZYsv6sDn2Nc1WxhTn0dJGN9nXYZw16/HVtXJGXpHc=,tag:8Oa5mC7cUy85+lXHbRcCcg==,type:str]
webdav:
user: ENC[AES256_GCM,data:vCLx,iv:Nra/FprNfd02HpvqOb5uYK+IGRFHhNwnFXWrX71c0C0=,tag:TjbKKOKBTq31o/5MxmqIsA==,type:str]
pass: ENC[AES256_GCM,data:jfIoob6R6OhqKa2EujRzTQbvIlA=,iv:HvB088H2Z2uLCveT4YfNEdkK5VU0lBFD5FrZhx79fg0=,tag:1RnrfeUEURx0C575GTxi9A==,type:str]
vaultwarden: vaultwarden:
admin-token: ENC[AES256_GCM,data:HhD0xNZ/Ep7pCOX1j6p/M/ZZ3gs=,iv:7QT71KlYz+HQYBhiRavpiXS9sNS2PoJiM/WkxM3Hk/g=,tag:SYTRWpyA2+WMSMiRM8mvew==,type:str] admin-token: ENC[AES256_GCM,data:HhD0xNZ/Ep7pCOX1j6p/M/ZZ3gs=,iv:7QT71KlYz+HQYBhiRavpiXS9sNS2PoJiM/WkxM3Hk/g=,tag:SYTRWpyA2+WMSMiRM8mvew==,type:str]
smtp-password: ENC[AES256_GCM,data:eQo7op5+74EID6689hL0/J1pq2s=,iv:JqrEqxabWGydRuJJ/27e1q+4YnQhTQ1bKRSsOvjQ+bE=,tag:weqnrhqK+LGEfAacBcuPUA==,type:str] smtp-password: ENC[AES256_GCM,data:eQo7op5+74EID6689hL0/J1pq2s=,iv:JqrEqxabWGydRuJJ/27e1q+4YnQhTQ1bKRSsOvjQ+bE=,tag:weqnrhqK+LGEfAacBcuPUA==,type:str]
hetzner-api-key: ENC[AES256_GCM,data:casjNOXzuQDWgnSFftbBMygA8kGpGiZDqup08faWO9kfjvgOyWOXeqPd2VA1ND8yfM2LvoLYvPs6gUWtni2ldQ==,iv:p2W24uhJgBvpi3g4+cHw0/XbbTM5oYCPHreMBUR4CNs=,tag:lpwjZGoJe/91+CHX/hAkKA==,type:str]
librechat:
jwt-secret: ENC[AES256_GCM,data:/OJr23Sw975byjyHN6yqWxuk5FeRfLdQYYOPYJeDHTjzq9X78c3VHqdvnN2a9ZUEtzRi1sx6YLIjNkxBkGbvuQ==,iv:2D0iBj2U3iy3JPtKZBWP5nCfmXMA2/pBhBKUD2f5DoM=,tag:0ZYNxBhUdCBOne0otcG2iQ==,type:str]
jwt-refresh-secret: ENC[AES256_GCM,data:qIaunHUMTUFyp88whrxe65eM3Mfi3EX0ieWOUCmYYojSKQQRudh8d4Cb1zMqPbXJLG3zqTVCaZl9xwQn5K4Z/g==,iv:k5+oSCd0TzdOmIUe8BQBesofjvjuRiPXdLT6H9yQf18=,tag:4wcJjX7MvJNx19PCxgqyhw==,type:str]
creds-key: ENC[AES256_GCM,data:EljwEqFByJaOjd8lRFGwo/FyXHUtl5an0xS1EjRe+kmpo5z4P33EUKbMeeIl69rEcziMHZQLiadzSEcS2cb2uA==,iv:sidBN6VTBeFhMUtN67HZuyofiXCeGFG4tuMRckLZv84=,tag:n7vI8LuPgER3J6r6Q6Jkjg==,type:str]
creds-iv: ENC[AES256_GCM,data:oc0sPm5RM/7AbH3vdDLJ2m0q6C7eAAME0GPbiojHZUspP8Cto5QX5WKnUjUVLLcvgK+t6pnu7BEmAuD3PLr11A==,iv:Z6XJmlqv0ULFiwqHyRO5v7lb/iyv4g9aSTV4xw9VTXU=,tag:7kptbQwc6lBZ70aXw7wOVA==,type:str]
meili-master-key: ENC[AES256_GCM,data:eugFl40a6Ks3ba8hcn83WS76AwA0TXkhu3K4gSrbNHtXRliLQCWhGTEvoaQSeb7whmpszh4zh8cKSxByBdhJiQ==,iv:rrWlcVyBlrE5dnBBFWjheIo6SgQTbkzqskGQvQczR+U=,tag:fjKOSVoPxomA3qUw+baV4w==,type:str]
requesty-key: ENC[AES256_GCM,data:vxr+m3c9qu6ChFvuAbBCFrneDP9xDIPJBRmB9diw5uSQD9XDl0IK954OzmMMXaSl2AeHgY8WiugvgvQjUwywjKG6TxxMEYMFsQkMpSnV7xHYv2MAE/TIC74CsHRL823MesUQ7agoIasFtjr+CnZ5RRUNHZOG,iv:pa64BT1yay5vYwn/XBdK7meYzOBk4M+MmgLzaHR5Hfw=,tag:L+lUPTE0ZI303jtVefIrvQ==,type:str]
sops: sops:
age: age:
- recipient: age19yeqvv28fgrtk6jsh3xyaf0lch86kna6rcz4dwe962yyyyevu30sx474xy - recipient: age19yeqvv28fgrtk6jsh3xyaf0lch86kna6rcz4dwe962yyyyevu30sx474xy
@ -39,7 +44,7 @@ sops:
NE5yK3ZaOG5PdXNSUnlIUmFSSmRFancKk57hCmo79HvI3hzzgQvgOK7oK5/dcQR8 NE5yK3ZaOG5PdXNSUnlIUmFSSmRFancKk57hCmo79HvI3hzzgQvgOK7oK5/dcQR8
f3R4OGF5+212VXEHR/hAEbKzV7CY4y6HhFyrGZ9bUKm1RrxtnVqUyA== f3R4OGF5+212VXEHR/hAEbKzV7CY4y6HhFyrGZ9bUKm1RrxtnVqUyA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2026-05-02T17:10:11Z" lastmodified: "2026-05-25T18:14:59Z"
mac: ENC[AES256_GCM,data:uf5TqZaevyUUjW6pM6K8c4CZFFdwTXFGIaHmYr5Q4XFR1uW3kBsVLeQKxq26duLuQ4UiZkUpW27a/PW797Z+iIpBdqbnoQ35q7RnOW+GpnAv8TaRW1PpqQ+JR3/R0LMXsi3cMt7ioG2ad1bIHztiNz+SmePiv3Yt9WxQ7PIqBdY=,iv:dAzuyKSo0OW+j02AH0chCdLBm7Wv6PZgqZrEWhEVnxQ=,tag:k6EKWHHY4fwTd03d4TVcNg==,type:str] mac: ENC[AES256_GCM,data:eh/jcKrqyCTh+2n4phHQ2LKF71DaCDwrrfXms6HaD0ER4xVOkYERTe7IN4cX//qjY/91wSzAzwLg3yphWK4k920tiYTBog9LcWUz6l6X5lpmKHQp+vdoQH41WrA1ZgOcXzSfmZoblcD1qoJNCaHGt5N8hjXRcUc3lEqcPrdoC7A=,iv:8kBd9Daai3wJgzxONX4eIkeZLMzJO2DX439sBv/pER4=,tag:l8Q3gzMHoSTCdOqwzaKgCA==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.12.1 version: 3.12.1

View file

@ -10,20 +10,20 @@
inputs.clients.nixosModules.syncthing inputs.clients.nixosModules.syncthing
outputs.nixosModules.tailscale outputs.nixosModules.tailscale
# outputs.nixosModules.promtail
./forgejo.nix ./forgejo.nix
./jirafeau.nix ./jirafeau.nix
./librechat-oci.nix
./miniflux.nix ./miniflux.nix
./netdata.nix ./netdata.nix
./nginx.nix ./nginx.nix
./open-webui-oci.nix ./open-webui-oci.nix
./print-server.nix
./rss-bridge.nix
./rsshub-oci.nix ./rsshub-oci.nix
./samba.nix
./vaultwarden.nix ./vaultwarden.nix
# ./alditalk-extender.nix # FIXME # ./alditalk-extender.nix # FIXME
# ./webdav.nix # FIXME
]; ];
# bootstrap # bootstrap

View file

@ -0,0 +1,71 @@
{
inputs,
constants,
config,
...
}:
let
inherit (constants.hosts.rx4) ip;
inherit (constants.services.librechat-oci) fqdn port;
in
{
imports = [
inputs.synix.nixosModules.librechat-oci
];
services.librechat-oci = {
enable = true;
inherit port;
configFile = ./librechat.yaml;
externalUrl = "https://${fqdn}";
environmentFile = config.sops.templates.librechat-env-file.path;
environment = {
# ALLOW_REGISTRATION = "true";
SEARXNG_INSTANCE_URL = "https://searxng.website/";
};
};
services.nginx.virtualHosts."${fqdn}" = {
useACMEHost = fqdn;
forceSSL = true;
listen = [
{
addr = "${ip}:443";
ssl = true;
}
];
locations."/" = {
proxyPass = "http://127.0.0.1:${toString port}";
proxyWebsockets = true;
};
};
security.acme.certs."${fqdn}" = {
domain = fqdn;
postRun = "systemctl restart podman-librechat.service";
group = "nginx";
};
sops = {
# generate with:
# openssl rand -hex 32
secrets."librechat/jwt-secret" = { };
secrets."librechat/jwt-refresh-secret" = { };
secrets."librechat/creds-key" = { };
secrets."librechat/creds-iv" = { };
secrets."librechat/meili-master-key" = { };
secrets."librechat/requesty-key" = { };
templates.librechat-env-file.content = ''
JWT_SECRET=${config.sops.placeholder."librechat/jwt-secret"}
JWT_REFRESH_SECRET=${config.sops.placeholder."librechat/jwt-refresh-secret"}
CREDS_KEY=${config.sops.placeholder."librechat/creds-key"}
CREDS_IV=${config.sops.placeholder."librechat/creds-iv"}
MEILI_MASTER_KEY=${config.sops.placeholder."librechat/meili-master-key"}
REQUESTY_KEY=${config.sops.placeholder."librechat/requesty-key"}
'';
};
}

View file

@ -0,0 +1,53 @@
version: 1.3.11
cache: true
interface:
customWelcome: "Such compose. Much yaml. Wow"
modelSelect: true
parameters: true
presets: true
prompts:
use: true
create: true
bookmarks: true
multiConvo: true
agents: true
fileSearch: true
webSearch: true
# TODO: add cohere rerank
webSearch:
searchProvider: "searxng"
searxngInstanceUrl: "${SEARXNG_INSTANCE_URL}"
endpoints:
agents:
disableBuilder: false
recursionLimit: 50
maxRecursionLimit: 100
maxCitations: 30
maxCitationsPerFile: 7
minRelevanceScore: 0.45
capabilities:
- "deferred_tools"
- "execute_code"
- "file_search"
- "web_search"
- "artifacts"
- "actions"
- "context"
- "tools"
- "chain"
custom:
- name: "Requesty"
apiKey: "${REQUESTY_KEY}"
baseURL: "https://router.requesty.ai/v1"
headers:
x-librechat-body-parentmessageid: "{{LIBRECHAT_BODY_PARENTMESSAGEID}}"
models:
default: ["meta-llama/llama-3-70b-instruct"]
fetch: true
titleConvo: true
titleModel: "meta-llama/llama-3-70b-instruct"
dropParams: ["stop"]

View file

@ -1,12 +1,14 @@
{ {
config, config,
constants, constants,
pkgs,
... ...
}: }:
{ {
services.netdata = { services.netdata = {
enable = true; enable = true;
package = pkgs.netdata.override { withCloudUi = false; };
config.global = { config.global = {
"debug log" = "syslog"; "debug log" = "syslog";
"access log" = "syslog"; "access log" = "syslog";
@ -17,6 +19,10 @@
}; };
}; };
services.journald.storage = "persistent";
users.users.netdata.extraGroups = [ "systemd-journal" ];
sops = sops =
let let
owner = config.services.netdata.user; owner = config.services.netdata.user;

View file

@ -7,6 +7,8 @@
let let
cfg = config.services.nginx; cfg = config.services.nginx;
inherit (constants) domain;
in in
{ {
imports = [ imports = [
@ -34,4 +36,21 @@ in
}; };
}; };
}; };
security.acme = {
acceptTerms = true;
defaults = {
email = "admin@${domain}";
dnsProvider = "hetzner";
credentialFiles = {
HETZNER_API_TOKEN_FILE = config.sops.secrets.hetzner-api-key.path;
};
};
};
sops.secrets.hetzner-api-key = {
mode = "0400";
owner = "acme";
group = "acme";
};
} }

View file

@ -2,22 +2,22 @@
inputs, inputs,
constants, constants,
config, config,
lib,
pkgs, pkgs,
... ...
}: }:
let
inherit (lib) getExe;
in
{ {
imports = [ inputs.synix.nixosModules.open-webui-oci ]; imports = [
inputs.synix.nixosModules.open-webui-oci
inputs.synix.nixosModules.mcpo
];
services.open-webui-oci = { services.open-webui-oci = {
enable = true; enable = true;
image = pkgs.dockerTools.pullImage {
imageName = "ghcr.io/open-webui/open-webui";
imageDigest = "sha256:8113fa5510020ef05a44afc0c42d33eabeeb2524a996e3e3fb8c437c00f0d792";
hash = "sha256-KxMUORhvLb/MMc8gv3xULNgnAzO1N+Qi2/1lHzbuK6Q=";
finalImageName = "ghcr.io/open-webui/open-webui";
finalImageTag = "0.8.12";
};
externalUrl = "https://" + constants.services.open-webui-oci.fqdn; externalUrl = "https://" + constants.services.open-webui-oci.fqdn;
port = 8083; port = 8083;
# environmentFile = config.sops.templates."open-webui-oci/environment".path; # environmentFile = config.sops.templates."open-webui-oci/environment".path;
@ -28,6 +28,27 @@
}; };
}; };
services.mcpo = {
enable = true;
package = pkgs.synix.mcpo;
port = 8765;
settings = {
mcpServers = {
fetcher-mcp = {
command = getExe pkgs.synix.fetcher-mcp;
};
nixos = {
command = getExe pkgs.nix;
args = [
"run"
"github:utensils/mcp-nixos"
"--"
];
};
};
};
};
# sops = { # sops = {
# secrets."open-webui-oci/stt-api-key" = { }; # secrets."open-webui-oci/stt-api-key" = { };
# secrets."open-webui-oci/tts-api-key" = { }; # secrets."open-webui-oci/tts-api-key" = { };

View file

@ -1,12 +0,0 @@
{
inputs,
...
}:
{
imports = [
inputs.synix.nixosModules.print-server
];
services.print-server.enable = true;
}

View file

@ -1,14 +0,0 @@
{ inputs, constants, ... }:
{
imports = [ inputs.synix.nixosModules.rss-bridge ];
services.rss-bridge = {
enable = true;
reverseProxy = {
enable = true;
subdomain = constants.services.rss-bridge.subdomain;
forceSSL = false;
};
};
}

View file

@ -0,0 +1,27 @@
{ config, ... }:
{
services.samba = {
enable = true;
openFirewall = false;
nmbd.enable = false;
winbindd.enable = false;
settings = {
global = {
workgroup = "WORKGROUP";
"server string" = config.networking.hostName;
security = "user";
"map to guest" = "Bad User";
"guest account" = "nobody";
};
share = {
path = "/home/sid";
browseable = "yes";
"read only" = "yes";
"guest ok" = "yes";
"force user" = "sid";
"directory mask" = "0750";
};
};
};
}

View file

@ -6,6 +6,7 @@
let let
inherit (constants) domain; inherit (constants) domain;
inherit (constants.hosts.rx4) ip;
inherit (constants.services.vaultwarden) fqdn port; inherit (constants.services.vaultwarden) fqdn port;
in in
{ {
@ -21,21 +22,52 @@ in
environmentFile = [ config.sops.templates."vaultwarden/env-file".path ]; environmentFile = [ config.sops.templates."vaultwarden/env-file".path ];
config = { config = {
ENABLE_WEBSOCKET = true;
SIGNUPS_ALLOWED = false; SIGNUPS_ALLOWED = false;
SMTP_FROM = "vaultwarden@${domain}"; SMTP_FROM = "vaultwarden@${domain}";
SMTP_FROM_NAME = "${domain} Vaultwarden server"; SMTP_FROM_NAME = "${domain} Vaultwarden server";
SMTP_HOST = constants.hosts.sid.ip; SMTP_HOST = constants.services.mailserver.fqdn;
SMTP_PORT = 587; SMTP_PORT = 465;
SMTP_SECURITY = "starttls"; SMTP_SECURITY = "force_tls";
SMTP_USERNAME = "vaultwarden@${domain}"; SMTP_USERNAME = "vaultwarden@${domain}";
ROCKET_ADDRESS = "0.0.0.0"; ROCKET_ADDRESS = "127.0.0.1";
ROCKET_PORT = port; ROCKET_PORT = port;
ROCKET_LOG = "critical"; ROCKET_LOG = "critical";
}; };
}; };
services.nginx.virtualHosts."${fqdn}" = {
useACMEHost = "pw-custom";
forceSSL = true;
listen = [
{
addr = "${ip}:443";
ssl = true;
}
];
locations = {
"/" = {
proxyPass = "http://127.0.0.1:${toString port}";
};
"= /notifications/alerts" = {
proxyPass = "http://127.0.0.1:${toString port}";
proxyWebsockets = true;
};
"= /notifications/hub" = {
proxyPass = "http://127.0.0.1:${toString port}";
proxyWebsockets = true;
};
};
};
security.acme.certs."pw-custom" = {
domain = fqdn;
postRun = "systemctl restart vaultwarden.service";
group = "nginx";
};
sops = sops =
let let
owner = config.users.users.vaultwarden.name; owner = config.users.users.vaultwarden.name;

View file

@ -1,86 +0,0 @@
{ constants, config, ... }:
# FIXME: floccus throws error: NetworkError when attempting to fetch resource.
let
cfg = config.services.webdav;
inherit (constants.services.webdav) fqdn port;
in
{
services.webdav = {
enable = true;
environmentFile = config.sops.templates."webdav/env-file".path;
settings = {
inherit port;
address = "127.0.0.1";
prefix = "/";
directory = "/srv/webdav";
users = [
{
username = "{env}WEBDAV_USER";
password = "{env}WEBDAV_PASS";
permissions = "CRUD";
}
];
};
};
systemd.tmpfiles.rules = [
"d ${cfg.settings.directory} 0750 ${cfg.user} ${cfg.group} -"
];
networking.firewall.allowedTCPPorts = [ port ];
services.nginx = {
enable = true;
virtualHosts."${fqdn}" = {
listen = [
{
addr = "0.0.0.0";
inherit port;
}
];
locations."/" = {
proxyPass = "http://127.0.0.1:${toString port}";
extraConfig = ''
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, PROPFIND, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Depth' always;
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, PROPFIND, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Depth';
return 204;
}
'';
};
};
};
sops =
let
owner = cfg.user;
group = cfg.group;
mode = "0400";
in
{
secrets = {
"webdav/user" = {
inherit owner group mode;
};
"webdav/pass" = {
inherit owner group mode;
};
};
templates."webdav/env-file" = {
inherit owner group mode;
content = ''
WEBDAV_USER=${config.sops.placeholder."webdav/user"}
WEBDAV_PASS=${config.sops.placeholder."webdav/pass"}
'';
};
};
}

View file

@ -35,6 +35,7 @@ radicale:
step-ca: step-ca:
password: ENC[AES256_GCM,data:8/6NA3WpII0LmDOp5ISnHKeaXn5LM4gpiI47JTso23c=,iv:fi2eMGG1lOwdK5+98Hp7vZ101GKRip5Xgq9k+vnC9yI=,tag:oENvvsEbKSHFfLoXcJlPkg==,type:str] password: ENC[AES256_GCM,data:8/6NA3WpII0LmDOp5ISnHKeaXn5LM4gpiI47JTso23c=,iv:fi2eMGG1lOwdK5+98Hp7vZ101GKRip5Xgq9k+vnC9yI=,tag:oENvvsEbKSHFfLoXcJlPkg==,type:str]
intermediate-key: ENC[AES256_GCM,data:yGZLSd7ydx9wNFpWWPcyUBwZQZbyziGleCWSxurFniBCauw2h4hcPc4c4I/7cjl1vRUv41WfzWu1PtXnZ3lNHOC6tTbiikHFBgGiHk2Lhddx+NESUWmgNiejJR/UDW4T25W9OHxwLCV9pmHf4fjyT/REymGIB7kbcRryWqcWtoZWYaL7JooJornm5mMU1Be+MCfxusTGQA4gQsT5/bu20iEGPwgY3fEgZLQWzKFI2kD2lYlMC8CRxoZO32uTizzooW1+zKng1qSZ7aobFJsbSKRYpYDv9Vvfwltcczb+xo+yZL3pfoEiqAxPzeG/48lRVNf1nftM5esBRGIIPr9BV9+7fbe5DFbSRDtAWspEnp9R5ENj1rbNint/fjCcStg3OfFMdv6N8cQyIpQyHCiBLiG4z+xyFcn0iW4=,iv:BhUoeaoetI5vJk9wOHhBI2ebHWCPeXz8U2ta/xEeUxM=,tag:7xg5ilOSJP1rFlSmmZVZUg==,type:str] intermediate-key: ENC[AES256_GCM,data:yGZLSd7ydx9wNFpWWPcyUBwZQZbyziGleCWSxurFniBCauw2h4hcPc4c4I/7cjl1vRUv41WfzWu1PtXnZ3lNHOC6tTbiikHFBgGiHk2Lhddx+NESUWmgNiejJR/UDW4T25W9OHxwLCV9pmHf4fjyT/REymGIB7kbcRryWqcWtoZWYaL7JooJornm5mMU1Be+MCfxusTGQA4gQsT5/bu20iEGPwgY3fEgZLQWzKFI2kD2lYlMC8CRxoZO32uTizzooW1+zKng1qSZ7aobFJsbSKRYpYDv9Vvfwltcczb+xo+yZL3pfoEiqAxPzeG/48lRVNf1nftM5esBRGIIPr9BV9+7fbe5DFbSRDtAWspEnp9R5ENj1rbNint/fjCcStg3OfFMdv6N8cQyIpQyHCiBLiG4z+xyFcn0iW4=,iv:BhUoeaoetI5vJk9wOHhBI2ebHWCPeXz8U2ta/xEeUxM=,tag:7xg5ilOSJP1rFlSmmZVZUg==,type:str]
hetzner-api-key: ENC[AES256_GCM,data:NhgWjitvgJrcBEDSkZH0S0VmaW37NupkiEUcQDZe/6oYyrE/VgEwrGSag/s2Fgv6uHmSsdbv1vqdc0iDO8GJ8w==,iv:ChEicL0jtjQrgn8CCUnrzErRr3YVdDhMbvcIlI3t7H8=,tag:cjjbEEYqEyNa5qDZCytjxw==,type:str]
sops: sops:
age: age:
- recipient: age19yeqvv28fgrtk6jsh3xyaf0lch86kna6rcz4dwe962yyyyevu30sx474xy - recipient: age19yeqvv28fgrtk6jsh3xyaf0lch86kna6rcz4dwe962yyyyevu30sx474xy
@ -55,7 +56,7 @@ sops:
RzhnczA0S1pxcXZncGpWVHNYQW96L28K+ytH3PPyg4+wibpAQhp02RiSfZ83EDRB RzhnczA0S1pxcXZncGpWVHNYQW96L28K+ytH3PPyg4+wibpAQhp02RiSfZ83EDRB
UJ8UV1d+51D0e2A1sI95r2AzDj4jfwUnI+LYDPC/qEpsu5LFLGVyeg== UJ8UV1d+51D0e2A1sI95r2AzDj4jfwUnI+LYDPC/qEpsu5LFLGVyeg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2026-05-02T17:10:22Z" lastmodified: "2026-05-22T19:19:21Z"
mac: ENC[AES256_GCM,data:f4KQ26/zvg2nLLeW5qVeI8uH2GmPpJUKohNu68nEiIjP5AT53zjBaGoLOTGl9+oVRomSOGZtLGkJGaExB6tLMon5HN6xkQbugqvq08UkZ7FnR1Sa8/OtTr/+eexPNzF8VSdZE2TZCboUSQODV8+0Cy5T918g5kedxnT62SyY4As=,iv:P4TnpJvHwnZPl7kRNjv9d1WLZP9J0sg6R3KbdDMJqyc=,tag:ylYOcg6825jT29lWUaFRYA==,type:str] mac: ENC[AES256_GCM,data:hOtmWizEaIcybM14UEDsXw4GNQZob5SoFn49bWeccxA3dkGlYl67kVkDJGg0cQIO1qr/vGcZ8h/OmnOxU3geP0DaflG0h1/40lDQ3+E6BTb6HP2JmhgEmlRBRBdv87cRDHnDytBzcWARTvff3SsP2J2pLpLBTDiihlaZaiQYtgU=,iv:TvFpvcTydXO3fbh5x9ZXIOtMChlE7WXl2Xx2a9ujh00=,tag:XHvsZh6r9fzbbYFWWQyI5g==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.12.1 version: 3.12.1

View file

@ -1,35 +0,0 @@
{ constants, ... }:
{
services.resolved.enable = false;
networking.resolvconf.enable = false;
networking.nameservers = [ "127.0.0.1" ];
services.coredns = {
enable = true;
config = with constants; ''
.:53 {
bind 0.0.0.0
hosts {
${hosts.sid.ip} ${ca-fqdn}
${hosts.rx4.ip} rx4.tail
${hosts.sid.ip} ${services.netdata.fqdn}
${hosts.sid.ip} ${services.vaultwarden.fqdn}
${hosts.sid.ip} ${services.webdav.fqdn}
${hosts.sid.ip} sid.tail
${hosts.vde.ip} vde.tail
fallthrough
}
forward . 1.1.1.1 8.8.8.8
cache 30
log
errors
}
'';
};
networking.firewall.allowedUDPPorts = [ 53 ];
networking.firewall.allowedTCPPorts = [ 53 ];
}

View file

@ -9,14 +9,15 @@
inputs.synix.nixosModules.openssh inputs.synix.nixosModules.openssh
outputs.nixosModules.tailscale outputs.nixosModules.tailscale
# outputs.nixosModules.loki
# outputs.nixosModules.promtail
./coredns.nix
./headscale.nix ./headscale.nix
./mailserver.nix ./mailserver.nix
./matrix-synapse.nix ./matrix-synapse.nix
./netdata.nix ./netdata.nix
./nginx.nix ./nginx.nix
./radicale.nix ./radicale.nix
./step-ca.nix ./rss-bridge.nix
]; ];
} }

View file

@ -1,5 +1,6 @@
{ {
inputs, inputs,
constants,
... ...
}: }:
@ -24,5 +25,12 @@
enable = true; enable = true;
subdomain = "hs"; subdomain = "hs";
}; };
settings.dns.extra_records = [
{
name = constants.services.vaultwarden.fqdn;
type = "A";
value = constants.hosts.rx4.ip;
}
];
}; };
} }

View file

@ -1,15 +1,21 @@
{ inputs, config, ... }: { inputs, constants, ... }:
let
inherit (constants.services.mailserver) subdomain;
in
{ {
imports = [ inputs.synix.nixosModules.mailserver ]; imports = [ inputs.synix.nixosModules.mailserver ];
mailserver = { mailserver = {
enable = true; enable = true;
inherit subdomain;
stateVersion = 3; stateVersion = 3;
localDnsResolver = !config.services.coredns.enable;
accounts = { accounts = {
sid = { sid = {
aliases = [ "postmaster" ]; aliases = [
"admin"
"postmaster"
];
}; };
vaultwarden = { }; vaultwarden = { };
}; };

View file

@ -1,18 +1,37 @@
{ {
config, config,
constants,
lib,
pkgs, pkgs,
... ...
}: }:
let let
email = "sid@${config.networking.domain}"; email = "sid@${config.networking.domain}";
netdata-dashboard = pkgs.stdenvNoCC.mkDerivation {
pname = "netdata-dashboard";
version = "2.31.0";
src = pkgs.fetchurl {
url = "https://github.com/netdata/dashboard/releases/download/v2.31.0/dashboard.tar.gz";
hash = "sha256-n7M7Y8LIb4tbgQ8wQIr5bMKxLT5fPDID5LnX47ayH/o=";
};
dontUnpack = true;
installPhase = ''
mkdir -p $out
tar -xzf $src --strip-components=1 -C $out
'';
meta.license = lib.licenses.gpl3Only;
};
in in
{ {
services.netdata = { services.netdata = {
enable = true; enable = true;
package = pkgs.netdata.override { package = pkgs.netdata.override { withCloudUi = false; };
withCloudUi = true;
};
config.global = { config.global = {
"debug log" = "syslog"; "debug log" = "syslog";
"access log" = "syslog"; "access log" = "syslog";
@ -36,6 +55,47 @@ in
NETDATA_USER_CONFIG_DIR = "/etc/netdata/conf.d"; NETDATA_USER_CONFIG_DIR = "/etc/netdata/conf.d";
}; };
services.nginx.virtualHosts."${constants.services.netdata.fqdn}" = {
useACMEHost = constants.services.netdata.fqdn;
forceSSL = true;
listen = [
{
addr = "${constants.hosts.sid.ip}:443";
ssl = true;
}
];
locations."/" = {
root = netdata-dashboard;
tryFiles = "$uri $uri/ /index.html";
};
locations."~ ^/(api|v[0-9]+|netdata.conf|registry|stream|version.txt)(/|$)" = {
proxyPass = "http://127.0.0.1:${toString constants.services.netdata.port}";
recommendedProxySettings = true;
};
locations."~ ^/host/" = {
proxyPass = "http://127.0.0.1:${toString constants.services.netdata.port}";
recommendedProxySettings = true;
};
};
security.acme = {
acceptTerms = true;
certs."${constants.services.netdata.fqdn}" = {
domain = constants.services.netdata.fqdn;
webroot = lib.mkForce null;
dnsProvider = "hetzner";
credentialFiles.HETZNER_API_TOKEN_FILE = config.sops.secrets.hetzner-api-key.path;
group = "nginx";
};
};
services.journald.storage = "persistent";
users.users.netdata.extraGroups = [ "systemd-journal" ];
sops = sops =
let let
owner = config.services.netdata.user; owner = config.services.netdata.user;
@ -44,6 +104,12 @@ in
restartUnits = [ "netdata.service" ]; restartUnits = [ "netdata.service" ];
in in
{ {
secrets.hetzner-api-key = {
inherit mode;
owner = "acme";
group = "acme";
};
secrets."netdata/stream/rx4/uuid" = { secrets."netdata/stream/rx4/uuid" = {
inherit inherit
owner owner
@ -65,6 +131,7 @@ in
[${config.sops.placeholder."netdata/stream/rx4/uuid"}] [${config.sops.placeholder."netdata/stream/rx4/uuid"}]
enabled = yes enabled = yes
default history = 3600 default history = 3600
allow from = *
''; '';
}; };
}; };

View file

@ -19,6 +19,15 @@ in
enable = true; enable = true;
openFirewall = true; openFirewall = true;
forceSSL = ssl; forceSSL = ssl;
commonHttpConfig = ''
map $http_upgrade $connection_upgrade {
default upgrade;
"" 'close';
}
access_log syslog:server=unix:/dev/log;
'';
virtualHosts."_" = { virtualHosts."_" = {
forceSSL = false; forceSSL = false;
locations."/.well-known/acme-challenge/" = { locations."/.well-known/acme-challenge/" = {
@ -47,48 +56,23 @@ in
address = constants.hosts.rx4.ip; address = constants.hosts.rx4.ip;
port = constants.services.miniflux.port; port = constants.services.miniflux.port;
}; };
virtualHosts."${constants.services.netdata.fqdn}" = {
useACMEHost = "sid-internal";
forceSSL = ssl;
locations."/" = {
proxyPass = "http://${constants.hosts.rx4.ip}:${toString constants.services.netdata.port}";
proxyWebsockets = true;
};
};
virtualHosts."${constants.services.open-webui-oci.fqdn}" = mkVirtualHost { virtualHosts."${constants.services.open-webui-oci.fqdn}" = mkVirtualHost {
inherit ssl; inherit ssl;
address = constants.hosts.rx4.ip; address = constants.hosts.rx4.ip;
port = constants.services.open-webui-oci.port; port = constants.services.open-webui-oci.port;
}; extraConfig = ''
virtualHosts."${constants.services.rss-bridge.fqdn}" = { proxy_read_timeout 3600s;
enableACME = ssl; proxy_send_timeout 3600s;
forceSSL = ssl; proxy_connect_timeout 600s;
locations."/" = { access_log /var/log/nginx/open-webui-access.log;
proxyPass = "http://${constants.hosts.rx4.ip}"; error_log /var/log/nginx/open-webui-error.log debug;
}; '';
}; };
virtualHosts."${constants.services.rsshub-oci.fqdn}" = mkVirtualHost { virtualHosts."${constants.services.rsshub-oci.fqdn}" = mkVirtualHost {
inherit ssl; inherit ssl;
address = constants.hosts.rx4.ip; address = constants.hosts.rx4.ip;
port = constants.services.rsshub-oci.port; port = constants.services.rsshub-oci.port;
}; };
virtualHosts."${constants.services.vaultwarden.fqdn}" = {
useACMEHost = "sid-internal";
forceSSL = ssl;
locations = {
"/" = {
proxyPass = "http://${constants.hosts.rx4.ip}:${toString constants.services.vaultwarden.port}";
};
};
};
virtualHosts."${constants.services.webdav.fqdn}" = {
useACMEHost = "sid-internal";
forceSSL = ssl;
locations."/" = {
proxyPass = "http://${constants.hosts.rx4.ip}:${toString constants.services.webdav.port}";
proxyWebsockets = true;
};
};
# FIXME # FIXME
# virtualHosts."print.sid.ovh" = { # virtualHosts."print.sid.ovh" = {
# enableACME = true; # enableACME = true;

View file

@ -0,0 +1,32 @@
{
inputs,
constants,
pkgs,
...
}:
{
imports = [ inputs.synix.nixosModules.rss-bridge ];
services.phpfpm.pools.rss-bridge = {
phpPackage = pkgs.php.withExtensions (
{ enabled, all }:
enabled
++ [
all.curl
all.mbstring
all.simplexml
all.intl
]
);
};
services.rss-bridge = {
enable = true;
reverseProxy = {
enable = true;
subdomain = constants.services.rss-bridge.subdomain;
forceSSL = true;
};
};
}

View file

@ -1,108 +0,0 @@
{
constants,
config,
pkgs,
...
}:
let
cfg = config.services.step-ca;
in
{
services.step-ca = {
enable = true;
address = "0.0.0.0";
port = 8443;
openFirewall = true;
intermediatePasswordFile = config.sops.secrets."step-ca/password".path;
# nix-shell -p step-cli --run "step ca init"
settings = {
# FIXME: nix-store paths do not work
# root = ../../../certs/root_ca.crt;
# crt = ../../../certs/intermediate_ca.crt;
# FIXME: not reproducible
root = "/var/lib/step-ca/certs/root_ca.crt";
crt = "/var/lib/step-ca/certs/intermediate_ca.crt";
key = config.sops.secrets."step-ca/intermediate-key".path;
dnsNames = [
constants.ca-fqdn
constants.hosts.sid.ip
];
logger = {
format = "text";
};
db = {
type = "badgerv2";
dataSource = "/var/lib/step-ca/db";
};
authority = {
provisioners = [
{
type = "ACME";
name = "acme";
}
{
type = "JWK";
name = "sid@sid.ovh";
key = {
use = "sig";
kty = "EC";
kid = "w3fV4U-frlyTnBMg4yNYrLsn8_mY98H8HthoscpoVrg";
crv = "P-256";
alg = "ES256";
x = "KZCDecn4sb87T3UO6JsIzJVtr4Aa0UcYzYDNBUM6F7M";
y = "CbGHn9tXQbV0Ur2VuXITLnWgfxCRmKEoUdMUmrP9Qkw";
};
encryptedKey = "eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJjdHkiOiJqd2sranNvbiIsImVuYyI6IkEyNTZHQ00iLCJwMmMiOjYwMDAwMCwicDJzIjoiZS1MUDhDYlE4dzVuMF9nUGhXOWtGdyJ9.rgsqo58rJFWaociSqiPg3E1alAeqoHWubJi4n2uoUFYp3YTWaYZzqA.6P6oimHsKGdCWruo.fNaDr50IXCtCe7W7VIXuS3rlfin_R0nogNpIJ9C6szYg8k10UylircUs14Zl1EHQ9lFeJovb1y1uljzBajMGkOAGlMvashrphVkXiSxHWKDhzbrItJx3qChLtSLJJtXiXPbJQKCAeBjztqPuTw6dI4Z6IR9---kiTvzF6I9KE8afGFlMSubGjr9FnqgiOb2JiZuTfcBGDx78puxdWzUrEEVlliHdv2agbKhY0b13x-obaTIWwlqLFbasv7kPneJ8Ggp7IHHr5uDcUrqVKkTfBrD0lelXm6SwJTHGMkty6inlwSflT9mxvkNq7OGV9triPQc8AGVv0c7t7dHoX_E.tSjJqttCS6zLI_-7zPdXNQ";
}
];
};
tls = {
cipherSuites = [
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
];
renegotiation = false;
};
};
};
environment.systemPackages = [
pkgs.step-cli
];
systemd.tmpfiles.rules = [
"d /var/lib/acme/acme-challenge 0755 acme nginx"
];
security.acme = {
certs."sid-internal" = {
# domain = constants.intranet;
domain = constants.services.vaultwarden.fqdn;
extraDomainNames = [
constants.services.netdata.fqdn
# constants.services.vaultwarden.fqdn
constants.services.webdav.fqdn
];
server = "https://${constants.ca-fqdn}:${toString cfg.port}/acme/acme/directory";
group = "nginx";
};
};
sops =
let
owner = "step-ca";
group = "step-ca";
mode = "0400";
in
{
secrets = {
"step-ca/password" = {
inherit owner group mode;
};
"step-ca/intermediate-key" = {
inherit owner group mode;
};
};
};
}

View file

@ -5,10 +5,6 @@
./nix.nix ./nix.nix
./overlays.nix ./overlays.nix
../pki
inputs.synix.nixosModules.device.server inputs.synix.nixosModules.device.server
]; ];
nixpkgs.config.allowUnfree = true;
} }

View file

@ -5,8 +5,9 @@
forgejo = import ./forgejo; forgejo = import ./forgejo;
forgejo-runner = import ./forgejo-runner; forgejo-runner = import ./forgejo-runner;
gnome = import ./gnome; gnome = import ./gnome;
loki = import ./loki;
monero = import ./monero; monero = import ./monero;
pki = import ./pki; promtail = import ./promtail;
rsshub-oci = import ./rsshub-oci; rsshub-oci = import ./rsshub-oci;
tailscale = import ./tailscale; tailscale = import ./tailscale;
xfce = import ./xfce; xfce = import ./xfce;

View file

@ -0,0 +1,75 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Graphics --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 1,
"links": [],
"panels": [
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"gridPos": {
"h": 24,
"w": 24,
"x": 0,
"y": 0
},
"id": 1,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"prettifyLogMessage": false,
"showCommonLabels": false,
"showLabels": false,
"showTime": true,
"sortOrder": "Descending",
"wrapLogMessage": false
},
"targets": [
{
"datasource": {
"type": "loki",
"uid": "Loki"
},
"expr": "{job=\"systemd-journal\"}",
"refId": "A"
}
],
"title": "System Logs",
"type": "logs"
}
],
"schemaVersion": 38,
"style": "dark",
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "System Logs",
"uid": "system-logs",
"version": 1
}

View file

@ -0,0 +1,115 @@
{
services.loki = {
enable = true;
configuration = {
auth_enabled = false;
server = {
http_listen_address = "0.0.0.0";
http_listen_port = 3100;
grpc_listen_port = 9096;
};
common = {
ring = {
instance_addr = "127.0.0.1";
kvstore.store = "inmemory";
};
replication_factor = 1;
path_prefix = "/var/lib/loki";
};
ingester = {
wal = {
enabled = true;
dir = "/var/lib/loki/wal";
};
chunk_encoding = "snappy";
chunk_idle_period = "30m";
max_chunk_age = "2h";
chunk_target_size = 1572864;
chunk_block_size = 262144;
};
limits_config = {
reject_old_samples = true;
reject_old_samples_max_age = "168h";
ingestion_rate_mb = 10;
ingestion_burst_size_mb = 20;
per_stream_rate_limit = "3MB";
per_stream_rate_limit_burst = "15MB";
max_line_size = "256KB";
};
schema_config = {
configs = [
{
from = "2026-01-01";
store = "tsdb";
object_store = "filesystem";
schema = "v13";
index = {
prefix = "index_";
period = "24h";
};
}
];
};
storage_config = {
filesystem = {
directory = "/var/lib/loki/chunks";
};
};
compactor = {
working_directory = "/var/lib/loki/compactor";
compaction_interval = "10m";
retention_enabled = true;
retention_delete_delay = "2h";
retention_delete_worker_count = 150;
delete_request_store = "filesystem";
};
};
};
services.grafana = {
enable = true;
settings = {
server = {
http_addr = "0.0.0.0";
http_port = 3003;
};
"auth.anonymous" = {
enabled = true;
org_name = "Main Org.";
org_role = "Admin";
};
};
provision = {
enable = true;
datasources.settings = {
apiVersion = 1;
datasources = [
{
name = "Loki";
type = "loki";
access = "proxy";
url = "http://127.0.0.1:3100";
isDefault = true;
uid = "loki";
}
];
};
dashboards.settings.providers = [
{
name = "default";
options.path = ./dashboards;
}
];
};
};
networking.firewall.allowedTCPPorts = [ 3100 ];
}

View file

@ -1,3 +0,0 @@
{
security.pki.certificateFiles = [ ./root_ca.crt ];
}

View file

@ -1,12 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIBrzCCAVWgAwIBAgIQDV0M0pLkCXvARpa+ipSx8jAKBggqhkjOPQQDAjA2MRUw
EwYDVQQKEwxzaWQtaW50ZXJuYWwxHTAbBgNVBAMTFHNpZC1pbnRlcm5hbCBSb290
IENBMB4XDTI2MDQxODIwMzkwMloXDTM2MDQxNTIwMzkwMlowNjEVMBMGA1UEChMM
c2lkLWludGVybmFsMR0wGwYDVQQDExRzaWQtaW50ZXJuYWwgUm9vdCBDQTBZMBMG
ByqGSM49AgEGCCqGSM49AwEHA0IABCH2VmIwKEjdma4UymD7RWuGcaT2algrL5nm
TE0NzP8giezdU9bEP487AvUPPibSYDWxdp4ycbl6qNVTiy29xkmjRTBDMA4GA1Ud
DwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBRaiBACRDZk
HZMU9y8YsUF4WPB+5TAKBggqhkjOPQQDAgNIADBFAiAh+b49V2VTnT6nRCRM0Qwq
ruzayrrnmF7pIxi9PVFwBQIhANQsL3ok4gCTRAnT0mUXSyWexzSESZ1lkpLYiyoj
RgLi
-----END CERTIFICATE-----

View file

@ -0,0 +1,43 @@
{ config, constants, ... }:
{
services.promtail = {
enable = true;
configuration = {
server = {
http_listen_port = 9080;
grpc_listen_port = 0;
};
clients = [
{
url = "http://${constants.hosts.sid.ip}:3100/loki/api/v1/push";
}
];
scrape_configs = [
{
job_name = "journal";
journal = {
max_age = "12h";
path = "/var/log/journal";
labels = {
job = "systemd-journal";
host = config.networking.hostName;
};
};
relabel_configs = [
{
source_labels = [ "__journal__systemd_unit" ];
target_label = "unit";
}
];
}
];
};
};
users.users.promtail.extraGroups = [ "systemd-journal" ];
}

View file

@ -7,23 +7,26 @@
let let
cfg = config.services.rsshub-oci; cfg = config.services.rsshub-oci;
domain = config.networking.domain;
subdomain = cfg.reverseProxy.subdomain;
fqdn = if (cfg.reverseProxy.enable && subdomain != "") then "${subdomain}.${domain}" else domain;
images = { images = {
# https://github.com/DIYgod/RSSHub/pkgs/container/rsshub # https://github.com/DIYgod/RSSHub/pkgs/container/rsshub
rsshub = pkgs.dockerTools.pullImage { rsshub = pkgs.dockerTools.pullImage {
imageName = "ghcr.io/diygod/rsshub"; imageName = "ghcr.io/diygod/rsshub";
imageDigest = "sha256:67e23d9afc6081753c1a51a71f5a58f57d43b12ff927c2263a9f767112ec1819"; imageDigest = "sha256:93660573e0fbfe1062e4fc512acf5043e1399519cdd9a11f130a8332306e8fdd";
hash = "sha256-vEQi12NCY35dGJ3vKUjwocfRn8xOBp/2inIqg8DNTRE="; hash = "sha256-cP2RnV6zmLoYzHgvuuHpqlRcNngD+YFRfRkFMNFQxG8=";
finalImageName = "ghcr.io/diygod/rsshub"; finalImageName = "ghcr.io/diygod/rsshub";
finalImageTag = "2026-03-07"; finalImageTag = "2026-05-04";
}; };
# https://github.com/browserless/browserless/pkgs/container/chromium # https://github.com/browserless/browserless/pkgs/container/chromium
browserless = pkgs.dockerTools.pullImage { browserless = pkgs.dockerTools.pullImage {
imageName = "ghcr.io/browserless/chromium"; imageName = "ghcr.io/browserless/chromium";
imageDigest = "sha256:71ae7fa09bd1bf78efaa2803d75c837ab5a56e0d7637695bff3077d87248e642"; imageDigest = "sha256:af3483eb7f125978d511df0d227d37931941b43d2cdb5f768da57263a7a132bf";
hash = "sha256-adu+fvWK1X/nVt2cFLDO0Czq6GA+46VvL1wy9KQ+/tI="; hash = "sha256-qKx/I9X/GTnoWpHY3gtZUoeL65ndOzU29bGjR6QLYp4=";
finalImageName = "ghcr.io/browserless/chromium"; finalImageName = "ghcr.io/browserless/chromium";
finalImageTag = "v2.42.0"; finalImageTag = "v2.48.2";
}; };
# https://github.com/hyoban/puppeteer-real-browser-hono/pkgs/container/puppeteer-real-browser-hono # https://github.com/hyoban/puppeteer-real-browser-hono/pkgs/container/puppeteer-real-browser-hono
real-browser = pkgs.dockerTools.pullImage { real-browser = pkgs.dockerTools.pullImage {
@ -36,13 +39,12 @@ let
# https://hub.docker.com/_/redis # https://hub.docker.com/_/redis
redis = pkgs.dockerTools.pullImage { redis = pkgs.dockerTools.pullImage {
imageName = "redis"; imageName = "redis";
imageDigest = "sha256:2afba59292f25f5d1af200496db41bea2c6c816b059f57ae74703a50a03a27d0"; imageDigest = "sha256:c5e375abb885e6b2021c0377879e4890bf76f9065b8922ffc113f2b226b9fc17";
hash = "sha256-t3SFoeUME8Ntz5QdMfJnJ3QYRNAaHHpXngnBvR8LOlg="; hash = "sha256-ls1be+fp+chENJ7OrYng5EY3zdHsfiZCW3fmvwzwzj8=";
finalImageName = "redis"; finalImageName = "redis";
finalImageTag = "8.6.1-alpine"; finalImageTag = "8.6.2-alpine";
}; };
}; };
defaultEnv = { defaultEnv = {
NODE_ENV = "production"; NODE_ENV = "production";
CACHE_TYPE = "redis"; CACHE_TYPE = "redis";
@ -59,6 +61,10 @@ let
optional optional
types types
; ;
inherit (lib.utils)
mkReverseProxyOption
mkVirtualHost
;
in in
{ {
options.services.rsshub-oci = { options.services.rsshub-oci = {
@ -78,6 +84,7 @@ in
default = null; default = null;
description = "Environment file for secrets."; description = "Environment file for secrets.";
}; };
reverseProxy = mkReverseProxyOption "RSSHub" "rsshub";
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -87,6 +94,13 @@ in
dockerCompat = true; dockerCompat = true;
}; };
services.nginx.virtualHosts = mkIf cfg.reverseProxy.enable {
"${fqdn}" = mkVirtualHost {
inherit (cfg) port;
ssl = cfg.reverseProxy.forceSSL;
};
};
networking.firewall.interfaces = networking.firewall.interfaces =
let let
matchAll = if !config.networking.nftables.enable then "podman+" else "podman*"; matchAll = if !config.networking.nftables.enable then "podman+" else "podman*";

View file

@ -11,7 +11,7 @@
loginServer = "https://hs.sid.ovh"; loginServer = "https://hs.sid.ovh";
authKeyFile = config.sops.secrets."tailscale/personal-key".path; authKeyFile = config.sops.secrets."tailscale/personal-key".path;
enableSSH = true; enableSSH = true;
acceptDNS = false; # use coredns acceptDNS = true;
}; };
}; };
}; };

View file

@ -12,6 +12,7 @@
final: prev: final: prev:
let let
files = [ files = [
./rss-bridge.nix
]; ];
imports = builtins.map (f: import f final prev) files; imports = builtins.map (f: import f final prev) files;
in in

11
overlays/rss-bridge.nix Normal file
View file

@ -0,0 +1,11 @@
final: prev: {
rss-bridge = prev.rss-bridge.overrideAttrs (oldAttrs: {
version = "unstable-2026-06";
src = prev.fetchFromGitHub {
owner = "sid115";
repo = "rss-bridge";
rev = "8f2109f53a6dc63811d2c2fc9840edb247c369e7";
sha256 = "sha256-XA3ei+fps+4DHgtn7ytjH7UUsYFDYq0kTlN6wgrzii8=";
};
});
}