I feel like I must be missing something, because everytime I try and override a package with ghcWithPackages, it ends up rebuilding every Haskell library. For instance, I have this shell.nix < https://gist.github.com/purefn/026625ad116b05ff9a8d>.
In this case, I've overridden the AesonBson package with a specific commit. In other cases, I might want to add an additional package, such as in this response on SO < https://stackoverflow.com/questions/27968909/how-to-get-cabal-and-nix-work-together/27970684#27970684 >. In both scenarios, instead of just building the newly included or modified libraries, every package gets rebuilt. Is there a way to accomplish the same thing and avoid the long rebuild cycles? Thanks, Rich On Tue, Jan 13, 2015 at 4:50 AM, Peter Simons <[email protected]> wrote: > Hi Thomas, > > > How can I override a package to enable profiling? > > commit [1] adds helper functions that allow referring to any package "foo" > as "enableLibraryProfiling foo" to get a variant that supports profiling. > > If you want to enable profiling for *all* packages, then you can replace > the 'mkDerivation' function with one that enables the feature by default, > i.e. by adding the snippet > > | haskellPackageOverrides = self: super: { > | mkDerivation = expr: super.mkDerivation (expr // { > enableLibraryProfiling = true; }); > | }; > > to your ~/.nixpkgs/config.nix file. > > > > Is there an obvious way in general to apply the same override to a > > package and all its dependencies? > > No, we can't do that yet. But we can do something else, that's almost > equally goos: we can modify the package set in which a package (and all > its dependencies) are evaluated. Just add > > | { > | packageOverrides = super: let self = super.pkgs; in > | { > | foo = self.haskellngPackages.foo.overrideScope (self: super: { > | mkDerivation = expr: super.mkDerivation (expr // { > enableLibraryProfiling = true; }); > | }); > | } > | } > > to your ~/.nixpkgs/config.nix to get a variant of "foo" that has profiling > enabled in all its dependencies as well. If you take that stuff to the > extreme, then it looks like [2]. > > I hope this helps, > Peter > > [1] > https://github.com/NixOS/nixpkgs/commit/e4a68f0b98c28319913a4f2104ddb0524262f390 > [2] > https://github.com/NixOS/nixpkgs/blob/9e114ccd2693daab6bca3c05674c549884097925/pkgs/development/haskell-modules/configuration-ghc-7.8.x.nix#L43-87 > > _______________________________________________ > 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
