Not related to your central goals (which are awesome), but can we take this opportunity to dashify attribute names as well?
> On Dec 12, 2014, at 2:38 PM, Peter Simons <[email protected]> wrote: > > Hi guys, > > in the spirit of "release early, release often", I'd like to inform everyone > with an interest in the Haskell part of Nixpkgs about the ongoing effort to > re-factor both cabal2nix and the code in Nixpkgs to achieve ... > > 1) support for all of Hackage, > > 2) death to the ghc-wrapper, and > > 3) easier and more reliably customization of the package set. > > The Nixpkgs code lives in the "haskell-ng" branch of my Github clone [1]. In > that branch, Haskell related code is in pkgs/development/haskell-modules: > > - 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. (I > need to add code to hackage2nix to configure the choice of generated > packages conveniently.) > > Note that a significant portion of those builds will not succeed because > they depend on system libraries that we don't have. Finding those broken > packages and fixing them (or adding meta.broken = true) will need a > community effort once this setup has stabilized. The Hydra job [3] builds > these packages to give us feedback on the state of affairs. > > - default.nix imports the contents from hackage-packages.nix, applies (a > sequence of) configuration functions, and makes the result available as a > "haskellPackages" set suitable for nix-env and friends. The purpose of those > configurations is to adapt the package set for different compiler versions, > i.e. you can think of this file as a simplified version of what used to be > haskell-defaults.nix. > > In the new setup, it will no longer be possible to install Haskell libraries > by name: you must access them by their attribute path. This is necessary for > performance reasons, because nix-env won't like us to bring an additional > 7000+ packages into scope. The big advantage of this change is that we can > drop all that freaky name-mangling as package names no longer need to be > unique in the global scope. > > - generic-builder.nix is a vastly simplified build function for Haskell > packages. It's main feature is that it works with plain GHC -- meaning that > ghc-wrapper is no longer required anywhere in Nixpkgs. Furthermore, builds > are simple non-recursive attribute sets now; there is no more of that > recursive tying-the-knot stuff the old 'cabal' function used to require. > >> From the user's point of view, there are two important changes: > > 1) No more ghc-wrapper, i.e. we no longer support non-deterministic setups > where people install random packages into random places and expect them to > know about each other. Instead, 'ghcWithPackages' is the tool of choice to > create a deterministic Haskell environment. I plan to add support to > cabal2nix for generating appropriate build instructions for use with > nix-shell. It might also be nice to have a tool "nix-cabal-shall" that > combines cabal2nix and nix-shell into one. > > 2) Haskell packages support 'deepOverride'. Suppose package 'foo' requires a > non-default version of 'binary'. Then > > foo.deepOverride { binary = self.binary_0_4_0_1; }; > > gives a derivation that uses this particular version to build 'foo' as well > as all of foo's build inputs. > > The current state of the repository is "work in progress". I don't use this > code for production yet, and neither should you. :-) I just wanted to share > the > effort to keep everyone in the loop and to encourage you to provide feedback. > > Best regards, > Peter > > > [1] https://github.com/peti/nixpkgs/tree/haskell-ng > [2] https://github.com/NixOS/cabal2nix/tree/v2.x > [3] http://hydra.nixos.org/jobset/nixpkgs/haskell-updates > > _______________________________________________ > nix-dev mailing list > [email protected] > http://lists.science.uu.nl/mailman/listinfo/nix-dev _______________________________________________ nix-dev mailing list [email protected] http://lists.science.uu.nl/mailman/listinfo/nix-dev
