mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-27 03:45:11 +00:00
43 lines
1.5 KiB
Markdown
43 lines
1.5 KiB
Markdown
# Nix development environment
|
|
|
|
The `*.nix` files at the project root and under `dist/nix` implement a
|
|
[Nix](https://nixos.org/guides/ad-hoc-developer-environments.html)-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.
|
|
|
|
## Basic usage
|
|
|
|
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.
|
|
|
|
## Direnv (optional)
|
|
|
|
Using [direnv](https://direnv.net) is recommended to make life more convenient. Create
|
|
`.envrc` at the project root with the contents:
|
|
```bash
|
|
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`.
|