diff --git a/flake.lock b/flake.lock
deleted file mode 100644
index 1e6f0b0..0000000
--- a/flake.lock
+++ /dev/null
@@ -1,1088 +0,0 @@
-{
- "nodes": {
- "attic": {
- "inputs": {
- "crane": "crane",
- "flake-compat": "flake-compat",
- "flake-utils": "flake-utils",
- "nixpkgs": "nixpkgs_2",
- "nixpkgs-stable": "nixpkgs-stable"
- },
- "locked": {
- "lastModified": 1707922053,
- "narHash": "sha256-wSZjK+rOXn+UQiP1NbdNn5/UW6UcBxjvlqr2wh++MbM=",
- "owner": "zhaofengli",
- "repo": "attic",
- "rev": "6eabc3f02fae3683bffab483e614bebfcd476b21",
- "type": "github"
- },
- "original": {
- "owner": "zhaofengli",
- "ref": "main",
- "repo": "attic",
- "type": "github"
- }
- },
- "attic_2": {
- "inputs": {
- "crane": "crane_3",
- "flake-compat": "flake-compat_3",
- "flake-parts": "flake-parts",
- "nix-github-actions": "nix-github-actions",
- "nixpkgs": "nixpkgs_4",
- "nixpkgs-stable": "nixpkgs-stable_2"
- },
- "locked": {
- "lastModified": 1731270564,
- "narHash": "sha256-6KMC/NH/VWP5Eb+hA56hz0urel3jP6Y6cF2PX6xaTkk=",
- "owner": "zhaofengli",
- "repo": "attic",
- "rev": "47752427561f1c34debb16728a210d378f0ece36",
- "type": "github"
- },
- "original": {
- "owner": "zhaofengli",
- "ref": "main",
- "repo": "attic",
- "type": "github"
- }
- },
- "botcore-v4": {
- "inputs": {
- "nixpkgs": "nixpkgs"
- },
- "locked": {
- "lastModified": 1733399338,
- "narHash": "sha256-qojztR32eAuJwlukn34CvrpGcarj7AZtgAPNA6C7PV0=",
- "owner": "BotCore-Devs",
- "repo": "BotCore-v4",
- "rev": "5e513088c1076aa42aeb473557da11d2d1d32130",
- "type": "gitlab"
- },
- "original": {
- "owner": "BotCore-Devs",
- "ref": "staging",
- "repo": "BotCore-v4",
- "type": "gitlab"
- }
- },
- "conduit": {
- "inputs": {
- "attic": "attic",
- "crane": "crane_2",
- "fenix": "fenix",
- "flake-compat": "flake-compat_2",
- "flake-utils": "flake-utils_2",
- "nix-filter": "nix-filter",
- "nixpkgs": "nixpkgs_3"
- },
- "locked": {
- "lastModified": 1738687046,
- "narHash": "sha256-6X7CYwykwyVU1kXMdl/CmARETQ77wXPHwqG+aAc5oak=",
- "owner": "famedly",
- "repo": "conduit",
- "rev": "e20dd1469a0f84a428097242d280f5b8344b7e96",
- "type": "gitlab"
- },
- "original": {
- "owner": "famedly",
- "ref": "next",
- "repo": "conduit",
- "type": "gitlab"
- }
- },
- "crane": {
- "inputs": {
- "nixpkgs": [
- "conduit",
- "attic",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1702918879,
- "narHash": "sha256-tWJqzajIvYcaRWxn+cLUB9L9Pv4dQ3Bfit/YjU5ze3g=",
- "owner": "ipetkov",
- "repo": "crane",
- "rev": "7195c00c272fdd92fc74e7d5a0a2844b9fadb2fb",
- "type": "github"
- },
- "original": {
- "owner": "ipetkov",
- "repo": "crane",
- "type": "github"
- }
- },
- "crane_2": {
- "inputs": {
- "nixpkgs": [
- "conduit",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1713721181,
- "narHash": "sha256-Vz1KRVTzU3ClBfyhOj8gOehZk21q58T1YsXC30V23PU=",
- "owner": "ipetkov",
- "repo": "crane",
- "rev": "55f4939ac59ff8f89c6a4029730a2d49ea09105f",
- "type": "github"
- },
- "original": {
- "owner": "ipetkov",
- "ref": "master",
- "repo": "crane",
- "type": "github"
- }
- },
- "crane_3": {
- "inputs": {
- "nixpkgs": [
- "grapevine",
- "attic",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1722960479,
- "narHash": "sha256-NhCkJJQhD5GUib8zN9JrmYGMwt4lCRp6ZVNzIiYCl0Y=",
- "owner": "ipetkov",
- "repo": "crane",
- "rev": "4c6c77920b8d44cd6660c1621dea6b3fc4b4c4f4",
- "type": "github"
- },
- "original": {
- "owner": "ipetkov",
- "repo": "crane",
- "type": "github"
- }
- },
- "crane_4": {
- "locked": {
- "lastModified": 1731098351,
- "narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=",
- "owner": "ipetkov",
- "repo": "crane",
- "rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28",
- "type": "github"
- },
- "original": {
- "owner": "ipetkov",
- "ref": "master",
- "repo": "crane",
- "type": "github"
- }
- },
- "draupnirSrc": {
- "flake": false,
- "locked": {
- "lastModified": 1739364704,
- "narHash": "sha256-tK/hvHgOiLQnGbKrExFgUHo6nvT2EqW+ruN2WrtKQmU=",
- "owner": "the-draupnir-project",
- "repo": "Draupnir",
- "rev": "9587d6fcbae0cfcc524abde08640848753577c2d",
- "type": "github"
- },
- "original": {
- "owner": "the-draupnir-project",
- "ref": "main",
- "repo": "Draupnir",
- "type": "github"
- }
- },
- "fenix": {
- "inputs": {
- "nixpkgs": [
- "conduit",
- "nixpkgs"
- ],
- "rust-analyzer-src": "rust-analyzer-src"
- },
- "locked": {
- "lastModified": 1709619709,
- "narHash": "sha256-l6EPVJfwfelWST7qWQeP6t/TDK3HHv5uUB1b2vw4mOQ=",
- "owner": "nix-community",
- "repo": "fenix",
- "rev": "c8943ea9e98d41325ff57d4ec14736d330b321b2",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "fenix",
- "type": "github"
- }
- },
- "fenix_2": {
- "inputs": {
- "nixpkgs": [
- "grapevine",
- "nixpkgs"
- ],
- "rust-analyzer-src": "rust-analyzer-src_2"
- },
- "locked": {
- "lastModified": 1731738660,
- "narHash": "sha256-tIXhc9lX1b030v812yVJanSR37OnpTb/OY5rU3TbShA=",
- "owner": "nix-community",
- "repo": "fenix",
- "rev": "e10ba121773f754a30d31b6163919a3e404a434f",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "ref": "main",
- "repo": "fenix",
- "type": "github"
- }
- },
- "flake-compat": {
- "flake": false,
- "locked": {
- "lastModified": 1673956053,
- "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
- "owner": "edolstra",
- "repo": "flake-compat",
- "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
- "type": "github"
- },
- "original": {
- "owner": "edolstra",
- "repo": "flake-compat",
- "type": "github"
- }
- },
- "flake-compat_2": {
- "flake": false,
- "locked": {
- "lastModified": 1696426674,
- "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
- "owner": "edolstra",
- "repo": "flake-compat",
- "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
- "type": "github"
- },
- "original": {
- "owner": "edolstra",
- "repo": "flake-compat",
- "type": "github"
- }
- },
- "flake-compat_3": {
- "flake": false,
- "locked": {
- "lastModified": 1696426674,
- "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
- "owner": "edolstra",
- "repo": "flake-compat",
- "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
- "type": "github"
- },
- "original": {
- "owner": "edolstra",
- "repo": "flake-compat",
- "type": "github"
- }
- },
- "flake-compat_4": {
- "flake": false,
- "locked": {
- "lastModified": 1696426674,
- "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
- "owner": "edolstra",
- "repo": "flake-compat",
- "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
- "type": "github"
- },
- "original": {
- "owner": "edolstra",
- "ref": "master",
- "repo": "flake-compat",
- "type": "github"
- }
- },
- "flake-compat_5": {
- "flake": false,
- "locked": {
- "lastModified": 1733328505,
- "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
- "owner": "edolstra",
- "repo": "flake-compat",
- "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
- "type": "github"
- },
- "original": {
- "owner": "edolstra",
- "repo": "flake-compat",
- "type": "github"
- }
- },
- "flake-parts": {
- "inputs": {
- "nixpkgs-lib": [
- "grapevine",
- "attic",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1722555600,
- "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=",
- "owner": "hercules-ci",
- "repo": "flake-parts",
- "rev": "8471fe90ad337a8074e957b69ca4d0089218391d",
- "type": "github"
- },
- "original": {
- "owner": "hercules-ci",
- "repo": "flake-parts",
- "type": "github"
- }
- },
- "flake-utils": {
- "locked": {
- "lastModified": 1667395993,
- "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
- "owner": "numtide",
- "repo": "flake-utils",
- "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "repo": "flake-utils",
- "type": "github"
- }
- },
- "flake-utils_2": {
- "inputs": {
- "systems": "systems"
- },
- "locked": {
- "lastModified": 1709126324,
- "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
- "owner": "numtide",
- "repo": "flake-utils",
- "rev": "d465f4819400de7c8d874d50b982301f28a84605",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "repo": "flake-utils",
- "type": "github"
- }
- },
- "flake-utils_3": {
- "inputs": {
- "systems": "systems_2"
- },
- "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_4": {
- "inputs": {
- "systems": "systems_3"
- },
- "locked": {
- "lastModified": 1731533236,
- "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
- "owner": "numtide",
- "repo": "flake-utils",
- "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "ref": "main",
- "repo": "flake-utils",
- "type": "github"
- }
- },
- "flake-utils_5": {
- "inputs": {
- "systems": "systems_4"
- },
- "locked": {
- "lastModified": 1726560853,
- "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
- "owner": "numtide",
- "repo": "flake-utils",
- "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "repo": "flake-utils",
- "type": "github"
- }
- },
- "flakey-profile": {
- "locked": {
- "lastModified": 1712898590,
- "narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
- "owner": "lf-",
- "repo": "flakey-profile",
- "rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
- "type": "github"
- },
- "original": {
- "owner": "lf-",
- "repo": "flakey-profile",
- "type": "github"
- }
- },
- "grapevine": {
- "inputs": {
- "attic": "attic_2",
- "crane": "crane_4",
- "fenix": "fenix_2",
- "flake-compat": "flake-compat_4",
- "flake-utils": "flake-utils_4",
- "nix-filter": "nix-filter_2",
- "nixpkgs": "nixpkgs_5",
- "rocksdb": "rocksdb",
- "rust-manifest": "rust-manifest"
- },
- "locked": {
- "host": "gitlab.computer.surgery",
- "lastModified": 1739814074,
- "narHash": "sha256-SfszY7aAqLOi7hrMhzaadVNoaYQzdqla2XGw22tbZzA=",
- "owner": "matrix",
- "repo": "grapevine-fork",
- "rev": "99924e577920bb32acad5184d48cb0f34f395732",
- "type": "gitlab"
- },
- "original": {
- "host": "gitlab.computer.surgery",
- "owner": "matrix",
- "repo": "grapevine-fork",
- "type": "gitlab"
- }
- },
- "home-manager": {
- "inputs": {
- "nixpkgs": "nixpkgs_6"
- },
- "locked": {
- "lastModified": 1739845242,
- "narHash": "sha256-rNMXpDubNWGLTs45MuoH9YHtXfXye/fn2u4YMSTPt9I=",
- "owner": "nix-community",
- "repo": "home-manager",
- "rev": "5cfbf5cc37a3bd1da07ae84eea1b828909c4456b",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "ref": "master",
- "repo": "home-manager",
- "type": "github"
- }
- },
- "lix": {
- "flake": false,
- "locked": {
- "lastModified": 1729298361,
- "narHash": "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=",
- "rev": "ad9d06f7838a25beec425ff406fe68721fef73be",
- "type": "tarball",
- "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?rev=ad9d06f7838a25beec425ff406fe68721fef73be"
- },
- "original": {
- "type": "tarball",
- "url": "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz"
- }
- },
- "lix-module": {
- "inputs": {
- "flake-utils": "flake-utils_5",
- "flakey-profile": "flakey-profile",
- "lix": "lix",
- "nixpkgs": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1732605668,
- "narHash": "sha256-DN5/166jhiiAW0Uw6nueXaGTueVxhfZISAkoxasmz/g=",
- "rev": "f19bd752910bbe3a861c9cad269bd078689d50fe",
- "type": "tarball",
- "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/f19bd752910bbe3a861c9cad269bd078689d50fe.tar.gz?rev=f19bd752910bbe3a861c9cad269bd078689d50fe"
- },
- "original": {
- "type": "tarball",
- "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz"
- }
- },
- "mtxclientSrc": {
- "flake": false,
- "locked": {
- "lastModified": 1721941104,
- "narHash": "sha256-iSPra8k5o68yWq/c5xnzu4t8EsN8CZ6CeWSYTsmnsIY=",
- "owner": "Nheko-reborn",
- "repo": "mtxclient",
- "rev": "a0b203980491ddf2e2fe4f1cd6af8c2562b3ee35",
- "type": "github"
- },
- "original": {
- "owner": "Nheko-reborn",
- "ref": "master",
- "repo": "mtxclient",
- "type": "github"
- }
- },
- "nhekoSrc": {
- "flake": false,
- "locked": {
- "lastModified": 1738280329,
- "narHash": "sha256-jYh3yYd/lUadXLIiKW8rx6+3hLsVBuN31LB1E98suHg=",
- "owner": "Nheko-reborn",
- "repo": "nheko",
- "rev": "8a5a00493682ee677d2a239717bde19cb30ec1a1",
- "type": "github"
- },
- "original": {
- "owner": "Nheko-reborn",
- "ref": "master",
- "repo": "nheko",
- "type": "github"
- }
- },
- "nix-filter": {
- "locked": {
- "lastModified": 1705332318,
- "narHash": "sha256-kcw1yFeJe9N4PjQji9ZeX47jg0p9A0DuU4djKvg1a7I=",
- "owner": "numtide",
- "repo": "nix-filter",
- "rev": "3449dc925982ad46246cfc36469baf66e1b64f17",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "repo": "nix-filter",
- "type": "github"
- }
- },
- "nix-filter_2": {
- "locked": {
- "lastModified": 1731533336,
- "narHash": "sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms=",
- "owner": "numtide",
- "repo": "nix-filter",
- "rev": "f7653272fd234696ae94229839a99b73c9ab7de0",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "ref": "main",
- "repo": "nix-filter",
- "type": "github"
- }
- },
- "nix-github-actions": {
- "inputs": {
- "nixpkgs": [
- "grapevine",
- "attic",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1729742964,
- "narHash": "sha256-B4mzTcQ0FZHdpeWcpDYPERtyjJd/NIuaQ9+BV1h+MpA=",
- "owner": "nix-community",
- "repo": "nix-github-actions",
- "rev": "e04df33f62cdcf93d73e9a04142464753a16db67",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "nix-github-actions",
- "type": "github"
- }
- },
- "nixos-wsl": {
- "inputs": {
- "flake-compat": "flake-compat_5",
- "nixpkgs": "nixpkgs_7"
- },
- "locked": {
- "lastModified": 1739782332,
- "narHash": "sha256-bPZKuual2WKfyHv7Wq+Owcj9R+i/qFzOWByqSS9rlxI=",
- "owner": "nix-community",
- "repo": "NixOS-WSL",
- "rev": "59bdbb1e75232bf1dd6d2a9313b9b6ddc5049ba2",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "repo": "NixOS-WSL",
- "type": "github"
- }
- },
- "nixpkgs": {
- "locked": {
- "lastModified": 1733212471,
- "narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "55d15ad12a74eb7d4646254e13638ad0c4128776",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs-Draupnir": {
- "locked": {
- "lastModified": 1737959626,
- "narHash": "sha256-LiKSTCyDPGcvcJTMnQey+AQtlcloRcky9XH+rF3KyY8=",
- "owner": "TheArcaneBrony",
- "repo": "nixpkgs",
- "rev": "8cbebf7d2e1657eaef8477c43f85fdf615ff6623",
- "type": "github"
- },
- "original": {
- "owner": "TheArcaneBrony",
- "ref": "master",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs-RoryNix": {
- "locked": {
- "lastModified": 1739873227,
- "narHash": "sha256-ONWhtUuO9J3YlKbVNWMOUtNRjH1ESurAAH3m2tMTy7s=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "c85bcd2e252a709ec00ca9668fb5828426688754",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "master",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs-keydb": {
- "locked": {
- "lastModified": 1727211877,
- "narHash": "sha256-zy/ar3GpnzuGRCwrr6zV/QicoZcqd2kNNhkRDECfStU=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "e0464e47880a69896f0fb1810f00e0de469f770a",
- "type": "github"
- },
- "original": {
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "e0464e47880a69896f0fb1810f00e0de469f770a",
- "type": "github"
- }
- },
- "nixpkgs-master": {
- "locked": {
- "lastModified": 1739873227,
- "narHash": "sha256-ONWhtUuO9J3YlKbVNWMOUtNRjH1ESurAAH3m2tMTy7s=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "c85bcd2e252a709ec00ca9668fb5828426688754",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "master",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs-stable": {
- "locked": {
- "lastModified": 1702780907,
- "narHash": "sha256-blbrBBXjjZt6OKTcYX1jpe9SRof2P9ZYWPzq22tzXAA=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "1e2e384c5b7c50dbf8e9c441a9e58d85f408b01f",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixos-23.11",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs-stable_2": {
- "locked": {
- "lastModified": 1724316499,
- "narHash": "sha256-Qb9MhKBUTCfWg/wqqaxt89Xfi6qTD3XpTzQ9eXi3JmE=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "797f7dc49e0bc7fab4b57c021cdf68f595e47841",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixos-24.05",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs-stable_3": {
- "locked": {
- "lastModified": 1735563628,
- "narHash": "sha256-OnSAY7XDSx7CtDoqNh8jwVwh4xNL/2HaJxGjryLWzX8=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "b134951a4c9f3c995fd7be05f3243f8ecd65d798",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixos-24.05",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs_10": {
- "locked": {
- "lastModified": 1731763621,
- "narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "c69a9bffbecde46b4b939465422ddc59493d3e4d",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixpkgs-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs_2": {
- "locked": {
- "lastModified": 1702539185,
- "narHash": "sha256-KnIRG5NMdLIpEkZTnN5zovNYc0hhXjAgv6pfd5Z4c7U=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "aa9d4729cbc99dabacb50e3994dcefb3ea0f7447",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixpkgs-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs_3": {
- "locked": {
- "lastModified": 1709479366,
- "narHash": "sha256-n6F0n8UV6lnTZbYPl1A9q1BS0p4hduAv1mGAP17CVd0=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "b8697e57f10292a6165a20f03d2f42920dfaf973",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs_4": {
- "locked": {
- "lastModified": 1726042813,
- "narHash": "sha256-LnNKCCxnwgF+575y0pxUdlGZBO/ru1CtGHIqQVfvjlA=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "159be5db480d1df880a0135ca0bfed84c2f88353",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixpkgs-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs_5": {
- "locked": {
- "lastModified": 1731676054,
- "narHash": "sha256-OZiZ3m8SCMfh3B6bfGC/Bm4x3qc1m2SVEAlkV6iY7Yg=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "5e4fbfb6b3de1aa2872b76d49fafc942626e2add",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs_6": {
- "locked": {
- "lastModified": 1739020877,
- "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "a79cfe0ebd24952b580b1cf08cd906354996d547",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs_7": {
- "locked": {
- "lastModified": 1739624908,
- "narHash": "sha256-f84lBmLl4tkDp1ZU5LBTSFzlxXP4926DVW3KnXrke10=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "a60651b217d2e529729cbc7d989c19f3941b9250",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixos-24.11",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs_8": {
- "locked": {
- "lastModified": 1739736696,
- "narHash": "sha256-zON2GNBkzsIyALlOCFiEBcIjI4w38GYOb+P+R4S8Jsw=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "d74a2335ac9c133d6bbec9fc98d91a77f1604c1f",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs_9": {
- "locked": {
- "lastModified": 1734119587,
- "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5",
- "type": "github"
- },
- "original": {
- "owner": "nixos",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "ooye": {
- "inputs": {
- "nixpkgs": "nixpkgs_9"
- },
- "locked": {
- "lastModified": 1737779835,
- "narHash": "sha256-iZ/kQ/XFqIx053AuSHhCwu3HA8627ognYiJl/LRNpD0=",
- "ref": "refs/heads/master",
- "rev": "11cc65efa2909bdc7e3e978bf1f56f6d141bf82a",
- "revCount": 11,
- "type": "git",
- "url": "https://cgit.rory.gay/nix/OOYE-module.git"
- },
- "original": {
- "type": "git",
- "url": "https://cgit.rory.gay/nix/OOYE-module.git"
- }
- },
- "rocksdb": {
- "flake": false,
- "locked": {
- "lastModified": 1730475155,
- "narHash": "sha256-u5uuShM2SxHc9/zL4UU56IhCcR/ZQbzde0LgOYS44bM=",
- "owner": "facebook",
- "repo": "rocksdb",
- "rev": "3c27a3dde0993210c5cc30d99717093f7537916f",
- "type": "github"
- },
- "original": {
- "owner": "facebook",
- "ref": "v9.7.4",
- "repo": "rocksdb",
- "type": "github"
- }
- },
- "root": {
- "inputs": {
- "botcore-v4": "botcore-v4",
- "conduit": "conduit",
- "draupnirSrc": "draupnirSrc",
- "flake-utils": "flake-utils_3",
- "grapevine": "grapevine",
- "home-manager": "home-manager",
- "lix-module": "lix-module",
- "mtxclientSrc": "mtxclientSrc",
- "nhekoSrc": "nhekoSrc",
- "nixos-wsl": "nixos-wsl",
- "nixpkgs": "nixpkgs_8",
- "nixpkgs-Draupnir": "nixpkgs-Draupnir",
- "nixpkgs-RoryNix": "nixpkgs-RoryNix",
- "nixpkgs-keydb": "nixpkgs-keydb",
- "nixpkgs-master": "nixpkgs-master",
- "nixpkgs-stable": "nixpkgs-stable_3",
- "ooye": "ooye",
- "sops-nix": "sops-nix"
- }
- },
- "rust-analyzer-src": {
- "flake": false,
- "locked": {
- "lastModified": 1709571018,
- "narHash": "sha256-ISFrxHxE0J5g7lDAscbK88hwaT5uewvWoma9TlFmRzM=",
- "owner": "rust-lang",
- "repo": "rust-analyzer",
- "rev": "9f14343f9ee24f53f17492c5f9b653427e2ad15e",
- "type": "github"
- },
- "original": {
- "owner": "rust-lang",
- "ref": "nightly",
- "repo": "rust-analyzer",
- "type": "github"
- }
- },
- "rust-analyzer-src_2": {
- "flake": false,
- "locked": {
- "lastModified": 1731693936,
- "narHash": "sha256-uHUUS1WPyW6ohp5Bt3dAZczUlQ22vOn7YZF8vaPKIEw=",
- "owner": "rust-lang",
- "repo": "rust-analyzer",
- "rev": "1b90e979aeee8d1db7fe14603a00834052505497",
- "type": "github"
- },
- "original": {
- "owner": "rust-lang",
- "ref": "nightly",
- "repo": "rust-analyzer",
- "type": "github"
- }
- },
- "rust-manifest": {
- "flake": false,
- "locked": {
- "narHash": "sha256-tB9BZB6nRHDk5ELIVlGYlIjViLKBjQl52nC1avhcCwA=",
- "type": "file",
- "url": "https://static.rust-lang.org/dist/channel-rust-1.81.0.toml"
- },
- "original": {
- "type": "file",
- "url": "https://static.rust-lang.org/dist/channel-rust-1.81.0.toml"
- }
- },
- "sops-nix": {
- "inputs": {
- "nixpkgs": "nixpkgs_10"
- },
- "locked": {
- "lastModified": 1739262228,
- "narHash": "sha256-7JAGezJ0Dn5qIyA2+T4Dt/xQgAbhCglh6lzCekTVMeU=",
- "owner": "Mic92",
- "repo": "sops-nix",
- "rev": "07af005bb7d60c7f118d9d9f5530485da5d1e975",
- "type": "github"
- },
- "original": {
- "owner": "Mic92",
- "repo": "sops-nix",
- "type": "github"
- }
- },
- "systems": {
- "locked": {
- "lastModified": 1681028828,
- "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
- "owner": "nix-systems",
- "repo": "default",
- "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
- "type": "github"
- },
- "original": {
- "owner": "nix-systems",
- "repo": "default",
- "type": "github"
- }
- },
- "systems_2": {
- "locked": {
- "lastModified": 1681028828,
- "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
- "owner": "nix-systems",
- "repo": "default",
- "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
- "type": "github"
- },
- "original": {
- "owner": "nix-systems",
- "repo": "default",
- "type": "github"
- }
- },
- "systems_3": {
- "locked": {
- "lastModified": 1681028828,
- "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
- "owner": "nix-systems",
- "repo": "default",
- "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
- "type": "github"
- },
- "original": {
- "owner": "nix-systems",
- "repo": "default",
- "type": "github"
- }
- },
- "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"
- }
- }
- },
- "root": "root",
- "version": 7
-}
diff --git a/flake.nix b/flake.nix
index b43c704..748ffdc 100755
--- a/flake.nix
+++ b/flake.nix
@@ -159,7 +159,7 @@
#botcore-v4.modules.users
(
- { pkgs, ... }:
+ { pkgs, lib, ... }:
{
disabledModules = [ "services/matrix/synapse.nix" ];
imports = [
@@ -168,8 +168,23 @@
];
nixpkgs.overlays = [
(final: prev: {
- matrix-synapse-unwrapped = inputs.nixpkgs-master.legacyPackages.${pkgs.stdenv.hostPlatform.system}.matrix-synapse-unwrapped;
+ matrix-synapse-unwrapped = inputs.nixpkgs-master.legacyPackages.${pkgs.stdenv.hostPlatform.system}.matrix-synapse-unwrapped
+ .overrideAttrs (old: {
+ patches = [ ./private/synapse-fast-links.patch ];
+ #doCheck = false;
+ #checkPhase = "";
+ });
draupnir = inputs.nixpkgs-Draupnir.legacyPackages.${pkgs.stdenv.hostPlatform.system}.draupnir;
+# .overrideAttrs (old: {
+# src = draupnirSrc;
+# packageJSON = draupnirSrc + "/package.json";
+# offlineCache = pkgs.fetchYarnDeps {
+# pname = "${old.pname}-yarn-offline-cache";
+# yarnLock = draupnirSrc + "/yarn.lock";
+# hash = "sha256-vXCSN7kdbtqzIbVu6S0SoI7GXoZPIV4Ag399dbLaY1g=";
+#
+## };
+# });
keydb = inputs.nixpkgs-keydb.legacyPackages.${pkgs.stdenv.hostPlatform.system}.keydb;
})
];
diff --git a/host/Rory-nginx/configuration.nix b/host/Rory-nginx/configuration.nix
index aa3d248..62cfc3f 100755
--- a/host/Rory-nginx/configuration.nix
+++ b/host/Rory-nginx/configuration.nix
@@ -17,14 +17,8 @@
../../modules/users/ks.nix
../../modules/users/Alice.nix
-# ./services/postgres.nix
-# ./services/matrix/root.nix
-# ./services/nginx/nginx.nix
- #./services/jitsi.nix
-# ./services/cgit.nix
./services/prometheus.nix
-# ./services/email/root.nix
];
users.groups.ocp = { };
diff --git a/modules/base.nix b/modules/base.nix
index e366f59..1311ea1 100755
--- a/modules/base.nix
+++ b/modules/base.nix
@@ -92,6 +92,7 @@
services = {
openssh = {
enable = true;
+ settings.PermitRootLogin = "yes";
#allow more logins in cases where i have many ssh keys on a system
extraConfig = ''
MaxAuthTries 32
diff --git a/private/synapse-fast-links.patch b/private/synapse-fast-links.patch
new file mode 100644
index 0000000..c35ba87
--- /dev/null
+++ b/private/synapse-fast-links.patch
@@ -0,0 +1,87 @@
+diff --git a/synapse/storage/database.py b/synapse/storage/database.py
+index cb4a585..1196781 100644
+--- a/synapse/storage/database.py
++++ b/synapse/storage/database.py
+@@ -2503,6 +2503,49 @@ class DatabasePool:
+
+ return txn.fetchall()
+
++# requires database_engine.supports_using_any_list to be true
++def make_select_id_if_found_sql_clause(
++ database_engine: BaseDatabaseEngine,
++ column: str,
++ table: str,
++ iterable: Collection[Any],
++ *,
++ negative: bool = False,
++) -> Tuple[str, list]:
++ """Returns an SQL clause that checks the given column is in the iterable.
++
++ On SQLite this expands to `column IN (?, ?, ...)`, whereas on Postgres
++ it expands to `column = ANY(?)`. While both DBs support the `IN` form,
++ using the `ANY` form on postgres means that it views queries with
++ different length iterables as the same, helping the query stats.
++
++ Args:
++ database_engine
++ column: Name of the column
++ table: Name of the table
++ iterable: The values to check the column against.
++ negative: Whether we should check for inequality, i.e. `NOT IN`
++
++ Returns:
++ A tuple of SQL query and the args
++ """
++ # This should hopefully be faster, but also makes postgres query
++ # stats easier to understand.
++ if database_engine.supports_using_any_list:
++ if not negative:
++ clause = f"{column}_lookup AS {column} FROM UNNEST(?::bigint[]) {column}_lookup WHERE EXISTS(SELECT FROM {table} WHERE {column}={column}_lookup)"
++ else:
++ clause = f"{column}_lookup AS {column} FROM UNNEST(?::bigint[]) {column}_lookup WHERE NOT EXISTS(SELECT FROM {table} WHERE {column}={column}_lookup)"
++
++ return clause, [list(iterable)]
++ else:
++ params = ",".join("?" for _ in iterable)
++ if not negative:
++ clause = f"DISTINCT {column} FROM {table} WHERE {column} IN ({params})"
++ else:
++ clause = f"DISTINCT {column} FROM {table} WHERE {column} NOT IN ({params})"
++ return clause, list(iterable)
++
+
+ 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 46aa590..026f011 100644
+--- a/synapse/storage/databases/main/event_federation.py
++++ b/synapse/storage/databases/main/event_federation.py
+@@ -52,6 +52,7 @@ from synapse.storage.database import (
+ DatabasePool,
+ LoggingDatabaseConnection,
+ LoggingTransaction,
++ make_select_id_if_found_sql_clause,
+ )
+ from synapse.storage.databases.main.events_worker import EventsWorkerStore
+ from synapse.storage.databases.main.signatures import SignatureWorkerStore
+@@ -362,8 +363,7 @@ class EventFederationWorkerStore(SignatureWorkerStore, EventsWorkerStore, SQLBas
+ sql = """
+ WITH RECURSIVE links(chain_id) AS (
+ SELECT
+- DISTINCT origin_chain_id
+- FROM event_auth_chain_links WHERE %s
++ %s
+ UNION
+ SELECT
+ target_chain_id
+@@ -380,8 +380,8 @@ class EventFederationWorkerStore(SignatureWorkerStore, EventsWorkerStore, SQLBas
+ while chains_to_fetch:
+ batch2 = tuple(itertools.islice(chains_to_fetch, 1000))
+ chains_to_fetch.difference_update(batch2)
+- clause, args = make_in_list_sql_clause(
+- txn.database_engine, "origin_chain_id", batch2
++ clause, args = make_select_id_if_found_sql_clause(
++ txn.database_engine, "origin_chain_id", "event_auth_chain_links", batch2
+ )
+ txn.execute(sql % (clause,), args)
+
|