All Projects → ipetkov → crane

ipetkov / crane

Licence: MIT license
A Nix library for building cargo projects. Never build twice thanks to incremental artifact caching.

Programming Languages

Nix
1067 projects
rust
11053 projects
shell
77523 projects

Projects that are alternatives of or similar to crane

yants
Yet Another Nix Type System | Source has moved to https://git.tazj.in/tree/nix/yants
Stars: ✭ 35 (-89.94%)
Mutual labels:  nix, nixos, nixpkgs
triton
Triton Operating System
Stars: ✭ 56 (-83.91%)
Mutual labels:  nix, nixos, nixpkgs
nixpkgs
Nix Packages collection used in Nubank
Stars: ✭ 24 (-93.1%)
Mutual labels:  nix, nixos, nixpkgs
nix-bisect
Bisect nix builds. Status: alpha/proof of concept. You'll probably have to dig into the implementation if you want to use it. Built for personal use, lightly maintained. PRs welcome. Issues welcome, but I make no promises regarding responses or fix
Stars: ✭ 72 (-79.31%)
Mutual labels:  nix, nixos, nixpkgs
nixcrates
DEPRECATED reads rust-lang/crates.io-index and outputs nix expressions into fractalide/nix-crates-index
Stars: ✭ 14 (-95.98%)
Mutual labels:  nix, nixos, cargo
Crate2nix
nix build file generator for rust crates
Stars: ✭ 123 (-64.66%)
Mutual labels:  nix, nixos, cargo
gradle2nix
Generate Nix expressions which build Gradle-based projects.
Stars: ✭ 71 (-79.6%)
Mutual labels:  nix, nixos, nixpkgs
nixpkgs-python-importer
Violate Nix philosophy, install Python packages mid-session with `from nixpkgs.scipy import scipy`.
Stars: ✭ 27 (-92.24%)
Mutual labels:  nix, nixos, nixpkgs
dotfiles
No place like ~. Nix. All. The. Things.
Stars: ✭ 48 (-86.21%)
Mutual labels:  nix, nixos, nixpkgs
Nixpkgs
Nix Packages collection
Stars: ✭ 8,322 (+2291.38%)
Mutual labels:  nix, nixos, nixpkgs
Home Manager
Manage a user environment using Nix [maintainer=@rycee]
Stars: ✭ 2,447 (+603.16%)
Mutual labels:  nix, nixos, nixpkgs
Nox
Tools to make nix nicer to use
Stars: ✭ 232 (-33.33%)
Mutual labels:  nix, nixos
nixpkgs-review-checks
Add additional checks and more information from build logs and outputs to the reports generated by nixpkgs-review.
Stars: ✭ 27 (-92.24%)
Mutual labels:  nix, nixpkgs
dotfiles
My NixOS configuration featuring awesome and neovim
Stars: ✭ 40 (-88.51%)
Mutual labels:  nix, nixos
nix-xdg
[WIP] Nix overlay for making programs xdg compliant
Stars: ✭ 18 (-94.83%)
Mutual labels:  nix, nixos
Mach Nix
Create highly reproducible python environments
Stars: ✭ 231 (-33.62%)
Mutual labels:  nix, nixos
rc
Structured system configuration (I moved from NixOS to GuixSD)
Stars: ✭ 97 (-72.13%)
Mutual labels:  nix, nixos
nix-configs
My Nix{OS} configuration files
Stars: ✭ 54 (-84.48%)
Mutual labels:  nix, nixos
fromElisp
An Emacs Lisp reader in Nix.
Stars: ✭ 26 (-92.53%)
Mutual labels:  nix, nixos
Nix 1p
A (more or less) one page introduction to Nix, the language.
Stars: ✭ 219 (-37.07%)
Mutual labels:  nix, nixos

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

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].