snix/web/content/docs/guides/building.md
rszyma 3f5715fdf9 docs(web): remove dead github mirror link
Closes #149.

Change-Id: Id7296d3a436a75c4642c351ae78a69d3fd35b5eb
Reviewed-on: https://cl.snix.dev/c/snix/+/30573
Reviewed-by: Florian Klink <flokli@flokli.de>
Tested-by: besadii
Reviewed-by: rszyma <rszyma.dev@gmail.com>
2025-06-15 16:49:53 +00:00

2.3 KiB

title slug description summary date lastmod draft weight toc
Building Snix building 2025-03-14T14:14:35+01:00 2025-03-14T14:14:35+01:00 false 11 true

This document describes how to build the project locally, both for interactive development as well as referring to it from Nix code (for example, to run one of its binaries on your machine).

{{}} Please check the [Contribution Guide]({{< relref "contributing" >}}) on how to contribute after following this guide. {{}}

Requirements

Getting the sources

Snix is hosted in its own Forgejo instance, hosted on git.snix.dev.

Check out the source code as follows:

git clone https://git.snix.dev/snix/snix.git

Interactive development

direnv allow

This provides all the necessary tools and dependencies to interactively build the source code, using cargo build etc.

Building only

It is also possible to build the different Snix crates with Nix, in which you don't need to enter the shell. From the root of the repository, you can build as follows:

$ nix-build -A snix.cli

Alternatively, you can use the mg wrapper from anywhere in the repository (requires the direnv setup from above):

mg build //snix:cli

This uses crate2nix to build each crate dependency individually.

Binary cache for Development

If you want to fetch store paths built by CI, you can configure our Harmonia deployment as a Nix substituter:

{
  nix.settings.trusted-public-keys = [
    "cache.snix.dev-1:miTqzIzmCbX/DyK2tLNXDROk77CbbvcRdWA4y2F8pno="
  ];
  nix.settings.substituters = [
    "https://cache.snix.dev"
  ];
}

Keep in mind there's no guarantees on paths being available, they get GC'ed eventually.

Further reading

Checkout the [Component Overview]({{< ref "/docs/components/overview" >}}) to learn more about the project structure.