[Nix-dev] Haskell NG
Marc Weber
marco-oweber at gmx.de
Sat Dec 13 00:19:50 CET 2014
> - hackage-packages.nix is generated automatically by the "hackage2nix" utility
> from the "v2.x" branch of the cabal2nix repository [2]. The file defines
> builds for the respective latest version of every Hackage package.
> hackage2nix can include some older package versions, too, if necessary.
So does the spirit behind hack-nix win finally? Finally? :)
If we "rewrite" the stuff we should get it right this time.
I feel getting this right means
1) versioning hackage
2) implement a way to retrieve hackage packages (either by api or from
versioned hackage dump)
3) share package resolution with cabal (don't invent our own stuff -
because it will always be a lot of work and be totally different)
AFAIK Shea has added a way to load .dll functions. I think I remember it
is possible to call Haskell from C code. Thus what about collaborating
on the implementation sketched above?
It would serve as "sample" which could be adopted for the other
universes (perl/python/ruby/java/scala/rust/vim/emacs/whatever).
Thus how could usage look like?
haskellPackages {
hackage-dbs: [
"http://some-mirror/version/2014-12-10-hackage-packages.tar.gz")
"my custom stuff"
]
resolve: "bytestring"
}
Due to referencing a hackage like database by date it should be
deterministic.
Fetching all versions of a package could be done by API (HTTP) or such -
thus downloading hackage would no longer be necessary.
Thoughts?
This is the next thing I'd try trying to learn from hack-nix.
For all of you who don't know what hack-nix is: Its a brute for
dependency solver written in Nix reading a hackage database which was
serialized to a .nix file doing exactly what Peter wants to implement:
Latest versions + some manually added older versions to make packages
resolve. Additionally its easy to add your own packages (eg dev
versions) and call the solver as well as patch packages (eg .cabal
files, especially its dependency information) before turning it into a
huge .nix file.
You can find a short description https://nixos.org/wiki/Nixpkgs-haskell-overlay
It was meant to be a proof of concept. Now I'd like to ask you whether
you would prefer joining a common effort which is most likely to work.
Its too painful to role my own solutions for everything (haskell, ruby
overlay etc - even though it often works nicely - and fails due to lack
of man power).
Peter: Please comment on the proposal, I'd rather join than keeping my
own stuff, but your attempt just seems to be another "hack-nix" with all
of its problems.
Who would join implementing the design I've sketched above?
Live is too short IMHO. My point of view might be limited - thus if I
make any bad assumptions please tell me.
Marc Weber
More information about the nix-dev
mailing list