使用 nix 和 direnv 配置开发环境
nix flake
使用 nix flake 可以用来管理开发环境,一个范例代码如下:
.flake.nix
{
description = "Nix shell";
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 = import nixpkgs { inherit system; };
in
{
devShell = pkgs.mkShell {
buildInputs = [
pkgs.pkg-config (1)
pkgs.openssl
];
shellHook = ''
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${pkgs.openssl.out}/lib (2)
'';
};
});
}
1 | 使用内置的 pkg-config 以使用 nix 安装的库。 |
2 | 默认情况下,shellHook 中指向的是 pkgs.openssl.bin,此包中没有所需的库。因此手动指向 pkgs.opessl.out。 |
之后执行 nix develop --unpack
可以进入开发环境。
direnv
direnv 用于在进入目录后自动执行相关操作。在安装 direnv 后,在项目路径下添加
.envrc
use flake