Skip to content

Commit 2f96ff2

Browse files
committed
chore: move options.poetry to types dir
1 parent 884fd8e commit 2f96ff2

File tree

2 files changed

+136
-128
lines changed

2 files changed

+136
-128
lines changed

modules/poetry.nix

Lines changed: 1 addition & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -19,134 +19,7 @@
1919
kernelModule = import ./kernel.nix args;
2020
in {
2121
options =
22-
{
23-
projectDir = lib.mkOption {
24-
type = types.path;
25-
default = self + "/kernels/available/${kernelName}";
26-
defaultText = lib.literalExpression "self + \"/kernels/available/${kernelName}\"";
27-
example = lib.literalExpression "self + \"/kernels/${kernelName}\"";
28-
description = lib.mdDoc ''
29-
Path to the root of the poetry project that provides this ${kernelName}
30-
kernel.
31-
'';
32-
};
33-
34-
pyproject = lib.mkOption {
35-
type = types.path;
36-
default = config.projectDir + "/pyproject.toml";
37-
defaultText = lib.literalExpression "kernel.${kernelName}.<name>.projectDir + \"/pyproject.toml\"";
38-
example = lib.literalExpression "self + \"/kernels/${kernelName}/pyproject.toml\"";
39-
description = ''
40-
Path to `pyproject.toml` of the poetry project that provides this
41-
${kernelName} kernel.
42-
'';
43-
};
44-
45-
poetrylock = lib.mkOption {
46-
type = types.path;
47-
default = config.projectDir + "/poetry.lock";
48-
defaultText = lib.literalExpression "kernel.${kernelName}.<name>.projectDir + \"/poetry.lock\"";
49-
example = lib.literalExpression "self + \"/kernels/${kernelName}/poetry.lock\"";
50-
description = ''
51-
Path to `poetry.lock` of the poetry project that provides this
52-
${kernelName} kernel.
53-
'';
54-
};
55-
56-
overrides = lib.mkOption {
57-
type = types.path;
58-
default = self + "/kernels/available/${kernelName}/overrides.nix";
59-
defaultText = lib.literalExpression "self + \"/kernels/available/${kernelName}/overrides.nix\"";
60-
example = lib.literalExpression "self + \"/kernels/${kernelName}/overrides.nix\"";
61-
description = ''
62-
Path to `overrides.nix` file which provides python package overrides
63-
for this ${kernelName} kernel.
64-
'';
65-
};
66-
67-
withDefaultOverrides = lib.mkOption {
68-
type = types.bool;
69-
default = true;
70-
example = lib.literalExpression "false";
71-
description = ''
72-
Should we use default overrides provided by `poetry2nix`.
73-
'';
74-
};
75-
76-
python = lib.mkOption {
77-
type = types.str;
78-
default = "python3";
79-
example = "python310";
80-
description = lib.mdDoc ''
81-
Name of the python interpreter (from nixpkgs) to be used for this
82-
${kernelName} kernel.
83-
'';
84-
};
85-
86-
editablePackageSources = lib.mkOption {
87-
type = types.attrsOf (types.nullOr types.path);
88-
default = {};
89-
example = lib.literalExpression "{}";
90-
description = ''
91-
A mapping from package name to source directory, these will be
92-
installed in editable mode. Note that path dependencies with `develop
93-
= true` will be installed in editable mode unless explicitly passed
94-
to `editablePackageSources` as `null`.
95-
'';
96-
};
97-
98-
extraPackages = lib.mkOption {
99-
type = types.functionTo (types.listOf types.package);
100-
default = ps: [];
101-
defaultText = lib.literalExpression "ps: []";
102-
example = lib.literalExpression "ps: [ps.numpy]";
103-
description = ''
104-
A function taking a Python package set and returning a list of extra
105-
packages to include in the environment. This is intended for
106-
packages deliberately not added to `pyproject.toml` that you still
107-
want to include. An example of such a package may be `pip`.
108-
'';
109-
};
110-
111-
preferWheels = lib.mkOption {
112-
type = types.bool;
113-
default = false;
114-
example = lib.literalExpression "true";
115-
description = lib.mdDoc ''
116-
Use wheels rather than sdist as much as possible.
117-
'';
118-
};
119-
120-
groups = lib.mkOption {
121-
type = types.listOf types.str;
122-
default = ["dev"];
123-
defaultText = lib.literalExpression "[\"dev\"]";
124-
example = lib.literalExpression ''["dev" "doc"]'';
125-
description = lib.mdDoc ''
126-
Which Poetry 1.2.0+ dependency groups to install for this ${kernelName}
127-
kernel.
128-
'';
129-
};
130-
131-
poetry2nix = lib.mkOption {
132-
type = types.path;
133-
default = self.inputs.poetry2nix;
134-
defaultText = lib.literalExpression "self.inputs.poetry2nix";
135-
example = lib.literalExpression "self.inputs.poetry2nix";
136-
description = lib.mdDoc ''
137-
poetry2nix flake input to be used for this ${kernelName} kernel.
138-
'';
139-
};
140-
141-
ignoreCollisions = lib.mkOption {
142-
type = types.bool;
143-
default = false;
144-
example = lib.literalExpression "true";
145-
description = lib.mdDoc ''
146-
Ignore file collisions inside the environment.
147-
'';
148-
};
149-
}
22+
import ./types/poetry.nix {inherit lib self config kernelName;}
15023
// kernelModule.options;
15124

15225
config = lib.mkIf config.enable {

modules/types/poetry.nix

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
{
2+
lib,
3+
self,
4+
kernelName ? "",
5+
config,
6+
}: let
7+
inherit (lib) types;
8+
in {
9+
projectDir = lib.mkOption {
10+
type = types.path;
11+
default = self + "/kernels/available/${kernelName}";
12+
defaultText = lib.literalExpression "self + \"/kernels/available/${kernelName}\"";
13+
example = lib.literalExpression "self + \"/kernels/${kernelName}\"";
14+
description = lib.mdDoc ''
15+
Path to the root of the poetry project that provides this ${kernelName}
16+
kernel.
17+
'';
18+
};
19+
20+
pyproject = lib.mkOption {
21+
type = types.path;
22+
default = config.projectDir + "/pyproject.toml";
23+
defaultText = lib.literalExpression "kernel.${kernelName}.<name>.projectDir + \"/pyproject.toml\"";
24+
example = lib.literalExpression "self + \"/kernels/${kernelName}/pyproject.toml\"";
25+
description = ''
26+
Path to `pyproject.toml` of the poetry project that provides this
27+
${kernelName} kernel.
28+
'';
29+
};
30+
31+
poetrylock = lib.mkOption {
32+
type = types.path;
33+
default = config.projectDir + "/poetry.lock";
34+
defaultText = lib.literalExpression "kernel.${kernelName}.<name>.projectDir + \"/poetry.lock\"";
35+
example = lib.literalExpression "self + \"/kernels/${kernelName}/poetry.lock\"";
36+
description = ''
37+
Path to `poetry.lock` of the poetry project that provides this
38+
${kernelName} kernel.
39+
'';
40+
};
41+
42+
overrides = lib.mkOption {
43+
type = types.path;
44+
default = self + "/kernels/available/${kernelName}/overrides.nix";
45+
defaultText = lib.literalExpression "self + \"/kernels/available/${kernelName}/overrides.nix\"";
46+
example = lib.literalExpression "self + \"/kernels/${kernelName}/overrides.nix\"";
47+
description = ''
48+
Path to `overrides.nix` file which provides python package overrides
49+
for this ${kernelName} kernel.
50+
'';
51+
};
52+
53+
withDefaultOverrides = lib.mkOption {
54+
type = types.bool;
55+
default = true;
56+
example = lib.literalExpression "false";
57+
description = ''
58+
Should we use default overrides provided by `poetry2nix`.
59+
'';
60+
};
61+
62+
python = lib.mkOption {
63+
type = types.str;
64+
default = "python3";
65+
example = "python310";
66+
description = lib.mdDoc ''
67+
Name of the python interpreter (from nixpkgs) to be used for this
68+
${kernelName} kernel.
69+
'';
70+
};
71+
72+
editablePackageSources = lib.mkOption {
73+
type = types.attrsOf (types.nullOr types.path);
74+
default = {};
75+
example = lib.literalExpression "{}";
76+
description = ''
77+
A mapping from package name to source directory, these will be
78+
installed in editable mode. Note that path dependencies with `develop
79+
= true` will be installed in editable mode unless explicitly passed
80+
to `editablePackageSources` as `null`.
81+
'';
82+
};
83+
84+
extraPackages = lib.mkOption {
85+
type = types.functionTo (types.listOf types.package);
86+
default = ps: [];
87+
defaultText = lib.literalExpression "ps: []";
88+
example = lib.literalExpression "ps: [ps.numpy]";
89+
description = ''
90+
A function taking a Python package set and returning a list of extra
91+
packages to include in the environment. This is intended for
92+
packages deliberately not added to `pyproject.toml` that you still
93+
want to include. An example of such a package may be `pip`.
94+
'';
95+
};
96+
97+
preferWheels = lib.mkOption {
98+
type = types.bool;
99+
default = false;
100+
example = lib.literalExpression "true";
101+
description = lib.mdDoc ''
102+
Use wheels rather than sdist as much as possible.
103+
'';
104+
};
105+
106+
groups = lib.mkOption {
107+
type = types.listOf types.str;
108+
default = ["dev"];
109+
defaultText = lib.literalExpression "[\"dev\"]";
110+
example = lib.literalExpression ''["dev" "doc"]'';
111+
description = lib.mdDoc ''
112+
Which Poetry 1.2.0+ dependency groups to install for this ${kernelName}
113+
kernel.
114+
'';
115+
};
116+
117+
poetry2nix = lib.mkOption {
118+
type = types.path;
119+
default = self.inputs.poetry2nix;
120+
defaultText = lib.literalExpression "self.inputs.poetry2nix";
121+
example = lib.literalExpression "self.inputs.poetry2nix";
122+
description = lib.mdDoc ''
123+
poetry2nix flake input to be used for this ${kernelName} kernel.
124+
'';
125+
};
126+
127+
ignoreCollisions = lib.mkOption {
128+
type = types.bool;
129+
default = false;
130+
example = lib.literalExpression "true";
131+
description = lib.mdDoc ''
132+
Ignore file collisions inside the environment.
133+
'';
134+
};
135+
}

0 commit comments

Comments
 (0)