Yes I think it’s not splicing per se that is cursed, it’s the way we implement scopes and callPackage
, which hinders both cross-compilation and situations like “there’s foobar in python3Packages but I need to ask for foobar from the top-level pkgs”. Then there’s also the general issue of expressing more complex graphs than makeScope newScope
chains when working out of tree
I wish I could do a more explicit/fine-grained dependency injection, sort of like
# package.nix
{
dependencies.wayland-scanner.name = "wayland";
dependencies.wayland-scanner.offsets = "buildHost";
dependencies.wayland-host.name = "wayland";
dependencies.wayland-host.offsets = "hostTarget";
recipe = { stdenv, wayland-scanner, wayland-host, ... }: ...
}