forked from cargo2nix/cargo2nix
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mkcrate-nobuild.nix
42 lines (42 loc) · 1.17 KB
/
mkcrate-nobuild.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Creates a derivation for a crate for inputs propagation only.
{ lib, stdenv }:
{
release, # Compiling in release mode?
name,
version,
registry,
src,
features ? [ ],
dependencies ? { },
devDependencies ? { },
buildDependencies ? { },
compileMode ? "build",
profile,
meta ? { },
rustcLinkFlags ? [ ],
rustcBuildFlags ? [ ],
hostPlatformCpu ? null,
hostPlatformFeatures ? [],
target ? null,
codegenOpts,
profileOpts,
}:
with lib; with builtins;
let
inherit
(({ right, wrong }: { runtimeDependencies = right; buildtimeDependencies = wrong; })
(partition (drv: drv.stdenv.hostPlatform == stdenv.hostPlatform)
(concatLists [
(attrValues dependencies)
(optionals (compileMode == "test" || compileMode == "bench") (attrValues devDependencies))
(attrValues buildDependencies)
])))
runtimeDependencies buildtimeDependencies;
in stdenv.mkDerivation {
name = "crate-${name}-${version}";
propagatedBuildInputs = concatMap (drv: drv.propagatedBuildInputs) runtimeDependencies;
phases = "installPhase fixupPhase";
installPhase = "mkdir -p $out";
preferLocalBuild = true;
allowSubstitutes = false;
}