Skip to content

Commit 9621d93

Browse files
committed
Add description for pkgconfigSelector
1 parent 0e3417a commit 9621d93

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

changelog.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,36 @@
11
This file contains a summary of changes to Haskell.nix and `nix-tools`
22
that will impact users.
33

4+
## Sep 6, 2022
5+
* A `pkgconfigSelector` must now be passed to cabal projects that have
6+
`pkgconfig-depends`. Use the pkg-config names. For instance if the
7+
project uses `gi-gtk` pass:
8+
```
9+
pkgconfigSelector = p: [ p."gtk+-3.0" p."gobject-introspection-1.0" ];
10+
```
11+
The dependencies of gtk will be included automatically.
12+
13+
Why?
14+
15+
Cabal 3.8 fixes a bug https://github.com/haskell/cabal/issues/6771
16+
that haskell.nix relied on (probably wrongly), to create a plan
17+
for a haskell project without knowing the pkg-config versions
18+
available ahead of time.
19+
20+
This was probably a bad idea.
21+
22+
We could try to provide every pkg-config derivation in nixpkgs to
23+
the derivation that generates the cabal plan. Unfortunately:
24+
* That would introduce a massive dependency tree to the plan-nix
25+
dervaition.
26+
* Some of those packages may not build.
27+
28+
The `pkgconfigSelector` allows haskell.nix to filter out only the
29+
packages we need from the available map (`lib/pkgconf-nixpkgs-map.nix`).
30+
31+
It should be thought of as the haskell.nix equivalent of installing
32+
your pkg-config dependencies before running `cabal build`.
33+
434
## Jul 27, 2022
535
* Removed reliance on `builtins.currentSystem`. It was used it to provide
636
`pkgs.evalPackages` via an overlay that it used to run derivations

modules/cabal-project.nix

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,15 @@ in {
133133
pkgconfigSelector = mkOption {
134134
type = unspecified;
135135
default = (_: []);
136+
description = ''
137+
Choose the pkg-config packages that should be made available to
138+
cabal configure. Use the pkg-config names. For instance if the
139+
project uses `gi-gtk` pass:
140+
```
141+
pkgconfigSelector = p: [ p."gtk+-3.0" p."gobject-introspection-1.0" ];
142+
```
143+
The dependencies of gtk will be included automatically.
144+
'';
136145
};
137146
};
138147
}

0 commit comments

Comments
 (0)