nix flake에서 설치한 package 위치 손쉽게(?) 얻기

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"
          '';
        };
      });
}