/
interface.nix
142 lines (131 loc) · 3.68 KB
/
interface.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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
{
config,
lib,
...
}: let
l = lib // builtins;
t = l.types;
boolOpt = l.mkOption {
type = t.bool;
default = false;
};
in {
options.deps.python = l.mkOption {
type = t.package;
description = "The python interpreter package to use";
};
options.buildPythonPackage = {
disabled =
boolOpt
// {
description = ''
used to disable derivation, useful for specific python versions
'';
};
catchConflicts =
boolOpt
// {
description = ''
Raise an error if two packages are installed with the same name
TODO: For cross we probably need a different PYTHONPATH, or not
add the runtime deps until after buildPhase.
'';
default =
config.deps.python.stdenv.hostPlatform
== config.deps.python.stdenv.buildPlatform;
defaultText = ''
true if the host and build platforms are the same, false otherwise.
'';
};
dontWrapPythonPrograms =
boolOpt
// {
description = ''
Skip wrapping of python programs altogether
'';
};
makeWrapperArgs = l.mkOption {
type = t.listOf t.str;
default = [];
description = ''
Additional arguments to pass to the makeWrapper function, which wraps generated binaries.
'';
};
dontUsePipInstall =
boolOpt
// {
description = ''
Don't use Pip to install a wheel
Note this is actually a variable for the pipInstallPhase in pip's setupHook.
It's included here to prevent an infinite recursion.
'';
};
permitUserSite =
boolOpt
// {
description = ''
Skip setting the PYTHONNOUSERSITE environment variable in wrapped programs
'';
};
removeBinBytecode =
boolOpt
// {
default = true;
description = ''
Remove bytecode from bin folder.
When a Python script has the extension `.py`, bytecode is generated
Typically, executables in bin have no extension, so no bytecode is generated.
However, some packages do provide executables with extensions, and thus bytecode is generated.
'';
};
format = l.mkOption {
type = t.str;
default = "setuptools";
description = ''
Several package formats are supported:
"setuptools" : Install a common setuptools/distutils based package. This builds a wheel.
"wheel" : Install from a pre-compiled wheel.
"flit" : Install a flit package. This builds a wheel.
"pyproject": Install a package using a ``pyproject.toml`` file (PEP517). This builds a wheel.
"egg": Install a package from an egg.
"other" : Provide your own buildPhase and installPhase.
'';
};
disabledTestPaths = l.mkOption {
type = t.listOf t.anything;
default = [];
description = ''
Test paths to ignore in checkPhase
'';
};
# previously only set via env
disabledTests = l.mkOption {
type = t.listOf t.str;
default = [];
description = ''
Disable running specific unit tests
'';
};
pytestFlagsArray = l.mkOption {
type = t.listOf t.str;
default = [];
description = ''
Extra flags passed to pytest
'';
};
pipInstallFlags = l.mkOption {
type = t.listOf t.str;
default = [];
description = ''
Extra flags passed to `pip install`
'';
};
pythonImportsCheck = l.mkOption {
type = t.listOf t.str;
default = [];
description = ''
Check whether importing the listed modules works
'';
};
};
}