60 lines
1.5 KiB
Markdown
60 lines
1.5 KiB
Markdown
|
# Getting Started
|
|||
|
|
|||
|
## Getting the code, a developer shell, & building the CLI
|
|||
|
|
|||
|
Tvix can be built with the Rust standard `cargo build`. A Nix shell is provided
|
|||
|
with the correctly-versioned tooling to build.
|
|||
|
|
|||
|
### TVL monorepo
|
|||
|
|
|||
|
```console
|
|||
|
$ git clone https://code.tvl.fyi/depot.git
|
|||
|
$ cd depot
|
|||
|
```
|
|||
|
|
|||
|
[Direnv][] is highly recommended in order to enable [`mg`][mg], a tool for
|
|||
|
workflows in monorepos. Follow the [Direnv installation
|
|||
|
instructions][direnv-inst], then after it’s set up continue with:
|
|||
|
|
|||
|
```console
|
|||
|
$ direnv allow
|
|||
|
$ mg shell //tvix:shell
|
|||
|
$ cd tvix
|
|||
|
$ cargo build
|
|||
|
```
|
|||
|
|
|||
|
### Or just Tvix
|
|||
|
|
|||
|
At present, this option isn’t suitable for contributions & lacks the tooling of
|
|||
|
the monorepo, but still provides a `shell.nix` which can be used for building
|
|||
|
the Tvix project.
|
|||
|
|
|||
|
```console
|
|||
|
$ git clone https://code.tvl.fyi/depot.git:workspace=views/tvix.git
|
|||
|
$ cd tvix
|
|||
|
$ nix-shell
|
|||
|
$ cargo build
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
# Builds & tests
|
|||
|
|
|||
|
All projects are built using [Nix][] to avoid ‘build pollution’ via the user’s
|
|||
|
local environment.
|
|||
|
|
|||
|
If you have Nix installed and are contributing to a project tracked in this
|
|||
|
repository, you can usually build the project by calling `nix-build -A
|
|||
|
path.to.project`.
|
|||
|
|
|||
|
For example, to build a project located at `//tools/foo` you would call
|
|||
|
`nix-build -A tools.foo`
|
|||
|
|
|||
|
If the project has tests, check that they still work before submitting your
|
|||
|
change.
|
|||
|
|
|||
|
|
|||
|
[Direnv]: https://direnv.net
|
|||
|
[direnv-inst]: https://direnv.net/docs/installation.html
|
|||
|
[Nix]: https://nixos.org/nix/
|
|||
|
[mg]: https://code.tvl.fyi/tree/tools/magrathea
|