-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathflake.nix
97 lines (95 loc) · 2.86 KB
/
flake.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
{
description = "rose";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs =
{ self
, nixpkgs
, flake-utils
}:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
python-pin = pkgs.python312;
version = nixpkgs.lib.strings.removeSuffix "\n" (builtins.readFile ./rose-py/rose/.version);
uuid6 = python-pin.pkgs.buildPythonPackage {
pname = "uuid6-python";
version = "2023.5.2";
src = pkgs.fetchFromGitHub {
owner = "oittaa";
repo = "uuid6-python";
rev = "d65fff8bbfcd0bca78577b3d07cb3c9979cd69e7";
hash = "sha256-Typif9Ags1Eaz2WMCh+MnsbTqJdTPgYpCCReQY8pVqI=";
};
doCheck = false;
};
py-deps = with python-pin.pkgs; {
inherit
# Runtime deps.
appdirs
click
jinja2
llfuse
mutagen
send2trash
setuptools
tomli-w
uuid6
watchdog
# Dev tools.
mypy
pytest
pytest-timeout
pytest-cov
pytest-xdist
syrupy;
};
python-with-deps = python-pin.withPackages (_:
pkgs.lib.attrsets.mapAttrsToList (a: b: b) py-deps
);
in
{
devShells.default = pkgs.mkShell {
shellHook = ''
find-up () {
path=$(pwd)
while [[ "$path" != "" && ! -e "$path/$1" ]]; do
path=''${path%/*}
done
echo "$path"
}
export ROSE_ROOT="$(find-up flake.nix)"
export PYTHONPATH="$ROSE_ROOT/rose-py:''${PYTHONPATH:-}"
export PYTHONPATH="$ROSE_ROOT/rose-watch:$PYTHONPATH"
export PYTHONPATH="$ROSE_ROOT/rose-vfs:$PYTHONPATH"
export PYTHONPATH="$ROSE_ROOT/rose-cli:$PYTHONPATH"
'';
buildInputs = [
(pkgs.buildEnv {
name = "rose-devshell";
paths = [
pkgs.ruff
pkgs.nodePackages.prettier
pkgs.pyright
python-with-deps
];
})
];
propagatedBuildInputs = [
(pkgs.lib.optional pkgs.stdenv.isDarwin pkgs.macfuse-stubs)
];
};
packages = rec {
rose-py = pkgs.callPackage ./rose-py { inherit version python-pin py-deps; };
rose-watch = pkgs.callPackage ./rose-watch { inherit version python-pin py-deps rose-py; };
rose-vfs = pkgs.callPackage ./rose-vfs { inherit version python-pin py-deps rose-py; };
rose-cli = pkgs.callPackage ./rose-cli { inherit version python-pin py-deps rose-py rose-vfs rose-watch; };
all = pkgs.buildEnv {
name = "rose-all";
paths = [ rose-py rose-watch rose-vfs rose-cli ];
};
};
});
}