Flake: patch inputs?

Is there existing reasoning over a hypothetical patches facility for flakes?

{
  inputs.foo.patches = [ # in order merged
     "abgc6h"; # same remote
     "ref/pr/123"; # same remote pull request
    {
       url = "github:foo/bar/abgckh"; # different remote
    }
  ];
}

Evaluation fails if patches don’t merge cleanly.

If they where supported, (non-local) patches are inputs after all.

7 Likes

What exactly do you want to patch?

The flake itself or some of its outputs?

Effektively the source tree of the underlying flake itself. In practical terms, I ultimately desire to have a dirt cheap, elegant and quick way of pulling in (several!) Pull Requests (for the most time) without the need to fork and build an aggregated branch manually.

If I use a fork as input, the input declaration — while formally true — loses semantic richeness: it might be valuable for an observer to see at first glance what (temporary!) patches are applied on any given input instead of perceiving a “fork”.

1 Like

https://github.com/NixOS/nix/issues/4433

https://github.com/NixOS/nix/issues/3920