45b28a49ed
Bazel on NixOS is problematic -- it's packaged, but not patched to actually _work_ outside of FHS environments. Vere build system presents an additional accidental hurdle: it expects the musl-cross-make toolchain to be under /usr/local/<target> and uses sudo to install it there, as one does. Unfortunately NixOS nerfs sudo in user namespaces (which are used to implement FHS environments) for security reasons, making it impossible to install the toolchain the normal way. So in order to restore the ability to build Vere under NixOS without resorting to containers (which is unsporting), this commit adds a flake, which defines a devshell, which provides the toolchain and all the other needed tools. So one can "nix develop", go get coffee (first invocation may take 15 minutes or so, subsequent ones will be instant until next nix store GC), and then "bazel build :urbit" etc. |
||
---|---|---|
.github | ||
bazel | ||
doc/spec | ||
docker | ||
pkg | ||
.bazelrc | ||
.gitignore | ||
BUILD.bazel | ||
CONTRIBUTING.md | ||
flake.lock | ||
flake.nix | ||
INSTALL.md | ||
LICENSE.txt | ||
MAINTAINERS.md | ||
PACE | ||
README.md | ||
VERSION | ||
WORKSPACE.bazel |
Urbit Runtime
Urbit is a personal server stack built from scratch. This repository contains Urbit's runtime environment, the lowest layer of the Urbit stack, which includes the Nock virtual machine, I/O drivers, event log, and snapshotting system.
Getting Started
For basic Urbit usage instructions, head over to urbit.org. For a high-level overview of the salient aspects of Urbit's architecture, visit developers.urbit.org. You might also be interested in joining the urbit-dev mailing list.
Packages
Urbit's runtime is broken down into a few separate layers, each of which is defined in its own package:
pkg/c3
: A set of basic utilities for writing Urbit's style of C.pkg/ent
: A cross-platform wrapper forgetentropy(2)
.pkg/urcrypt
: A standardized interface for calling various cryptographic functions used in the Urbit runtime.pkg/ur
: An implementation of jam and cue, Urbit's bitwise noun serialization and deserialization algorithms, respectively.pkg/noun
: The Nock virtual machine and snapshotting system.pkg/vere
: The I/O drivers, event log, and main event loop.
Build
See INSTALL.md.
Contributing
Contributions of any form are more than welcome. Please take a look at our contributing guidelines for details on our git practices, coding styles, how we manage issues, and so on.