about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
2020-07-02 r/1171 feat(whitby): Run a handful of Buildkite agentsVincent Ambo1-0/+21
This is the point of the machine, afterall. Change-Id: I15c11600c1c18fa8962d57f75f99a72e1553f9c2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/853 Reviewed-by: glittershark <grfn@gws.fyi> Reviewed-by: BuildkiteCI Tested-by: BuildkiteCI
2020-07-02 r/1170 feat(whitby): Enable Nix signing for the binary cacheVincent Ambo1-0/+3
Change-Id: I9047667cc1a40668c0c7da72c070044b91b53014 Reviewed-on: https://cl.tvl.fyi/c/depot/+/852 Reviewed-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2020-07-02 r/1169 fix(whitby): Explicitly set an interface for the v6 default gwVincent Ambo1-1/+5
systemd gets sad otherwise and it is very difficult to console it Change-Id: Ic6405489532c407273e5634474185f2947420b37 Reviewed-on: https://cl.tvl.fyi/c/depot/+/851 Reviewed-by: glittershark <grfn@gws.fyi> Reviewed-by: BuildkiteCI Tested-by: BuildkiteCI
2020-07-02 r/1168 feat(whitby): Add grfnGriffin Smith1-0/+8
it's not glittershark because grfn is the username I have on my laptop and I want to be able to ssh without an `@`. Change-Id: Ie1fb6f5e12f3ac52a44680704179bd27a00a7768 Reviewed-on: https://cl.tvl.fyi/c/depot/+/850 Reviewed-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-07-02 r/1167 feat(users/riking/keys): Add expression with my SSH public keysKane York1-0/+20
Change-Id: I018a5e869e5502fd62f8b8b98b2a61e8fee358ab Reviewed-on: https://cl.tvl.fyi/c/depot/+/854 Reviewed-by: BuildkiteCI Reviewed-by: Kane York <rikingcoding@gmail.com> Tested-by: BuildkiteCI
2020-07-02 r/1166 feat(whitby): add lukegbLuke Granger-Brown2-0/+7
Change-Id: I26356632b86a64519128bc673178f1cd1b55b99b Reviewed-on: https://cl.tvl.fyi/c/depot/+/848 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: BuildkiteCI
2020-07-02 r/1165 chore(users/gs): Add SSH public keyGriffin Smith1-0/+4
I generated a new one for whitby, so it's called whitby because that's the only thing I'm going to be using it for. Change-Id: Ie8ebdb1e58c76e447ee3a3ea0b1b244fe000e3e4 Reviewed-on: https://cl.tvl.fyi/c/depot/+/849 Reviewed-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-07-02 r/1164 chore(lukegb): add SSH pubkeysLuke Granger-Brown1-0/+9
Change-Id: Ie9fdf3e174ac2e051ec5db6f2bd225804920d3ff Reviewed-on: https://cl.tvl.fyi/c/depot/+/847 Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: BuildkiteCI Tested-by: BuildkiteCI
2020-07-02 r/1163 fix(whitby): Set correct IPv6 default gateway for Hetzner envVincent Ambo1-0/+1
Change-Id: Ic3d4c6ebf7c40e27a453e08295bb0f2f999c0d88 Reviewed-on: https://cl.tvl.fyi/c/depot/+/845 Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: BuildkiteCI Tested-by: BuildkiteCI
2020-07-02 r/1162 feat(gs/emacs): Set compile-command in nix buffersGriffin Smith2-0/+31
When visiting buffers that represent home-manager or nixos modules, set compile-command to the relevant switch command. Change-Id: I565e092d1e6b97eb7fee9d88211c0ee6ebb30b53 Reviewed-on: https://cl.tvl.fyi/c/depot/+/846 Reviewed-by: glittershark <grfn@gws.fyi>
2020-07-02 r/1161 fix(clbot): s/submitted/applied/isomer1-1/+1
By vote of the IRC channel. Change-Id: I5ea965d45a7d73b0bdcae817d16eaa17e47adcbc Reviewed-on: https://cl.tvl.fyi/c/depot/+/861 Reviewed-by: isomer <isomer@tvl.fyi> Reviewed-by: glittershark <grfn@gws.fyi> Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: BuildkiteCI Tested-by: BuildkiteCI
2020-07-02 r/1160 feat(nixos/whitby): Hello, World!Vincent Ambo3-0/+162
This adds NixOS configuration for the machine whitby.tvl.fyi. No interesting services are configured yet, so this configuration is quite plain. Change-Id: I67b7c75ebd6e298719b52e6b3bd83cc3be3c45d8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/843 Tested-by: BuildkiteCI Reviewed-by: BuildkiteCI Reviewed-by: isomer <isomer@tvl.fyi> Reviewed-by: lukegb <lukegb@tvl.fyi>
2020-07-02 r/1159 feat(tazjin/keys): Add an expression with my SSH public keysVincent Ambo1-0/+7
Change-Id: I624ce085ff18360bbd390bc570b6be2a416b9a42 Reviewed-on: https://cl.tvl.fyi/c/depot/+/842 Reviewed-by: BuildkiteCI Reviewed-by: isomer <isomer@tvl.fyi> Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2020-07-02 r/1158 chore(nixos/whitby): Bootstrap //ops/nixos/whitby folderVincent Ambo2-0/+10
Change-Id: I7d77c3ea48b181d7b9f754ac4807ed44735a8925 Reviewed-on: https://cl.tvl.fyi/c/depot/+/841 Reviewed-by: BuildkiteCI Reviewed-by: isomer <isomer@tvl.fyi> Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2020-07-02 r/1157 chore(tvl-slapd): rotate password for rikingKane York1-1/+1
Change-Id: I3ec53d5223a4ff0871eed7615f11f534ed74653b Reviewed-on: https://cl.tvl.fyi/c/depot/+/839 Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: BuildkiteCI Tested-by: BuildkiteCI
2020-07-02 r/1156 chore(users/riking/dotfiles): add .mybashrcKane York1-0/+53
Change-Id: Ib33a0a6819b7a3285fe1130657a7b1644a84f493 Reviewed-on: https://cl.tvl.fyi/c/depot/+/837 Reviewed-by: BuildkiteCI Reviewed-by: Kane York <rikingcoding@gmail.com> Tested-by: BuildkiteCI
2020-07-01 r/1155 chore(bin): fix shellcheck SC2086Kane York1-2/+2
Change-Id: I441c03e033289da3dcec18daf9a565ec75b7ef75 Reviewed-on: https://cl.tvl.fyi/c/depot/+/835 Reviewed-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-07-01 r/1154 fix(gs/emacs): Sometimes GH returns PRs without an authorGriffin Smith1-2/+3
I don't know why-- but I don't want it breaking this command. Change-Id: I90c28cd21f3a5bc9f0155a88b50b13434fda4c5d Reviewed-on: https://cl.tvl.fyi/c/depot/+/838 Reviewed-by: glittershark <grfn@gws.fyi>
2020-07-01 r/1153 docs(REVIEWS): Update registration instructions for password hashesVincent Ambo1-4/+12
Change-Id: Idb8e5259f7b2a7105219fd3a21dc4b5774c44460 Reviewed-on: https://cl.tvl.fyi/c/depot/+/836 Reviewed-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2020-07-01 r/1152 chore(tvl-slapd): Remove old password generation scriptVincent Ambo1-5/+0
This does not work for ARGON2 hashes. Change-Id: I1e070fa0ff17ef21632e94e6777da637deb6f54f Reviewed-on: https://cl.tvl.fyi/c/depot/+/834 Reviewed-by: Kane York <rikingcoding@gmail.com> Reviewed-by: BuildkiteCI Tested-by: BuildkiteCI
2020-07-01 r/1151 feat(tools/hash-password): Add a wrapper script for slappasswdVincent Ambo3-0/+11
This wrapper script correctly invokes slappasswd for generating ARGON2 hashes. People without Nix will need to figure this out on their own. Change-Id: I264715ba4932855b868bef70cc9102515b3d129e Reviewed-on: https://cl.tvl.fyi/c/depot/+/833 Tested-by: BuildkiteCI Reviewed-by: BuildkiteCI Reviewed-by: Kane York <rikingcoding@gmail.com>
2020-07-01 r/1150 chore(tvl-slapd): Rotate my LDAP passwords and use ARGON2 hashesVincent Ambo1-2/+2
Change-Id: Id1a60121e4254e7ccff77ac17fd39d0955aedc8f Reviewed-on: https://cl.tvl.fyi/c/depot/+/832 Reviewed-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: isomer <isomer@tvl.fyi> Tested-by: BuildkiteCI
2020-07-01 r/1149 feat(tvl-slapd): Load Argon2 password module in OpenLDAPVincent Ambo1-0/+15
This makes it possible to use {ARGON2} hashes instead of the current salted SHA hashes, which is a much better idea. Unfortunately the nixpkgs module does not have an option for overridding the package used, so it is overlaid into the system package set - this causes widespread rebuilds. This is fine for us for now, but I have opened a PR upstream to add a package option: https://github.com/NixOS/nixpkgs/pull/91963 Change-Id: Ib4be931d88e74b91566639f8656742cf096f6cc3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/831 Reviewed-by: BuildkiteCI Reviewed-by: isomer <isomer@tvl.fyi> Tested-by: BuildkiteCI
2020-07-01 r/1148 feat(3p/openldap): Enable slapd-passwd-argon2 moduleVincent Ambo3-1/+29
This enables support for the Argon2 password hashing mechanism in OpenLDAP. Note that we also need to configure the LDAP module to load this, so this change is not yet sufficient for actually using Argon2 hashes. Change-Id: I151b854b777daa924b22224a43851432a88a2760 Reviewed-on: https://cl.tvl.fyi/c/depot/+/830 Reviewed-by: BuildkiteCI Reviewed-by: isomer <isomer@tvl.fyi> Tested-by: BuildkiteCI
2020-07-01 r/1147 chore(ci-builds): Move third_party builds to their own package groupVincent Ambo2-10/+8
... and remove a package that doesn't exist anymore (at this location) from the nixpkgs allowlist. Change-Id: I663c84c387fb04bb3b47448132ad768ed5352474 Reviewed-on: https://cl.tvl.fyi/c/depot/+/829 Reviewed-by: BuildkiteCI Reviewed-by: isomer <isomer@tvl.fyi> Tested-by: BuildkiteCI
2020-07-01 r/1146 feat(ci-builds): Include //fun/tvlbot and //fun/clbot in CI buildsVincent Ambo1-0/+2
Change-Id: I95daac993808ac9c3de06d20890cca108d8fa961 Reviewed-on: https://cl.tvl.fyi/c/depot/+/828 Reviewed-by: BuildkiteCI Reviewed-by: eta <eta@theta.eu.org> Tested-by: BuildkiteCI
2020-07-01 r/1145 style(tvldb): Add blank lines between itemsVincent Ambo3-0/+23
This makes the code slightly more readable. For users that use editors without semantic navigation, this also makes it easier to jump around between items in the files. I looked into whether a rustfmt setting exists for this, but unfortunately the answer is currently no. Change-Id: I37b19fa6ab038c71b924c45dbc12b298e660e8cf Reviewed-on: https://cl.tvl.fyi/c/depot/+/827 Reviewed-by: BuildkiteCI Reviewed-by: eta <eta@theta.eu.org> Tested-by: BuildkiteCI
2020-07-01 r/1144 fix(besadii): Do not pass on update values for meta refsVincent Ambo1-2/+2
Before this change, besadii would skip further processing of meta refs (which happen for every CL metadata change), but it would still schedule a build by returning an update - which would then inevitably fail. This change makes besadii skip meta refs the same way it skips non-depot builds, i.e. completely. Move *on* from meta refs, do *not* collect $100. Change-Id: I269d2299f4d3cb1f9c041da8c92fa00ae7794b38 Reviewed-on: https://cl.tvl.fyi/c/depot/+/825 Reviewed-by: eta <eta@theta.eu.org> Reviewed-by: BuildkiteCI Tested-by: BuildkiteCI
2020-07-01 r/1143 chore(tazjin): Remove nugget system definitionVincent Ambo3-283/+1
This host is deprecated. Change-Id: Ibbf1e300ae8b136bb3ce3669864045e6ea7eff23 Reviewed-on: https://cl.tvl.fyi/c/depot/+/826 Reviewed-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-06-30 r/1142 feat(nixos/clbot): Add a module for running clbotVincent Ambo2-1/+75
Change-Id: I9c10906441c3222b74bcc820a67f11d96462fcfa Reviewed-on: https://cl.tvl.fyi/c/depot/+/821 Tested-by: BuildkiteCI Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: BuildkiteCI
2020-06-30 r/1141 feat(tvl-slapd): update camsbury in slapdCameron Kingsbury1-1/+1
Change-Id: Idce92352ad01f85bd7fbb102decdd1df26dda5f4 Reviewed-on: https://cl.tvl.fyi/c/depot/+/823 Reviewed-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-06-30 r/1140 fix(nixos/smtprelay): Only enable if the user asks for itVincent Ambo1-1/+2
Change-Id: Ifbdf9bf9e89a1da68e8c823f61a33275183afcb1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/822 Reviewed-by: BuildkiteCI Reviewed-by: lukegb <lukegb@tvl.fyi> Tested-by: BuildkiteCI
2020-06-30 r/1139 feat(gs/emacs): Bind M m to notmuch/composeGriffin Smith1-4/+1
Change-Id: Ic6945b0508134904fbe435ac3049dbb40b8f7d21 Reviewed-on: https://cl.tvl.fyi/c/depot/+/805 Reviewed-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2020-06-30 r/1138 chore(ci-builds): Build users.tazjin.finito in CIVincent Ambo1-0/+1
Change-Id: I96bb33e76b373795d8cc5a4a2c7a1f9f49179a36 Reviewed-on: https://cl.tvl.fyi/c/depot/+/804 Reviewed-by: BuildkiteCI Reviewed-by: ericvolp12 <ericvolp12@gmail.com> Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2020-06-30 r/1137 chore(tazjin/finito): Add build configurationVincent Ambo4-2/+779
Adds a Naersk-based build to check that this compiles, with a Lockfile based on the ~2018 crate versions. Change-Id: I0460a476d3b983fcf71e35e6b480f4a526118b58 Reviewed-on: https://cl.tvl.fyi/c/depot/+/803 Reviewed-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-06-30 r/1136 feat(tazjin/finito): Check in my old Rust state-machine libraryVincent Ambo13-0/+1279
I dug through my archives for this and found a version that, while unfortunately not the latest implementation, is close enough to the real thing to show off what Finito did. This is a Postgres-backed state-machine library for complex application logic. I wrote this originally for a work purpose in a previous life, but have always wanted to apply it elsewhere, too. git-subtree-dir: users/tazjin/finito git-subtree-mainline: 0380841eb11f6cb200081295107fadbca928bc06 git-subtree-split: b7481172252d6f00546e94534b05d011b4105843 Change-Id: I0de02d6258568447a14870f1a533812a67127763
2020-06-30 r/1135 fix(besadii): Don't log errors for /meta refsVincent Ambo1-2/+3
These are updated for all sorts of things and should just be silently ignored by besadii. Change-Id: I0a6de373b21d6bef5fd31d0a1d3f72c501073bba Reviewed-on: https://cl.tvl.fyi/c/depot/+/801 Reviewed-by: BuildkiteCI Reviewed-by: Kane York <rikingcoding@gmail.com> Tested-by: BuildkiteCI
2020-06-30 r/1134 refactor(overrides/writeElispBin): use writeScriptBinProfpatsch2-12/+6
Change-Id: Ib9793da985128b4a8f64b04086ea89ce81118188 Reviewed-on: https://cl.tvl.fyi/c/depot/+/705 Tested-by: BuildkiteCI Reviewed-by: Kane York <rikingcoding@gmail.com> Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: BuildkiteCI
2020-06-30 r/1133 refactor(nix): use our own writeScript(Bin)Profpatsch8-25/+46
We have this nice `runExecline` now, so we don’t need to use `runCommand` (which spawns bash) just to write a simple script. Change-Id: I2941ed8c1448fa1d7cc02dc18b24a8a945b2c38b Reviewed-on: https://cl.tvl.fyi/c/depot/+/704 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: BuildkiteCI
2020-06-29 r/1132 feat(nix/runExecline): add runExeclineProfpatsch5-1/+254
runExecline is a primitive that just does not care. It’s similar to `runCommand`, but instead of concatenating bash scripts left and right, it actually *uses* the features of `derivation`, passing things to `args` and making it possible to overwrite the `builder` in a sensible manner. Additionally, it provides a way to pass a nix string to `stdin` of the build script. Similar to `writeExecline`, the passed script is not a string, but a nested list of nix lists representing execline blocks. Escaping is done by the implementation, the user can just use normal nix strings. Change-Id: I890d9e5d921207751cdc8cc4309381395d92742f Reviewed-on: https://cl.tvl.fyi/c/depot/+/701 Reviewed-by: BuildkiteCI Reviewed-by: isomer <isomer@tvl.fyi> Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-06-29 r/1131 refactor(nix/escapeExecline): move into own directoryProfpatsch3-30/+34
The escaping functions are going to be used by both `writeExecline` and `runExecline`, so let’s move them to their own namespace. Change-Id: Iccf69eaeca3062573e0751a17c548b7def86196d Reviewed-on: https://cl.tvl.fyi/c/depot/+/706 Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: Kane York <rikingcoding@gmail.com>
2020-06-29 r/1130 chore(ops): Clean up old GCP infrastructure filesVincent Ambo34-648/+0
This removes almost all of the GCP-infrastructure leftovers from my previous setup. The DNS configuration is retained, but moves to my user folder instead. Change-Id: I1867acd379443882f11a3c645846c9902eadd5b0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/782 Tested-by: BuildkiteCI Reviewed-by: eta <eta@theta.eu.org> Reviewed-by: isomer <isomer@tvl.fyi>
2020-06-29 r/1129 feat(besadii): Temporarily add Code-Review labels on CLsVincent Ambo1-0/+7
Besadii already adds 'Verified'-labels, which are used to signal CI status on CLs, however we don't actually use these labels (yet) which also means that they are not displayed in the Gerrit UI. This change temporarily introduces the Code-Review label *in addition* (with the same values as Verified), providing a build status signal on the CL but without being required for submission. Change-Id: I2c3a37c59aceb426815ad4e400c80ab85be482dd Reviewed-on: https://cl.tvl.fyi/c/depot/+/781 Tested-by: BuildkiteCI Reviewed-by: ericvolp12 <ericvolp12@gmail.com> Reviewed-by: lukegb <lukegb@tvl.fyi>
2020-06-29 r/1128 feat(3p): Add gitignoreSourceGriffin Smith1-0/+8
I've done a small amount of investigation and settled on this as my favorite gitignore source filter function out of the several that are available. Change-Id: Idf1f2f643acc7f8e44de6c0c8702b16e0d37face Reviewed-on: https://cl.tvl.fyi/c/depot/+/762 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2020-06-29 r/1127 feat(besadii): Implement support for Buildkite's post-command hookVincent Ambo2-19/+126
This hook is invoked by Buildkite (on the runner) after every build stage. This change adds support in Besadii to run as this hook and update the build status on a Gerrit CL. Change-Id: Ie07a94d9b41645a77681cf42f6969d218abf93c1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/761 Tested-by: BuildkiteCI Reviewed-by: Kane York <rikingcoding@gmail.com>
2020-06-29 r/1126 fix(ci-builds): typecheck __allTargets to be (list drv)Profpatsch1-5/+16
`nix-build -A` expects a list of derivations, otherwise it will silently skip some targets. We can use yants to ensure we don’t accidentally put test targets that do not run on CI. `depot.users.tazjin.blog` was one such target, the only real drv is in the `rendered` field. `getBins` is not a derivation, rather the `runTestsuite` prints `{}` if it succeeds and aborts the evaluation otherwise. We make it into a derivation, using the `emptyDerivation` primitive we added earlier. We could actually improve that still, see the TODO. Change-Id: I3e7658b21aa4ef84192ac43c11b986bd8570a115 Reviewed-on: https://cl.tvl.fyi/c/depot/+/666 Reviewed-by: Profpatsch <mail@profpatsch.de> Reviewed-by: tazjin <mail@tazj.in>
2020-06-29 r/1125 feat(ci-builds): Add overridden haskell packagesGriffin Smith1-0/+9
Add all the haskell packages we've overridden to the ci targets, so we can check that they build successfully. Change-Id: I3c2f2d61f542cc06ac2266881e182e755fcb3774 Reviewed-on: https://cl.tvl.fyi/c/depot/+/743 Reviewed-by: Kane York <rikingcoding@gmail.com> Reviewed-by: tazjin <mail@tazj.in>
2020-06-29 r/1124 feat(3p/haskellPackages): port in patches from xanthousGriffin Smith9-19/+230
Add a few relatively uncontroversial patches to fix some broken packages that I had developed for xanthous to the top-level third_party tree, so they can be reused by other people in the monorepo Change-Id: I68740477bda278c5dcc123080029ee4bd2cae37a Reviewed-on: https://cl.tvl.fyi/c/depot/+/740 Reviewed-by: Profpatsch <mail@profpatsch.de> Reviewed-by: tazjin <mail@tazj.in>
2020-06-29 r/1123 fix(ci-builds): Revert "Add Xanthous"Griffin Smith1-4/+0
This reverts commit 35600236eef2e9b04a9655931c3cb101c8650f0c. While I fix the build, fix CI for now Change-Id: I6edf741f511fe137fd4b9b4379177996aa1a7b5d Reviewed-on: https://cl.tvl.fyi/c/depot/+/738 Reviewed-by: glittershark <grfn@gws.fyi> Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: lukegb <lukegb@tvl.fyi>
2020-06-29 r/1122 feat(besadii): Propagate Gerrit change ID & patchset to BuildkiteVincent Ambo1-4/+9
I previously implemented this in a CL that ended up being abandoned, but it turns out we need it for the hook setup, anyways. These environment variables become available during the build and, crucially, to the post-build hooks. Change-Id: Id6c1657947995e8bae1fa7b76184dd8be4c01525 Reviewed-on: https://cl.tvl.fyi/c/depot/+/739 Reviewed-by: Kane York <rikingcoding@gmail.com>