nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 buildPythonPackage,
4 fetchpatch2,
5 fetchPypi,
6 pythonOlder,
7
8 # build-system
9 uv-build,
10
11 # dependencies
12 click,
13 docutils,
14 itsdangerous,
15 jedi,
16 loro,
17 markdown,
18 narwhals,
19 packaging,
20 psutil,
21 pygments,
22 pymdown-extensions,
23 pyyaml,
24 ruff,
25 starlette,
26 tomlkit,
27 typing-extensions,
28 uvicorn,
29 websockets,
30
31 # tests
32 versionCheckHook,
33}:
34
35buildPythonPackage rec {
36 pname = "marimo";
37 version = "0.19.4";
38 pyproject = true;
39
40 # The github archive does not include the static assets
41 src = fetchPypi {
42 inherit pname version;
43 hash = "sha256-7sO3ZcP9mNY+IBfFagJOd5ppI8tW52gueIdtT+SUCbc=";
44 };
45
46 patches = [
47 # https://github.com/marimo-team/marimo/pull/6714
48 (fetchpatch2 {
49 name = "uv-build.patch";
50 url = "https://github.com/Prince213/marimo/commit/b1c690e82e8117c451a74fdf172eb51a4861853d.patch?full_index=1";
51 hash = "sha256-iFS5NSGjaGdECRk0LCRSA8XzRb1/sVSZCTRLy6taHNU=";
52 })
53 ];
54
55 build-system = [ uv-build ];
56
57 dependencies = [
58 click
59 docutils
60 itsdangerous
61 jedi
62 loro
63 markdown
64 narwhals
65 packaging
66 psutil
67 pygments
68 pymdown-extensions
69 pyyaml
70 ruff
71 starlette
72 tomlkit
73 uvicorn
74 websockets
75 ]
76 ++ lib.optionals (pythonOlder "3.11") [ typing-extensions ];
77
78 pythonImportsCheck = [ "marimo" ];
79
80 # The pypi archive does not contain tests so we do not use `pytestCheckHook`
81 nativeCheckInputs = [
82 versionCheckHook
83 ];
84
85 meta = {
86 description = "Reactive Python notebook that's reproducible, git-friendly, and deployable as scripts or apps";
87 homepage = "https://github.com/marimo-team/marimo";
88 changelog = "https://github.com/marimo-team/marimo/releases/tag/${version}";
89 license = lib.licenses.asl20;
90 mainProgram = "marimo";
91 maintainers = with lib.maintainers; [
92 akshayka
93 dmadisetti
94 ];
95 };
96}