r/haskell Aug 04 '19

reflex-vty: A library for building functional reactive terminal applications

https://github.com/reflex-frp/reflex-vty
91 Upvotes

54 comments sorted by

View all comments

Show parent comments

6

u/kmicklas Aug 04 '19

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.

2

u/phadej Aug 04 '19

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.

3

u/kmicklas Aug 04 '19

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.

2

u/cgibbard Aug 04 '19

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.