summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--flake.lock500
-rwxr-xr-xflake.nix38
-rw-r--r--host/Rory-desktop/configuration.nix52
-rwxr-xr-xhost/Rory-ovh/configuration.nix16
-rw-r--r--host/Rory-ovh/services/containers/draupnir-ansible/services/draupnir.nix8
-rw-r--r--host/Rory-ovh/services/containers/draupnir-belibre/container.nix29
-rw-r--r--host/Rory-ovh/services/containers/draupnir-belibre/root.nix16
-rw-r--r--host/Rory-ovh/services/containers/draupnir-belibre/services/draupnir.nix67
-rw-r--r--host/Rory-ovh/services/containers/draupnir-fedora/services/draupnir.nix8
-rw-r--r--host/Rory-ovh/services/containers/spacebar/root.nix14
-rw-r--r--host/Rory-ovh/services/containers/spacebar/services/spacebar.nix8
-rwxr-xr-xhost/Rory-ovh/services/matrix/draupnir.nix41
-rw-r--r--host/Rory-ovh/spacebar-monitoring.nix40
-rwxr-xr-xmodules/base-server.nix42
-rwxr-xr-xmodules/base.nix6
-rw-r--r--modules/software-templates/devenv/c-cpp.nix4
-rw-r--r--modules/software-templates/devenv/dotnet.nix4
-rw-r--r--modules/software-templates/devenv/go.nix17
-rw-r--r--modules/software-templates/devenv/java.nix4
-rw-r--r--modules/software-templates/devenv/javascript.nix4
-rw-r--r--modules/users/Arci.nix3
-rwxr-xr-xmodules/users/Rory.nix17
-rw-r--r--modules/users/geba.nix3
-rwxr-xr-xmodules/users/ks.nix1
-rw-r--r--packages/overlays/matrix-synapse/patches/0001-Add-CVE-IDs-to-changelog-for-1.152.1.-19778.patch29
-rw-r--r--packages/overlays/matrix-synapse/patches/0002-nix-use-postgres-17.patch (renamed from packages/overlays/matrix-synapse/patches/0001-nix-use-postgres-17.patch)6
-rw-r--r--packages/overlays/matrix-synapse/patches/0003-nix-fix-flake.patch (renamed from packages/overlays/matrix-synapse/patches/0002-nix-fix-flake.patch)6
-rw-r--r--packages/overlays/matrix-synapse/patches/0004-nix-Update-flake.patch (renamed from packages/overlays/matrix-synapse/patches/0003-nix-Update-flake.patch)10
-rw-r--r--packages/overlays/matrix-synapse/patches/0005-nix-Temporarily-disable-go-in-flake.patch (renamed from packages/overlays/matrix-synapse/patches/0004-nix-Temporarily-disable-go-in-flake.patch)8
-rw-r--r--packages/overlays/matrix-synapse/patches/0006-Add-test-script.patch (renamed from packages/overlays/matrix-synapse/patches/0005-Add-test-script.patch)6
-rw-r--r--packages/overlays/matrix-synapse/patches/0007-Fix-gitignore-to-ignore-.venv.patch (renamed from packages/overlays/matrix-synapse/patches/0006-Fix-gitignore-to-ignore-.venv.patch)6
-rw-r--r--packages/overlays/matrix-synapse/patches/0008-Fast-auth-links.patch (renamed from packages/overlays/matrix-synapse/patches/0007-Fast-auth-links.patch)8
-rw-r--r--packages/overlays/matrix-synapse/patches/0009-Add-too-much-logging-to-room-summary-over-federation.patch (renamed from packages/overlays/matrix-synapse/patches/0008-Add-too-much-logging-to-room-summary-over-federation.patch)10
-rw-r--r--packages/overlays/matrix-synapse/patches/0010-Log-entire-room-if-accessibility-check-fails.patch (renamed from packages/overlays/matrix-synapse/patches/0009-Log-entire-room-if-accessibility-check-fails.patch)10
-rw-r--r--packages/overlays/matrix-synapse/patches/0010-Log-policy-server-rejected-events.patch31
-rw-r--r--packages/overlays/matrix-synapse/patches/0011-Use-parse_boolean-for-unredacted-content.patch10
-rw-r--r--packages/overlays/matrix-synapse/patches/0012-Expose-tombstone-in-room-admin-api.patch24
-rw-r--r--packages/overlays/matrix-synapse/patches/0013-fix-Always-recheck-messages-pagination-data-if-a-bac.patch36
-rw-r--r--packages/overlays/matrix-synapse/patches/0014-Fix-pagination-with-large-gaps-of-rejected-events.patch50
-rw-r--r--packages/overlays/matrix-synapse/patches/0015-RequestRatelimiter-expose-can_do_action.patch6
-rw-r--r--packages/overlays/matrix-synapse/patches/0016-Clarify-pre_event_ids-assert-in-event-creation-handl.patch10
-rw-r--r--packages/overlays/matrix-synapse/patches/0017-Add-bulk-send-events-endpoint.patch24
-rw-r--r--packages/overlays/matrix-synapse/patches/0018-admin-api-send-more-data.patch22
-rw-r--r--packages/overlays/matrix-synapse/patches/0019-Allow-overriding-max-background-task-count.patch8
-rw-r--r--packages/overlays/matrix-synapse/patches/0020-max-and-min-were-probably-switched.-Set-max-to-arbit.patch39
-rw-r--r--packages/overlays/matrix-synapse/patches/0021-changelog.patch20
-rw-r--r--packages/overlays/matrix-synapse/patches/0022-Update-changelog.d-19394.bugfix.patch20
-rw-r--r--packages/overlays/matrix-synapse/patches/0023-Adjust-for-the-retry-interval-actually-being-a-timeo.patch257
-rw-r--r--packages/overlays/matrix-synapse/patches/0024-unecessarily-long-pump-in-test-left-over-from-testin.patch26
-rw-r--r--packages/overlays/matrix-synapse/patches/0025-adjust-changelog-again.patch19
-rwxr-xr-xprebuild.sh2
51 files changed, 586 insertions, 1059 deletions
diff --git a/flake.lock b/flake.lock

