git.iko.soy/typeable/cabal2nix
on v2.14.1 help sign in
60 lines 2.6 kB history raw
1#+TITLE: The Future of Haskell Packaging in Nix
3* DONE Use Function Application To Escape Override Hell
4* DONE Guarantee Consistent Builds and Obsolete =overrideScope=
5* DONE Map Cabal Files To Nix Without Information Loss
6* TODO Implement Proper Dependency Resolution
7* TODO Develop Intelligent Policies for Post-processing and Patching
8* TODO Users Need a Configuration Mechanism That Is Both Simpler and More Powerful
9* TODO Deal With Infinite Recursions in Test Dependencies
10* DONE Set up a Sufficiently Powerful Build Farm
11* TODO Define and Publish Processes for Managing the Package Set(s)
12* DONE Publish All of Hackage
14 We publish 10,745 package versions out of 60,504 available ones, i.e. 18% of
15 Hackage. Those packages are selected as follows: we distribute the latest
16 version of every package --- 8,764 builds --- plus an additional 1,981 older
17 versions that are required by the various LTS Haskell and Stackage Nightly
18 package sets we support.
20* TODO Generate Differential Build Expressions
21* TODO Generate Build Expressions for Hydra
22* TODO Add Support for Mega Repositories to =cabal2nix=
23* TODO Support Building With =stack=
24* TODO Support multi-output derivations
26 Put static, shared, and profiled library variants into separate output so
27 that we can build everything without forcing users to download all that stuff
28 if they just want the regular build.
29* TODO Write a =ghcWithPackages= combinator to create conglomerate workspaces
31 Thomas Strobel <thomas@strobel.eu> suggested this:
33 I want to hack on a set of libraries, say transformers and mtl, and I'd like
34 to do that in an environment that contains criterion, QuickCheck, etc. So I
35 run
37 stackWithPackages (hp: {
38 sources = with hp; [transformers mtl];
39 env = with hp; [criterion QuickCheck];
40 })
42 This should create a conglomerate workspace / nix-shell environment that
43 contains the source code for transformers and lens in subdirectories plus a
44 stack.yaml file that builds them both:
46 stack.yaml
47 mtl / ...
48 transformers ...
50 The environment would contain a GHC with criterion and QuickCheck registered
51 in appropriate LTS versions so that the stack builds don't compile anything
52 except the packages I'm hacking on.
54 The value of env could possibly be auto-determined from the dependencies of
55 transformers and mtl.
56* TODO Solve the too-eager evaluation of meta.broken
58 We'd like to mark builds that are known to fail with `meta.broken = true`,
59 but this is impractical because users have no way to override that setting if
60 they discover that the package has been fixed in a new version.