Adds a lot more information about what is actually going on here, as well as links to relevant things such as our Monorepo document. I'm aware that I didn't make all `//...` links clickable, but I realised at some point that it might be easier to just update cheddar to support highlighting those natively :-) Change-Id: Icbb212a6c07a5cf38ab8e65d83a64bec783eb8d0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1768 Tested-by: BuildkiteCI Reviewed-by: isomer <isomer@tvl.fyi> Reviewed-by: kanepyork <rikingcoding@gmail.com>
		
			
				
	
	
		
			109 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| depot
 | |
| =====
 | |
| 
 | |
| [](https://buildkite.com/tvl/depot)
 | |
| 
 | |
| This repository is the [monorepo][] for the community around [tazjin's virus
 | |
| lounge][tvl], containing our personal tools and infrastructure. Everything in
 | |
| here is built using [Nix][].
 | |
| 
 | |
| 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.
 | |
| 
 | |
| If you've ended up here and have no idea who I am, feel free to follow me [on
 | |
| Twitter][].
 | |
| 
 | |
| # Highlights
 | |
| 
 | |
| ## 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).
 | |
| 
 | |
| All services that we host are deployed on NixOS machines that we manage. Their
 | |
| configuration is tracked in `//ops/nixos`.
 | |
| 
 | |
| ## Nix
 | |
| 
 | |
| * `//third_party/nix` contains Tvix, [our fork][tvix] of the Nix package manager
 | |
| * [`//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.
 | |
| 
 | |
| We have a variety of other tools and libraries in the `//nix` folder which may
 | |
| be of interest.
 | |
| 
 | |
| ## Packages / Libraries
 | |
| 
 | |
| * `//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:
 | |
|   * `dottime.el` provides [dottime][] in the Emacs modeline
 | |
|   * `nix-util.el` provides editing utilities for Nix files
 | |
|   * `term-switcher.el` is an ivy-function for switching between vterm buffers
 | |
|   * `tvl.el` provides helper functions for interacting with the TVL monorepo
 | |
| * `//lisp/klatre` provides a grab-bag utility library for Common Lisp
 | |
| 
 | |
| ## User packages
 | |
| 
 | |
| 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.
 | |
| 
 | |
| Some examples:
 | |
| 
 | |
| * `//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)
 | |
| * `//users/tazjin/finito`: A persistent finite-state machine library for Rust.
 | |
| * `//users/glittershark/xanthous`: A (WIP) TUI RPG, written in Haskell.
 | |
| * `//users/tazjin/emacs`: tazjin's Emacs & EXWM configuration
 | |
| 
 | |
| # Licensing
 | |
| 
 | |
| Unless otherwise stated in a subdirectory, all code is licensed under the MIT
 | |
| license. See [LICENSE](./LICENSE) for details.
 | |
| 
 | |
| # Contributing
 | |
| 
 | |
| If you'd like to contribute to any of the tools in here, please check out the
 | |
| [contribution guidelines](./docs/CONTRIBUTING.md) and our [code of
 | |
| conduct](./docs/CODE_OF_CONDUCT.md).
 | |
| 
 | |
| [monorepo]: https://en.wikipedia.org/wiki/Monorepo
 | |
| [tvl]: https://tvl.fyi
 | |
| [Nix]: https://nixos.org/nix
 | |
| [an experiment]: https://tvl.fyi/monorepo-doc
 | |
| [on Twitter]: https://twitter.com/tazjin
 | |
| [panettone]: https://cs.tvl.fyi/depot@canon/-/tree/web/panettone
 | |
| [tvix]: https://cs.tvl.fyi/depot/-/blob/third_party/nix/README.md
 | |
| [dottime]: https://dotti.me
 |