NixOS / cabal2nix

Generate Nix build instructions from a Cabal file
https://haskell4nix.readthedocs.io
Other
355 stars 154 forks source link

Support for GitHub/GitLab PR URLs #588

Open Gabriella439 opened 1 year ago

Gabriella439 commented 1 year ago

One common use case for cabal2nix is using it to fetch a certain pull request for use as a dependency. However, currently one has to manually translate the PR URL to a revision before one can use cabal2nix. It would be nice if one could instead run something like:

$ cabal2nix https://github.com/andrewthad/country/pull/29

… and (at the time of this writing) it would behave the same way as if one had ran:

$ cabal2nix https://github.com/andrewthad/country --revision 4477749919da35e392faf08538f07c4c175b8284

I'd be happy to contribute this change myself if it would be approved. I've already looked into this and seemed like the most idiomatic way to do this would be to first contribute a nix-prefetch-pr utility to Nixpkgs and then make cabal2nix a thin wrapper around that. However, I wouldn't want to open the PR for nix-prefetch-pr if the matching change to cabal2nix would not get approved.

sternenseemann commented 1 year ago

I was aiming to revisit the fetching code soon in order to find a cleaner solution for https://github.com/NixOS/cabal2nix/pull/585, so it may not make sense yet to add a new feature in this area at the moment. I.e. it probably makes sense to get a handle on the complexity first to be free to contribute to it later.

In principle I'm not opposed to the change, especially if we can delegate this to a tool in the end. Currently cabal2nix is very stupid and just throws whatever it is getting at a bunch of tools after it has determined that it's not a hackage URL. I'd like to keep it that way, so we don't need to maintain a ton of integrations in cabal2nix or parse URLs etc.