Skip to content

export wasm fails on NixOS #9940

Description

@skaphi

Describe the bug

On NixOS all packages including marimo are stored in /nix/store which is read only. shutils.copytree preserves permissions, thus we get the following denied write issue

$ marimo export html-wasm noob.py -o tester/ --mode edit
Traceback (most recent call last):
  File "/nix/store/z6q0wiws633hxixrnjyshk8n641iw41m-python3.13-marimo-0.23.6/bin/.marimo-wrapped", line 9, in <module>
    sys.exit(main())
             ~~~~^^
  File "/nix/store/knzx18kqdy77ckzzd2qm94qbxdpvkay9-python3.13-click-8.3.1/lib/python3.13/site-packages/click/core.py", line 1485, in __call__
    return self.main(*args, **kwargs)
           ~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/nix/store/knzx18kqdy77ckzzd2qm94qbxdpvkay9-python3.13-click-8.3.1/lib/python3.13/site-packages/click/core.py", line 1406, in main
    rv = self.invoke(ctx)
  File "/nix/store/knzx18kqdy77ckzzd2qm94qbxdpvkay9-python3.13-click-8.3.1/lib/python3.13/site-packages/click/core.py", line 1873, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/nix/store/knzx18kqdy77ckzzd2qm94qbxdpvkay9-python3.13-click-8.3.1/lib/python3.13/site-packages/click/core.py", line 1873, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/nix/store/knzx18kqdy77ckzzd2qm94qbxdpvkay9-python3.13-click-8.3.1/lib/python3.13/site-packages/click/core.py", line 1269, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/knzx18kqdy77ckzzd2qm94qbxdpvkay9-python3.13-click-8.3.1/lib/python3.13/site-packages/click/core.py", line 824, in invoke
    return callback(*args, **kwargs)
  File "/nix/store/z6q0wiws633hxixrnjyshk8n641iw41m-python3.13-marimo-0.23.6/lib/python3.13/site-packages/marimo/_cli/export/commands.py", line 954, in html_wasm
    (Path(out_dir) / ".nojekyll").touch()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/nix/store/60m4rxhg2fldqaak400c0lry96ijrzqn-python3-3.13.13/lib/python3.13/pathlib/_local.py", line 714, in touch
    fd = os.open(self, flags, mode)
PermissionError: [Errno 13] Permission denied: 'tester/.nojekyll'

Will you submit a PR?

  • Yes

Environment

Details
$ marimo env
{
  "marimo": "0.23.6",
  "editable": false,
  "location": "/nix/store/7d0xrq4c3r0kjxk5p7dnnyj7a7sz2ipw-python3.13-marimo-0.23.6/lib/python3.13/site-packages/marimo",
  "OS": "Linux",
  "OS Version": "6.18.35",
  "Processor": "",
  "Python Version": "3.13.13",
  "Locale": "--",
  "Binaries": {
    "Browser": "--",
    "Node": "v24.15.0",
    "uv": "0.11.19 (x86_64-unknown-linux-gnu)"
  },
  "Dependencies": {
    "click": "8.3.1",
    "docutils": "0.22.4",
    "itsdangerous": "2.2.0",
    "jedi": "0.20.0",
    "markdown": "3.10.2",
    "narwhals": "2.16.0",
    "packaging": "26.1",
    "psutil": "7.2.2",
    "pygments": "2.20.0",
    "pymdown-extensions": "10.21.2",
    "pyyaml": "6.0.3",
    "starlette": "0.52.1",
    "tomlkit": "0.14.0",
    "typing-extensions": "4.15.0",
    "uvicorn": "0.40.0",
    "websockets": "16.0"
  },
  "Optional Dependencies": {
    "altair": "6.1.0",
    "anywidget": "0.9.21",
    "duckdb": "1.5.2",
    "loro": "1.10.3",
    "nbformat": "5.10.4",
    "pandas": "2.3.3",
    "polars": "1.40.1",
    "pyarrow": "23.0.0",
    "python-lsp-server": "1.14.0",
    "ruff": "0.15.16",
    "sqlglot": "28.9.0",
    "watchdog": "6.0.0"
  },
  "Experimental Flags": {}
}

Code to reproduce

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions