2019-09-02 18:10:53 +02:00
|
|
|
depot
|
|
|
|
=====
|
|
|
|
|
2020-08-17 21:02:19 +02:00
|
|
|
[![Build status](https://badge.buildkite.com/016bff4b8ae2704a3bbbb0a250784e6692007c582983b6dea7.svg?branch=canon)](https://buildkite.com/tvl/depot)
|
2020-01-18 16:52:13 +01:00
|
|
|
|
2021-03-31 21:16:56 +02:00
|
|
|
This repository is the [monorepo][] for the community around [The
|
|
|
|
Virus Lounge][tvl], containing our personal tools and infrastructure.
|
|
|
|
Everything in here is built using [Nix][].
|
2019-12-20 19:58:02 +01:00
|
|
|
|
2020-08-17 21:02:19 +02:00
|
|
|
A large portion of the software here is very self-referential, meaning that it
|
|
|
|
exists to sustain the operation of the repository. This is the case because we
|
|
|
|
partially see this as [an experiment][] in tooling for monorepos.
|
|
|
|
|
2019-12-20 19:58:02 +01:00
|
|
|
# Highlights
|
|
|
|
|
2020-08-17 21:02:19 +02:00
|
|
|
## Services
|
|
|
|
|
|
|
|
* Source code is available primarily through Sourcegraph on
|
|
|
|
[cs.tvl.fyi](https://cs.tvl.fyi), where it is searchable and even semantically
|
|
|
|
indexed. A lower-tech view of the repository is also available via cgit on
|
|
|
|
[code.tvl.fyi](https://code.tvl.fyi).
|
|
|
|
|
|
|
|
The repository can be cloned using `git` from `https://cl.tvl.fyi/depot`.
|
|
|
|
|
|
|
|
* All code in the depot, with the exception of code that is checked in to
|
|
|
|
individual `//users` folders, needs to be reviewed. We use Gerrit on
|
|
|
|
[cl.tvl.fyi](https://cl.tvl.fyi) for this.
|
|
|
|
|
|
|
|
* Issues are tracked via our own issue tracker on
|
|
|
|
[b.tvl.fyi](https://b.tvl.fyi). Its source code lives at
|
|
|
|
[`//web/panettone/`][panettone].
|
|
|
|
|
|
|
|
* Smaller todo-list entries which do not warrant a separate issue are listed at
|
|
|
|
[todo.tvl.fyi](https://todo.tvl.fyi).
|
|
|
|
|
|
|
|
* We use Buildkite for CI. Recent builds are listed on
|
|
|
|
[tvl.fyi/builds](https://tvl.fyi/builds) and pipelines are configured
|
|
|
|
dynamically via
|
|
|
|
[`//ops/pipelines`](https://cs.tvl.fyi/depot/-/tree/ops/pipelines).
|
|
|
|
|
2021-05-19 02:04:58 +02:00
|
|
|
* A search service that makes TVL services available via textual
|
|
|
|
shortcuts is available: [atward](https://at.tvl.fyi)
|
|
|
|
|
2020-08-17 21:02:19 +02:00
|
|
|
All services that we host are deployed on NixOS machines that we manage. Their
|
2021-04-11 22:50:30 +02:00
|
|
|
configuration is tracked in `//ops/{modules,machines}`.
|
2020-08-17 21:02:19 +02:00
|
|
|
|
|
|
|
## Nix
|
|
|
|
|
|
|
|
* [`//nix/readTree`](https://cs.tvl.fyi/depot/-/blob/nix/readTree/README.md)
|
|
|
|
contains the Nix code which automatically registers projects in our Nix
|
|
|
|
attribute hierarchy based on their in-tree location
|
|
|
|
* `//nix/yants` contains **Y**et **A**nother **N**ix **T**ype **S**ystem, which
|
|
|
|
we use for a variety of things throughout the repository
|
|
|
|
* `//nix/buildGo` implements a Nix library that can build Go software in the
|
|
|
|
style of Bazel's `rules_go`. Go programs in this repository are built using
|
|
|
|
this library.
|
|
|
|
* `//nix/buildLisp` implements a Nix library that can build Common Lisp
|
|
|
|
software. Currently only SBCL is supported. Lisp programs in this repository
|
|
|
|
are built using this library.
|
2021-05-19 02:04:58 +02:00
|
|
|
* `//web/bubblegum` contains a CGI-based web framework written in Nix.
|
2021-09-09 18:26:03 +02:00
|
|
|
* `//nix/nint`: A shebang-compatible interpreter wrapper for Nix.
|
2021-05-19 02:04:58 +02:00
|
|
|
* `//tvix` contains initial work towards a modular architecture for Nix.
|
|
|
|
* `//third_party/nix` contains [our fork][tvix] of the Nix package manager.
|
2020-08-17 21:02:19 +02:00
|
|
|
|
|
|
|
We have a variety of other tools and libraries in the `//nix` folder which may
|
|
|
|
be of interest.
|
2019-12-20 19:58:02 +01:00
|
|
|
|
|
|
|
## Packages / Libraries
|
|
|
|
|
2020-08-17 21:02:19 +02:00
|
|
|
* `//net/alcoholic_jwt` contains an easy-to-use JWT-validation library for Rust
|
|
|
|
* `//net/crimp` contains a high-level HTTP client using cURL for Rust
|
|
|
|
* `//tools/emacs-pkgs` contains various useful Emacs libraries, for example:
|
2019-12-21 02:48:11 +01:00
|
|
|
* `dottime.el` provides [dottime][] in the Emacs modeline
|
2019-12-20 21:37:02 +01:00
|
|
|
* `nix-util.el` provides editing utilities for Nix files
|
|
|
|
* `term-switcher.el` is an ivy-function for switching between vterm buffers
|
2020-08-17 21:02:19 +02:00
|
|
|
* `tvl.el` provides helper functions for interacting with the TVL monorepo
|
|
|
|
* `//lisp/klatre` provides a grab-bag utility library for Common Lisp
|
2019-12-20 19:58:02 +01:00
|
|
|
|
2020-08-17 21:02:19 +02:00
|
|
|
## User packages
|
2019-12-20 19:58:02 +01:00
|
|
|
|
2020-08-17 21:02:19 +02:00
|
|
|
Contributors to the repository have user directories under
|
|
|
|
[`//users`](https://cs.tvl.fyi/depot@canon/-/tree/users), which can be used for
|
|
|
|
personal or experimental code that does not require review.
|
2019-12-20 19:58:02 +01:00
|
|
|
|
2020-08-17 21:02:19 +02:00
|
|
|
Some examples:
|
2019-12-21 02:46:54 +01:00
|
|
|
|
2020-08-17 21:02:19 +02:00
|
|
|
* `//users/tazjin/homepage` && `//users/tazjin/blog`: A Nix-based static site
|
|
|
|
generator which generates the web page and Atom feed for
|
|
|
|
[tazj.in](https://tazj.in)
|
2021-04-11 23:53:27 +02:00
|
|
|
* `//users/grfn/xanthous`: A (WIP) TUI RPG, written in Haskell.
|
2020-08-17 21:02:19 +02:00
|
|
|
* `//users/tazjin/emacs`: tazjin's Emacs & EXWM configuration
|
2021-05-19 02:04:58 +02:00
|
|
|
* `//users/tazjin/finito`: A persistent finite-state machine library for Rust.
|
2019-12-21 02:46:54 +01:00
|
|
|
|
2020-08-17 21:02:19 +02:00
|
|
|
# Licensing
|
2019-12-21 02:46:54 +01:00
|
|
|
|
2020-08-17 21:02:19 +02:00
|
|
|
Unless otherwise stated in a subdirectory, all code is licensed under the MIT
|
|
|
|
license. See [LICENSE](./LICENSE) for details.
|
2019-12-20 19:58:02 +01:00
|
|
|
|
|
|
|
# Contributing
|
|
|
|
|
2019-12-20 21:37:02 +01:00
|
|
|
If you'd like to contribute to any of the tools in here, please check out the
|
2020-08-17 21:02:19 +02:00
|
|
|
[contribution guidelines](./docs/CONTRIBUTING.md) and our [code of
|
|
|
|
conduct](./docs/CODE_OF_CONDUCT.md).
|
2019-09-02 18:10:53 +02:00
|
|
|
|
2021-05-23 21:27:17 +02:00
|
|
|
IRC users can find us in [`#tvl`](tvl-irc) on [hackint][], which is also
|
2021-05-22 22:55:41 +02:00
|
|
|
reachable [via XMPP][hackint-xmpp] at [`#tvl@irc.hackint.org`][tvl-xmpp] (sic!).
|
|
|
|
|
2021-05-23 21:27:17 +02:00
|
|
|
Hackint also provide a [web chat][tvl-webchat].
|
2021-05-19 02:04:58 +02:00
|
|
|
|
2019-09-02 18:10:53 +02:00
|
|
|
[monorepo]: https://en.wikipedia.org/wiki/Monorepo
|
2020-06-12 04:12:32 +02:00
|
|
|
[tvl]: https://tvl.fyi
|
2019-09-02 18:10:53 +02:00
|
|
|
[Nix]: https://nixos.org/nix
|
2020-08-17 21:02:19 +02:00
|
|
|
[an experiment]: https://tvl.fyi/monorepo-doc
|
|
|
|
[panettone]: https://cs.tvl.fyi/depot@canon/-/tree/web/panettone
|
|
|
|
[tvix]: https://cs.tvl.fyi/depot/-/blob/third_party/nix/README.md
|
2019-12-21 02:48:11 +01:00
|
|
|
[dottime]: https://dotti.me
|
2021-05-22 22:55:41 +02:00
|
|
|
[tvl-irc]: ircs://irc.hackint.org:6697/#tvl
|
2021-05-23 21:27:17 +02:00
|
|
|
[hackint]: https://hackint.org/
|
2021-05-22 22:55:41 +02:00
|
|
|
[hackint-xmpp]: https://hackint.org/transport/xmpp
|
|
|
|
[tvl-xmpp]: xmpp:#tvl@irc.hackint.org?join
|
|
|
|
[tvl-webchat]: https://webirc.hackint.org/#ircs://irc.hackint.org/#tvl
|