Trivial Nix-based notebook fails to load

See repository & Binder link. Relevant output:

Spawn failed: Server at […] didn’t respond in 30 seconds


Spawn failed: pod bhub-ns/jupyter-victor-2dengmark-2d-2dscripting-2dintro-2dom4wh3zb did not start in 300 seconds!

Update: Tried bumping jupyterWith to the latest version, but no go.

Do you need to keep use this for other uses besides MyBinder launches?
I’m guessing that is the case so this is assuming that.

This may be because I’m not familiar with nix, but on quick look your default.nix doesn’t look like it follows the recommendations from the configuration files page (see below). For example, I’m not seeing you specify Jupyter package; however, maybe I’m missing it?

I’d make a subdirectory named binder and put a copy of one of the example default.nix files that work with MyBinder there:

Leave the items you have in root alone.
See about the use of the binder subdirectory here and here.

Once that launches, then try to add in your features and abilities into the binder subdirectory content from your current default,nix in your root.

Recommendations from the configuration files page:

" When using nix you have to specify all packages and dependencies explicitly, including the Jupyter notebook package that repo2docker expects to be installed. If you do not install Jupyter explicitly repo2docker will no be able to start your container."


Thanks for the detailed response! I was able to get away without using jupyterWith, but even with a simpler configuration it still times out.

Is there some weirdness where the lack of .env at the end is breaking Binder? Because the Binder examples you posted both use mkShell, which is usually only used in shell.nix and not in default.nix.

That second link ( isn’t timing out. MyBinder cannot see that and is saying check the URL and that it’s public.

Maybe reach out to
Christopher Ostrouchov, a.k.a. @costrouc
with that question; he put together the detailed one I linked to. It seems the simpler one I linked follows from that.

Yours clearly builds so running repo2docker local isn’t going to help in this case. It would be nice to know if the examples work from GitLab. I don’t think that is the issue; however, starting with something that works, i.e., launches an active MyBinder session, and then customizing it to match your needs is best.
You can have a separate repo that gets content from the other and just use the launch URL at the central location, if you don’t want to modify where you’ve been working further.

The URL is no longer valid because I merged the branch - my bad! You can use the link to the HEAD of the default branch. I’ve filed an issue, since it seems this should work.