diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..bc25cd0
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,849 @@
+{
+ "nodes": {
+ "attic": {
+ "inputs": {
+ "crane": "crane",
+ "flake-compat": "flake-compat",
+ "flake-utils": "flake-utils",
+ "nixpkgs": "nixpkgs",
+ "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-utils": "flake-utils_3",
+ "nixpkgs": "nixpkgs_3",
+ "nixpkgs-stable": "nixpkgs-stable_2"
+ },
+ "locked": {
+ "lastModified": 1711742460,
+ "narHash": "sha256-0O4v6e4a1toxXZ2gf5INhg4WPE5C5T+SVvsBt+45Mcc=",
+ "owner": "zhaofengli",
+ "repo": "attic",
+ "rev": "4dbdbee45728d8ce5788db6461aaaa89d98081f0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "zhaofengli",
+ "ref": "main",
+ "repo": "attic",
+ "type": "github"
+ }
+ },
+ "botcore-v4": {
+ "inputs": {
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1683656302,
+ "narHash": "sha256-I2eu+9/i0ktqNzQwkc0NuczQ2UThCBf8L9xnZ8v3NSM=",
+ "owner": "BotCore-Devs",
+ "repo": "BotCore-v4",
+ "rev": "0e8738ba7df060782df050dc733b0bfc8c499830",
+ "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_2"
+ },
+ "locked": {
+ "lastModified": 1718556291,
+ "narHash": "sha256-uwQPI6GmPwk09smHEZjH9x0cPvaDmjXA0qQ16OXSyv8=",
+ "owner": "famedly",
+ "repo": "conduit",
+ "rev": "ffc57f89977a8e44becdecbfb39b3868feb6e433",
+ "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": 1702918879,
+ "narHash": "sha256-tWJqzajIvYcaRWxn+cLUB9L9Pv4dQ3Bfit/YjU5ze3g=",
+ "owner": "ipetkov",
+ "repo": "crane",
+ "rev": "7195c00c272fdd92fc74e7d5a0a2844b9fadb2fb",
+ "type": "github"
+ },
+ "original": {
+ "owner": "ipetkov",
+ "repo": "crane",
+ "type": "github"
+ }
+ },
+ "crane_4": {
+ "inputs": {
+ "nixpkgs": [
+ "grapevine",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1716569590,
+ "narHash": "sha256-5eDbq8TuXFGGO3mqJFzhUbt5zHVTf5zilQoyW5jnJwo=",
+ "owner": "ipetkov",
+ "repo": "crane",
+ "rev": "109987da061a1bf452f435f1653c47511587d919",
+ "type": "github"
+ },
+ "original": {
+ "owner": "ipetkov",
+ "ref": "master",
+ "repo": "crane",
+ "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": 1716359173,
+ "narHash": "sha256-pYcjP6Gy7i6jPWrjiWAVV0BCQp+DdmGaI/k65lBb/kM=",
+ "owner": "nix-community",
+ "repo": "fenix",
+ "rev": "b6fc5035b28e36a98370d0eac44f4ef3fd323df6",
+ "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": 1673956053,
+ "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
+ "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": 1696426674,
+ "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "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": {
+ "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_4": {
+ "inputs": {
+ "systems": "systems_2"
+ },
+ "locked": {
+ "lastModified": 1710146030,
+ "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "ref": "main",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_5": {
+ "inputs": {
+ "systems": "systems_3"
+ },
+ "locked": {
+ "lastModified": 1710146030,
+ "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "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_4"
+ },
+ "locked": {
+ "host": "gitlab.computer.surgery",
+ "lastModified": 1718689420,
+ "narHash": "sha256-3GudMEhlzJ7nzrJcgjjhl/9/bbEt0ZCvD4lppUEZu9Y=",
+ "owner": "matrix",
+ "repo": "grapevine-fork",
+ "rev": "9b38bd59401e7d8f79a4a5066de63cbdfcde5924",
+ "type": "gitlab"
+ },
+ "original": {
+ "host": "gitlab.computer.surgery",
+ "owner": "matrix",
+ "ref": "benjamin/debug-emma-kde-room",
+ "repo": "grapevine-fork",
+ "type": "gitlab"
+ }
+ },
+ "home-manager": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_5"
+ },
+ "locked": {
+ "lastModified": 1718788307,
+ "narHash": "sha256-SqiOz0sljM0GjyQEVinPXQxaGcbOXw5OgpCWGPgh/vo=",
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "rev": "d7830d05421d0ced83a0f007900898bdcaf2a2ca",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "ref": "master",
+ "repo": "home-manager",
+ "type": "github"
+ }
+ },
+ "mtxclientSrc": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1718061774,
+ "narHash": "sha256-uIppA6FzWqPhXSQAnoiYi78NSA8+gpYf01E9XdLrvpU=",
+ "owner": "Nheko-reborn",
+ "repo": "mtxclient",
+ "rev": "e87c6f4f7aa8fc8e5b1640454e8c94a4efd36e8a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Nheko-reborn",
+ "ref": "master",
+ "repo": "mtxclient",
+ "type": "github"
+ }
+ },
+ "nhekoSrc": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1718914285,
+ "narHash": "sha256-e+KeD+a8GFODBuLG8EEvtzynopTvogD8jtsx/W3kido=",
+ "owner": "Nheko-reborn",
+ "repo": "nheko",
+ "rev": "bca7faf765010117b54ba12f50ea0aed16dd5de7",
+ "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": 1710156097,
+ "narHash": "sha256-1Wvk8UP7PXdf8bCCaEoMnOT1qe5/Duqgj+rL8sRQsSM=",
+ "owner": "numtide",
+ "repo": "nix-filter",
+ "rev": "3342559a24e85fc164b295c3444e8a139924675b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "ref": "main",
+ "repo": "nix-filter",
+ "type": "github"
+ }
+ },
+ "nixos-wsl": {
+ "inputs": {
+ "flake-compat": "flake-compat_5",
+ "flake-utils": "flake-utils_5",
+ "nixpkgs": "nixpkgs_6"
+ },
+ "locked": {
+ "lastModified": 1718710563,
+ "narHash": "sha256-O4rrM0Bkh3IRe8D600iniQ52QTmlnuTSp2KyXV7C2jE=",
+ "owner": "nix-community",
+ "repo": "NixOS-WSL",
+ "rev": "2fb93bea657ad99a7005ef601c67cb2820560a41",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "NixOS-WSL",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "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-RoryNix": {
+ "locked": {
+ "lastModified": 1718811006,
+ "narHash": "sha256-0Y8IrGhRmBmT7HHXlxxepg2t8j1X90++qRN3lukGaIk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "03d771e513ce90147b65fe922d87d3a0356fc125",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-23.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-rory": {
+ "locked": {
+ "lastModified": 1717368103,
+ "narHash": "sha256-0VlLgr9gj2ZN3HckF29W8Gabiz2AYewXWHuo52Ot8SE=",
+ "owner": "TheArcaneBrony",
+ "repo": "nixpkgs",
+ "rev": "3d9edccd9a55e7c7be1a272c75911c99ce3e0e96",
+ "type": "github"
+ },
+ "original": {
+ "owner": "TheArcaneBrony",
+ "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": 1711460390,
+ "narHash": "sha256-akSgjDZL6pVHEfSE6sz1DNSXuYX6hq+P/1Z5IoYWs7E=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "44733514b72e732bd49f5511bd0203dea9b9a434",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-23.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-stable_3": {
+ "locked": {
+ "lastModified": 1718478900,
+ "narHash": "sha256-v43N1gZLcGkhg3PdcrKUNIZ1L0FBzB2JqhIYEyKAHEs=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c884223af91820615a6146af1ae1fea25c107005",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-23.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "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_3": {
+ "locked": {
+ "lastModified": 1711401922,
+ "narHash": "sha256-QoQqXoj8ClGo0sqD/qWKFWezgEwUL0SUh37/vY2jNhc=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "07262b18b97000d16a4bdb003418bd2fb067a932",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_4": {
+ "locked": {
+ "lastModified": 1716330097,
+ "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_5": {
+ "locked": {
+ "lastModified": 1718530797,
+ "narHash": "sha256-pup6cYwtgvzDpvpSCFh1TEUjw2zkNpk8iolbKnyFmmU=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "b60ebf54c15553b393d144357375ea956f89e9a9",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_6": {
+ "locked": {
+ "lastModified": 1718437845,
+ "narHash": "sha256-ZT7Oc1g4I4pHVGGjQFnewFVDRLH5cIZhEzODLz9YXeY=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "752c634c09ceb50c45e751f8791cb45cb3d46c9e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-24.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_7": {
+ "locked": {
+ "lastModified": 1718714799,
+ "narHash": "sha256-FUZpz9rg3gL8NVPKbqU8ei1VkPLsTIfAJ2fdAf5qjak=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c00d587b1a1afbf200b1d8f0b0e4ba9deb1c7f0e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_8": {
+ "locked": {
+ "lastModified": 1718276985,
+ "narHash": "sha256-u1fA0DYQYdeG+5kDm1bOoGcHtX0rtC7qs2YA2N1X++I=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3f84a279f1a6290ce154c5531378acc827836fbb",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "botcore-v4": "botcore-v4",
+ "conduit": "conduit",
+ "grapevine": "grapevine",
+ "home-manager": "home-manager",
+ "mtxclientSrc": "mtxclientSrc",
+ "nhekoSrc": "nhekoSrc",
+ "nixos-wsl": "nixos-wsl",
+ "nixpkgs": "nixpkgs_7",
+ "nixpkgs-RoryNix": "nixpkgs-RoryNix",
+ "nixpkgs-rory": "nixpkgs-rory",
+ "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": 1716107283,
+ "narHash": "sha256-NJgrwLiLGHDrCia5AeIvZUHUY7xYGVryee0/9D3Ir1I=",
+ "owner": "rust-lang",
+ "repo": "rust-analyzer",
+ "rev": "21ec8f523812b88418b2bfc64240c62b3dd967bd",
+ "type": "github"
+ },
+ "original": {
+ "owner": "rust-lang",
+ "ref": "nightly",
+ "repo": "rust-analyzer",
+ "type": "github"
+ }
+ },
+ "sops-nix": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_8",
+ "nixpkgs-stable": "nixpkgs-stable_3"
+ },
+ "locked": {
+ "lastModified": 1718506969,
+ "narHash": "sha256-Pm9I/BMQHbsucdWf6y9G3xBZh3TMlThGo4KBbeoeczg=",
+ "owner": "Mic92",
+ "repo": "sops-nix",
+ "rev": "797ce4c1f45a85df6dd3d9abdc53f2691bea9251",
+ "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"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
index 300496b..f5fca4e 100755
--- a/flake.nix
+++ b/flake.nix
@@ -1,7 +1,8 @@
{
- description = "Rory's services flake";
+ description = "Rory&'s services flake";
inputs = {
+ # Different nixpkgs versions
nixpkgs = {
url = "github:NixOS/nixpkgs/nixos-unstable";
#url="path:/Rory-Open-Architecture/nixpkgs";
@@ -17,42 +18,24 @@
url = "github:NixOS/nixpkgs/nixos-23.11";
};
- home-manager = {
- url = "github:nix-community/home-manager/master";
- };
-
- conduit = {
- #url = "gitlab:famedly/conduit";
-
- #url = "github:girlbossceo/conduwuit/7ecc570bb8a07aba9802fd0217f978583f55bc8b";
- #url = "github:girlbossceo/conduwuit";
- url = "gitlab:matrix/grapevine-fork?host=gitlab.computer.surgery&ref=benjamin/debug-emma-kde-room";
- # Assuming you have an input for nixpkgs called `nixpkgs`. If you experience
- # build failures while using this, try commenting/deleting this line. This
- # will probably also require you to always build from source.
- #inputs.nixpkgs.follows = "nixpkgs";
- };
-
- conduit-vanilla = {
- url = "gitlab:famedly/conduit/next";
- };
+ # Base modules
+ home-manager.url = "github:nix-community/home-manager/master";
+ sops-nix.url = "github:Mic92/sops-nix";
+ # Packages
+ grapevine.url = "gitlab:matrix/grapevine-fork?host=gitlab.computer.surgery&ref=benjamin/debug-emma-kde-room";
+ conduit.url = "gitlab:famedly/conduit/next";
nixos-wsl.url = "github:nix-community/NixOS-WSL";
# Own projects
-
botcore-v4 = {
url = "gitlab:BotCore-Devs/BotCore-v4/staging";
+ inputs.nixpkgs.follows = "nixpkgs";
};
- #MatrixMediaGate = {
- # url = "git+https://cgit.rory.gay/matrix/tools/MatrixMediaGate.git/";
- #};
-
# Sources...
nhekoSrc = {
url = "github:Nheko-reborn/nheko/master";
- #url = "github:q234rty/nheko/b34bce70a4b6572330a6abcfe7b75ce123567f1e";
flake = false;
};
mtxclientSrc = {
@@ -61,7 +44,7 @@
};
};
- outputs = { self, nixpkgs, nixpkgs-RoryNix, nixpkgs-rory, home-manager, botcore-v4, conduit, conduit-vanilla, nixos-wsl, ... }@inputs: {
+ outputs = inputs: with inputs; {
nixosConfigurations = {
#NIXPKGS FORK
Rory-nginx = nixpkgs-rory.lib.nixosSystem {
@@ -70,13 +53,13 @@
./host/Rory-nginx/configuration.nix
./hardware-configuration.nix
home-manager.nixosModules.home-manager
- conduit.nixosModules.default
+ grapevine.nixosModules.default
];
specialArgs = {
inherit botcore-v4;
inherit home-manager;
+ inherit grapevine;
inherit conduit;
- inherit conduit-vanilla;
};
};
@@ -99,6 +82,7 @@
./host/Rory-desktop/configuration.nix
./hardware-configuration.nix
home-manager.nixosModules.home-manager
+ sops-nix.nixosModules.sops
({...}: {
nix = {
registry.nixpkgs.flake = nixpkgs;
@@ -107,12 +91,6 @@
];
};
})
- # ... add this line to the rest of your configuration modules
- #nix-ld.nixosModules.nix-ld
-
- # The module in this repository defines a new module under (programs.nix-ld.dev) instead of (programs.nix-ld)
- # to not collide with the nixpkgs version.
- #{ programs.nix-ld.dev.enable = true; }
];
specialArgs = {
inherit home-manager;
diff --git a/host/Rory-desktop/configuration.nix b/host/Rory-desktop/configuration.nix
index fddff11..28a3b7f 100644
--- a/host/Rory-desktop/configuration.nix
+++ b/host/Rory-desktop/configuration.nix
@@ -1,10 +1,11 @@
-{ config, pkgs, lib, nhekoSrc, mtxclientSrc, ... }:
+args@{ config, pkgs, lib, nhekoSrc, mtxclientSrc, ... }:
{
imports =
[
# base imports
../../modules/base-client.nix
+ # (import ../../modules/base-secrets.nix { path = "/home/rory/.config/sops/config.yaml"; })
../../modules/packages/vim.nix
# ../../modules/environments/home.nix
../../modules/software-templates/profilers.nix
diff --git a/host/Rory-desktop/optional/gui/wayland.nix b/host/Rory-desktop/optional/gui/wayland.nix
index e0394d3..c923007 100644
--- a/host/Rory-desktop/optional/gui/wayland.nix
+++ b/host/Rory-desktop/optional/gui/wayland.nix
@@ -15,14 +15,16 @@
# Fix for some Java AWT applications (e.g. Android Studio),
# use this if they aren't displayed properly:
export _JAVA_AWT_WM_NONREPARENTING=1
- (
- sleep 5
- ${pkgs.swaybg}/bin/swaybg -i ${../../../../modules/users/Rory/wallpaper.webp}
+ cp ${../../../../modules/users/Rory/wallpaper.webp} ~/.cache/wallpaper.webp
+
+ '';
+ #(
+ #sleep 5
+ #${pkgs.swaybg}/bin/swaybg -i ${../../../../modules/users/Rory/wallpaper.webp}
#$ {pkgs.swayidle}/bin/swayidle -w timeout 300 'swaylock -f -i ${../../../../modules/users/Rory/wallpaper.webp}' 'swaymsg "output * dpms off"'
#$ {pkgs.swaylock}/bin/swaylock -f -i ${../../../../modules/users/Rory/wallpaper.webp}
- ${pkgs.waybar}/bin/waybar
- ) &
- '';
+ #${pkgs.waybar}/bin/waybar
+ #) &
extraPackages = with pkgs; [
swaybg
diff --git a/host/Rory-nginx/configuration.nix b/host/Rory-nginx/configuration.nix
index 995e5f2..df9936b 100755
--- a/host/Rory-nginx/configuration.nix
+++ b/host/Rory-nginx/configuration.nix
@@ -1,4 +1,4 @@
-{ config, pkgs, lib, conduit, conduit-vanilla, ... }:
+{ config, pkgs, lib, grapevine, conduit, ... }:
{
imports =
@@ -38,16 +38,18 @@
};
containers."pluralcontactbotpoc" = import ./services/containers/pluralcontactbotpoc/container.nix {
- inherit pkgs lib conduit;
+ inherit pkgs lib;
+ conduit = grapevine;
};
containers."matrixunittests" = import ./services/containers/matrixunittests/container.nix {
- inherit pkgs lib conduit;
+ inherit pkgs lib;
+ conduit = grapevine;
};
containers."matrixunittests-conduit" = import ./services/containers/matrixunittests-conduit/container.nix {
inherit pkgs lib;
- conduit = conduit-vanilla;
+ conduit = conduit;
};
system.stateVersion = "22.11"; # DO NOT EDIT!
diff --git a/host/Rory-nginx/services/matrix/conduit.nix b/host/Rory-nginx/services/matrix/conduit.nix
index e425cc4..eb830ab 100755
--- a/host/Rory-nginx/services/matrix/conduit.nix
+++ b/host/Rory-nginx/services/matrix/conduit.nix
@@ -1,4 +1,4 @@
-{ config, pkgs, lib, conduit, ... }:
+{ config, pkgs, lib, ... }:
{
services.grapevine = {
@@ -60,20 +60,5 @@
#log = "debug";
};
};
-# systemd.services.matrix-conduit-reg-token = {
-# description = "Random registration token for Conduit.";
-# before = ["grapevine.service"]; # So the registration can be used by Conduit.
-# after = ["matrix-synapse-reg-token.service"];
-#
-# script = ''
-# mkdir -p /run/systemd/system/conduit.service.d
-# echo Environment=\"CONDUIT_REGISTRATION_TOKEN=$(cat /var/lib/matrix-synapse/registration_shared_secret.txt)\" > /run/systemd/system/grapevine.service.d/override.conf
-# systemctl daemon-reload'';
-# serviceConfig = {
-# User = "root";
-# Group = "root";
-# };
-# };
-
}
diff --git a/modules/base-secrets.nix b/modules/base-secrets.nix
new file mode 100755
index 0000000..e159b2a
--- /dev/null
+++ b/modules/base-secrets.nix
@@ -0,0 +1,6 @@
+{ path }: { config, pkgs, lib, ... }:
+{
+ sops = {
+ defaultSopsFile = path;
+ };
+}
|