Haskell in Nixpkgs/NixOS | 721 Members | |
| For discussions and questions about Haskell with Nix, cabal2nix and haskellPackages in nixpkgs | Current Docs: https://haskell4nix.readthedocs.io/ | 145 Servers |
| Sender | Message | Time |
|---|---|---|
| 11 May 2025 | ||
perhaps yes, because "your/own/module" will more than likely want to have your own dependencies. | 21:53:40 | |
| I mean, if you're not calling cabal2nix or so on it, then the build tool will grab whatever is missing in the non nix way | 21:54:17 | |
| right, let me think a little. not sure how to incorporate nix nicely... | 21:55:20 | |
| It seems that fundamentally I have some wrong expectation. I was hoping to deliver a developer experience such that they don't have to rebuild the packages, which may take few minutes, the first time they use my tool. | 22:31:09 | |
assuming you're able to use a binary cache, you can potentially limit to just having to build once through nixConfig.extra-substituters etc | 22:34:17 | |
| that's the start, yes. But then I need to be able to use those built packages again in a cabal project; because I don't intend to push users to build their project with cabal2nix. | 22:35:14 | |
| hmm, but maybe I can... | 22:37:17 | |
| In a new derivation, I copy bunch of package.conf.d/*.conf to a new folder, and use ghc-pkg --package-db that/new/folder recache | 22:41:37 | |
| * In a new derivation, I copy a bunch of package.conf.d/*.conf to a new folder, and use ghc-pkg --package-db that/new/folder recache. That should do it, for my use case. | 22:41:52 | |
| * In a new derivation, I copy a bunch of package.conf.d/*.conf to a new folder, and use ghc-pkg --package-db that/new/folder recache. That should do it, for my use case. I tried locally, it seems working. | 22:42:14 | |
| 12 May 2025 | ||
| hellwolf: that seems kinda hacky, and might not be very portable (enabling debugging / profiling will trigger another recompile anyway too), is there a reason why you don't want others compling the code on the first run? seems like it would cause more headaches than the 2min first run compile time. | 01:20:13 | |
| Indeed. I might give up this for now. It's not 2 minutes though, for a fresh starter, it's about compiling all the dependencies included. And i just realized that nix is an all or nothing solution: if i want the user to take advantage of the cache, they'd use nix to build and manage dependencies too... | 06:25:10 | |
| * Indeed. I might give up this for now. It's not 2 minutes though, for a fresh starter, it's about compiling all the dependencies included. And i just realized that nix is an all or nothing solution: if i want the user to take advantage of the cache, they'd use nix to build and manage dependencies too... | 06:25:29 | |
| can nixpkgs haskellPackages output anything similar to https://ghc.gitlab.haskell.org/head.hackage/ ? | 06:35:49 | |
| That'd be a use case for me: since I tested the entire suite with a specific version of nixpkgs, I should at least let users be able to pin to that in cabal in a way similar to what head.hackage does. | 06:45:10 | |
| hellwolf: head.hackage is an entire cabal index, it doesn't pin anything, that's done by cabal freeze files (sort of) | 09:13:46 | |
| I understand. I guess my question is can we freeze haskellPackages, including the one that I customize locally? | 09:17:21 | |
| * I understand. I guess my question is can we freeze haskellPackages for a cabal project to consume, including the one that I customize locally? | 09:17:36 | |
| Turning a haskell package set into a cabal freeze file sounds possible in theory I guess | 09:24:37 | |
| (I don't know the cabal freeze format at all actually) | 09:24:56 | |
| it seems not hard., and I think it's a very good usecase for distributing "known working" package set | 10:14:08 | |
| I am working on a DSL kit, and I don't want to deal with downstream's complain that their randomly tracked cabal package set is broken. | 10:14:43 | |
| I want to have a control to eliminate such a support need. Of course, it has its tradeoffs. But I am quite happy with the general up-to-date-ness of nixpkgs haskellPackages | 10:15:25 | |
| If you look at head.package, or downstream needs to do is this snippets:
we could have a https://ghc.gitlab.haskell.org/head.haskellPackages/ | 10:16:34 | |
| * If you look at head.package, or downstream needs to do is this snippets:
we could have a https://ghc.gitlab.haskell.org/head.haskellPackages/ e.g. | 10:16:36 | |
| 10:33:13 | ||
| head.hackage is a few things: a set of patches, a hackage overlay generated from those patches, scripts to test GHC against the patches and some other packages. I think we often overemphasize the hackage overlay, since that's what downstream users consume. But we do fix package versions through the patches we have and the other packages we specify | 10:47:48 | |
| And that's what ends up in the freeze file we output | 10:49:39 | |
| You might be interested in https://github.com/input-output-hk/foliage, head.hackage is soon switching over to using that to generate the Hackage overlay | 10:50:38 | |
| hellwolf: You might also be interested in looking at https://horizon-haskell.net although I'm not sure it addresses your problem specifically. | 11:14:14 | |