A Nix library for building cargo projects. Never build twice thanks to incremental artifact caching.
Go to file
Rebecca Turner 174604795d
Add workaround for cargo-nextest bug (#376)
Prevents this error:

```
(...)
dyld: Library not loaded: @rpath/libtest-77ee8c29c330e4a3.dylib
  Referenced from: /private/tmp/holochain_repo/target/fast-test/deps/hdk_derive-73ec051829ad694a
  Reason: image not found
error: creating test list failed
Caused by:
  for `hdk_derive::proc-macro/hdk_derive`, running command `/private/tmp/holochain_repo/target/fast-test/deps/hdk_derive-73ec051829ad694a --list --format terse` failed
Caused by:
  command ["/private/tmp/holochain_repo/target/fast-test/deps/hdk_derive-73ec051829ad694a", "--list", "--format", "terse"] exited with code <signal 6>
Error: Process completed with exit code 104.
```

https://github.com/nextest-rs/nextest/issues/267
2023-08-30 23:44:00 +00:00
.github ci: allow manual triggers of flakehub publish 2023-08-22 17:23:49 -07:00
checks Add workaround for cargo-nextest bug (#376) 2023-08-30 23:44:00 +00:00
docs various: change cargoExtraArgs defaults to include --locked (#373) 2023-08-27 19:17:58 +00:00
examples update all Cargo.locks (#364) 2023-08-11 00:13:17 +00:00
extra-tests chore: bump all Cargo.lock files (#230) 2023-02-07 23:47:42 +00:00
lib Add workaround for cargo-nextest bug (#376) 2023-08-30 23:44:00 +00:00
pkgs update all Cargo.locks (#364) 2023-08-11 00:13:17 +00:00
.envrc Move all tests (except for formatting) out of flake checks 2021-12-30 17:18:17 -08:00
.git-blame-ignore-revs Ignore blame from fmt revision 2022-11-20 16:31:44 -08:00
.gitignore Properly handle workspace inheritance in git dependencies (#224) 2023-01-21 16:46:32 -08:00
CHANGELOG.md Add workaround for cargo-nextest bug (#376) 2023-08-30 23:44:00 +00:00
default.nix flake: deprecate the packages flake output (#130) 2022-10-09 10:28:48 -07:00
flake.lock update all Cargo.locks (#364) 2023-08-11 00:13:17 +00:00
flake.nix Fix alt-registry example (#343) 2023-06-18 23:16:45 +00:00
LICENSE Add LICENSE 2022-01-17 15:05:45 -08:00
README.md Trunk support (#299) 2023-04-29 12:34:39 -07:00
shell.nix Add path as a convenience wrapper around builtins.path (#273) 2023-03-19 20:57:15 -07:00

Crane

A Nix library for building cargo projects.

  • Source fetching: automatically done using a Cargo.lock file
  • Incremental: build your workspace dependencies just once, then quickly lint, build, and test changes to your project without slowing down
  • Composable: split builds and tests into granular steps. Gate CI without burdening downstream consumers building from source.

Features

  • Automatic vendoring of dependencies in a way that works with Nix
    • Alternative cargo registries are supported (with a minor configuration change)
    • Git dependencies are automatically supported without additional configuration.
      • Cargo retains the flexibility to only use these dependencies when they are actually needed, without forcing an override for the entire workspace.
  • Reusing dependency artifacts after only building them once
  • clippy checks
  • rustfmt checks
  • cargo-audit for vulnerability scanning
  • cargo-nextest a next-generation test runner
  • cargo-tarpaulin for code coverage
  • trunk for wasm frontend apps

Getting Started

The easiest way to get started is to initialize a flake from a template:

# Start with a comprehensive suite of tests
nix flake init -t github:ipetkov/crane#quick-start

Otherwise check out the examples and templates for more detailed examples. An API Reference is also available.

Compatibility Policy

Breaking changes can land on the master branch at any time, so it is recommended you use a versioning strategy when consuming this library (for example, using something like flakes or niv).

Tagged releases will be cut periodically and changes will be documented in the CHANGELOG. Release versions will follow Semantic Versioning.

The test suite is run against the latest stable nixpkgs release, as well as nixpkgs-unstable. Any breakage on those channels is considered a bug and should be reported as such.

License

This project is licensed under the MIT license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion by you, shall be licensed as MIT, without any additional terms or conditions.