60 lines
1.6 KiB
Markdown
60 lines
1.6 KiB
Markdown
# Nix Flakes Rust Helper
|
|
|
|
A helper flake for automatically generating flake contents for rust projects, including building,
|
|
testing, documenting, auditing, and linting of rust projects, as well as other useful toolchain
|
|
packages
|
|
|
|
## Provided toolchain
|
|
|
|
### DevShell
|
|
|
|
The provided devShell includes the following rust specific packages, in addition to the usual rust
|
|
toolchain (including rust-analyzer):
|
|
|
|
- [`cargo-llvm-cov`](https://crates.io/crates/cargo-llvm-cov)
|
|
- [`cargo-nextest`](https://crates.io/crates/cargo-nextest)
|
|
- [`cargo-udeps`](https://crates.io/crates/cargo-udeps)
|
|
- [`cargo-audit`](https://crates.io/crates/cargo-audit)
|
|
- [`cargo-release`](https://crates.io/crates/cargo-release)
|
|
- [`cargo-deny`](https://crates.io/crates/cargo-deny)
|
|
|
|
These general workflow utilities are provided:
|
|
- [`gnuplot`](http://www.gnuplot.info/)
|
|
- [`pre-commit`](https://pre-commit.com/)
|
|
- [`git-lfs`](https://git-lfs.com/)
|
|
- [`git-cliff`](https://git-cliff.org/)
|
|
- [`nixfmt`](https://github.com/serokell/nixfmt)
|
|
- [`mdformat`](https://mdformat.readthedocs.io/en/stable/)
|
|
|
|
### Dependencies
|
|
|
|
The following dependencies are provided by default:
|
|
- `cmake`
|
|
- `openssl`
|
|
- `pkg-config`
|
|
|
|
## Usage
|
|
|
|
### Repository with a single crate (not a workspace)
|
|
|
|
Create a `flake.nix` in the root of the repository with the following contents:
|
|
|
|
``` nix
|
|
{
|
|
inputs = { rust = { url = "git+https://git.stranger.systems/nix/Rust"; }; };
|
|
description = "Simple Test Package";
|
|
|
|
outputs = { self, nixpkgs, rust }:
|
|
rust.single {
|
|
crateName = "CRATE_NAME";
|
|
src = ./.;
|
|
};
|
|
}
|
|
```
|
|
|
|
Optionally create a `.envrc` in the root of the repository with the following contents:
|
|
|
|
``` nix
|
|
use flake
|
|
```
|