The team I'm part of wants to ditch Nix in favour of just about anything, because no one wants to maintain Nix and everyone sees it as just source of problems :(
I agree that it was complicated to learn Nix for me, too, but now I see benefits in it but I can't make them change their mind and tired of trying. Nix could've been much easier to advocate for if the language itself wasn't this esoteric
I don't know the answer to your question, but I think that what is needed is just a bit of syntactic sugar, e.g. Rust has
?
for returning compatible errors without looking into them. That seems to be powered byTry
trait, that may be a monad, but I am not fluent enough to check if it formally is.