53 lines
1.3 KiB
Markdown
53 lines
1.3 KiB
Markdown
|
|
# `nix_bindings_*` crates
|
|
|
|
Use the Nix [C API] from Rust.
|
|
|
|
## Build with `nix-cargo-integration`
|
|
|
|
The development environment and building with Nix are taken care of by [nix-cargo-integration](https://github.com/90-008/nix-cargo-integration#readme) ([options](https://flake.parts/options/nix-cargo-integration.html)).
|
|
|
|
The dependency on Nix is taken care of with the [`nix-bindings-rust` flake-parts module]().
|
|
|
|
Example usage:
|
|
|
|
```nix
|
|
{
|
|
outputs =
|
|
inputs@{ self, flake-parts, ... }:
|
|
flake-parts.lib.mkFlake { inherit inputs; }
|
|
{
|
|
imports = [
|
|
inputs.nix-cargo-integration.flakeModule
|
|
inputs.nix-bindings-rust.modules.flake.default
|
|
];
|
|
|
|
perSystem = { config, pkgs, ... }: {
|
|
# optional:
|
|
nix-bindings-rust.nixPackage = pkgs.nix;
|
|
|
|
nci.projects."myproject" = {
|
|
depsDrvConfig = {
|
|
imports = [ config.nix-bindings-rust.nciBuildConfig ];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|
|
```
|
|
|
|
## Hacking
|
|
|
|
The following will open a shell with dependencies, and install pre-commit for automatic formatting.
|
|
|
|
```console
|
|
$ nix develop
|
|
```
|
|
|
|
### VSCode
|
|
|
|
#### rust-analyzer
|
|
|
|
If the rust-analyzer extension fails, make sure the devShell was loaded into VSCode via Nix Env Selector or direnv.
|
|
|
|
[C API]: https://nix.dev/manual/nix/latest/c-api.html
|