blob: d11eb7cd8e30237ae08b4d6ccda59cae4c942dec (
plain) (
blame)
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
43
44
45
46
47
48
49
50
51
|
{ lib, stdenv, nim1, nim2, nim_builder, defaultNimVersion ? 2 }:
pkgArgs:
let
baseAttrs = {
strictDeps = true;
enableParallelBuilding = true;
doCheck = true;
configurePhase = ''
runHook preConfigure
export NIX_NIM_BUILD_INPUTS=''${pkgsHostTarget[@]} $NIX_NIM_BUILD_INPUTS
nim_builder --phase:configure
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
nim_builder --phase:build
runHook postBuild
'';
checkPhase = ''
runHook preCheck
nim_builder --phase:check
runHook postCheck
'';
installPhase = ''
runHook preInstall
nim_builder --phase:install
runHook postInstall
'';
meta = { inherit (nim2.meta) maintainers platforms; };
};
inputsOverride = { depsBuildBuild ? [ ], nativeBuildInputs ? [ ]
, requiredNimVersion ? defaultNimVersion, ... }:
(if requiredNimVersion == 1 then {
nativeBuildInputs = [ nim1 ] ++ nativeBuildInputs;
} else if requiredNimVersion == 2 then {
nativeBuildInputs = [ nim2 ] ++ nativeBuildInputs;
} else
throw "requiredNimVersion ${toString requiredNimVersion} is not valid")
// {
depsBuildBuild = [ nim_builder ] ++ depsBuildBuild;
};
composition = finalAttrs:
let
asFunc = x: if builtins.isFunction x then x else (_: x);
prev = baseAttrs // (asFunc ((asFunc pkgArgs) finalAttrs)) baseAttrs;
in prev // inputsOverride prev;
in stdenv.mkDerivation composition
|