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.
Source code is available primarily through Sourcegraph on 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.
The repository can be cloned using
All code in the depot, with the exception of code that is checked in to individual
//usersfolders, needs to be reviewed. We use Gerrit on cl.tvl.fyi for this.
Smaller todo-list entries which do not warrant a separate issue are listed at todo.tvl.fyi.
A search service that makes TVL services available via textual shortcuts is available: atward
All services that we host are deployed on NixOS machines that we manage. Their
configuration is tracked in
//nix/readTreecontains the Nix code which automatically registers projects in our Nix attribute hierarchy based on their in-tree location
//nix/yantscontains Yet Another Nix Type System, which we use for a variety of things throughout the repository
//nix/buildGoimplements 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/buildLispimplements a Nix library that can build Common Lisp software. Currently only SBCL is supported. Lisp programs in this repository are built using this library.
//web/bubblegumcontains a CGI-based web framework written in Nix.
//tvixcontains initial work towards a modular architecture for Nix.
//third_party/nixcontains our fork of the Nix package manager.
We have a variety of other tools and libraries in the
//nix folder which may
be of interest.
Packages / Libraries
//net/alcoholic_jwtcontains an easy-to-use JWT-validation library for Rust
//net/crimpcontains a high-level HTTP client using cURL for Rust
//tools/emacs-pkgscontains various useful Emacs libraries, for example:
dottime.elprovides dottime in the Emacs modeline
nix-util.elprovides editing utilities for Nix files
term-switcher.elis an ivy-function for switching between vterm buffers
tvl.elprovides helper functions for interacting with the TVL monorepo
//lisp/klatreprovides a grab-bag utility library for Common Lisp
Contributors to the repository have user directories under
//users, which can be used for
personal or experimental code that does not require review.
//users/tazjin/blog: A Nix-based static site generator which generates the web page and Atom feed for tazj.in
//users/grfn/xanthous: A (WIP) TUI RPG, written in Haskell.
//users/tazjin/emacs: tazjin's Emacs & EXWM configuration
//users/sterni/nint: A shebang-compatible interpreter wrapper for Nix.
//users/tazjin/finito: A persistent finite-state machine library for Rust.
Unless otherwise stated in a subdirectory, all code is licensed under the MIT license. See LICENSE for details.
Hackint also provide a web chat.