It seems that is not possible to have more than one overlay calling python3.override. Based on this solution, I fixed this problem this way:
1- I created a file to keep all python overlays called python_overlays.nix with this content:
python-self: python-super:
{
nibabel = python-super.nibabel.overrideAttrs (oldAttrs: {
doInstallCheck = false;
propagatedBuildInputs = oldAttrs.propagatedBuildInputs
++ [python-super.packaging];
});
Keras = python-super.Keras.overrideAttrs (oldAttrs: rec {
pname = "Keras";
version = "2.2.4";
src = python-super.fetchPypi {
pname = "Keras";
version = "2.2.4";
sha256 = "1j8bsqzh49vjdxy6l1k4iwax5vpjzniynyd041xjavdzvfii1dlh";
};
});
plaidml = python-super.callPackage ./pkgs/plaidml {
};
}
2 - I create a file to override the python packages from the python_overlays.nix:
self: super: {
python3 = super.python3.override {
packageOverrides = import ./python_overlays.nix;
};
python37 = super.python37.override {
packageOverrides = import ./python_overlays.nix;
};
python38 = super.python38.override {
packageOverrides = import ./python_overlays.nix;
};
}