index 00eec75..37354f9 100644 --- a/flake.lock +++ b/flake.lock
@@ -57,30 +57,6 @@ "type": "github" } }, - "attic_2": { - "inputs": { - "crane": "crane_3", - "flake-compat": "flake-compat_3", - "flake-parts": "flake-parts_2", - "nix-github-actions": "nix-github-actions_2", - "nixpkgs": "nixpkgs_4", - "nixpkgs-stable": "nixpkgs-stable_2" - }, - "locked": { - "lastModified": 1758711588, - "narHash": "sha256-0nZlCCDC5PfndsQJXXtcyrtrfW49I3KadGMDlutzaGU=", - "owner": "zhaofengli", - "repo": "attic", - "rev": "12cbeca141f46e1ade76728bce8adc447f2166c6", - "type": "github" - }, - "original": { - "owner": "zhaofengli", - "ref": "main", - "repo": "attic", - "type": "github" - } - }, "botcore-v4": { "inputs": { "nixpkgs": "nixpkgs" @@ -184,65 +160,14 @@ "type": "github" } }, - "crane_3": { - "locked": { - "lastModified": 1751562746, - "narHash": "sha256-smpugNIkmDeicNz301Ll1bD7nFOty97T79m4GUMUczA=", - "owner": "ipetkov", - "repo": "crane", - "rev": "aed2020fd3dc26e1e857d4107a5a67a33ab6c1fd", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "crane_4": { - "locked": { - "lastModified": 1772080396, - "narHash": "sha256-84W9UNtSk9DNMh43WBkOjpkbfODlmg+RDi854PnNgLE=", - "owner": "ipetkov", - "repo": "crane", - "rev": "8525580bc0316c39dbfa18bd09a1331e98c9e463", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "ref": "master", - "repo": "crane", - "type": "github" - } - }, - "drasl": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1775253339, - "narHash": "sha256-uP07QbRBILuQjXjaAwAE10LjC9T7CbKWk6P40aU1dV0=", - "owner": "unmojang", - "repo": "drasl", - "rev": "671d2a90775e5ec369b36eaca89ad68ff1a606ae", - "type": "github" - }, - "original": { - "owner": "unmojang", - "repo": "drasl", - "type": "github" - } - }, "draupnirSrc": { "flake": false, "locked": { - "lastModified": 1775154181, - "narHash": "sha256-WrMYak6ztIy3KqjcVuN2OmIy1uxlIVNvHPGw7e3LRw0=", + "lastModified": 1779012439, + "narHash": "sha256-Iys8Fi9SAz1etN4HdQ82Vb7/7a+Lqi8JG4vm03MLfEo=", "owner": "the-draupnir-project", "repo": "Draupnir", - "rev": "1cb4c59c0213c0f558e1616331fdfc771ce3b2bb", + "rev": "5c8f6a30a1657ffe198068e87e9c5dbf58d18648", "type": "github" }, "original": { @@ -274,29 +199,6 @@ "type": "github" } }, - "fenix_2": { - "inputs": { - "nixpkgs": [ - "grapevine", - "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src_2" - }, - "locked": { - "lastModified": 1772261909, - "narHash": "sha256-8XbJXrhMFhLgoBrjFIJx5XJi+SD+7/gbvaIXCuqy9Z0=", - "owner": "nix-community", - "repo": "fenix", - "rev": "e4c413b9546d6c9e6426b33b4d6de1a49a375024", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "main", - "repo": "fenix", - "type": "github" - } - }, "flake-compat": { "flake": false, "locked": { @@ -332,39 +234,6 @@ "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_4": { - "flake": false, - "locked": { - "lastModified": 1767039857, - "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", - "type": "github" - }, - "original": { - "owner": "edolstra", - "ref": "master", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_5": { - "flake": false, - "locked": { "lastModified": 1767039857, "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", "owner": "NixOS", @@ -378,7 +247,7 @@ "type": "github" } }, - "flake-compat_6": { + "flake-compat_4": { "flake": false, "locked": { "lastModified": 1767039857, @@ -394,7 +263,7 @@ "type": "github" } }, - "flake-compat_7": { + "flake-compat_5": { "flake": false, "locked": { "lastModified": 1767039857, @@ -432,28 +301,6 @@ "type": "github" } }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "grapevine", - "attic", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1751413152, - "narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "77826244401ea9de6e3bac47c2db46005e1f30b5", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, "flake-utils": { "inputs": { "systems": "systems" @@ -510,7 +357,7 @@ }, "flake-utils_4": { "inputs": { - "systems": "systems_4" + "systems": "systems_5" }, "locked": { "lastModified": 1731533236, @@ -522,32 +369,13 @@ }, "original": { "owner": "numtide", - "ref": "main", "repo": "flake-utils", "type": "github" } }, "flake-utils_5": { "inputs": { - "systems": "systems_6" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_6": { - "inputs": { - "systems": "systems_8" + "systems": "systems_7" }, "locked": { "lastModified": 1731533236, @@ -562,9 +390,9 @@ "type": "indirect" } }, - "flake-utils_7": { + "flake-utils_6": { "inputs": { - "systems": "systems_9" + "systems": "systems_8" }, "locked": { "lastModified": 1731533236, @@ -597,7 +425,7 @@ }, "git-hooks": { "inputs": { - "flake-compat": "flake-compat_7", + "flake-compat": "flake-compat_5", "gitignore": "gitignore_2", "nixpkgs": [ "nom", @@ -605,11 +433,11 @@ ] }, "locked": { - "lastModified": 1775036584, - "narHash": "sha256-zW0lyy7ZNNT/x8JhzFHBsP2IPx7ATZIPai4FJj12BgU=", + "lastModified": 1778507602, + "narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "4e0eb042b67d863b1b34b3f64d52ceb9cd926735", + "rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a", "type": "github" }, "original": { @@ -662,42 +490,16 @@ "type": "github" } }, - "grapevine": { - "inputs": { - "attic": "attic_2", - "crane": "crane_4", - "fenix": "fenix_2", - "flake-compat": "flake-compat_4", - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_5", - "rocksdb": "rocksdb" - }, - "locked": { - "host": "gitlab.computer.surgery", - "lastModified": 1772652123, - "narHash": "sha256-0Rxw9gO/yX8Z+/oggglo6G64b03jyYStrsrrAJsU2NE=", - "owner": "matrix", - "repo": "grapevine-fork", - "rev": "f82328dcf20e4f4a03e7fce11cb66bb8660e1c80", - "type": "gitlab" - }, - "original": { - "host": "gitlab.computer.surgery", - "owner": "matrix", - "repo": "grapevine-fork", - "type": "gitlab" - } - }, "home-manager": { "inputs": { - "nixpkgs": "nixpkgs_6" + "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1775268934, - "narHash": "sha256-Sa5tW5kYPJornQEkFVD43F/0d4/WP+/GLTNktTFe2qU=", + "lastModified": 1779027260, + "narHash": "sha256-ZbgWWFQmSyM3HQ31nAZk2hJ7OSeNr9uRFHL8jCifY9M=", "owner": "nix-community", "repo": "home-manager", - "rev": "9dc93220c1c9a410ef6277d6dc55c571d9e592d0", + "rev": "bcb774cfc3268120cd61808629f9aa7dad3750a2", "type": "github" }, "original": { @@ -780,7 +582,7 @@ "nixpkgs" ], "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems_5", + "systems": "systems_4", "xdph": "xdph" }, "locked": { @@ -1034,11 +836,11 @@ "lix": { "flake": false, "locked": { - "lastModified": 1774721317, - "narHash": "sha256-KS0ElyhZKdUFcfaxfwid3yi2Id3EP9i+dGL16/wx1T8=", - "rev": "d0190cff6f2314cc1c727ff113aea20e086f4bcc", + "lastModified": 1778147108, + "narHash": "sha256-pK0oP+HYH8XVPwZ6BB0DAC4ex0gCsj0FLH5182BBgBU=", + "rev": "7831c98a4db589c84cf730db23793afe3fd90f2d", "type": "tarball", - "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/d0190cff6f2314cc1c727ff113aea20e086f4bcc.tar.gz?rev=d0190cff6f2314cc1c727ff113aea20e086f4bcc" + "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/7831c98a4db589c84cf730db23793afe3fd90f2d.tar.gz?rev=7831c98a4db589c84cf730db23793afe3fd90f2d" }, "original": { "type": "tarball", @@ -1047,7 +849,7 @@ }, "lix-module": { "inputs": { - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_4", "flakey-profile": "flakey-profile", "lix": [ "lix" @@ -1071,11 +873,11 @@ "matrixSpecSrc": { "flake": false, "locked": { - "lastModified": 1774996059, - "narHash": "sha256-++UyNBrzc0L5VW23YsY+ykYDGbLI23x5v1fTCKiYiTs=", + "lastModified": 1778746843, + "narHash": "sha256-WqbQnI1UMpMIZe/2+Li5Dvm6DRpm6fhiX3LdZricFww=", "owner": "matrix-org", "repo": "matrix-spec", - "rev": "156d1b878aa3a2369c2de248c57b6b7176412bb3", + "rev": "905165ffd3750f6d219a4b1b1347698c9bd1601b", "type": "github" }, "original": { @@ -1105,11 +907,11 @@ "nhekoSrc": { "flake": false, "locked": { - "lastModified": 1774004536, - "narHash": "sha256-7DLsLimyc2YLcI6JTDY17jvVLC/tjJoJyl9DgDld4KA=", + "lastModified": 1778283689, + "narHash": "sha256-Zyvfxuk77FYBYwPJykK6YBnnCLG1BeN6jJ5gcDA5Go4=", "owner": "Nheko-reborn", "repo": "nheko", - "rev": "685cceac0f61a9776c9010a6f134fcb87f1add53", + "rev": "90ff9c6f36dd9df9e0e23212c34b83ec61772bba", "type": "github" }, "original": { @@ -1156,40 +958,18 @@ "type": "github" } }, - "nix-github-actions_2": { - "inputs": { - "nixpkgs": [ - "grapevine", - "attic", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1737420293, - "narHash": "sha256-F1G5ifvqTpJq7fdkT34e/Jy9VCyzd5XfJ9TO8fHhJWE=", - "owner": "nix-community", - "repo": "nix-github-actions", - "rev": "f4158fa080ef4503c8f4c820967d946c2af31ec9", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nix-github-actions", - "type": "github" - } - }, "nix-jetbrains-plugins": { "inputs": { - "flake-compat": "flake-compat_6", - "nixpkgs": "nixpkgs_7", - "systems": "systems_7" + "flake-compat": "flake-compat_4", + "nixpkgs": "nixpkgs_5", + "systems": "systems_6" }, "locked": { - "lastModified": 1775285005, - "narHash": "sha256-kPR2oxUgJdYlgfxj91RrbMahIhvLfjHCLo+YIkwa2ZE=", + "lastModified": 1778951860, + "narHash": "sha256-aFjBC3AVLh/bsgcsoI6Z/yQmh/NABffwHJIqQOTj+Tg=", "owner": "nix-community", "repo": "nix-jetbrains-plugins", - "rev": "546cfbddead4789f76ff77b7751de30a3f4c6ef5", + "rev": "68930eefa5e77fc6bb7977635c83a003683c2f11", "type": "github" }, "original": { @@ -1216,11 +996,11 @@ }, "nixpkgs-RoryNix": { "locked": { - "lastModified": 1775292572, - "narHash": "sha256-YRI9gjlK2rh9mvtC2wYpXYqGIQ61lmSe3Hmp8E60JnU=", + "lastModified": 1779047664, + "narHash": "sha256-GGvK1crvlJa9vBwV7UBTRXB1XOFLoB3RAPsDcnqLr+E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "61a90ea4761c15b47cbf78c528ede5c2495f658b", + "rev": "195e19cca23a3f7e553b45fc26fed71ac1e39a6a", "type": "github" }, "original": { @@ -1232,11 +1012,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1775292572, - "narHash": "sha256-YRI9gjlK2rh9mvtC2wYpXYqGIQ61lmSe3Hmp8E60JnU=", + "lastModified": 1779047664, + "narHash": "sha256-GGvK1crvlJa9vBwV7UBTRXB1XOFLoB3RAPsDcnqLr+E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "61a90ea4761c15b47cbf78c528ede5c2495f658b", + "rev": "195e19cca23a3f7e553b45fc26fed71ac1e39a6a", "type": "github" }, "original": { @@ -1246,39 +1026,39 @@ "type": "github" } }, - "nixpkgs-stable": { + "nixpkgs-override-draupnir": { "locked": { - "lastModified": 1724316499, - "narHash": "sha256-Qb9MhKBUTCfWg/wqqaxt89Xfi6qTD3XpTzQ9eXi3JmE=", + "lastModified": 1779707573, + "narHash": "sha256-wHca//T/RJVV/1S5ceiC16f/Rk0XU0aCGesWoXeiRjI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "797f7dc49e0bc7fab4b57c021cdf68f595e47841", + "rev": "7e18ec57066eedfca6259e4d7717eae8eb619b67", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-24.05", + "ref": "master", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-stable_2": { + "nixpkgs-stable": { "locked": { - "lastModified": 1751741127, - "narHash": "sha256-t75Shs76NgxjZSgvvZZ9qOmz5zuBE8buUaYD28BMTxg=", + "lastModified": 1724316499, + "narHash": "sha256-Qb9MhKBUTCfWg/wqqaxt89Xfi6qTD3XpTzQ9eXi3JmE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "29e290002bfff26af1db6f64d070698019460302", + "rev": "797f7dc49e0bc7fab4b57c021cdf68f595e47841", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-25.05", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-stable_3": { + "nixpkgs-stable_2": { "locked": { "lastModified": 1767313136, "narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=", @@ -1294,38 +1074,6 @@ "type": "github" } }, - "nixpkgs_10": { - "locked": { - "lastModified": 1774610258, - "narHash": "sha256-HaThtroVD9wRdx7KQk0B75JmFcXlMUoEdDFNOMOlsOs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "832efc09b4caf6b4569fbf9dc01bec3082a00611", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1774709743, - "narHash": "sha256-iwwgwHv32WRB4+Ol5S3acFkwA/u4Cx80sTKOve6j1P8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "73f0991bf391b257e98125272bf3f43ea6aec1c7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "master", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_2": { "locked": { "lastModified": 1726042813, @@ -1360,27 +1108,27 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1751949589, - "narHash": "sha256-mgFxAPLWw0Kq+C8P3dRrZrOYEQXOtKuYVlo9xvPntt8=", + "lastModified": 1778443072, + "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9b008d60392981ad674e04016d25619281550a9d", + "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_5": { "locked": { - "lastModified": 1772198003, - "narHash": "sha256-I45esRSssFtJ8p/gLHUZ1OUaaTaVLluNkABkk6arQwE=", + "lastModified": 1778443072, + "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dd9b079222d43e1943b6ebd802f04fd959dc8e61", + "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", "type": "github" }, "original": { @@ -1392,11 +1140,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1774709303, - "narHash": "sha256-D3Q07BbIA2KnTcSXIqqu9P586uWxN74zNoCH3h2ESHg=", + "lastModified": 1778869304, + "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", "type": "github" }, "original": { @@ -1408,11 +1156,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1767640445, - "narHash": "sha256-UWYqmD7JFBEDBHWYcqE6s6c77pWdcU/i+bwD6XxMb8A=", + "lastModified": 1777578337, + "narHash": "sha256-Ad49moKWeXtKBJNy2ebiTQUEgdLyvGmTeykAQ9xM+Z4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9f0c42f8bc7151b8e7e5840fb3bd454ad850d8c5", + "rev": "15f4ee454b1dce334612fa6843b3e05cf546efab", "type": "github" }, "original": { @@ -1424,50 +1172,50 @@ }, "nixpkgs_8": { "locked": { - "lastModified": 1775036866, - "narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=", + "lastModified": 1775888245, + "narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6201e203d09599479a3b3450ed24fa81537ebc4e", + "rev": "13043924aaa7375ce482ebe2494338e058282925", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_9": { "locked": { - "lastModified": 1764517877, - "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", + "lastModified": 1778979197, + "narHash": "sha256-d83oRDbsJ+XrYqxqe/z5CIGRrY2B5xYC308UsQXdmus=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", + "rev": "233ebfd96819ab13eff099ded59063c8bfb80d63", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "master", "repo": "nixpkgs", "type": "github" } }, "nom": { "inputs": { - "flake-utils": "flake-utils_6", + "flake-utils": "flake-utils_5", "git-hooks": "git-hooks", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1775188977, - "narHash": "sha256-fEcyfTV1+GEXJgpOlem+d+Dsa8twe3Qw8RFO0d8RCWM=", + "lastModified": 1778817799, + "narHash": "sha256-dO9+Q2P7b9a7ivaNS9bbtkCaDi5eqZpzgIhUzc1iL/Y=", "owner": "maralorn", "repo": "nix-output-monitor", - "rev": "8f8e7caf3c5a440683b12b99f93926966da312a5", + "rev": "35823353dd2a4f3c30ef650839c39ee843d85679", "type": "github" }, "original": { @@ -1478,14 +1226,14 @@ }, "ooye": { "inputs": { - "nixpkgs": "nixpkgs_9" + "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1765676020, - "narHash": "sha256-5t3t7h4s6Qoxp56HPNEKGnk+OTv8FNB/8hxSarCMrAY=", + "lastModified": 1777734248, + "narHash": "sha256-+jVsr0osin+zDOUrDooe3UaPJq82OEDRXq/qnqoOGUc=", "ref": "refs/heads/master", - "rev": "24128571fba0404572f594e9423f5a81aff87aa4", - "revCount": 24, + "rev": "30602e93bf809d0b9911a5c4678d830580ec1e3a", + "revCount": 26, "type": "git", "url": "https://cgit.rory.gay/nix/OOYE-module.git" }, @@ -1521,7 +1269,7 @@ }, "pre-commit-hooks": { "inputs": { - "flake-compat": "flake-compat_5", + "flake-compat": "flake-compat_3", "gitignore": "gitignore", "nixpkgs": [ "hyprland", @@ -1542,32 +1290,13 @@ "type": "github" } }, - "rocksdb": { - "flake": false, - "locked": { - "lastModified": 1752084860, - "narHash": "sha256-mKh6zsmxsiUix4LX+npiytmKvLbo6WNA9y4Ns/EY+bE=", - "owner": "facebook", - "repo": "rocksdb", - "rev": "410c5623195ecbe4699b9b5a5f622c7325cec6fe", - "type": "github" - }, - "original": { - "owner": "facebook", - "ref": "v10.4.2", - "repo": "rocksdb", - "type": "github" - } - }, "root": { "inputs": { "botcore-v4": "botcore-v4", "cgit-magenta": "cgit-magenta", "conduit": "conduit", - "drasl": "drasl", "draupnirSrc": "draupnirSrc", "flake-utils": "flake-utils_3", - "grapevine": "grapevine", "home-manager": "home-manager", "hyprland": "hyprland", "lix": "lix", @@ -1576,10 +1305,11 @@ "mtxclientSrc": "mtxclientSrc", "nhekoSrc": "nhekoSrc", "nix-jetbrains-plugins": "nix-jetbrains-plugins", - "nixpkgs": "nixpkgs_8", + "nixpkgs": "nixpkgs_6", "nixpkgs-RoryNix": "nixpkgs-RoryNix", "nixpkgs-master": "nixpkgs-master", - "nixpkgs-stable": "nixpkgs-stable_3", + "nixpkgs-override-draupnir": "nixpkgs-override-draupnir", + "nixpkgs-stable": "nixpkgs-stable_2", "nom": "nom", "ooye": "ooye", "sops-nix": "sops-nix", @@ -1604,33 +1334,16 @@ "type": "github" } }, - "rust-analyzer-src_2": { - "flake": false, - "locked": { - "lastModified": 1772178959, - "narHash": "sha256-DkjUvrEnnhHjOcjMx6aXfYGIZ0PWmcYzvVayhRj1r4M=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "8494a8b3b769c17e8594d811012cc1b0fab090c7", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_10" + "nixpkgs": "nixpkgs_8" }, "locked": { - "lastModified": 1775188331, - "narHash": "sha256-/0BoSi0Dg0ON7IW0oscM12WSPBaMSCn36XTt0lHZoy8=", + "lastModified": 1777944972, + "narHash": "sha256-VfGRo1qTBKOe3s2gOv8LSoA6Fk19PvBlwQ1ECN0Evn8=", "owner": "Mic92", "repo": "sops-nix", - "rev": "8f093d0d2f08f37317778bd94db5951d6cce6c46", + "rev": "c591bf665727040c6cc5cb409079acb22dcce33c", "type": "github" }, "original": { @@ -1641,16 +1354,16 @@ }, "spacebar": { "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_11", + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_9", "pion-webrtc": "pion-webrtc" }, "locked": { - "lastModified": 1774987951, - "narHash": "sha256-0wfYV5mAskVGC2gVVpBKPJGiGdAkm+PDKDct4NC3A9Y=", + "lastModified": 1781766293, + "narHash": "sha256-IkZQ7q6sFATMxF7jDE4Zm0TJ7oLQnsGWKqMMUARjpxI=", "owner": "spacebarchat", "repo": "server", - "rev": "12422e9a9afb1e3ce22243cbd80fec715d4dcc39", + "rev": "18dd02f151512a723918c400a2402a993e2ec10e", "type": "github" }, "original": { @@ -1722,21 +1435,6 @@ }, "systems_4": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_5": { - "locked": { "lastModified": 1689347949, "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", "owner": "nix-systems", @@ -1750,7 +1448,7 @@ "type": "github" } }, - "systems_6": { + "systems_5": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1765,7 +1463,7 @@ "type": "github" } }, - "systems_7": { + "systems_6": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1780,7 +1478,7 @@ "type": "github" } }, - "systems_8": { + "systems_7": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1795,7 +1493,7 @@ "type": "github" } }, - "systems_9": { + "systems_8": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", diff --git a/flake.nix b/flake.nix
index fa16501..e658f21 100755 --- a/flake.nix +++ b/flake.nix
@@ -7,13 +7,13 @@ "http://nix-bincache.rory-desktop.local" "http://nix-bincache.rory-laptop.local" # public - "https://attic.computer.surgery/grapevine" + #"https://attic.computer.surgery/grapevine" "https://hyprland.cachix.org" "https://nix-bincache.rory.gay" ]; extra-trusted-public-keys = [ "nix-bincache.rory-desktop.local:LDcVGNQoaprWeggWcRE1N0jjEqdjOR1D0kOI3fZne24=" - "grapevine:nYiZ0Qz9nT7Y7kNC/2NdoS3+J9gwTyWxOvlwZnFgceA=" + #"grapevine:nYiZ0Qz9nT7Y7kNC/2NdoS3+J9gwTyWxOvlwZnFgceA=" "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "nix-bincache.rory.gay:663PIW8xxgIImxLcsokODWI2PHFWXvzJEfjX6TaIjxQ=" "nix-bincache.rory-laptop.local:IbXbNC8ok5YYj9HKYU/5GCec5HE/aixgW/+3sRHP2nE=" @@ -32,10 +32,10 @@ }; # Draupnir module/package - #nixpkgs-override-synapse.url = "github:teutat3s/nixpkgs/matrix-synapse-1.136.0"; -# nixpkgs-override-draupnir.url = "github:NixOS/nixpkgs/master"; -# nixpkgs-override-draupnir.url = "github:r-ryantm/nixpkgs/auto-update/draupnir"; -# nixpkgs-override-jetbrains.url = "github:TheArcaneBrony/nixpkgs/jetbrains-2025-4"; + # nixpkgs-override-synapse.url = "github:teutat3s/nixpkgs/matrix-synapse-1.136.0"; + nixpkgs-override-draupnir.url = "github:NixOS/nixpkgs/master"; + # nixpkgs-override-draupnir.url = "github:r-ryantm/nixpkgs/auto-update/draupnir"; + # nixpkgs-override-jetbrains.url = "github:theCapypara/nixpkgs/jetbrains/update-26.1-ssl"; # Base modules home-manager.url = "github:nix-community/home-manager/master"; @@ -44,12 +44,12 @@ nix-jetbrains-plugins.url = "github:nix-community/nix-jetbrains-plugins"; # Packages - grapevine.url = "gitlab:matrix/grapevine-fork?host=gitlab.computer.surgery"; + #grapevine.url = "gitlab:matrix/grapevine-fork?host=gitlab.computer.surgery"; conduit.url = "gitlab:famedly/conduit/next"; - drasl = { - url = "github:unmojang/drasl"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + #drasl = { + # url = "github:unmojang/drasl"; + # inputs.nixpkgs.follows = "nixpkgs"; + #}; # - AUR imports # aur-visual-paradigm = { # url = "git+https://aur.archlinux.org/visual-paradigm.git"; @@ -155,8 +155,8 @@ home-manager.nixosModules.home-manager lix-module.nixosModules.default - grapevine.nixosModules.default - drasl.nixosModules.drasl + #grapevine.nixosModules.default + #drasl.nixosModules.drasl ooye.modules.default ( @@ -183,7 +183,7 @@ specialArgs = { inherit botcore-v4; inherit home-manager; - inherit grapevine; + #inherit grapevine; inherit conduit; #inherit nixpkgs-Draupnir; #inherit nixpkgs-DraupnirPkg; @@ -236,7 +236,7 @@ # }; #}; - Rory-desktop = nixpkgs-master.lib.nixosSystem { + Rory-desktop = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ ./host/Rory-desktop/configuration.nix @@ -249,8 +249,8 @@ { ... }: { nix = { - registry.nixpkgs.flake = nixpkgs-master; - nixPath = [ "nixpkgs=${nixpkgs-master.outPath}" ]; + registry.nixpkgs.flake = nixpkgs; + nixPath = [ "nixpkgs=${nixpkgs.outPath}" ]; }; } ) @@ -296,7 +296,7 @@ ./packages/overlays/lldb.nix ( - { ... }: + { pkgs, ... }: { nix = { registry.nixpkgs.flake = nixpkgs; @@ -487,7 +487,7 @@ inherit (oldAttrs) src; inherit patches; name = "${oldAttrs.pname}-${oldAttrs.version}"; - hash = "sha256-nB7gLPDK8sB65xZkTn5W4MCqx4QwWKDUr8hB8KIu0qY="; + hash = "sha256-RwUsiS6JM5dmqquKVtyaBp67DYZys6Uecy0V6AabTk4="; }; #doInstallCheck = false; diff --git a/host/Rory-desktop/configuration.nix b/host/Rory-desktop/configuration.nix
index 5558a08..20078d9 100644 --- a/host/Rory-desktop/configuration.nix +++ b/host/Rory-desktop/configuration.nix
@@ -19,6 +19,8 @@ args@{ ../../modules/software-templates/eid-mw.nix ../../modules/software-templates/devenv/dotnet.nix ../../modules/software-templates/devenv/javascript.nix + ../../modules/software-templates/devenv/go.nix + ../../modules/software-templates/devenv/java.nix ./services/nginx.nix ./services/postgres.nix @@ -29,7 +31,7 @@ args@{ ./optional/gui/hyprland.nix ./services/libvirt.nix -# ./services/rabbitmq.nix + # ./services/rabbitmq.nix #./services/edu/mongodb.nix #./optional/gui/x11.nix ./services/printing.nix @@ -42,7 +44,11 @@ args@{ boot = { kernelPackages = pkgs.linuxPackages_latest; - binfmt.emulatedSystems = [ "aarch64-linux" "riscv64-linux" "riscv32-linux" ]; + binfmt.emulatedSystems = [ + "aarch64-linux" + "riscv64-linux" + "riscv32-linux" + ]; loader = { grub = { configurationLimit = 10; @@ -58,7 +64,7 @@ args@{ }; # TODO: re-enable when USB is fixed - #programs.noisetorch.enable = true; + programs.noisetorch.enable = true; programs.gamemode.enable = true; users.users.Rory.extraGroups = [ "gamemode" ]; @@ -186,6 +192,7 @@ args@{ intiface-central wine64Packages.waylandFull ft2-clone + luanti ]; hardware = { @@ -237,15 +244,6 @@ args@{ enableGhostscriptFonts = lib.mkForce false; }; - services.cockpit = { - enable = true; - settings = { - WebService = { - AllowUnencrypted = true; - }; - }; - }; - nix.settings.auto-optimise-store = lib.mkForce false; nixpkgs = { config = { @@ -273,7 +271,7 @@ args@{ # }; monitoring = { - monitorAll = false; + monitorAll = true; localPrometheus = true; exposePrometheus = true; localGrafana = true; @@ -281,6 +279,10 @@ args@{ nginxHost = "monitoring.localhost"; nginxSsl = false; }; + + systemd.services."grafana".serviceConfig.LoadCredential = [ + "secret_key:/data/secrets/grafana-secret-key" + ]; networking.hosts."127.0.0.1" = builtins.attrNames config.services.nginx.virtualHosts; @@ -317,7 +319,29 @@ args@{ ]; }; - + services.prometheus.scrapeConfigs = [ + { + job_name = "spacebar-dev-api"; + scrape_interval = "${toString config.monitoring.prometheusScrapeInterval}s"; + static_configs = [ + { targets = [ "localhost:3001" ]; } + ]; + } + { + job_name = "spacebar-dev-gateway"; + scrape_interval = "${toString config.monitoring.prometheusScrapeInterval}s"; + static_configs = [ + { targets = [ "localhost:3002" ]; } + ]; + } + { + job_name = "spacebar-dev-cdn"; + scrape_interval = "${toString config.monitoring.prometheusScrapeInterval}s"; + static_configs = [ + { targets = [ "localhost:3003" ]; } + ]; + } + ]; console = { earlySetup = true; diff --git a/host/Rory-ovh/configuration.nix b/host/Rory-ovh/configuration.nix
index 0ea717d..4acf6ce 100755 --- a/host/Rory-ovh/configuration.nix +++ b/host/Rory-ovh/configuration.nix
@@ -17,6 +17,7 @@ ../../modules/users/Alice.nix ./services/prometheus.nix + ./spacebar-monitoring.nix ./services/nginx/nginx.nix ./services/nix-bincache.nix @@ -27,9 +28,9 @@ ./services/matrix/ooye.nix ./services/email/root.nix ./services/drasl.nix - ./services/prosody.nix + #./services/prosody.nix #./services/wireguard/wireguard.nix - ../../modules/software-templates/devenv/dotnet.nix + #../../modules/software-templates/devenv/dotnet.nix ]; users.groups.ocp = { }; @@ -39,6 +40,9 @@ "riscv64-linux" "riscv32-linux" ]; + boot.kernelParams = [ + "vm.nr_hugepages=48000" + ]; networking = { hostName = "Rory-ovh"; nat = { @@ -124,6 +128,14 @@ ; }; + containers."draupnir-belibre" = import ./services/containers/draupnir-belibre/container.nix { + inherit + pkgs + lib + draupnir + ; + }; + networking.firewall.interfaces."ve-spacebar".allowedTCPPorts = [ 5432 ]; containers."spacebar" = import ./services/containers/spacebar/container.nix { inherit diff --git a/host/Rory-ovh/services/containers/draupnir-ansible/services/draupnir.nix b/host/Rory-ovh/services/containers/draupnir-ansible/services/draupnir.nix
index ef76500..93ba3f9 100644 --- a/host/Rory-ovh/services/containers/draupnir-ansible/services/draupnir.nix +++ b/host/Rory-ovh/services/containers/draupnir-ansible/services/draupnir.nix
@@ -22,7 +22,13 @@ protections = { wordlist = { - words = [ "https://postimg.cc/" ]; + words = [ + "https://postimg.cc/" + "lolitaheaven.onrender.com" + "heavenlychat-px42.onrender.com" + "heavenlydev.onrender.com" + "Adolf_hipster007" + ]; minutesBeforeTrusting = 0; }; }; diff --git a/host/Rory-ovh/services/containers/draupnir-belibre/container.nix b/host/Rory-ovh/services/containers/draupnir-belibre/container.nix new file mode 100644
index 0000000..09f5606 --- /dev/null +++ b/host/Rory-ovh/services/containers/draupnir-belibre/container.nix
@@ -0,0 +1,29 @@ +{ + draupnir, + ... +}: + +{ + privateNetwork = true; + autoStart = true; + specialArgs = { + inherit draupnir; + }; + config = + { lib, pkgs, ... }: + { + imports = [ + ../shared.nix + ./root.nix + ./services/draupnir.nix + ]; + }; + hostAddress = "192.168.100.1"; + localAddress = "192.168.100.23"; + + bindMounts."draupnir-access-token" = { + hostPath = "/data/secrets/draupnir-belibre-access-token"; + mountPoint = "/etc/draupnir-access-token"; + isReadOnly = true; + }; +} diff --git a/host/Rory-ovh/services/containers/draupnir-belibre/root.nix b/host/Rory-ovh/services/containers/draupnir-belibre/root.nix new file mode 100644
index 0000000..0ebce9e --- /dev/null +++ b/host/Rory-ovh/services/containers/draupnir-belibre/root.nix
@@ -0,0 +1,16 @@ +{ ... }: + +{ + networking.useHostResolvConf = true; + + networking.hosts = { + "192.168.100.1" = [ + "matrix.rory.gay" + "rory.gay" + ]; + }; + + networking.firewall = { + enable = true; + }; +} diff --git a/host/Rory-ovh/services/containers/draupnir-belibre/services/draupnir.nix b/host/Rory-ovh/services/containers/draupnir-belibre/services/draupnir.nix new file mode 100644
index 0000000..917958c --- /dev/null +++ b/host/Rory-ovh/services/containers/draupnir-belibre/services/draupnir.nix
@@ -0,0 +1,67 @@ +{ draupnir, ... }: + +{ + services.draupnir = { + enable = true; + package = draupnir; + secrets.accessToken = "/etc/draupnir-access-token"; + + settings = { + homeserverUrl = "https://matrix.rory.gay"; + managementRoom = "#draupnir-belibre-mgmt:rory.gay"; + recordIgnoredInvites = true; # We want to be aware of invites + autojoinOnlyIfManager = true; # ... but we don't want the bot to be invited to eg. Matrix HQ... + automaticallyRedactForReasons = [ "*" ]; # Always autoredact + fasterMembershipChecks = true; + + backgroundDelayMS = 10; # delay isn't needed, I don't mind the performance hit + pollReports = false; + + admin.enableMakeRoomAdminCommand = false; + commands.ban.defaultReasons = [ "spam" ]; + + protections = { + wordlist = { + words = [ + # The Obvious + "tranny" + "faggot" + "ywnbaw" + "nigger" + # abuse domains + "https://postimg.cc/" + "https://s.binance.com" + # Dec 2025 IRC spam + "irc.hardchats.com" + "white power" + "white pride" + "trannies" + "jews did 9/11" + "zigger" + "|| || <===" + "usurping jews" + "fag hoe" + "neo-freenode" + "thegreatbritishbookshop.co.uk" + "\"israel\"" + "die alone" + "kike" + "irc.tr0ll.us" + "irc.gangste.rs" + "irc.wepump.in" + "death to" + "irc.hackclub.com" + "irc.supernets.org" + "[supernets]" + # Known abuse + "lolitaheaven.onrender.com" + "heavenlychat-px42.onrender.com" + "heavenlydev.onrender.com" + "Adolf_hipster007" + ]; + minutesBeforeTrusting = 0; + }; + }; + }; + }; +} diff --git a/host/Rory-ovh/services/containers/draupnir-fedora/services/draupnir.nix b/host/Rory-ovh/services/containers/draupnir-fedora/services/draupnir.nix
index 0b74984..9a6d219 100644 --- a/host/Rory-ovh/services/containers/draupnir-fedora/services/draupnir.nix +++ b/host/Rory-ovh/services/containers/draupnir-fedora/services/draupnir.nix
@@ -22,7 +22,13 @@ protections = { wordlist = { - words = [ "https://postimg.cc/" ]; + words = [ + "https://postimg.cc/" + "lolitaheaven.onrender.com" + "heavenlychat-px42.onrender.com" + "heavenlydev.onrender.com" + "Adolf_hipster007" + ]; minutesBeforeTrusting = 0; }; }; diff --git a/host/Rory-ovh/services/containers/spacebar/root.nix b/host/Rory-ovh/services/containers/spacebar/root.nix
index 884c46c..7d351c3 100644 --- a/host/Rory-ovh/services/containers/spacebar/root.nix +++ b/host/Rory-ovh/services/containers/spacebar/root.nix
@@ -1,4 +1,4 @@ -{ lib, ... }: +{ lib, pkgs, ... }: { networking.useHostResolvConf = true; @@ -27,9 +27,11 @@ services.openssh = { enable = true; startWhenNeeded = true; - banner = '' - Welcome to spacebar.chat! - ''; + settings = { + #Banner = /. + (pkgs.writeText "ssh-banner" '' + # Welcome to spacebar.chat! + #''); + }; }; users.users.root = { @@ -51,13 +53,13 @@ #"ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAgEAgVEkgeVnatQ1iAsZvQuw1hj1jCAQTObaCF7M0nSf7UrSUWxs+C8s+uvg6HcJiQpRWvNaLtX1xKzAwK3wkqLXQIrOYdRTrm4TEQGdZ8QlUwGOTdpVECEiVEXuYZgiYhBoP35OeskPOcFDtYGHzsBM0ckb71xSI1S4HxmETxGlOl43JZ7SjiMYjtAEN8eqrPxcQB8R4htrxeThRypUMbO2Lc5JmnUK2fEIU3O2xHvL/vpjcBrWK/9GNoUeClWvFqasBBWOcUvPvmBEfymORJX73ELD3lPVbhIUucYQl/471O4xGALrBY6krTM4LHsNm3NG1StMlNM0LeZIy3YTHvo6dtAJJ3zYaLt9BiMpPkw2vllh35b5FSNxgJ9lU1WiM/q5TEvPsUrk5+Pi6SIEt48rejsuYwNJySmy+26ZfNJDh0Gn2S2aZJsXyrTx03t6rfuVptnOY08ZBxaOFE1lxHYOdzHL+/M1U1Z64/lkG1L7yvJtUxYAxJoxku8JenBVWQJMcKzoZDVWnrCKoKeEC8kLRjLWTDHGEq2RFOpaDBxDRYQeTFY2uQMv8F3Sbfd1FY3RF2s6wk1HB+r29skI2StN/PbQNbz57oCYAJvtsirmGoVd5BG4F335rtDENVwzYksUSEh+nKvgdUNKf7+mZg02QeKFoSJ304RLsrDsadBoF7c=" # maddy - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDOXRjGuFSnbe9zU0gd09SzfCL8JMf4EWVqbj3iAcFYsXeoMCXz5YtLl1kkOeQ3uXT1m8H/zjIRkpn2GbDpD000TBTXyBlzNOVQ23fZOvzMrYl2pX/09VFACF+tCTMxy1YsJur3ka9uwLlsmMqvSl0YZt6bN6RfEglGMEPuBfTm1EFo7MhXhUPnGUwiJ8xcsGSRH2kGmp/FSHUZL4CVWviZweULl2BcJTxqOdVZKM547SzN8/rLpu6I/4G/P8JTBiSIP4k8n5Fq6sZcDI5OOO6dk91wH9hU210kGHpwicXOoPAZzLFg4+Rz6VsXI1V8geydfm1Ci+XsQHEMs0V9IsAHPHvb8OeXBcyKtkaa4qAvIRN7ZdU4j17RVg8jHdkfdhkiNTzc6pnb9JS7xG/HU+9CW9USDaR6OFD5qSuUxLYP9qk9wYKtm+A3Yt6P+FLcuzSpjXu93vCGjJwCnuXcTP8DhoO3jVtzaixqzNMLgLCwDlalcf0lOSYEmzTs32lpPec= maddy@The" + #"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDOXRjGuFSnbe9zU0gd09SzfCL8JMf4EWVqbj3iAcFYsXeoMCXz5YtLl1kkOeQ3uXT1m8H/zjIRkpn2GbDpD000TBTXyBlzNOVQ23fZOvzMrYl2pX/09VFACF+tCTMxy1YsJur3ka9uwLlsmMqvSl0YZt6bN6RfEglGMEPuBfTm1EFo7MhXhUPnGUwiJ8xcsGSRH2kGmp/FSHUZL4CVWviZweULl2BcJTxqOdVZKM547SzN8/rLpu6I/4G/P8JTBiSIP4k8n5Fq6sZcDI5OOO6dk91wH9hU210kGHpwicXOoPAZzLFg4+Rz6VsXI1V8geydfm1Ci+XsQHEMs0V9IsAHPHvb8OeXBcyKtkaa4qAvIRN7ZdU4j17RVg8jHdkfdhkiNTzc6pnb9JS7xG/HU+9CW9USDaR6OFD5qSuUxLYP9qk9wYKtm+A3Yt6P+FLcuzSpjXu93vCGjJwCnuXcTP8DhoO3jVtzaixqzNMLgLCwDlalcf0lOSYEmzTs32lpPec= maddy@The" # cat "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILNLIRgH0j8DXd2KoGWgyRmI9hEtBE8O3UDZf+hZ5dTQ coconut@fedora" # puyo - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGZDkdhQ/7/jvmOQ45O07X3UTx9tIjUVpa8uaOTzUeBj puyodead@protonmail.com" + #"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGZDkdhQ/7/jvmOQ45O07X3UTx9tIjUVpa8uaOTzUeBj puyodead@protonmail.com" # cyber #"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFnQSAqDqmi9OUgUCMWce02YxuTA0Bpgjm3y4rirrYmk cyber@cyber-pc" diff --git a/host/Rory-ovh/services/containers/spacebar/services/spacebar.nix b/host/Rory-ovh/services/containers/spacebar/services/spacebar.nix
index ec98d4b..7b8321b 100644 --- a/host/Rory-ovh/services/containers/spacebar/services/spacebar.nix +++ b/host/Rory-ovh/services/containers/spacebar/services/spacebar.nix
@@ -1,7 +1,7 @@ { spacebar, lib, ... }: let - sb = import "${spacebar}/nix/modules/default/lib.nix"; + sb = import "${spacebar}/nix/lib/mkEndpoint.nix"; in { imports = [ spacebar.nixosModules.default ]; @@ -179,12 +179,18 @@ in enableAbuseIpDb = true; enableIpData = false; # 1500req/d, needed by gateway }; + embeds = { + youtube = { + userAgent = "Mozilla/5.0 (compatible; Discordbot/2.0; +https://discordapp.com)"; + }; + }; }; extraEnvironment = { DATABASE = "postgres://spacebar:spacebar@192.168.100.1/spacebar"; #LOG_REQUESTS = "-200,204,304"; LOG_REQUESTS = "-"; LOG_VALIDATION_ERRORS = true; + LOG_API_ERRORS = true; #DB_LOGGING=true; #LOG_GATEWAY_TRACES=true; #LOG_PROTO_UPDATES=true; diff --git a/host/Rory-ovh/services/matrix/draupnir.nix b/host/Rory-ovh/services/matrix/draupnir.nix
index 54f5d23..9a7c292 100755 --- a/host/Rory-ovh/services/matrix/draupnir.nix +++ b/host/Rory-ovh/services/matrix/draupnir.nix
@@ -1,4 +1,4 @@ -{ pkgs, draupnir, ... }: +{ config, lib, pkgs, draupnir, ... }: { services.draupnir = { @@ -60,10 +60,49 @@ "irc.hackclub.com" "irc.supernets.org" "[supernets]" + "lolitaheaven.onrender.com" + "heavenlychat-px42.onrender.com" + "heavenlydev.onrender.com" + "Adolf_hipster007" ]; minutesBeforeTrusting = 0; }; }; }; }; + + systemd.services."draupnir" = { + serviceConfig = let + cfg = config.services.draupnir; + format = pkgs.formats.yaml { }; + configFile = format.generate "draupnir.yaml" cfg.settings; + in { + ExecStart = lib.mkForce ( + toString ( + [ + (lib.getExe cfg.package) + "--draupnir-config" + configFile + ] + ++ lib.optionals (cfg.secrets.accessToken != null) [ + "--access-token-path" + "%d/access_token" + ] + ++ lib.optionals (cfg.secrets.pantalaimon.password != null) [ + "--pantalaimon-password-path" + "%d/pantalaimon_password" + ] + ++ lib.optionals (cfg.secrets.web.synapseHTTPAntispam.authorization != null) [ + "--http-antispam-authorization-path" + "%d/http_antispam_authorization" + ] + ++ [ + "--max-old-space-size=32768" + "--max-semi-space-size=256" + "--prof" + ] + ) + ); + }; + }; } diff --git a/host/Rory-ovh/spacebar-monitoring.nix b/host/Rory-ovh/spacebar-monitoring.nix new file mode 100644
index 0000000..97176cf --- /dev/null +++ b/host/Rory-ovh/spacebar-monitoring.nix
@@ -0,0 +1,40 @@ +{ config, lib, ... }: +{ + services.prometheus.scrapeConfigs = [ + { + job_name = "spacebar-api-3001"; + scrape_interval = "1s"; + static_configs = [ + { targets = [ "192.168.100.22:3001" ]; } + ]; + } + { + job_name = "spacebar-gateway-3002"; + scrape_interval = "1s"; + static_configs = [ + { targets = [ "192.168.100.22:3002" ]; } + ]; + } + { + job_name = "spacebar-cdn-3003"; + scrape_interval = "1s"; + static_configs = [ + { targets = [ "192.168.100.22:3003" ]; } + ]; + } + { + job_name = "spacebar-webrtc-3005"; + scrape_interval = "1s"; + static_configs = [ + { targets = [ "192.168.100.22:3005" ]; } + ]; + } + ] + ++ (lib.map (port: { + job_name = "spacebar-gateway-${builtins.toString port}"; + scrape_interval = "1s"; + static_configs = [ + { targets = [ "192.168.100.22:${builtins.toString port}" ]; } + ]; + }) (lib.range 3100 3115)); +} diff --git a/modules/base-server.nix b/modules/base-server.nix
index 1278d83..46f0c97 100755 --- a/modules/base-server.nix +++ b/modules/base-server.nix
@@ -27,10 +27,10 @@ }; }; - sleep.extraConfig = '' - AllowSuspend=no - AllowHibernation=no - ''; + sleep.settings.Sleep = { + AllowSuspend = "no"; + AllowHibernation = "no"; + }; }; #systemd.services.NetworkManager-wait-online.enable = false; @@ -77,38 +77,4 @@ # This shaves off half a gigabyte of disk space... hardware.enableAllFirmware = false; hardware.enableRedistributableFirmware = false; - - services = { - promtail = { - enable = true; - configuration = { - server = { - http_listen_port = 3031; - grpc_listen_port = 0; - }; - positions = { - filename = "/tmp/positions.yaml"; - }; - clients = [ { url = "https://loki.regional.seian.cloud/loki/api/v1/push"; } ]; - scrape_configs = [ - { - job_name = "journal"; - journal = { - max_age = "12h"; - labels = { - job = "systemd-journal"; - host = "${toString config.networking.hostName}"; - }; - }; - relabel_configs = [ - { - source_labels = [ "__journal__systemd_unit" ]; - target_label = "unit"; - } - ]; - } - ]; - }; - }; - }; } diff --git a/modules/base.nix b/modules/base.nix
index 7588010..e539b15 100755 --- a/modules/base.nix +++ b/modules/base.nix
@@ -73,6 +73,7 @@ "8.8.8.8" "8.4.4.8" ]; + resolvconf.enable = false; }; environment.etc."resolv.conf" = lib.mkDefault { @@ -154,9 +155,7 @@ zsh-completions ]; - systemd.coredump.extraConfig = lib.mkDefault '' - Storage=none - ''; + systemd.coredump.settings.Coredump.Storage = lib.mkDefault "none"; nix = { settings = { experimental-features = [ @@ -187,7 +186,6 @@ }; monitoring.monitorAll = lib.mkForce false; - services.promtail.enable = lib.mkForce false; networking.useDHCP = lib.mkOverride 51 true; }; } diff --git a/modules/software-templates/devenv/c-cpp.nix b/modules/software-templates/devenv/c-cpp.nix
index 579edcc..7e88303 100644 --- a/modules/software-templates/devenv/c-cpp.nix +++ b/modules/software-templates/devenv/c-cpp.nix
@@ -1,8 +1,8 @@ { pkgs, nix-jetbrains-plugins, ... }: { - environment.systemPackages = with nix-jetbrains-plugins.lib."${pkgs.stdenv.system}"; [ - (buildIdeWithPlugins pkgs.jetbrains "clion" [ + environment.systemPackages = with nix-jetbrains-plugins.lib; [ + (buildIdeWithPlugins pkgs "clion" [ "com.github.copilot" "nix-idea" # "visual-studio-keymap" diff --git a/modules/software-templates/devenv/dotnet.nix b/modules/software-templates/devenv/dotnet.nix
index d8871ef..53cbf52 100644 --- a/modules/software-templates/devenv/dotnet.nix +++ b/modules/software-templates/devenv/dotnet.nix
@@ -1,8 +1,8 @@ { pkgs, nix-jetbrains-plugins, ... }: { - environment.systemPackages = with nix-jetbrains-plugins.lib."${pkgs.stdenv.system}"; [ - (buildIdeWithPlugins pkgs.jetbrains "rider" [ + environment.systemPackages = with nix-jetbrains-plugins.lib; [ + (buildIdeWithPlugins pkgs "rider" [ "com.github.copilot" "nix-idea" # "visual-studio-keymap" diff --git a/modules/software-templates/devenv/go.nix b/modules/software-templates/devenv/go.nix new file mode 100644
index 0000000..bbce701 --- /dev/null +++ b/modules/software-templates/devenv/go.nix
@@ -0,0 +1,17 @@ +{ pkgs, nix-jetbrains-plugins, ... }: + +{ + environment.systemPackages = with nix-jetbrains-plugins.lib; [ + (buildIdeWithPlugins pkgs "goland" [ + "com.github.copilot" + "nix-idea" + # "visual-studio-keymap" + "String Manipulation" + ]) + pkgs.go + pkgs.gcc + ]; + environment.sessionVariables = { + DOTNET_CLI_TELEMETRY_OPTOUT = "1"; + }; +} diff --git a/modules/software-templates/devenv/java.nix b/modules/software-templates/devenv/java.nix
index ed1581a..a0065c6 100644 --- a/modules/software-templates/devenv/java.nix +++ b/modules/software-templates/devenv/java.nix
@@ -1,8 +1,8 @@ { pkgs, nix-jetbrains-plugins, ... }: { - environment.systemPackages = with nix-jetbrains-plugins.lib."${pkgs.stdenv.system}"; [ - (buildIdeWithPlugins pkgs.jetbrains "idea" [ + environment.systemPackages = with nix-jetbrains-plugins.lib; [ + (buildIdeWithPlugins pkgs "idea" [ "com.github.copilot" "nix-idea" # "visual-studio-keymap" diff --git a/modules/software-templates/devenv/javascript.nix b/modules/software-templates/devenv/javascript.nix
index 583f6ef..de69646 100644 --- a/modules/software-templates/devenv/javascript.nix +++ b/modules/software-templates/devenv/javascript.nix
@@ -1,8 +1,8 @@ { pkgs, nix-jetbrains-plugins, ... }: { - environment.systemPackages = with nix-jetbrains-plugins.lib."${pkgs.stdenv.system}"; [ - (buildIdeWithPlugins pkgs.jetbrains "webstorm" [ + environment.systemPackages = with nix-jetbrains-plugins.lib; [ + (buildIdeWithPlugins pkgs "webstorm" [ "com.github.copilot" "nix-idea" # "visual-studio-keymap" diff --git a/modules/users/Arci.nix b/modules/users/Arci.nix
index df7efb5..28c3c1c 100644 --- a/modules/users/Arci.nix +++ b/modules/users/Arci.nix
@@ -59,9 +59,8 @@ programs = { git = { enable = true; + signing.format = null; settings = { - user.name = "Rory&"; - user.email = "root@rory.gay"; safe.directory = "/"; }; }; diff --git a/modules/users/Rory.nix b/modules/users/Rory.nix
index c56c3ed..05745fc 100755 --- a/modules/users/Rory.nix +++ b/modules/users/Rory.nix
@@ -71,11 +71,13 @@ programs = { git = { enable = true; + signing.format = null; settings = { user.name = "Rory&"; user.email = "root@rory.gay"; safe.directory = "/"; advice.defaultBranchName = false; + signing.format = "openpgp"; }; }; zsh = { @@ -111,8 +113,7 @@ export DISABLE_AUTO_UPDATE=true COMPLETION_WAITING_DOTS="true" - ''; - initExtra = '' + # at the end? alias mv='mv -v' alias pre='npx prettier -w' alias git-commit='git commit --signoff --sign' @@ -192,12 +193,12 @@ POWERLEVEL9K_MODE = "nerdfont-complete"; POWERLEVEL9K_ICON_PADDING = "none"; POWERLEVEL9K_PROMPT_ADD_NEWLINE = "false"; - POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR = "\uE0B1"; - POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR = "\uE0B3"; - POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR = "\uE0B0"; - POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR = "\uE0B2"; - POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL = "\uE0B0"; - POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL = "\uE0B2"; + POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR = "\\uE0B1"; + POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR = "\\uE0B3"; + POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR = "\\uE0B0"; + POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR = "\\uE0B2"; + POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL = "\\uE0B0"; + POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL = "\\uE0B2"; POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE = true; }; }; diff --git a/modules/users/geba.nix b/modules/users/geba.nix
index 6214d91..77ee689 100644 --- a/modules/users/geba.nix +++ b/modules/users/geba.nix
@@ -60,9 +60,8 @@ programs = { git = { enable = true; + signing.format = null; settings = { - user.name = "Rory&"; - user.email = "root@rory.gay"; safe.directory = "/"; }; }; diff --git a/modules/users/ks.nix b/modules/users/ks.nix
index d55dd1e..b0cf8df 100755 --- a/modules/users/ks.nix +++ b/modules/users/ks.nix
@@ -17,6 +17,7 @@ home-manager.users.ks = { programs.git = { enable = true; + signing.format = null; settings = { user.name = "Kinoshita Shimizu"; user.email = "ks@kinoshitaproductions.com"; diff --git a/packages/overlays/matrix-synapse/patches/0001-Add-CVE-IDs-to-changelog-for-1.152.1.-19778.patch b/packages/overlays/matrix-synapse/patches/0001-Add-CVE-IDs-to-changelog-for-1.152.1.-19778.patch new file mode 100644
index 0000000..adbc9fc --- /dev/null +++ b/packages/overlays/matrix-synapse/patches/0001-Add-CVE-IDs-to-changelog-for-1.152.1.-19778.patch
@@ -0,0 +1,29 @@ +From 16c17f3a420242e53088337d48b1fb55a86e3a8f Mon Sep 17 00:00:00 2001 +From: Denis Kasak <dkasak@termina.org.uk> +Date: Wed, 13 May 2026 17:26:16 +0200 +Subject: [PATCH 01/19] Add CVE IDs to changelog for 1.152.1. (#19778) + +Since this is just a change log update, I've removed the entire +checklist. Please tell me if this is incorrect. +--- + CHANGES.md | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/CHANGES.md b/CHANGES.md +index d9b3f8b2c1..f0488cd68c 100644 +--- a/CHANGES.md ++++ b/CHANGES.md +@@ -2,8 +2,8 @@ + + ## Security Fixes + +-- Prevent CPU starvation (Denial of Service) under worker lock contention, additionally capping the `WorkerLock` time out interval to a maximum of 60 seconds. Contributed by Famedly. ([\#19394](https://github.com/element-hq/synapse/issues/19394), ELEMENTSEC-2026-1706, [GHSA-8q93-326v-3m7g](https://github.com/element-hq/synapse/security/advisories/GHSA-8q93-326v-3m7g), CVE pending) +-- Prevent pagination ending when a page is full of rejected events. (ELEMENTSEC-2025-1636, [GHSA-6qf2-7x63-mm6v](https://github.com/element-hq/synapse/security/advisories/GHSA-6qf2-7x63-mm6v), CVE pending) ++- Prevent CPU starvation (Denial of Service) under worker lock contention, additionally capping the `WorkerLock` time out interval to a maximum of 60 seconds. Contributed by Famedly. ([\#19394](https://github.com/element-hq/synapse/issues/19394), ELEMENTSEC-2026-1706, [GHSA-8q93-326v-3m7g](https://github.com/element-hq/synapse/security/advisories/GHSA-8q93-326v-3m7g), CVE-2026-45078) ++- Prevent pagination ending when a page is full of rejected events. (ELEMENTSEC-2025-1636, [GHSA-6qf2-7x63-mm6v](https://github.com/element-hq/synapse/security/advisories/GHSA-6qf2-7x63-mm6v), CVE-2026-45076) + + + # Synapse 1.152.0 (2026-04-28) +-- +2.53.0 + diff --git a/packages/overlays/matrix-synapse/patches/0001-nix-use-postgres-17.patch b/packages/overlays/matrix-synapse/patches/0002-nix-use-postgres-17.patch
index 7e079b6..959b903 100644 --- a/packages/overlays/matrix-synapse/patches/0001-nix-use-postgres-17.patch +++ b/packages/overlays/matrix-synapse/patches/0002-nix-use-postgres-17.patch
@@ -1,7 +1,7 @@ -From 0710094b06b2b3eaad8212d24edd10066648cb17 Mon Sep 17 00:00:00 2001 +From e2b5f1ee0eac4b9c84e99fe9eb0d6a59103149a2 Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Fri, 25 Jul 2025 08:25:28 +0200 -Subject: [PATCH 01/25] nix: use postgres 17 +Subject: [PATCH 02/19] nix: use postgres 17 Signed-off-by: Rory& <root@rory.gay> --- @@ -21,5 +21,5 @@ index 4ff6518aed..51ae12c272 100644 # On the first invocation of `devenv up`, create a database for # Synapse to store data in. -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0002-nix-fix-flake.patch b/packages/overlays/matrix-synapse/patches/0003-nix-fix-flake.patch
index 014d2f5..311bc81 100644 --- a/packages/overlays/matrix-synapse/patches/0002-nix-fix-flake.patch +++ b/packages/overlays/matrix-synapse/patches/0003-nix-fix-flake.patch
@@ -1,7 +1,7 @@ -From 3191ff6411778d266986ada3a68fd90427a9d283 Mon Sep 17 00:00:00 2001 +From cf9633037f4927bedf4d8c89386cd8fa33984cad Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Mon, 9 Jun 2025 17:38:34 +0200 -Subject: [PATCH 02/25] nix: fix flake +Subject: [PATCH 03/19] nix: fix flake Signed-off-by: Rory& <root@rory.gay> --- @@ -186,5 +186,5 @@ index 51ae12c272..cc41490a41 100644 # over the 'synapse' database. services.postgres.initialScript = '' -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0003-nix-Update-flake.patch b/packages/overlays/matrix-synapse/patches/0004-nix-Update-flake.patch
index cd8148f..36f1e19 100644 --- a/packages/overlays/matrix-synapse/patches/0003-nix-Update-flake.patch +++ b/packages/overlays/matrix-synapse/patches/0004-nix-Update-flake.patch
@@ -1,7 +1,7 @@ -From 7bc7375545daed0571933e2a6063ecb0f78fecf7 Mon Sep 17 00:00:00 2001 +From 33cb357d30e5817bf679fc161a3a333a37579188 Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Thu, 13 Nov 2025 13:57:10 +0100 -Subject: [PATCH 03/25] nix: Update flake +Subject: [PATCH 04/19] nix: Update flake Signed-off-by: Rory& <root@rory.gay> --- @@ -44,7 +44,7 @@ index 4e2f01153b..0f2de20b2b 100644 }, "original": { diff --git a/flake.nix b/flake.nix -index cc41490a41..5bde1e6c07 100644 +index cc41490a41..50ae70e989 100644 --- a/flake.nix +++ b/flake.nix @@ -82,7 +82,7 @@ @@ -52,10 +52,10 @@ index cc41490a41..5bde1e6c07 100644 # NOTE: We currently need to set the Rust version unnecessarily high # in order to work around https://github.com/matrix-org/synapse/issues/15939 - (rust-bin.stable."1.87.0".default.override { -+ (rust-bin.stable."1.88.0".default.override { ++ (rust-bin.stable."1.89.0".default.override { # Additionally install the "rust-src" extension to allow diving into the # Rust source code in an IDE (rust-analyzer will also make use of it). extensions = [ "rust-src" ]; -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0004-nix-Temporarily-disable-go-in-flake.patch b/packages/overlays/matrix-synapse/patches/0005-nix-Temporarily-disable-go-in-flake.patch
index ed4e7f5..3b9e543 100644 --- a/packages/overlays/matrix-synapse/patches/0004-nix-Temporarily-disable-go-in-flake.patch +++ b/packages/overlays/matrix-synapse/patches/0005-nix-Temporarily-disable-go-in-flake.patch
@@ -1,7 +1,7 @@ -From ed37b0cde78794056afcae9030e38d97f010336d Mon Sep 17 00:00:00 2001 +From cda3b7476e27da235c8304abac8a1cf32ad2c576 Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Sat, 16 Aug 2025 20:18:45 +0200 -Subject: [PATCH 04/25] nix: Temporarily disable go in flake +Subject: [PATCH 05/19] nix: Temporarily disable go in flake Signed-off-by: Rory& <root@rory.gay> --- @@ -9,7 +9,7 @@ Signed-off-by: Rory& <root@rory.gay> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix -index 5bde1e6c07..cf7a731f51 100644 +index 50ae70e989..ef944747cb 100644 --- a/flake.nix +++ b/flake.nix @@ -151,7 +151,7 @@ @@ -22,5 +22,5 @@ index 5bde1e6c07..cf7a731f51 100644 # Postgres is needed to run Synapse with postgres support and -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0005-Add-test-script.patch b/packages/overlays/matrix-synapse/patches/0006-Add-test-script.patch
index 60157ca..300d132 100644 --- a/packages/overlays/matrix-synapse/patches/0005-Add-test-script.patch +++ b/packages/overlays/matrix-synapse/patches/0006-Add-test-script.patch
@@ -1,7 +1,7 @@ -From d5295e735828d424d9217d7127ece66cad177986 Mon Sep 17 00:00:00 2001 +From 7218323ec2954bca8af95af70cf9d8d2a064fa3c Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Thu, 13 Nov 2025 13:56:59 +0100 -Subject: [PATCH 05/25] Add test script +Subject: [PATCH 06/19] Add test script Signed-off-by: Rory& <root@rory.gay> --- @@ -18,5 +18,5 @@ index 0000000000..1ac82801b2 +#! /usr/bin/env sh +poetry run trial -j`nproc` tests -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0006-Fix-gitignore-to-ignore-.venv.patch b/packages/overlays/matrix-synapse/patches/0007-Fix-gitignore-to-ignore-.venv.patch
index 1722347..2ab29dd 100644 --- a/packages/overlays/matrix-synapse/patches/0006-Fix-gitignore-to-ignore-.venv.patch +++ b/packages/overlays/matrix-synapse/patches/0007-Fix-gitignore-to-ignore-.venv.patch
@@ -1,7 +1,7 @@ -From 93af91e5d4eb59c8f1a55d5d3f86746d9728d28a Mon Sep 17 00:00:00 2001 +From 527765f8a34f0f4c32973b31909e67f2bcf02035 Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Mon, 9 Jun 2025 17:46:10 +0200 -Subject: [PATCH 06/25] Fix gitignore to ignore .venv +Subject: [PATCH 07/19] Fix gitignore to ignore .venv Signed-off-by: Rory& <root@rory.gay> --- @@ -21,5 +21,5 @@ index e333f2320b..3aec96e75e 100644 /logs /media_store/ -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0007-Fast-auth-links.patch b/packages/overlays/matrix-synapse/patches/0008-Fast-auth-links.patch
index 1891da7..b77ad1b 100644 --- a/packages/overlays/matrix-synapse/patches/0007-Fast-auth-links.patch +++ b/packages/overlays/matrix-synapse/patches/0008-Fast-auth-links.patch
@@ -1,7 +1,7 @@ -From 7bf6dd9744da4eaccf201e62eef243b5e6c95314 Mon Sep 17 00:00:00 2001 +From 064fbcdd10c15eea7f695b693c7ee1ef99b6b606 Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Tue, 22 Jul 2025 05:07:01 +0200 -Subject: [PATCH 07/25] Fast auth links +Subject: [PATCH 08/19] Fast auth links Signed-off-by: Rory& <root@rory.gay> --- @@ -64,7 +64,7 @@ index 6e38b55686..2bab1e53c5 100644 def make_in_list_sql_clause( database_engine: BaseDatabaseEngine, diff --git a/synapse/storage/databases/main/event_federation.py b/synapse/storage/databases/main/event_federation.py -index cc7083b605..55a0714f14 100644 +index 415926eb0a..0e34a3ffc3 100644 --- a/synapse/storage/databases/main/event_federation.py +++ b/synapse/storage/databases/main/event_federation.py @@ -47,6 +47,7 @@ from synapse.storage.database import ( @@ -97,5 +97,5 @@ index cc7083b605..55a0714f14 100644 txn.execute(sql % (clause,), args) -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0008-Add-too-much-logging-to-room-summary-over-federation.patch b/packages/overlays/matrix-synapse/patches/0009-Add-too-much-logging-to-room-summary-over-federation.patch
index a4cf1fb..ecbeb9f 100644 --- a/packages/overlays/matrix-synapse/patches/0008-Add-too-much-logging-to-room-summary-over-federation.patch +++ b/packages/overlays/matrix-synapse/patches/0009-Add-too-much-logging-to-room-summary-over-federation.patch
@@ -1,7 +1,7 @@ -From 4d1ba2cb8982f0f72116753da80744947a09f373 Mon Sep 17 00:00:00 2001 +From e0c0a852c437a5eef52041ec42edfbc6d0b913ca Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Wed, 23 Apr 2025 17:53:52 +0200 -Subject: [PATCH 08/25] Add too much logging to room summary over federation +Subject: [PATCH 09/19] Add too much logging to room summary over federation Signed-off-by: Rory& <root@rory.gay> --- @@ -9,10 +9,10 @@ Signed-off-by: Rory& <root@rory.gay> 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/synapse/handlers/room_summary.py b/synapse/handlers/room_summary.py -index 9ec0d33f11..5ea32af620 100644 +index bbcdc0877e..5a35d4d0e1 100644 --- a/synapse/handlers/room_summary.py +++ b/synapse/handlers/room_summary.py -@@ -748,23 +748,55 @@ class RoomSummaryHandler: +@@ -747,23 +747,55 @@ class RoomSummaryHandler: """ # The API doesn't return the room version so assume that a # join rule of knock is valid. @@ -73,5 +73,5 @@ index 9ec0d33f11..5ea32af620 100644 # already be in the room (if it was a child room), or there might be a # pending invite, etc. -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0009-Log-entire-room-if-accessibility-check-fails.patch b/packages/overlays/matrix-synapse/patches/0010-Log-entire-room-if-accessibility-check-fails.patch
index d189ca2..1d480e4 100644 --- a/packages/overlays/matrix-synapse/patches/0009-Log-entire-room-if-accessibility-check-fails.patch +++ b/packages/overlays/matrix-synapse/patches/0010-Log-entire-room-if-accessibility-check-fails.patch
@@ -1,7 +1,7 @@ -From 521c06d64c7a22bea6db9a78337c53b70c44cbe3 Mon Sep 17 00:00:00 2001 +From 8f2314ceaf0d459bf11df840ce14918292f5b90d Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Wed, 23 Apr 2025 18:24:57 +0200 -Subject: [PATCH 09/25] Log entire room if accessibility check fails +Subject: [PATCH 10/19] Log entire room if accessibility check fails Signed-off-by: Rory& <root@rory.gay> --- @@ -9,10 +9,10 @@ Signed-off-by: Rory& <root@rory.gay> 1 file changed, 4 insertions(+) diff --git a/synapse/handlers/room_summary.py b/synapse/handlers/room_summary.py -index 5ea32af620..30ee91cd95 100644 +index 5a35d4d0e1..9f904af2ea 100644 --- a/synapse/handlers/room_summary.py +++ b/synapse/handlers/room_summary.py -@@ -964,6 +964,10 @@ class RoomSummaryHandler: +@@ -961,6 +961,10 @@ class RoomSummaryHandler: if not room_entry or not await self._is_remote_room_accessible( requester, room_entry.room_id, room_entry.room ): @@ -24,5 +24,5 @@ index 5ea32af620..30ee91cd95 100644 room = dict(room_entry.room) -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0010-Log-policy-server-rejected-events.patch b/packages/overlays/matrix-synapse/patches/0010-Log-policy-server-rejected-events.patch deleted file mode 100644
index 7bf9a02..0000000 --- a/packages/overlays/matrix-synapse/patches/0010-Log-policy-server-rejected-events.patch +++ /dev/null
@@ -1,31 +0,0 @@ -From 2fdf69e5d068f20dfaf31097d05f2ba72a8bd374 Mon Sep 17 00:00:00 2001 -From: Rory& <root@rory.gay> -Date: Tue, 27 May 2025 05:21:46 +0200 -Subject: [PATCH 10/25] Log policy server rejected events - -Signed-off-by: Rory& <root@rory.gay> ---- - synapse/handlers/room_policy.py | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/synapse/handlers/room_policy.py b/synapse/handlers/room_policy.py -index 0663a36714..d2216978ac 100644 ---- a/synapse/handlers/room_policy.py -+++ b/synapse/handlers/room_policy.py -@@ -111,6 +111,13 @@ class RoomPolicyHandler: - policy_server, event - ) - if recommendation != RECOMMENDATION_OK: -+ logger.info( -+ "[POLICY] Policy server %s recommended not to allow event %s in room %s: %s", -+ policy_server, -+ event.event_id, -+ event.room_id, -+ recommendation, -+ ) - return False - - return True # default allow --- -2.52.0 - diff --git a/packages/overlays/matrix-synapse/patches/0011-Use-parse_boolean-for-unredacted-content.patch b/packages/overlays/matrix-synapse/patches/0011-Use-parse_boolean-for-unredacted-content.patch
index 0bdfbdf..f2361c8 100644 --- a/packages/overlays/matrix-synapse/patches/0011-Use-parse_boolean-for-unredacted-content.patch +++ b/packages/overlays/matrix-synapse/patches/0011-Use-parse_boolean-for-unredacted-content.patch
@@ -1,7 +1,7 @@ -From ef028691294d2b6b15af1d2225dd2a777ec28cc4 Mon Sep 17 00:00:00 2001 +From c4f5b54b4bc425ff0adc10ef44b1e91cd33fc969 Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Tue, 27 May 2025 06:14:26 +0200 -Subject: [PATCH 11/25] Use parse_boolean for unredacted content +Subject: [PATCH 11/19] Use parse_boolean for unredacted content Signed-off-by: Rory& <root@rory.gay> --- @@ -9,10 +9,10 @@ Signed-off-by: Rory& <root@rory.gay> 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/synapse/rest/client/room.py b/synapse/rest/client/room.py -index 5e7dcb0191..dac466f465 100644 +index 83664814a6..f17c1f5e26 100644 --- a/synapse/rest/client/room.py +++ b/synapse/rest/client/room.py -@@ -1023,10 +1023,9 @@ class RoomEventServlet(RestServlet): +@@ -1053,10 +1053,9 @@ class RoomEventServlet(RestServlet): requester = await self.auth.get_user_by_req(request, allow_guest=True) include_unredacted_content = self.msc2815_enabled and ( @@ -26,5 +26,5 @@ index 5e7dcb0191..dac466f465 100644 == "true" ) -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0012-Expose-tombstone-in-room-admin-api.patch b/packages/overlays/matrix-synapse/patches/0012-Expose-tombstone-in-room-admin-api.patch
index 514f817..9c414b8 100644 --- a/packages/overlays/matrix-synapse/patches/0012-Expose-tombstone-in-room-admin-api.patch +++ b/packages/overlays/matrix-synapse/patches/0012-Expose-tombstone-in-room-admin-api.patch
@@ -1,7 +1,7 @@ -From 94b2da38a5ab6200a7c7bc4a5e50a327f5aa128d Mon Sep 17 00:00:00 2001 +From 4a87e254861c102323b9f3bdab14b792da995069 Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Tue, 27 May 2025 06:37:52 +0200 -Subject: [PATCH 12/25] Expose tombstone in room admin api +Subject: [PATCH 12/19] Expose tombstone in room admin api Signed-off-by: Rory& <root@rory.gay> --- @@ -11,10 +11,10 @@ Signed-off-by: Rory& <root@rory.gay> 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/synapse/rest/admin/rooms.py b/synapse/rest/admin/rooms.py -index a886859ffa..e97d076a44 100644 +index 61511b9360..3ff2865b96 100644 --- a/synapse/rest/admin/rooms.py +++ b/synapse/rest/admin/rooms.py -@@ -301,6 +301,10 @@ class ListRoomRestServlet(RestServlet): +@@ -302,6 +302,10 @@ class ListRoomRestServlet(RestServlet): direction = parse_enum(request, "dir", Direction, default=Direction.FORWARDS) reverse_order = True if direction == Direction.BACKWARDS else False @@ -25,7 +25,7 @@ index a886859ffa..e97d076a44 100644 # Return list of rooms according to parameters rooms, total_rooms = await self.store.get_rooms_paginate( start, -@@ -310,6 +314,7 @@ class ListRoomRestServlet(RestServlet): +@@ -311,6 +315,7 @@ class ListRoomRestServlet(RestServlet): search_term, public_rooms, empty_rooms, @@ -34,10 +34,10 @@ index a886859ffa..e97d076a44 100644 response = { diff --git a/synapse/rest/client/room.py b/synapse/rest/client/room.py -index dac466f465..d28be2befb 100644 +index f17c1f5e26..7f3b1153f7 100644 --- a/synapse/rest/client/room.py +++ b/synapse/rest/client/room.py -@@ -1027,7 +1027,6 @@ class RoomEventServlet(RestServlet): +@@ -1057,7 +1057,6 @@ class RoomEventServlet(RestServlet): request, "fi.mau.msc2815.include_unredacted_content" ) @@ -46,10 +46,10 @@ index dac466f465..d28be2befb 100644 if include_unredacted_content and not await self.auth.is_server_admin( requester diff --git a/synapse/storage/databases/main/room.py b/synapse/storage/databases/main/room.py -index 633df07736..7623208c28 100644 +index a0c42082f0..68c2edfc14 100644 --- a/synapse/storage/databases/main/room.py +++ b/synapse/storage/databases/main/room.py -@@ -605,6 +605,7 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): +@@ -779,6 +779,7 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): search_term: str | None, public_rooms: bool | None, empty_rooms: bool | None, @@ -57,7 +57,7 @@ index 633df07736..7623208c28 100644 ) -> tuple[list[dict[str, Any]], int]: """Function to retrieve a paginated list of rooms as json. -@@ -624,6 +625,7 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): +@@ -798,6 +799,7 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): If true, empty rooms are queried. if false, empty rooms are excluded from the query. When it is none (the default), both empty rooms and none-empty rooms are queried. @@ -65,7 +65,7 @@ index 633df07736..7623208c28 100644 Returns: A list of room dicts and an integer representing the total number of rooms that exist given this query -@@ -792,11 +794,43 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): +@@ -966,11 +968,43 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): room_count = cast(tuple[int], txn.fetchone()) return rooms, room_count[0] @@ -111,5 +111,5 @@ index 633df07736..7623208c28 100644 async def get_ratelimit_for_user(self, user_id: str) -> RatelimitOverride | None: """Check if there are any overrides for ratelimiting for the given user -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0013-fix-Always-recheck-messages-pagination-data-if-a-bac.patch b/packages/overlays/matrix-synapse/patches/0013-fix-Always-recheck-messages-pagination-data-if-a-bac.patch
index 535a353..e983a71 100644 --- a/packages/overlays/matrix-synapse/patches/0013-fix-Always-recheck-messages-pagination-data-if-a-bac.patch +++ b/packages/overlays/matrix-synapse/patches/0013-fix-Always-recheck-messages-pagination-data-if-a-bac.patch
@@ -1,7 +1,7 @@ -From 5cd230419f6dc712ad6f0b931f7009f7fe0f0148 Mon Sep 17 00:00:00 2001 +From 21cd3ad37d016c06494f0ff95c9bfd39fd92c6d4 Mon Sep 17 00:00:00 2001 From: Jason Little <j.little@famedly.com> Date: Wed, 30 Apr 2025 09:29:42 -0500 -Subject: [PATCH 13/25] fix: Always recheck `/messages` pagination data if a +Subject: [PATCH 13/19] fix: Always recheck `/messages` pagination data if a backfill might have been needed (#28) Signed-off-by: Rory& <root@rory.gay> @@ -11,7 +11,7 @@ Signed-off-by: Rory& <root@rory.gay> 2 files changed, 33 insertions(+), 36 deletions(-) diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py -index 14805ac80f..04f8587fd8 100644 +index b3444dd2ef..2d5612fc04 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -191,7 +191,7 @@ class FederationHandler: @@ -32,7 +32,7 @@ index 14805ac80f..04f8587fd8 100644 """ # Starting the processing time here so we can include the room backfill # linearizer lock queue in the timing -@@ -306,7 +304,7 @@ class FederationHandler: +@@ -308,7 +306,7 @@ class FederationHandler: limit=1, ) if not have_later_backfill_points: @@ -41,7 +41,7 @@ index 14805ac80f..04f8587fd8 100644 logger.debug( "_maybe_backfill_inner: all backfill points are *after* current depth. Trying again with later backfill points." -@@ -326,15 +324,15 @@ class FederationHandler: +@@ -328,15 +326,15 @@ class FederationHandler: ) # We return `False` because we're backfilling in the background and there is # no new events immediately for the caller to know about yet. @@ -60,7 +60,7 @@ index 14805ac80f..04f8587fd8 100644 # If we're approaching an extremity we trigger a backfill, otherwise we # no-op. -@@ -353,7 +351,7 @@ class FederationHandler: +@@ -355,7 +353,7 @@ class FederationHandler: current_depth, limit, ) @@ -69,7 +69,7 @@ index 14805ac80f..04f8587fd8 100644 # For performance's sake, we only want to paginate from a particular extremity # if we can actually see the events we'll get. Otherwise, we'd just spend a lot -@@ -421,7 +419,7 @@ class FederationHandler: +@@ -423,7 +421,7 @@ class FederationHandler: logger.debug( "_maybe_backfill_inner: found no extremities which would be visible" ) @@ -78,7 +78,7 @@ index 14805ac80f..04f8587fd8 100644 logger.debug( "_maybe_backfill_inner: extremities_to_request %s", extremities_to_request -@@ -444,7 +442,7 @@ class FederationHandler: +@@ -446,7 +444,7 @@ class FederationHandler: ) ) @@ -87,7 +87,7 @@ index 14805ac80f..04f8587fd8 100644 # TODO: Should we try multiple of these at a time? # Number of contacted remote homeservers that have denied our backfill -@@ -467,7 +465,7 @@ class FederationHandler: +@@ -469,7 +467,7 @@ class FederationHandler: # If this succeeded then we probably already have the # appropriate stuff. # TODO: We can probably do something more intelligent here. @@ -96,7 +96,7 @@ index 14805ac80f..04f8587fd8 100644 except NotRetryingDestination as e: logger.info("_maybe_backfill_inner: %s", e) continue -@@ -491,7 +489,7 @@ class FederationHandler: +@@ -493,7 +491,7 @@ class FederationHandler: ) denied_count += 1 if denied_count >= max_denied_count: @@ -105,7 +105,7 @@ index 14805ac80f..04f8587fd8 100644 continue logger.info("Failed to backfill from %s because %s", dom, e) -@@ -507,7 +505,7 @@ class FederationHandler: +@@ -509,7 +507,7 @@ class FederationHandler: ) denied_count += 1 if denied_count >= max_denied_count: @@ -114,7 +114,7 @@ index 14805ac80f..04f8587fd8 100644 continue logger.info("Failed to backfill from %s because %s", dom, e) -@@ -519,7 +517,7 @@ class FederationHandler: +@@ -521,7 +519,7 @@ class FederationHandler: logger.exception("Failed to backfill from %s because %s", dom, e) continue @@ -123,7 +123,7 @@ index 14805ac80f..04f8587fd8 100644 # If we have the `processing_start_time`, then we can make an # observation. We wouldn't have the `processing_start_time` in the case -@@ -531,14 +529,9 @@ class FederationHandler: +@@ -533,14 +531,9 @@ class FederationHandler: **{SERVER_NAME_LABEL: self.server_name} ).observe((processing_end_time - processing_start_time) / 1000) @@ -140,10 +140,10 @@ index 14805ac80f..04f8587fd8 100644 async def send_invite(self, target_host: str, event: EventBase) -> EventBase: """Sends the invite to the remote server for signing. diff --git a/synapse/handlers/pagination.py b/synapse/handlers/pagination.py -index 7b9c829056..368fa3e007 100644 +index 2bc7efeb5e..6d4bde4bbe 100644 --- a/synapse/handlers/pagination.py +++ b/synapse/handlers/pagination.py -@@ -632,27 +632,31 @@ class PaginationHandler: +@@ -633,27 +633,31 @@ class PaginationHandler: or missing_too_many_events or not_enough_events_to_fill_response ): @@ -162,7 +162,7 @@ index 7b9c829056..368fa3e007 100644 - ( - events, - next_key, -- _, +- limited, - ) = await self.store.paginate_room_events_by_topological_ordering( - room_id=room_id, - from_key=from_token.room_key, @@ -179,7 +179,7 @@ index 7b9c829056..368fa3e007 100644 + ( + events, + next_key, -+ _, ++ limited, + ) = await self.store.paginate_room_events_by_topological_ordering( + room_id=room_id, + from_key=from_token.room_key, @@ -192,5 +192,5 @@ index 7b9c829056..368fa3e007 100644 # Otherwise, we can backfill in the background for eventual # consistency's sake but we don't need to block the client waiting -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0014-Fix-pagination-with-large-gaps-of-rejected-events.patch b/packages/overlays/matrix-synapse/patches/0014-Fix-pagination-with-large-gaps-of-rejected-events.patch
index 89e812e..deb4522 100644 --- a/packages/overlays/matrix-synapse/patches/0014-Fix-pagination-with-large-gaps-of-rejected-events.patch +++ b/packages/overlays/matrix-synapse/patches/0014-Fix-pagination-with-large-gaps-of-rejected-events.patch
@@ -1,51 +1,35 @@ -From 4775b12430b2fd8c7487f3779087cd16ece63bf7 Mon Sep 17 00:00:00 2001 +From aa2cba639cd420a67b9528705187cd8ba21ed93d Mon Sep 17 00:00:00 2001 From: Nicolas Werner <nicolas.werner@hotmail.de> Date: Sun, 8 Jun 2025 23:14:31 +0200 -Subject: [PATCH 14/25] Fix pagination with large gaps of rejected events +Subject: [PATCH 14/19] Fix pagination with large gaps of rejected events Signed-off-by: Rory& <root@rory.gay> --- - synapse/handlers/pagination.py | 13 +++++++++++-- - 1 file changed, 11 insertions(+), 2 deletions(-) + synapse/handlers/pagination.py | 11 +++++++++++ + 1 file changed, 11 insertions(+) diff --git a/synapse/handlers/pagination.py b/synapse/handlers/pagination.py -index 368fa3e007..350c1ccd9e 100644 +index 6d4bde4bbe..869b476d87 100644 --- a/synapse/handlers/pagination.py +++ b/synapse/handlers/pagination.py -@@ -565,7 +565,7 @@ class PaginationHandler: - ( - events, - next_key, -- _, -+ limited, - ) = await self.store.paginate_room_events_by_topological_ordering( - room_id=room_id, - from_key=from_token.room_key, -@@ -648,7 +648,7 @@ class PaginationHandler: - ( - events, - next_key, -- _, -+ limited, - ) = await self.store.paginate_room_events_by_topological_ordering( - room_id=room_id, - from_key=from_token.room_key, -@@ -671,6 +671,15 @@ class PaginationHandler: +@@ -672,6 +672,17 @@ class PaginationHandler: next_token = from_token.copy_and_replace(StreamKeyType.ROOM, next_key) + # We might have hit some internal filtering first, for example rejected + # events. Ensure we return a pagination token then. + if not events and limited: -+ return { -+ "chunk": [], -+ "start": await from_token.to_string(self.store), -+ "end": await next_token.to_string(self.store), -+ } ++ return GetMessagesResult( ++ messages_chunk=[], ++ bundled_aggregations={}, ++ state=None, ++ start_token=from_token, ++ end_token=next_token, ++ ) + - # if no events are returned from pagination, that implies - # we have reached the end of the available events. - # In that case we do not return end, to tell the client + # if no events are returned from pagination (this page is empty) + # and there aren't any more pages (not limited), + # that implies we have reached the end of the available events. -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0015-RequestRatelimiter-expose-can_do_action.patch b/packages/overlays/matrix-synapse/patches/0015-RequestRatelimiter-expose-can_do_action.patch
index 635e1a6..d961013 100644 --- a/packages/overlays/matrix-synapse/patches/0015-RequestRatelimiter-expose-can_do_action.patch +++ b/packages/overlays/matrix-synapse/patches/0015-RequestRatelimiter-expose-can_do_action.patch
@@ -1,7 +1,7 @@ -From edb8616c493500b52f509a8c27ee2d62ebfae758 Mon Sep 17 00:00:00 2001 +From b80719e34f34df23c90b69ca60d53d46f955d451 Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Fri, 25 Jul 2025 08:26:15 +0200 -Subject: [PATCH 15/25] RequestRatelimiter: expose can_do_action +Subject: [PATCH 15/19] RequestRatelimiter: expose can_do_action Signed-off-by: Rory& <root@rory.gay> --- @@ -92,5 +92,5 @@ index d6cc3d26b5..bdc9481e4f 100644 + n_actions=n_actions, + ) -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0016-Clarify-pre_event_ids-assert-in-event-creation-handl.patch b/packages/overlays/matrix-synapse/patches/0016-Clarify-pre_event_ids-assert-in-event-creation-handl.patch
index ec49b23..d230cba 100644 --- a/packages/overlays/matrix-synapse/patches/0016-Clarify-pre_event_ids-assert-in-event-creation-handl.patch +++ b/packages/overlays/matrix-synapse/patches/0016-Clarify-pre_event_ids-assert-in-event-creation-handl.patch
@@ -1,7 +1,7 @@ -From dd61c685748369af6e7b46dd55ea4f5b8d4447b7 Mon Sep 17 00:00:00 2001 +From e221cdbc9fa341f4f375bd4f7e5ed740446bfd68 Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Sat, 16 Aug 2025 20:19:08 +0200 -Subject: [PATCH 16/25] Clarify pre_event_ids assert in event creation handler +Subject: [PATCH 16/19] Clarify pre_event_ids assert in event creation handler Signed-off-by: Rory& <root@rory.gay> --- @@ -9,10 +9,10 @@ Signed-off-by: Rory& <root@rory.gay> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py -index 99ce120736..0c7bf8b4d1 100644 +index 4032c7eca9..435e6b5c14 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py -@@ -1274,7 +1274,7 @@ class EventCreationHandler: +@@ -1324,7 +1324,7 @@ class EventCreationHandler: if state_event_ids is not None: # Do a quick check to make sure that prev_event_ids is present to # make the type-checking around `builder.build` happy. @@ -22,5 +22,5 @@ index 99ce120736..0c7bf8b4d1 100644 temp_event = await builder.build( prev_event_ids=prev_event_ids, -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0017-Add-bulk-send-events-endpoint.patch b/packages/overlays/matrix-synapse/patches/0017-Add-bulk-send-events-endpoint.patch
index 04f7835..9ed6f9f 100644 --- a/packages/overlays/matrix-synapse/patches/0017-Add-bulk-send-events-endpoint.patch +++ b/packages/overlays/matrix-synapse/patches/0017-Add-bulk-send-events-endpoint.patch
@@ -1,7 +1,7 @@ -From a96f2eb4361749a083b0c8a49068af8154333232 Mon Sep 17 00:00:00 2001 +From 47c6aab82a297f3e9db2df7121c16598f8711ac2 Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Sat, 26 Jul 2025 09:50:56 +0200 -Subject: [PATCH 17/25] Add bulk send events endpoint +Subject: [PATCH 17/19] Add bulk send events endpoint Try to optimise bulk sending some more @@ -16,7 +16,7 @@ Signed-off-by: Rory& <root@rory.gay> 2 files changed, 114 insertions(+), 1 deletion(-) diff --git a/synapse/rest/client/capabilities.py b/synapse/rest/client/capabilities.py -index baff999ab0..5a85a415e6 100644 +index 705d74dee1..075c3de261 100644 --- a/synapse/rest/client/capabilities.py +++ b/synapse/rest/client/capabilities.py @@ -74,6 +74,9 @@ class CapabilitiesRestServlet(RestServlet): @@ -30,7 +30,7 @@ index baff999ab0..5a85a415e6 100644 } diff --git a/synapse/rest/client/room.py b/synapse/rest/client/room.py -index d28be2befb..7bcfdb68ce 100644 +index 7f3b1153f7..168415249b 100644 --- a/synapse/rest/client/room.py +++ b/synapse/rest/client/room.py @@ -23,10 +23,12 @@ @@ -46,23 +46,23 @@ index d28be2befb..7bcfdb68ce 100644 import attr from prometheus_client.core import Histogram -@@ -45,6 +47,7 @@ from synapse.api.errors import ( +@@ -51,6 +53,7 @@ from synapse.api.errors import ( UnredactedContentDeletedError, ) from synapse.api.filtering import Filter +from synapse.api.ratelimiting import RequestRatelimiter from synapse.events.utils import ( EventClientSerializer, - SerializeEventConfig, -@@ -52,6 +55,7 @@ from synapse.events.utils import ( - serialize_event, + FilteredEvent, +@@ -58,6 +61,7 @@ from synapse.events.utils import ( + format_event_for_client_v2, ) from synapse.handlers.pagination import GetMessagesResult +from synapse.events import EventBase from synapse.http.server import HttpServer from synapse.http.servlet import ( ResolveRoomIdMixin, -@@ -486,7 +490,6 @@ class RoomSendEventRestServlet(TransactionRestServlet): +@@ -514,7 +518,6 @@ class RoomSendEventRestServlet(TransactionRestServlet): txn_id, ) @@ -70,7 +70,7 @@ index d28be2befb..7bcfdb68ce 100644 def _parse_request_delay( request: SynapseRequest, max_delay: int | None, -@@ -1728,6 +1731,112 @@ class RoomSummaryRestServlet(ResolveRoomIdMixin, RestServlet): +@@ -1758,6 +1761,112 @@ class RoomSummaryRestServlet(ResolveRoomIdMixin, RestServlet): remote_room_hosts, ) @@ -183,7 +183,7 @@ index d28be2befb..7bcfdb68ce 100644 def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: RoomStateEventRestServlet(hs).register(http_server) -@@ -1737,6 +1846,7 @@ def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: +@@ -1767,6 +1876,7 @@ def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: JoinRoomAliasServlet(hs).register(http_server) RoomMembershipRestServlet(hs).register(http_server) RoomSendEventRestServlet(hs).register(http_server) @@ -192,5 +192,5 @@ index d28be2befb..7bcfdb68ce 100644 RoomStateRestServlet(hs).register(http_server) RoomRedactEventRestServlet(hs).register(http_server) -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0018-admin-api-send-more-data.patch b/packages/overlays/matrix-synapse/patches/0018-admin-api-send-more-data.patch
index 63a5ba0..2969f7c 100644 --- a/packages/overlays/matrix-synapse/patches/0018-admin-api-send-more-data.patch +++ b/packages/overlays/matrix-synapse/patches/0018-admin-api-send-more-data.patch
@@ -1,7 +1,7 @@ -From 1082cc5441ca3153016c456b89b07ce7846525e2 Mon Sep 17 00:00:00 2001 +From 6cb4af5641c98b0b6149e1201d8c86d72650cab4 Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Mon, 27 Oct 2025 19:23:42 +0100 -Subject: [PATCH 18/25] admin api - send more data +Subject: [PATCH 18/19] admin api - send more data Signed-off-by: Rory& <root@rory.gay> --- @@ -11,10 +11,10 @@ Signed-off-by: Rory& <root@rory.gay> 3 files changed, 66 insertions(+), 22 deletions(-) diff --git a/synapse/rest/admin/rooms.py b/synapse/rest/admin/rooms.py -index e97d076a44..09a8a01f77 100644 +index 3ff2865b96..cad8f205e3 100644 --- a/synapse/rest/admin/rooms.py +++ b/synapse/rest/admin/rooms.py -@@ -302,7 +302,15 @@ class ListRoomRestServlet(RestServlet): +@@ -303,7 +303,15 @@ class ListRoomRestServlet(RestServlet): reverse_order = True if direction == Direction.BACKWARDS else False emma_include_tombstone = parse_boolean( @@ -31,7 +31,7 @@ index e97d076a44..09a8a01f77 100644 ) # Return list of rooms according to parameters -@@ -314,7 +322,9 @@ class ListRoomRestServlet(RestServlet): +@@ -315,7 +323,9 @@ class ListRoomRestServlet(RestServlet): search_term, public_rooms, empty_rooms, @@ -43,7 +43,7 @@ index e97d076a44..09a8a01f77 100644 response = { diff --git a/synapse/rest/client/capabilities.py b/synapse/rest/client/capabilities.py -index 5a85a415e6..3326ead0d5 100644 +index 075c3de261..c0b0a9923f 100644 --- a/synapse/rest/client/capabilities.py +++ b/synapse/rest/client/capabilities.py @@ -76,6 +76,9 @@ class CapabilitiesRestServlet(RestServlet): @@ -57,10 +57,10 @@ index 5a85a415e6..3326ead0d5 100644 } } diff --git a/synapse/storage/databases/main/room.py b/synapse/storage/databases/main/room.py -index 7623208c28..08735e1fbb 100644 +index 68c2edfc14..e427ffa78a 100644 --- a/synapse/storage/databases/main/room.py +++ b/synapse/storage/databases/main/room.py -@@ -606,6 +606,8 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): +@@ -780,6 +780,8 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): public_rooms: bool | None, empty_rooms: bool | None, emma_include_tombstone: bool = False, @@ -69,7 +69,7 @@ index 7623208c28..08735e1fbb 100644 ) -> tuple[list[dict[str, Any]], int]: """Function to retrieve a paginated list of rooms as json. -@@ -626,10 +628,13 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): +@@ -800,10 +802,13 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): if false, empty rooms are excluded from the query. When it is none (the default), both empty rooms and none-empty rooms are queried. emma_include_tombstone: If true, include tombstone events in the results. @@ -83,7 +83,7 @@ index 7623208c28..08735e1fbb 100644 # Filter room names by a string filter_ = [] where_args = [] -@@ -799,35 +804,61 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): +@@ -973,35 +978,61 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): _get_rooms_paginate_txn, ) @@ -166,5 +166,5 @@ index 7623208c28..08735e1fbb 100644 return result -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0019-Allow-overriding-max-background-task-count.patch b/packages/overlays/matrix-synapse/patches/0019-Allow-overriding-max-background-task-count.patch
index 3b7019a..bc1c344 100644 --- a/packages/overlays/matrix-synapse/patches/0019-Allow-overriding-max-background-task-count.patch +++ b/packages/overlays/matrix-synapse/patches/0019-Allow-overriding-max-background-task-count.patch
@@ -1,7 +1,7 @@ -From 885576e816a6f888a7e294a717362f630c75cc6a Mon Sep 17 00:00:00 2001 +From 19d1e97075b24788daaf2895da3b46762b461ab3 Mon Sep 17 00:00:00 2001 From: Rory& <root@rory.gay> Date: Tue, 28 Oct 2025 00:01:45 +0100 -Subject: [PATCH 19/25] Allow overriding max background task count +Subject: [PATCH 19/19] Allow overriding max background task count Signed-off-by: Rory& <root@rory.gay> --- @@ -31,7 +31,7 @@ index 13c9c4dba0..a8add434d2 100644 # to the old method. if "rc_message" in config: diff --git a/synapse/util/task_scheduler.py b/synapse/util/task_scheduler.py -index e5cfc85a37..2aaf7a017f 100644 +index c1790fd3ae..a083e5b694 100644 --- a/synapse/util/task_scheduler.py +++ b/synapse/util/task_scheduler.py @@ -142,6 +142,12 @@ class TaskScheduler: @@ -48,5 +48,5 @@ index e5cfc85a37..2aaf7a017f 100644 self, function: Callable[ -- -2.52.0 +2.53.0 diff --git a/packages/overlays/matrix-synapse/patches/0020-max-and-min-were-probably-switched.-Set-max-to-arbit.patch b/packages/overlays/matrix-synapse/patches/0020-max-and-min-were-probably-switched.-Set-max-to-arbit.patch deleted file mode 100644
index 3fa292e..0000000 --- a/packages/overlays/matrix-synapse/patches/0020-max-and-min-were-probably-switched.-Set-max-to-arbit.patch +++ /dev/null
@@ -1,39 +0,0 @@ -From bf1ab7b6b7bdfda9329ca1952b244162edf90aa9 Mon Sep 17 00:00:00 2001 -From: Jason Little <j.little@famedly.com> -Date: Fri, 2 Jan 2026 12:48:22 -0600 -Subject: [PATCH 20/25] max() and min() were probably switched. Set max to - arbitrary 15 minutes, continue logging at durations greater than 10 minutes - ---- - synapse/handlers/worker_lock.py | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/synapse/handlers/worker_lock.py b/synapse/handlers/worker_lock.py -index 1537a18cc0..82dd896d5a 100644 ---- a/synapse/handlers/worker_lock.py -+++ b/synapse/handlers/worker_lock.py -@@ -275,8 +275,8 @@ class WaitingLock: - - def _get_next_retry_interval(self) -> float: - next = self._retry_interval -- self._retry_interval = max(5, next * 2) -- if self._retry_interval > Duration(minutes=10).as_secs(): # >7 iterations -+ self._retry_interval = min(Duration(minutes=15).as_secs(), next * 2) -+ if self._retry_interval > Duration(minutes=10).as_secs(): # >12 iterations - logger.warning( - "Lock timeout is getting excessive: %ss. There may be a deadlock.", - self._retry_interval, -@@ -362,8 +362,8 @@ class WaitingMultiLock: - - def _get_next_retry_interval(self) -> float: - next = self._retry_interval -- self._retry_interval = max(5, next * 2) -- if self._retry_interval > Duration(minutes=10).as_secs(): # >7 iterations -+ self._retry_interval = min(Duration(minutes=15).as_secs(), next * 2) -+ if self._retry_interval > Duration(minutes=10).as_secs(): # >12 iterations - logger.warning( - "Lock timeout is getting excessive: %ss. There may be a deadlock.", - self._retry_interval, --- -2.52.0 - diff --git a/packages/overlays/matrix-synapse/patches/0021-changelog.patch b/packages/overlays/matrix-synapse/patches/0021-changelog.patch deleted file mode 100644
index 40cf414..0000000 --- a/packages/overlays/matrix-synapse/patches/0021-changelog.patch +++ /dev/null
@@ -1,20 +0,0 @@ -From 5608626043f1a410b1ec426f58e77a7259f68186 Mon Sep 17 00:00:00 2001 -From: Jason Little <j.little@famedly.com> -Date: Tue, 20 Jan 2026 06:42:18 -0600 -Subject: [PATCH 21/25] changelog - ---- - changelog.d/19394.bugfix | 1 + - 1 file changed, 1 insertion(+) - create mode 100644 changelog.d/19394.bugfix - -diff --git a/changelog.d/19394.bugfix b/changelog.d/19394.bugfix -new file mode 100644 -index 0000000000..eb93fffe15 ---- /dev/null -+++ b/changelog.d/19394.bugfix -@@ -0,0 +1 @@ -+Prevent excessively long numbers for the retry interval of `WorkerLock`s. Contributed by Famedly. --- -2.52.0 - diff --git a/packages/overlays/matrix-synapse/patches/0022-Update-changelog.d-19394.bugfix.patch b/packages/overlays/matrix-synapse/patches/0022-Update-changelog.d-19394.bugfix.patch deleted file mode 100644
index db9f06b..0000000 --- a/packages/overlays/matrix-synapse/patches/0022-Update-changelog.d-19394.bugfix.patch +++ /dev/null
@@ -1,20 +0,0 @@ -From b4eaaae1102b713bae9799b5655e07eb43966550 Mon Sep 17 00:00:00 2001 -From: Jason Little <j.little@famedly.com> -Date: Wed, 21 Jan 2026 06:57:34 -0600 -Subject: [PATCH 22/25] Update changelog.d/19394.bugfix - -Co-authored-by: Eric Eastwood <madlittlemods@gmail.com> ---- - changelog.d/19394.bugfix | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/changelog.d/19394.bugfix b/changelog.d/19394.bugfix -index eb93fffe15..3591c0a745 100644 ---- a/changelog.d/19394.bugfix -+++ b/changelog.d/19394.bugfix -@@ -1 +1 @@ --Prevent excessively long numbers for the retry interval of `WorkerLock`s. Contributed by Famedly. -+Capped the `WorkerLock` retry interval to a maximum of 15 minutes to prevent dealing with excessively long numbers. Contributed by Famedly. --- -2.52.0 - diff --git a/packages/overlays/matrix-synapse/patches/0023-Adjust-for-the-retry-interval-actually-being-a-timeo.patch b/packages/overlays/matrix-synapse/patches/0023-Adjust-for-the-retry-interval-actually-being-a-timeo.patch deleted file mode 100644
index f965483..0000000 --- a/packages/overlays/matrix-synapse/patches/0023-Adjust-for-the-retry-interval-actually-being-a-timeo.patch +++ /dev/null
@@ -1,257 +0,0 @@ -From 13ccc96c9a41e4a80375e9be0b288d6ef9711630 Mon Sep 17 00:00:00 2001 -From: Jason Little <j.little@famedly.com> -Date: Mon, 26 Jan 2026 10:26:38 -0600 -Subject: [PATCH 23/25] Adjust for the retry interval actually being a timeout - interval, and only increase it when a timeout occurs - ---- - synapse/handlers/worker_lock.py | 56 +++++++++-------- - tests/handlers/test_worker_lock.py | 99 ++++++++++++++++++++++++++---- - 2 files changed, 120 insertions(+), 35 deletions(-) - -diff --git a/synapse/handlers/worker_lock.py b/synapse/handlers/worker_lock.py -index 82dd896d5a..88ecfd6318 100644 ---- a/synapse/handlers/worker_lock.py -+++ b/synapse/handlers/worker_lock.py -@@ -208,7 +208,7 @@ class WaitingLock: - write: bool | None - deferred: "defer.Deferred[None]" = attr.Factory(defer.Deferred) - _inner_lock: Lock | None = None -- _retry_interval: float = 0.1 -+ _timeout_interval: float = 0.1 - _lock_span: "opentracing.Scope" = attr.Factory( - lambda: start_active_span("WaitingLock.lock") - ) -@@ -240,19 +240,23 @@ class WaitingLock: - break - - try: -- # Wait until the we get notified the lock might have been -+ # Wait until the notification the lock might have been - # released (by the deferred being resolved). We also -- # periodically wake up in case the lock was released but we -+ # periodically wake up in case the lock was released, but we - # weren't notified. - with PreserveLoggingContext(): -- timeout = self._get_next_retry_interval() - await timeout_deferred( - deferred=self.deferred, -- timeout=timeout, -+ timeout=self._timeout_interval, - clock=self.clock, - ) -- except Exception: -- pass -+ except defer.TimeoutError: -+ # Only increment the timeout interval if this was an actual timeout -+ self._timeout_interval = self._increment_timeout_interval() -+ except Exception as e: -+ logger.warning( -+ "Caught an exception while waiting on WaitingLock: %r", e -+ ) - - return await self._inner_lock.__aenter__() - -@@ -273,13 +277,13 @@ class WaitingLock: - - return r - -- def _get_next_retry_interval(self) -> float: -- next = self._retry_interval -- self._retry_interval = min(Duration(minutes=15).as_secs(), next * 2) -- if self._retry_interval > Duration(minutes=10).as_secs(): # >12 iterations -+ def _increment_timeout_interval(self) -> float: -+ next = self._timeout_interval -+ next = min(Duration(minutes=15).as_secs(), next * 2) -+ if next > Duration(minutes=10).as_secs(): # >12 iterations - logger.warning( - "Lock timeout is getting excessive: %ss. There may be a deadlock.", -- self._retry_interval, -+ next, - ) - return next * random.uniform(0.9, 1.1) - -@@ -297,7 +301,7 @@ class WaitingMultiLock: - deferred: "defer.Deferred[None]" = attr.Factory(defer.Deferred) - - _inner_lock_cm: AsyncContextManager | None = None -- _retry_interval: float = 0.1 -+ _timeout_interval: float = 0.1 - _lock_span: "opentracing.Scope" = attr.Factory( - lambda: start_active_span("WaitingLock.lock") - ) -@@ -324,19 +328,23 @@ class WaitingMultiLock: - break - - try: -- # Wait until the we get notified the lock might have been -+ # Wait until the notification the lock might have been - # released (by the deferred being resolved). We also -- # periodically wake up in case the lock was released but we -+ # periodically wake up in case the lock was released, but we - # weren't notified. - with PreserveLoggingContext(): -- timeout = self._get_next_retry_interval() - await timeout_deferred( - deferred=self.deferred, -- timeout=timeout, -+ timeout=self._timeout_interval, - clock=self.clock, - ) -- except Exception: -- pass -+ except defer.TimeoutError: -+ # Only increment the timeout interval if this was an actual timeout -+ self._timeout_interval = self._increment_timeout_interval() -+ except Exception as e: -+ logger.warning( -+ "Caught an exception while waiting on WaitingMultiLock: %r", e -+ ) - - assert self._inner_lock_cm - await self._inner_lock_cm.__aenter__() -@@ -360,12 +368,12 @@ class WaitingMultiLock: - - return r - -- def _get_next_retry_interval(self) -> float: -- next = self._retry_interval -- self._retry_interval = min(Duration(minutes=15).as_secs(), next * 2) -- if self._retry_interval > Duration(minutes=10).as_secs(): # >12 iterations -+ def _increment_timeout_interval(self) -> float: -+ next = self._timeout_interval -+ next = min(Duration(minutes=15).as_secs(), next * 2) -+ if next > Duration(minutes=10).as_secs(): # >12 iterations - logger.warning( - "Lock timeout is getting excessive: %ss. There may be a deadlock.", -- self._retry_interval, -+ next, - ) - return next * random.uniform(0.9, 1.1) -diff --git a/tests/handlers/test_worker_lock.py b/tests/handlers/test_worker_lock.py -index 61ff51ff92..3ae44d48e2 100644 ---- a/tests/handlers/test_worker_lock.py -+++ b/tests/handlers/test_worker_lock.py -@@ -21,6 +21,7 @@ - - import logging - import platform -+from unittest.mock import patch - - from twisted.internet import defer - from twisted.internet.testing import MemoryReactor -@@ -48,13 +49,47 @@ class WorkerLockTestCase(unittest.HomeserverTestCase): - self.get_success(lock1.__aenter__()) - - lock2 = self.worker_lock_handler.acquire_lock("name", "key") -- d2 = defer.ensureDeferred(lock2.__aenter__()) -- self.assertNoResult(d2) -- -- self.get_success(lock1.__aexit__(None, None, None)) -+ # Wrap the WaitingLock object, so we can detect if the timeouts are being hit -+ with patch.object( -+ lock2, -+ "_increment_timeout_interval", -+ wraps=lock2._increment_timeout_interval, -+ ) as wrapped_lock2_increment_timeout_interval_method: -+ d2 = defer.ensureDeferred(lock2.__aenter__()) -+ self.assertNoResult(d2) -+ -+ # The lock should not time out here -+ wrapped_lock2_increment_timeout_interval_method.assert_not_called() -+ self.get_success(lock1.__aexit__(None, None, None)) -+ -+ self.get_success(d2) -+ self.get_success(lock2.__aexit__(None, None, None)) -+ -+ def test_timeouts_for_lock_locally(self) -> None: -+ """Test timeouts are incremented for a lock on a single worker""" -+ lock1 = self.worker_lock_handler.acquire_lock("name", "key") -+ self.get_success(lock1.__aenter__()) - -- self.get_success(d2) -- self.get_success(lock2.__aexit__(None, None, None)) -+ lock2 = self.worker_lock_handler.acquire_lock("name", "key") -+ # Wrap the WaitingLock object, so we can detect if the timeouts are being hit -+ with patch.object( -+ lock2, -+ "_increment_timeout_interval", -+ wraps=lock2._increment_timeout_interval, -+ ) as wrapped_lock2_increment_timeout_interval_method: -+ d2 = defer.ensureDeferred(lock2.__aenter__()) -+ self.assertNoResult(d2) -+ -+ # Recall that pump() will advance time of the given amount 100 times, this -+ # amounts to about 10 seconds passing -+ self.pump(10.0) -+ -+ # Should be timed out 6 times, but do not fail on that exact count -+ wrapped_lock2_increment_timeout_interval_method.assert_called() -+ self.get_success(lock1.__aexit__(None, None, None)) -+ -+ self.get_success(d2) -+ self.get_success(lock2.__aexit__(None, None, None)) - - def test_lock_contention(self) -> None: - """Test lock contention when a lot of locks wait on a single worker""" -@@ -117,10 +152,52 @@ class WorkerLockWorkersTestCase(BaseMultiWorkerStreamTestCase): - self.get_success(lock1.__aenter__()) - - lock2 = worker_lock_handler.acquire_lock("name", "key") -- d2 = defer.ensureDeferred(lock2.__aenter__()) -- self.assertNoResult(d2) -+ # Wrap the WaitingLock object, so we can detect if the timeouts are being hit -+ with patch.object( -+ lock2, -+ "_increment_timeout_interval", -+ wraps=lock2._increment_timeout_interval, -+ ) as wrapped_lock2_increment_timeout_interval_method: -+ d2 = defer.ensureDeferred(lock2.__aenter__()) -+ self.assertNoResult(d2) -+ -+ # The lock should not time out here -+ wrapped_lock2_increment_timeout_interval_method.assert_not_called() -+ self.get_success(lock1.__aexit__(None, None, None)) -+ -+ self.get_success(d2) -+ self.get_success(lock2.__aexit__(None, None, None)) -+ -+ def test_timeouts_for_lock_worker(self) -> None: -+ """Test timeouts are incremented for a lock on another worker""" -+ worker = self.make_worker_hs( -+ "synapse.app.generic_worker", -+ extra_config={ -+ "redis": {"enabled": True}, -+ }, -+ ) -+ worker_lock_handler = worker.get_worker_locks_handler() - -- self.get_success(lock1.__aexit__(None, None, None)) -+ lock1 = self.main_worker_lock_handler.acquire_lock("name", "key") -+ self.get_success(lock1.__aenter__()) - -- self.get_success(d2) -- self.get_success(lock2.__aexit__(None, None, None)) -+ lock2 = worker_lock_handler.acquire_lock("name", "key") -+ # Wrap the WaitingLock object, so we can detect if the timeouts are being hit -+ with patch.object( -+ lock2, -+ "_increment_timeout_interval", -+ wraps=lock2._increment_timeout_interval, -+ ) as wrapped_lock2_increment_timeout_interval_method: -+ d2 = defer.ensureDeferred(lock2.__aenter__()) -+ self.assertNoResult(d2) -+ -+ # Recall that pump() will advance time of the given amount 100 times, this -+ # amounts to about 10 seconds passing -+ self.pump(0.1) -+ -+ # Should be timed out 6 times, but do not fail on that exact count -+ wrapped_lock2_increment_timeout_interval_method.assert_called() -+ self.get_success(lock1.__aexit__(None, None, None)) -+ -+ self.get_success(d2) -+ self.get_success(lock2.__aexit__(None, None, None)) --- -2.52.0 - diff --git a/packages/overlays/matrix-synapse/patches/0024-unecessarily-long-pump-in-test-left-over-from-testin.patch b/packages/overlays/matrix-synapse/patches/0024-unecessarily-long-pump-in-test-left-over-from-testin.patch deleted file mode 100644
index 3a75bc6..0000000 --- a/packages/overlays/matrix-synapse/patches/0024-unecessarily-long-pump-in-test-left-over-from-testin.patch +++ /dev/null
@@ -1,26 +0,0 @@ -From 6a18e62bcf4d1bd21b4105495c10f5deaf8f902a Mon Sep 17 00:00:00 2001 -From: Jason Little <j.little@famedly.com> -Date: Mon, 26 Jan 2026 11:18:29 -0600 -Subject: [PATCH 24/25] unecessarily long pump() in test, left over from - testing logging - ---- - tests/handlers/test_worker_lock.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/handlers/test_worker_lock.py b/tests/handlers/test_worker_lock.py -index 3ae44d48e2..c5c3ce22ef 100644 ---- a/tests/handlers/test_worker_lock.py -+++ b/tests/handlers/test_worker_lock.py -@@ -82,7 +82,7 @@ class WorkerLockTestCase(unittest.HomeserverTestCase): - - # Recall that pump() will advance time of the given amount 100 times, this - # amounts to about 10 seconds passing -- self.pump(10.0) -+ self.pump(0.1) - - # Should be timed out 6 times, but do not fail on that exact count - wrapped_lock2_increment_timeout_interval_method.assert_called() --- -2.52.0 - diff --git a/packages/overlays/matrix-synapse/patches/0025-adjust-changelog-again.patch b/packages/overlays/matrix-synapse/patches/0025-adjust-changelog-again.patch deleted file mode 100644
index fabaeff..0000000 --- a/packages/overlays/matrix-synapse/patches/0025-adjust-changelog-again.patch +++ /dev/null
@@ -1,19 +0,0 @@ -From facc7fb4494360dcd96099fcbdb223c5933e6321 Mon Sep 17 00:00:00 2001 -From: Jason Little <j.little@famedly.com> -Date: Mon, 26 Jan 2026 11:18:38 -0600 -Subject: [PATCH 25/25] adjust changelog(again) - ---- - changelog.d/19394.bugfix | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/changelog.d/19394.bugfix b/changelog.d/19394.bugfix -index 3591c0a745..02131d89ba 100644 ---- a/changelog.d/19394.bugfix -+++ b/changelog.d/19394.bugfix -@@ -1 +1 @@ --Capped the `WorkerLock` retry interval to a maximum of 15 minutes to prevent dealing with excessively long numbers. Contributed by Famedly. -+Capped the `WorkerLock` time out interval to a maximum of 15 minutes to prevent dealing with excessively long numbers and prevent logging when the retry is not an actual time out. Contributed by Famedly. --- -2.52.0 - diff --git a/prebuild.sh b/prebuild.sh
index 74357cf..b3a3e99 100755 --- a/prebuild.sh +++ b/prebuild.sh
@@ -11,7 +11,7 @@ fi CONFIG=$1 DERIVATION=".#nixosConfigurations.${CONFIG}.config.system.build.toplevel" -EXTRA_NIX_FLAGS="-vL --accept-flake-config --keep-going --show-trace --option allow-import-from-derivation false" +EXTRA_NIX_FLAGS="-vL --accept-flake-config --keep-going --show-trace --option allow-import-from-derivation false -j 128" EXTRA_NIXOS_REBUILD_FLAGS="--sudo --no-reexec --offline" # legacy: --use-remote-sudo --fast [ -f "host/${CONFIG}/hooks/pre-rebuild.sh" ] && echo "<=== RUNNING PRE-REBUILD HOOK AT host/${CONFIG}/hooks/pre-rebuild.sh ===>" && host/${CONFIG}/hooks/pre-rebuild.sh