Comments (4)
Note that this is part of the "standard" buildRustCrate
support that comes with NixOS. I think it would be very valuable to document this well!
Some rudimentary doc is here: https://git.mayflower.de/NixOS/nixpkgs/blob/master/doc/languages-frameworks/rust.md#compiling-rust-crates-using-nix-instead-of-cargo
I appreciate pull requests for the README.md
for crate2nix or the nixos doc itself.
from crate2nix.
Could you give a hint of how to do this? Normally buildRustCrate
gives a derivation that is overridable, which allows overriding crateOverrides
, so that something like the following works:
with import <nixpkgs> {};
((import ./hello.nix).hello {}).override {
crateOverrides = defaultCrateOverrides // {
hello = attrs: { buildInputs = [ openssl ]; };
};
}
However, the file generated by crate2nix uses makeOverrideable
again on the derivation (in buildRustCrateWithFeatures
), for providing the feature overriding functionality. However, this seems to 'override the override', hiding the buildRustCrate
variant?
Something like the above fails with:
error: anonymous function at /home/daniel/.config/nixpkgs/nix-nlp/pkgs/finalfrontier/finalfrontier.nix:2182:8 called with unexpected argument 'crateOverrides', at /home/daniel/git/nixpkgs/lib/customisation.nix:69:12
from crate2nix.
Just to confirm, if I apply this diff to the generated Nix file, I can use crateOverrides
:
- buildRustCrateWithFeatures = {packageId, features}:
- lib.makeOverridable
- ({features}: buildRustCrateWithFeaturesImpl {inherit packageId features;})
- { inherit features; };
+ buildRustCrateWithFeatures = buildRustCrateWithFeaturesImpl;
from crate2nix.
You could also override the defaultCrateOverrides in pkgs with an overlay. Thanks for the detective work.
I'll add crateOverrides to the overridable parameters since it would be an incompatibility otherwise.
from crate2nix.
Related Issues (20)
- `CARGO_MANIFEST_LINKS` environment variable missing in build environment HOT 1
- Specify the toolchain used to build the main project HOT 6
- Panic when running `crate2nix generate` HOT 6
- crate2nix stumbles over arbitrary #[cfg] conditionals HOT 4
- error inheriting `version` from workspace root manifest's `workspace.package.version` HOT 1
- Set custom environment variables in `packages` and `devShells` HOT 1
- rustc 1.73 breaks crate2nix cross compilation HOT 5
- Cargo.nix includes references to ./crate2nix-sources with cargo workspaces HOT 1
- nixpkgs update breaks empty_cross test due to missing `rust` arguement HOT 7
- rstests adds a stray "/sources" to all globbed #[files] HOT 1
- Support path to Cargo.toml/Cargo.lock in fetched sources
- Tarball issue when building or trying to use template. HOT 1
- Error with dep that has a local dep
- Some sort of support for .cargo/config.toml ? HOT 1
- Overriding `crateConfig` for generated `Cargo.nix`
- Crate hash loading from Cargo.lock is broken in Rust 1.77
- Respect cargo profiles / enable debug info in release mode HOT 1
- Allow some crates to access more files than just those in their folder
- IFD is crazy slow due to copying the entire tree HOT 2
- IFD does not work with git deps HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from crate2nix.