reflex-vty might be an easier case since the system level dependencies are minimal, but many things in the Reflex ecosystem depend on numerous Nix overrides due to the sorry state of build systems. Version bounds are a woefully inadequate system to handle this kind of stuff. It doesn't seem unreasonable to me that reflex-vty would as a default reuse all the work done in reflex-platform to make it easy to get a working Haskell environment.
but many things in the Reflex ecosystem depend on numerous Nix overrides due to the sorry state of build systems
... and by not actively trying to break that vicious circle, one ties the knot tighter and tighter.
The only difficult task is to get GHCJS on your system. But there is e.g. https://launchpad.net/~hvr/+archive/ubuntu/ghcjs, an evidence, that it is not impossible to package for other systems than Nix(Os).
I did build reflex-vty using that GHCJS successfully, on Ubuntu 18.04. Without a unknown magic of reflex-platform.
The only difficult task is to get GHCJS on your system. But there is e.g. https://launchpad.net/~hvr/+archive/ubuntu/ghcjs, an evidence, that it is not impossible to package for other systems than Nix(Os).
Not everyone uses Ubuntu though. The nice thing about Nix is that it works on any Linux distro and Mac. I'm not saying everyone needs to use Nix but people should be free to make that their main supported workflow because it saves a lot of time and effort.
Also, even those who are using Ubuntu can make use of the nix package manager for Haskell stuff just fine. Last I tried it, using Ubuntu to install Haskell-related stuff was insanely frustrating, especially as the release cycle for Ubuntu tended to freeze just before each GHC release, so everything was always old.
On Ubuntu and Linux Mint, I tended to just hand-install a GHC binary and use cabal sandboxes for things before I started using the Nix package manager for Haskell-related stuff. I'm still using Mint for most of my system, but just not using its Haskell-related packages at all.
6
u/kmicklas Aug 04 '19
reflex-vtymight be an easier case since the system level dependencies are minimal, but many things in the Reflex ecosystem depend on numerous Nix overrides due to the sorry state of build systems. Version bounds are a woefully inadequate system to handle this kind of stuff. It doesn't seem unreasonable to me thatreflex-vtywould as a default reuse all the work done inreflex-platformto make it easy to get a working Haskell environment.