nix flake를 사용해서 개발 환경 구성 시 컴파일 옵션을 셋팅해야할 필요가 있다. 이 경우 패키지에 포함된 헤더들 혹은 라이브러리를 접근하기 위해 경로가 필요하다. 이럴 때 아래와 같이 사용하면 쉽게 패키지 경로를 확보할 수 있다.
{
description = "sample";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
postgresql
openssl
];
shellHook = ''
# PostgreSQL configuration
export POSTGRESQL_DEV_ROOT="${pkgs.postgresql.dev}"
# SSL configuration
export OPENSSL_ROOT_DIR="${pkgs.openssl}"
# General build configuration
export CFLAGS="-I${pkgs.postgresql.dev}/include -I${pkgs.openssl.dev}/include $CFLAGS"
export LDFLAGS="-L${pkgs.postgresql.dev}/lib -L${pkgs.openssl.out}/lib $LDFLAGS"
'';
};
});
}