The *.nix
files at the project root and under dist/nix
implement a
Nix-based
development environment for Scylla.
Note that there is presently no support for building installable
artifacts with nix build
, or anything suitable for incorporation
into the Nixpkgs
collection (that's "just" a matter of implementing
installPhase
in default.nix
). This is just a development
environment that is predictable, is independent from the state of the
host distribution, and does not require entering a container.
gdb
with green thread debugging support is included, plus other
assorted debugging tools.
Compilers are transparently wrapped to use ccache
and distcc
, if
you have those configured.
If you have Nix flake support enabled (recommended!), enter the
environment using nix develop .
. Otherwise, use nix-shell .
.
$configPhase
will configure Scylla for building (it just invokes
./configure.py --disable-dpdk
). Then use ninja
to build,
test.py
to run unit tests, etc., as usual.
Using direnv is recommended to make life more convenient. Create
.envrc
at the project root with the contents:
nix_direnv_watch_file default.nix
nix_direnv_watch_file shell.nix
for f in $(find dist/nix/ -type f); do
nix_direnv_watch_file $f
done
use flake
For non-flake usage, replace the last line with use nix
.