Skip to content

Releases: ipetkov/crane

v0.23.3

17 Apr 03:06
v0.23.3
db220b8

Choose a tag to compare

0.23.3 - 2026-04-16

Changed

  • downloadCargoPackage now extracts tarballs with --no-same-owner.
    Ultimately this should make no difference since the Nix store will reset all
    ownership permissions anyway, but it may avoid some spurious errors on certain
    systems.
  • buildPackage and buildDepsOnly now has a cargoBuildExtraArgs option for
    passing arguments specifically to cargoBuildCommand.
  • cargoNextest now accepts cargoNextestArchiveExtraArgs for passing
    flags to cargo nextest archive invocations.
  • writeTOML now, by default, refers to writeTOMLViaCraneUtils to minimize
    dependency chains on non-Rust projects. Bringing back the old behavior (using
    remarshal) can be done via craneLibRemarshal = craneLib.overrideScope (final: prev: { writeTOML = final.writeTOMLViaRemarshal; });

Deprecations

  • mkCargoDerivation (and by extension all utilities which delegate to it) no
    longer support overriding the stdenv used for mkDerivation via an
    attribute. Instead any such overrides should be done at the craneLib level
    via the new stdenvSelector function. For example: (crane.mkLib pkgs).overrideScope (final: prev: { stdenvSelector = p: p.clangStdenv; });

v0.23.2

24 Mar 00:52
v0.23.2
ca870b7

Choose a tag to compare

0.23.2 - 2026-03-23

Added

  • buildTrunkPackage can now process css assets with tailwind
    using rel="tailwind-css" in the index.html if tailwindcss is present and
    executable at build time (i.e. included as a nativeBuildInput).

Changed

  • Update crane-utils dependencies, namely depending on toml_edit@0.25 which
    now includes parsing support for TOML 1.1
  • cargoNextest now defaults to setting NEXTEST_SHOW_PROGRESS=counter unless
    otherwise specified (setting env.NEXTEST_SHOW_PROGRESS or passing in
    --show-progress=... will take precedence). This avoids progress bar
    (re)painting from resulting in garbled build logs

Fixed

  • findCargoFiles (and by extension mkDummySrc and vendorCargoDeps) will
    now always respect source filters, meaning any ignored Cargo.toml or
    .cargo/config.toml files will no longer be processed and included during
    processing.

v0.23.1

15 Feb 02:11
v0.23.1
a2812c1

Choose a tag to compare

0.23.1 - 2026-02-14

Added

  • cleanCargoToml can now be customized using the cleanCargoTomlFilter argument
  • mkDummySrc can now pass the cleanCargoTomlFilter argument to cleanCargoToml
  • craneLib.filters exposes cargoTomlAggressive, cargoTomlConservative, and
    cargoTomlDefault for composition of custom filters for cleanCargoToml
  • downloadCargoPackageFromGit now uses cargo package -l for generating the file
    list, resulting in more accurate include/exclude rule interpretation. This fixes
    builds in some dependencies, notably aws-lc-rs from git.

v0.23.0

13 Jan 16:03
v0.23.0
4b65276

Choose a tag to compare

0.23.0 - 2026-01-13

Changed

  • Breaking: mkCargoDerivation now no longer automatically includes the
    remapPathPrefixHook as a nativeBuildInput. Unfortunately, this hook's
    implementation will lead to cache invalidation if built on a Nix
    implementation outside of NixOS (see the API documentation for more details).
    Thus using this hook is now opt-in.

v0.22.0

26 Dec 19:02
v0.22.0
01bc1d4

Choose a tag to compare

0.22.0 - 2025-12-26

Changed

  • Breaking: dropped compatibility for Nix versions below 2.31.2
  • Breaking: dropped compatibility for nixpkgs-25.05
  • remapPathPrefixHook is now do nothing when building on Darwin since the
    current implementation results in validating build caches due to Nix behavior
    differences between Linux and Darwin.

Fixed

  • mkCargoDerivation will now set noCompressDebugSectionsSet to disable
    compressing debug sections (when remapPathPrefixHook is active and running)
    on platforms which do not support it

v0.21.3

05 Dec 03:11
v0.21.3
2b3a5a8

Choose a tag to compare

0.21.3 - 2025-12-04

Added

  • Add remapSourcePathPrefixHook, which can map source code file paths to their
    correct location within the Nix store. By default this hook will run for any
    dontStrip = true builds, but can otherwise be controlled using
    doRemapPathPrefix.

Fixed

  • downloadCargoPackageFromGit now correctly includes any files listed in a
    .ignore file (but otherwise not listed in .gitignore) when unpacking git
    checkouts.

v0.21.2

07 Nov 17:30
v0.21.2
c43a1f1

Choose a tag to compare

0.21.2 - 2025-11-07

Changed

  • mkDummySrc now accepts dummyBuildrs to customize the dummy source used for
    build scripts specifically. If not specified, the value of dummyrs will be
    used, otherwise, the existing default dummy build script will be used.

Fixed

  • Fix Windows pthreads being added to non-Windows platforms when cross compiling

v0.21.1

25 Sep 00:23
v0.21.1
95d528a

Choose a tag to compare

0.21.1 - 2025-09-24

Fixed

  • The default dummy source used by mkDummySrc now additionally works for the
    amdgpu target out of the box
  • removeReferencesToRustToolchainHook now handles exclusions case
    insensitively
  • cleanCargoToml now retains targets' harness attribute if defined
  • cargoTest, cargoDocTest, and cargoNextest will log a warning if doCheck = false;
  • installCargoArtifactsHook gracefully handles (ignores) situations where no
    cargo artifacts are generated by the derivation

v0.21.0

19 Jul 17:45
v0.21.0
544d09f

Choose a tag to compare

0.21.0 - 2025-07-19

Changed

  • Breaking: dropped compatibility for Nix versions below 2.28.3
  • Breaking: dropped compatibility for nixpkgs-24.11
  • Windows cross builds provides pthreads as it is required for most crates.
  • registryFromSparse now passes fetchurlExtraArgs to the initial query for the
    registry's config.json

v0.20.3

24 Apr 00:35
v0.20.3
efd3668

Choose a tag to compare

0.20.3 - 2025-04-23

Added

  • mkCrossToolchainEnv is now available for setting up some default
    cross-compilation environment variables and derivation arguments

Changed

  • Vendoring git dependencies now respects Cargo.toml includes and excludes
  • mkCargoDerivation now configures the cross-compilation toolchain by default
    using the newly added mkCrossToolchainEnv function. To select the utilized
    cross compiler, the stdenv argument now also accepts a selector function,
    taking an arbitrary pkgs instantiation as an argument. This behavior can be
    turned off by setting doIncludeCrossToolchainEnv = false;.