docs: Update README for the repository itself
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>
This commit is contained in:
parent
85f53a45db
commit
f7687b1ea7
3 changed files with 80 additions and 49 deletions
117
README.md
117
README.md
|
@ -1,80 +1,109 @@
|
||||||
depot
|
depot
|
||||||
=====
|
=====
|
||||||
|
|
||||||
[![builds.sr.ht status](https://builds.sr.ht/~tazjin/depot/master.svg)](https://builds.sr.ht/~tazjin/depot/master?)
|
[![Build status](https://badge.buildkite.com/016bff4b8ae2704a3bbbb0a250784e6692007c582983b6dea7.svg?branch=canon)](https://buildkite.com/tvl/depot)
|
||||||
|
|
||||||
This repository is the [monorepo][] for the community around [tazjin's virus
|
This repository is the [monorepo][] for the community around [tazjin's virus
|
||||||
lounge][tvl], containing our personal tools and infrastructure. Everything in
|
lounge][tvl], containing our personal tools and infrastructure. Everything in
|
||||||
here is built using [Nix][].
|
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
|
If you've ended up here and have no idea who I am, feel free to follow me [on
|
||||||
Twitter][].
|
Twitter][].
|
||||||
|
|
||||||
# Highlights
|
# Highlights
|
||||||
|
|
||||||
## Tools
|
## Services
|
||||||
|
|
||||||
* `tools/emacs` contains my personal Emacs configuration (packages & config)
|
* Source code is available primarily through Sourcegraph on
|
||||||
* `fun/aoc2019` contains solutions for a handful of Advent of Code 2019
|
[cs.tvl.fyi](https://cs.tvl.fyi), where it is searchable and even semantically
|
||||||
challenges, before I ran out of interest
|
indexed. A lower-tech view of the repository is also available via cgit on
|
||||||
* `tools/blog_cli` contains my tool for writing new blog posts and storing them
|
[code.tvl.fyi](https://code.tvl.fyi).
|
||||||
in the DNS zone
|
|
||||||
* `tools/cheddar` contains a source code and Markdown rendering tool
|
The repository can be cloned using `git` from `https://cl.tvl.fyi/depot`.
|
||||||
that is integrated with my cgit instance to render files in various
|
|
||||||
views
|
* All code in the depot, with the exception of code that is checked in to
|
||||||
* `ops/kontemplate` contains my Kubernetes resource templating tool (with which
|
individual `//users` folders, needs to be reviewed. We use Gerrit on
|
||||||
the services in this repository are deployed!)
|
[cl.tvl.fyi](https://cl.tvl.fyi) for this.
|
||||||
* `ops/besadii` contains a tool that runs as the git
|
|
||||||
`post-receive`-hook on my git server to trigger builds on sourcehut.
|
* Issues are tracked via our own issue tracker on
|
||||||
* `third_party/nix` contains my fork of the Nix package manager
|
[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
|
## Packages / Libraries
|
||||||
|
|
||||||
* `nix/buildGo` implements a Nix library that can build Go software in the style
|
* `//net/alcoholic_jwt` contains an easy-to-use JWT-validation library for Rust
|
||||||
of Bazel's `rules_go`. Go programs in this repository are built using this
|
* `//net/crimp` contains a high-level HTTP client using cURL for Rust
|
||||||
library.
|
* `//tools/emacs-pkgs` contains various useful Emacs libraries, for example:
|
||||||
* `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.
|
|
||||||
* `tools/emacs-pkgs` contains various Emacs libraries that my Emacs setup uses,
|
|
||||||
for example:
|
|
||||||
* `dottime.el` provides [dottime][] in the Emacs modeline
|
* `dottime.el` provides [dottime][] in the Emacs modeline
|
||||||
* `nix-util.el` provides editing utilities for Nix files
|
* `nix-util.el` provides editing utilities for Nix files
|
||||||
* `term-switcher.el` is an ivy-function for switching between vterm buffers
|
* `term-switcher.el` is an ivy-function for switching between vterm buffers
|
||||||
* `net/alcoholic_jwt` contains an easy-to-use JWT-validation library for Rust
|
* `tvl.el` provides helper functions for interacting with the TVL monorepo
|
||||||
* `net/crimp` contains a high-level HTTP client using cURL for Rust
|
* `//lisp/klatre` provides a grab-bag utility library for Common Lisp
|
||||||
|
|
||||||
## Services
|
## User packages
|
||||||
|
|
||||||
Services in this repository are deployed on a Google Kubernetes Engine cluster
|
Contributors to the repository have user directories under
|
||||||
using [Nixery][].
|
[`//users`](https://cs.tvl.fyi/depot@canon/-/tree/users), which can be used for
|
||||||
|
personal or experimental code that does not require review.
|
||||||
|
|
||||||
* `web/blog` and `web/homepage` contain my blog and website setup
|
Some examples:
|
||||||
(serving at [tazj.in][])
|
|
||||||
* `web/cgit-taz` contains a slightly patched version of `cgit` that serves my
|
|
||||||
git web interface at [git.tazj.in][]
|
|
||||||
* `ops/journaldriver` contains a small Rust daemon that can forward logs from
|
|
||||||
journald to Stackdriver Logging
|
|
||||||
|
|
||||||
## Miscellaneous
|
* `//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
|
||||||
|
|
||||||
Presentations I've given in the past are in the `presentations` folder, these
|
# Licensing
|
||||||
cover a variety of topics and some of them have links to recordings.
|
|
||||||
|
|
||||||
There's a few fun things in the `fun/` folder, often with context given in the
|
Unless otherwise stated in a subdirectory, all code is licensed under the MIT
|
||||||
README. Check out my [list of the best tools][best-tools] for example.
|
license. See [LICENSE](./LICENSE) for details.
|
||||||
|
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
If you'd like to contribute to any of the tools in here, please check out the
|
If you'd like to contribute to any of the tools in here, please check out the
|
||||||
[contribution guidelines](./docs/CONTRIBUTING.md).
|
[contribution guidelines](./docs/CONTRIBUTING.md) and our [code of
|
||||||
|
conduct](./docs/CODE_OF_CONDUCT.md).
|
||||||
|
|
||||||
[monorepo]: https://en.wikipedia.org/wiki/Monorepo
|
[monorepo]: https://en.wikipedia.org/wiki/Monorepo
|
||||||
[tvl]: https://tvl.fyi
|
[tvl]: https://tvl.fyi
|
||||||
[Nix]: https://nixos.org/nix
|
[Nix]: https://nixos.org/nix
|
||||||
|
[an experiment]: https://tvl.fyi/monorepo-doc
|
||||||
[on Twitter]: https://twitter.com/tazjin
|
[on Twitter]: https://twitter.com/tazjin
|
||||||
[Nixery]: https://github.com/google/nixery
|
[panettone]: https://cs.tvl.fyi/depot@canon/-/tree/web/panettone
|
||||||
[tazj.in]: https://tazj.in
|
[tvix]: https://cs.tvl.fyi/depot/-/blob/third_party/nix/README.md
|
||||||
[git.tazj.in]: https://git.tazj.in
|
|
||||||
[best-tools]: /about/fun/best-tools/README.md
|
|
||||||
[dottime]: https://dotti.me
|
[dottime]: https://dotti.me
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# This program is used as a git post-update hook to trigger builds on
|
# This program is used as a Gerrit hook to trigger builds on
|
||||||
# sourcehut.
|
# Buildkite, Sourcegraph reindexing and other maintenance tasks.
|
||||||
{ ciBuilds, depot, ... }:
|
{ ciBuilds, depot, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
This folder contains various utilities used for our [Buildkite CI
|
This folder contains the dynamic configuration for our [Buildkite CI
|
||||||
setup][ci]. These are mostly hooks invoked by Buildkite runners, or
|
setup](https://tvl.fyi/builds).
|
||||||
configuration used to set up the build pipelines.
|
|
||||||
|
The configuration is built and dynamically loaded by Buildkite at the start of
|
||||||
|
each CI pipeline.
|
||||||
|
|
Loading…
Reference in a new issue