https://github.com/bgamari/nix-pkgconfig
A pkg-config wrapper exposing nixpkgs packages
https://github.com/bgamari/nix-pkgconfig
Last synced: 12 months ago
JSON representation
A pkg-config wrapper exposing nixpkgs packages
- Host: GitHub
- URL: https://github.com/bgamari/nix-pkgconfig
- Owner: bgamari
- Created: 2018-11-08T21:06:24.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2021-11-27T03:04:46.000Z (over 4 years ago)
- Last Synced: 2025-07-31T12:33:18.528Z (12 months ago)
- Language: Python
- Homepage:
- Size: 23.4 KB
- Stars: 26
- Watchers: 4
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.mkd
Awesome Lists containing this project
README
# nix-pkgconfig
`nix-pkgconfig` is a wrapper for `pkg-config` allowing nix-unaware applications (e.g.
`cabal-install`) to use packages from `nixpkgs` (to satisfy native library
dependencies).
## Getting started
`nix-pkgconfig` relies on a database of mappings between `pkg-config` `.pc`
files and the `nixpkgs` attribute they are provided by. A minimal example
database (`default-database.json`) is included which can be installed via:
```
$ mkdir -p $XDG_CONFIG_HOME/nix-pkgconfig
$ cp default-database.json $XDG_CONFIG_HOME/nix-pkgconfig/001-default.json
```
However, it is recommended that you build a more complete database covering
nearly all of `nixpkgs`. This can be built using the `build-database.sh` script:
```
$ ./build-database.sh
```
A `nix` derivation is provided through `default.nix` which creates a wrapper
for the `pkg-config` script, enabling convenient use on NixOS:
```
$ nix build -f . --no-link
$ PATH=$(nix eval --raw -f ./default.nix outPath)/bin:$PATH
```
When called the `pkg-config` wrapper will consult the database looking for the
`nix` derivation providing each requested package, build it, and run the
requested `pkg-config` invocation. For instance, we can run:
```
$ pkg-config --cflags libpq
-I/nix/store/53kwps1ndh29wgjjwa7qf06ygvjxfs09-postgresql-9.6.11/include
```
## Usage with cabal-install
To use this with `cabal-install` you may either place `pkg-config` in `PATH` as
described above or explicitly point `cabal` at the `pkg-config` script:
```
cabal new-build --with-pkg-config=$PATH_TO_THIS_REPO/pkg-config
```
Alternatively, you might consider either adding `nix-pkgconfig` to
`environment.systemPackages` or your account's mutable environment (e.g.
`nix-env -i -f .`).
Note that some packages respect the `pkg-config` flag to enable
`pkg-config`-based native library discovery. The included
`cabal.project.local` includes some `project` stanzas to enable the necessary
flags with cabal `new-build`. Copy these into your project's
`cabal.project.local` if you intend on using `nix-pkgconfig`.