Haskell in Nixpkgs/NixOS | 682 Members | |
| For discussions and questions about Haskell with Nix, cabal2nix and haskellPackages in nixpkgs | Current Docs: https://nixos.org/manual/nixpkgs/unstable/#haskell | Current PR: https://github.com/nixos/nixpkgs/pulls?q=is%3Apr+is%3Aopen+head%3Ahaskell-updates | Maintainer Docs: https://github.com/NixOS/nixpkgs/blob/haskell-updates/pkgs/development/haskell-modules/HACKING.md | More Nix: #community:nixos.org | More Haskell: #haskell-space:matrix.org | Merger Schedule: https://cloud.maralorn.de/apps/calendar/p/H6migHmKX7xHoTFa/dayGridMonth/now | Join #haskell.nix:libera.chat for question about the alternative haskell.nix infrastructure | 134 Servers |
| Sender | Message | Time |
|---|---|---|
| 28 Nov 2025 | ||
it'll start like this: | 16:31:40 | |
actually, this seems more like a buildEnv issue than Haskell (it's just only Haskell that has doc outputs for every library out there) | 16:35:47 | |
| Acid Bong: Yeah, you are right. | 17:05:07 | |
Maybe we should add a variant of cachix that uses justStaticExecutables instead of enableSeparateBinOutput | 17:05:47 | |
| i seem to be not alone in this: https://github.com/NixOS/nixpkgs/issues/316768 | 17:07:32 | |
| maybe do that for all top-level standalone haskell packages? | 17:07:58 | |
| although Nixfmt is fine already | 17:09:12 | |
| No, I do not think they are the same issue. Actually, from a certain perspective, your "issue" is not an issue. It works as expected: you have documentation.doc.enable = true so cachix doc is pulled in | 17:10:44 | |
because it uses justStaticExecutables already | 17:11:39 | |
| not cachix's doc, but all its dependencies' docs | 17:12:27 | |
| * not only cachix's doc, but all its dependencies' docs | 17:12:37 | |
| and the second part is exactly undesirable | 17:12:48 | |
| haha, its doc depends on its dependencies' doc | 17:15:01 | |
| You can go to its dependencies' doc by clicking hyperlinks from its doc | 17:16:39 | |
| ah, I thought buildEnv pulls docs recursively | 17:16:41 | |
| It's a feature! | 17:16:44 | |
| 29 Nov 2025 | ||
| linj: re: justStaticExecutables. This is interesting. I have been advocating to replace justStaticExecutables with enableSeparateBinOutput because I was not aware of any downsides of the later (when it works. It can cause build errors because of problems with cabal). And I always found it more elegant to reuse the library output instead of just deleting it. No I am wondering whether that was a bad direction. | 00:09:44 | |
| * linj: re: justStaticExecutables. This is interesting. I have been advocating to replace justStaticExecutables with enableSeparateBinOutput because I was not aware of any downsides of the later (when it works. It can cause build errors because of problems with cabal). And I always found it more elegant to reuse the library output instead of just deleting it. Now I am wondering whether that was a bad direction. | 00:09:49 | |
| It is also kinda doubtful that the library docs of cachix are actually usefull docs for users of the executable. | 00:10:33 | |
In reply to @maralorn:maralorn.deyeah, cuz if they want Cachix the library, they can get haskellPackages.cachix (or shellFor {packages = h: [h.cachix];}) | 05:27:15 | |
| Wolfgang Walther: I could make a cabal2nix release for the next iteration, so end users on stable cabal2nix can benefit from _type etc. Not a big priority since it's somewhat fringe, but would be good to do eventually | 14:46:16 | |
| No objections! | 18:03:35 | |
I’m having an issue with using a cabal-version other than the one included with GHC. There is a Cabal bug that was fixed in 3.10.3. I updated my Cabal files to include cabal-version: 3.10.3, but my packages support back to GHC 9.6.1 (and the first with Cabal 3.10.3 is GHC 9.8.3). I’ve tried overriding Cabal/Cabal-syntax/cabal-install for GHCs older than 9.8.3, but I still get the complaint “Unsupported cabal-version 3.10.3.” Interestingly, the workaround I managed to find is if I override Cabal to 3.10.3.0, but let cabal-version be set to something older, it works. Maybe this is actually the correct thing – the Cabal file can be parsed with an older Cabal, but Setup requires the non-broken one? | 18:12:15 | |
| yup, that works, opened 466253 | 18:19:51 | |
In reply to @sellout:matrix.orgIt sounds like you should be using setup-depends: Cabal >= 3.10.3.0 because I think cabal-version is for the syntax and supported keywords in the Cabal package declaration.https://cabal.readthedocs.io/en/3.4/cabal-package.html#pkg-field-custom-setup-setup-depends | 18:37:52 | |
I’m using setup-depends already (because of another Cabal bug), and yeah, that plus the Cabal override is my workaround, which /does/ work. It’s good to hear that that distinguishing the two references to Cabal is useful. But it does leave a few open questions 1. Nix (cabal2nix?) doesn’t pay any attention to setup-depends bounds (if I don’t override Cabal, it complains that it couldn’t load the plugin, not that the bound wasn’t satisfied – which is bad for discovery); 2. my Setup doesn’t actually have a direct dependency on Cabal, so it’s odd that I have to specify it at all, and 3. it still doesn’t help in the case that I would want to have a Cabal file with syntax from a Cabal newer than the one shipped with the corresponding GHC. | 19:44:22 | |
Nix doesn't use cabal-install when building. It instead compiles Setup.hs directly. That may be why setup-depends bounds are ignored. | 20:34:53 | |
In reply to @sellout:matrix.org Nixpkgs always uses a specific version of every package. It's still not entirely clear what you're trying to do. Note that | 20:43:06 | |
| 30 Nov 2025 | ||
Ok, thanks, this is helpful. I didn’t realize the cabal-version couldn’t be an arbitrary Cabal version. I also didn’t realize you could use custom-setup with build-type: Simple (the manual explicitly says “A custom-setup stanza is required for Custom and Hooks build-type, and will be ignored (with a warning) for other build types.” – but it’s not ignored, thankfully), so I was thinking the cabal-version would be the only way inform users that they need to build with a particular Cabal version. | 02:03:48 | |
What I’m trying to do is put ghc-options: -fplugin=NoRecursion in a Cabal file, but that’s broken in the Cabal versions bundled with GHC 9.6.1–9.8.2. | 02:09:07 | |