1# Mapping non-Haskell dependencies to Nixpkgs
3Cabal files may contain dependencies to external non-Haskell
6* [`build-tool-depends`](https://cabal.readthedocs.io/en/latest/cabal-package.html#pkg-field-build-tool-depends)
7* [`pkgconfig-depends`](https://cabal.readthedocs.io/en/latest/cabal-package.html#pkg-field-pkgconfig-depends)
8* [`frameworks`](https://cabal.readthedocs.io/en/latest/cabal-package.html#pkg-field-frameworks)
9* [`extra-libraries`](https://cabal.readthedocs.io/en/latest/cabal-package.html#pkg-field-extra-libraries)
11If there is a `pkgs` attribute in Nixpkgs that matches the name given
12in the Cabal file, then it will be added as a dependency (see the
13output of `cabal-to-nix`). Otherwise, there needs to be a mapping from
14Cabal file names (decided by the package author) to Nix package
19The user may solve it by themself by overriding Nixpkgs and adding a
20package alias. For example:
32### Replace libraries of components
34If a component is missing a dependency it can be added via modules. For example:
37project = pkgs.haskell-nix.project' {
39 compiler-nix-name = "ghc8102";
41 # Replace `extra-libraries` dependencies
42 packages.X11.components.library.libs = pkgs.lib.mkForce (with pkgs.xorg;
43 [ libX11 libXrandr libXext libXScrnSaver libXinerama ]);
48### Mapping in Haskell.nix
50Alternatively, if the name is commonly used, an alias can be added to
51the Haskell.nix sources, so that it's solved for all users.
53* [`lib/pkgconf-nixpkgs-map.nix`](https://github.com/input-output-hk/haskell.nix/blob/master/lib/pkgconf-nixpkgs-map.nix)
54 — for `pkgconfig-depends`.
56 Each mapping entry is a list of packages.
58* [`lib/system-nixpkgs-map.nix`](https://github.com/input-output-hk/haskell.nix/blob/master/lib/system-nixpkgs-map.nix)
59 — for `build-tool-depends`, `frameworks`, `extra-libraries`, etc.
61 Each name can be mapped to:
62 1. A single package from nixkpgs.
63 2. `null` — eliminates the dependency
64 3. A list of packages — sometimes needed for dependencies such as `X11`.
67 Please go ahead and open a [pull request](https://github.com/input-output-hk/haskell.nix/pulls)
68 to improve the package mappings.
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list