I’m trying to write a flake [to tame an integrated collection of scientific software (with which I am not familiar myself), which is glued together with ad-hoc installation scripts, patches, branches in forks, chewing gum and sticky tape … and lots of implicit state on the developer’s machine].
Somewhere in its bowels, it requires the use of a Python module which depends on another Python module which is marked as broken in nixpkgs. I suspect that this dependency might not be used all that much in this whole bundle, and it’s preventing me from making progress on discovering and dealing with other dependencies.
Is it possible to allowBroken for just that single package that is being used in a flake?
[aside: there’s a missing ; after broken = false] in your code sample.
I’m still a bit lost as to how to deal with the fact that it’s a transitive dependency. Edit: not only that, it’s also a Python package, so it needs to go somewhere in pkgs.python<generic-version-????>Packages.
Replacing abstract names with some concrete ones, I need to use
nipype, which depends on
pybids, which is broken
How should I tell nipype about the overridden pybids?
Thanks for the complete code sample, that’s always very helpful.
Unfortunately I’m missing much of the Nix-vocabulary of overlays, and the experience to remember details of plumbing. For example, without your sample, I don’t know how long it would have taken me to recall or re-find packageOverrides, etc.
If I try to nix build it, with an additional inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-22.05"; I get this error:
> ERROR: Could not find a version that satisfies the requirement sqlalchemy<1.4.0.dev0 (from pybids) (from versions: none)
> ERROR: No matching distribution found for sqlalchemy<1.4.0.dev0
which looks likely to be related to the reason why the package was broken in the first place.
If I switch nixpkgs to unstable I get the same error but with formulaic<0.4,>=0.2.4 instead of sqlalchemy.
Hm, I see. In that case I think you’ll have to provide the necessary versions manually with a buildPythonPackage (see Python | nixpkgs). You can add those to the overlay and pray it doesn’t break any other packages.