This is a list of important (mostly breaking) changes. The dates are from most recent to least recent.
nix:
means that the change was related to the Nix library part of nci
.
cargo-toml:
means that the change was related to the Cargo.toml
attribute part of nci
.
- nix:
toolchains.<build/shell>
attributes were removed and replaced withtoolchains.mkBuild
andtoolchains.mkShell
respectively.- these take functions that take a nixpkgs instance and should output a rust toolchain package.
- nix: new
nci.outputs.<name>.check
andnci.crates.<name>.checkProfile
options- the new
check
output is a package that only runscargo test
using the package generated for the profile specified incheckProfile
.
- the new
- nix: new
nci.projects.<name>.targets
andnci.crates.<name>.targets
options- These allow you to generate separate packages for separate targets, and configure each target separately
- Please check the option's documentation for more info, and the
cross-compile-wasm
example.
- nix:
drvConfig
anddepsDrvConfig
options were changed to resembledream2nix
moremkDerivation
options now must be defined underdrvConfig.mkDerivation
anddepsDrvConfig.mkDerivation
respectively
- nix: implemented
drvConfig
anddepsDrvConfig
undernci.crates.<name>.profiles.<profile name>
option- This means that now every profile package can be customized separately.
- nix: added a new example showcasing how to customize profiles
- nix: update internals to use dream2nix v1 API.
- nix: remove
overrides
anddepsOverrides
options from project and crate settings.- These are now replaced by
drvConfig
anddepsDrvConfig
respectively. Please check out the updated examples.
- These are now replaced by
- nix: replace project
relPath
setting withpath
setting. - nix: change default value of
export
in project settings totrue
.- This means that all packages and development shells will be exported by default now.
- You can set
nci.projects."project-name".export = false
to return to old behaviour.
- nix: added new option
nci.toolchainConfig
- This allows you to set the toolchain configuration manually.
- It can point to a
rust-toolchain.toml
or legacyrust-toolchain
file, or - it can point to an attrset containing what the
toolchain
section in arust-toolchain.toml
file would contain- (so options such as
channel
,components
andtargets
)
- (so options such as
- nix: rewrite in flake-parts! Please look at the readme for new documentation link. If you have any questions on how to migrate, please ask them here on GitHub Discussions.
- nix: the outputs prefixed with
-debug
are now named with the-dev
prefix. @ #97- This was done to have more consistency with Cargo profiles (eg.
profiles.dev
==-dev
prefix).
- This was done to have more consistency with Cargo profiles (eg.
- nix and cargo-toml: the whole interface was changed! Please refer to the documentation and the example flake.
- nix: the
rustOverlay
input was changed torust-overlay
@ e3b4e564fc689c8e32d4b5e76f3cbbd055cb9830 - nix:
common.pkgsWithRust
is removed, you can now access the Rust toolchain viacommon.rustToolchain
@ e3b4e564fc689c8e32d4b5e76f3cbbd055cb9830
- nix:
overrides.pkgsOverlays
andoverrides.systems
were moved topkgsOverlays
andsystems
arguments tomakeOutputs
@ 3e733afea5b5533fc57d10bbd1c2d6b14d6ee304 - nix:
systems
now just take a list of strings instead of a function taking default systems @ 3e733afea5b5533fc57d10bbd1c2d6b14d6ee304
- cargo-toml:
library
option inpackage.metadata.nix
is removed and will no longer be used @ 11f26a1aa9aeddfb2ca32b3441091d4d8dc4cf0c - nix:
overrides.crateOverrides
was renamed tooverrides.crates
@ 11f26a1aa9aeddfb2ca32b3441091d4d8dc4cf0c