-
Notifications
You must be signed in to change notification settings - Fork 81
/
Copy pathdevenv.nix
61 lines (56 loc) · 1.32 KB
/
devenv.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
{
config,
lib,
pkgs,
...
}:
# https://devenv.sh/reference/options/
{
languages.python = {
enable = true;
libraries = with pkgs; [
file # python-magic
];
venv.enable = true; # put venv in PATH
uv = {
enable = true;
sync.enable = true;
sync.arguments = [
# by default it contains `--no-install-workspace`
"--frozen"
"--group"
"dev"
];
};
};
env.UV_LINK_MODE = "copy";
packages =
with pkgs;
[
nodejs # for pyright and renovate
]
++ unblob.runtimeDeps;
tasks = {
"venv:link" = {
exec = ''
VENV_DIR="${config.devenv.root}/.venv"
if [[ -d "$VENV_DIR" && ! -L "$VENV_DIR" ]]; then
echo "Found an existing ${config.devenv.root}/.venv directory. Please remove it."
exit 1
fi
ln -snf "${config.devenv.state}/venv" "${config.devenv.root}/.venv"
'';
after = [ "devenv:python:uv" ];
before = [ "devenv:enterShell" ];
};
"venv:patchelf" = {
exec = ''
for exe in taplo ruff; do
${lib.getExe pkgs.patchelf} --set-interpreter ${pkgs.stdenv.cc.bintools.dynamicLinker} "${config.devenv.state}/venv/bin/$exe"
done
'';
after = [ "devenv:python:uv" ];
before = [ "devenv:enterShell" ];
};
};
}