I have the same problem. I have two flakes, A and B. A should expose a Python library that B then uses. I tried to formulate A as follows (see How to create an overlay for a python package in a flake for inspiration):
{
outputs = {}: {
overlays.default = final: prev: {
# Taken from
# https://discourse.nixos.org/t/how-to-create-an-overlay-for-a-python-package-in-a-flake/46247
pythonPackagesOverlays = (prev.pythonPackagesOverlays or [ ]) ++ [
(python-final: python-prev: {
mypackage = pkgs.python3Packages.callPackage ./mypackage.nix { };
})
];
python3 =
let
self = prev.python3.override {
inherit self;
packageOverrides = prev.lib.composeManyExtensions final.pythonPackagesOverlays;
};
in
self;
python3Packages = final.python3.pkgs;
};
}
}
And B then as:
{
inputs = "A";
outputs = {A}: let system = "x86_64-linux"; in {
overlays.default = final: prev: {
# my-application.nix uses "python3Packages.mypackage"
my-application = final.callPackage ./my-application.nix {};
};
packages.${system} =
let pkgs = import nixpkgs {
inherit system;
overlays = [ self.overlays.default ];
};
in
{
my-application = pkgs.my-application;
};
};
}
But it doesn’t work. python3Packages
doesn’t contain mypackage
.