使用 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
Last moify: 2022-12-04 15:11:33
Build time:2025-08-18 18:43:08
Powered By asphinx