!RbXGJhHMsnQcNIDFWN:nixos.org

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/ | More Nix: #community:nixos.org | More Haskell: #haskell-space:matrix.org143 Servers

Load older messages


SenderMessageTime
15 Sep 2025
@alex:tunstall.xyzAlex
In reply to @emilazy:matrix.org
we talked about this recently and I suggested a package set would be interesting for exploring future GHC bootstrap

How should I structure this btw?

Should Nixpkgs expose:

  • Any Hugs-interpreted boot tools (probably not, likely fragile)?
  • Stage 1 compiler built via Hugs (should be as good as a stage 2)?
13:40:43
@emilazy:matrix.orgemilyI didn't realize it was that close to "just" being cabal-installable13:40:46
@emilazy:matrix.orgemilyI assumed you'd need a lot more glue. cool13:40:52
@mangoiv.:matrix.orgMangoIVbut it would for sure require support of cabal upstream, right? I don't think that that's a good idea at all tbh. 13:41:25
@teoc:matrix.orgTeo (he/him) This didn't actually achieve it but we had this MR ages ago: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/5965 13:42:24
@emilazy:matrix.orgemily I would personally only expose a fully bootstrapped one as first-class but it's not my decision to make. probably having a withHugsBootstrap param on the MicroHs derivation and microhs takes microhs as a build input that you override to have withHugsBootstrap or something 13:42:33
@mangoiv.:matrix.orgMangoIVAlso why does hadrian not support proper incremental build support? 13:42:37
@emilazy:matrix.orgemilyI mean whatever makes the Nix simplest really13:42:41
@mangoiv.:matrix.orgMangoIVshake does that out of the box? 13:42:43
@emilazy:matrix.orgemilybut even for bootstrapping GHC I think you'd want the full MicroHs13:42:54
@sternenseemann:systemli.orgsterni (he/him)I guess nothing inherently, it's just that it's an incomplete reimplementation of the old make build system with some arbitrary improvements. It regressed a bunch of stuff that hasn't been fixed to this day. I find it much more unwieldy to work with and understand because it uses kind of fuzzy abstractions and it is hard to inspect what it decides to do internally and even harder to override certain aspects of its behavior. Also there are questionable design decisions like always building an bindist instead of installing directly (this sounds good in theory, but is not really a good idea).13:43:00
@emilazy:matrix.orgemilybecause like, why not be uniform13:43:03
@mangoiv.:matrix.orgMangoIV and you don't get around the freeze-stage-n thing anyway because it's just a user choice of whether or not recompiler the respective boot compiler 13:43:20
@mangoiv.:matrix.orgMangoIVthe tool cannot decide that for you 13:43:27
@teoc:matrix.orgTeo (he/him)My view is that if people want to make it build with cabal-install, then that leads to better code in GHC since we make fewer assumptions. And it just means that stuff gets made nicer13:44:12
@sternenseemann:systemli.orgsterni (he/him)It kind of boils down to that, from a packager's perspective, make is understood software and you know how to work with it and debug it. Hadrian is just too smart and a bit of a black box. I think the motivation was that people were getting scared to change the make build system since it was getting to complicated and unwieldy, but hadrian did not significantly simplify things as far as I can tell.13:44:37
@teoc:matrix.orgTeo (he/him) Yeah good q. I feel like people ran out of steam right? And the main Hadrian person was hired by Jane Street 13:44:43
@sternenseemann:systemli.orgsterni (he/him)I mean all the packages have the semantics of Cabal packages already so you are just simplifying stuff as much as possible if you do that.13:45:08
@mangoiv.:matrix.orgMangoIVbut cabal can indeed not build GHC, can it? 13:45:26
@mangoiv.:matrix.orgMangoIVlike these are required conditions, but not sufficient ones13:45:53
@teoc:matrix.orgTeo (he/him) the IOG folks implemented this, and it required very few changes. Loads of work is required for cabal to have proper cross support but that's separate 13:45:58
@mangoiv.:matrix.orgMangoIVand GHC is in fact special13:46:13
@sternenseemann:systemli.orgsterni (he/him)I would just start with adding a MicroHs package set built with GHC as we don't have hugs and then just iterate on that; maybe add hugs separately, have a hugs package set (if that even makes sense).13:46:17
@teoc:matrix.orgTeo (he/him)mostly because all the tough work had already happened upstream13:46:18
@mangoiv.:matrix.orgMangoIVit's not like it's any other cabal package13:46:19
@mangoiv.:matrix.orgMangoIVthat's for one stage though, right? 13:46:58
@teoc:matrix.orgTeo (he/him) nah they have a cabal project for each stage 13:47:21
@teoc:matrix.orgTeo (he/him)https://github.com/stable-haskell/ghc/pull/94/files13:47:50
@sternenseemann:systemli.orgsterni (he/him)Yeah, it seems the wiring it up is the problem at the moment with cabal(-install) alone, but Nixpkgs has an easier time there.13:47:58
@mangoiv.:matrix.orgMangoIVI see- so the idea is to just have some script that wrap around cabal 13:48:03

Show newer messages


Back to Room ListRoom Version: 6