Nix 入门教程:5 步创建可复现开发环境
Nix 是一个强大的软件包管理器和构建系统,它能为你提供完全可复现的开发环境。无论你是初学者还是经验丰富的开发者,本文带你快速掌握 Nix 的核心功能,通过 5 个简单步骤即可创建你的第一个可复现开发环境!
为什么需要可复现开发环境?
在传统的开发工作流中,不同机器上的环境差异常常导致'在我机器上能运行'的问题。Nix 通过声明式配置解决了这一痛点,确保你的开发环境在任何地方都能完全一致地工作。
第一步:安装 Nix 包管理器
开始之前,你需要在系统上安装 Nix。Nix 支持 Linux、macOS 和 Windows(通过 WSL2):
# Linux 系统(推荐多用户安装)
curl -L https://nixos.org/nix/install | sh -s -- --daemon
# macOS 系统
curl -L https://nixos.org/nix/install | sh
# Windows WSL2
curl -L https://nixos.org/nix/install | sh -s -- --no-daemon
安装完成后,重启终端或运行 source /etc/profile.d/nix.sh 来加载 Nix 环境。
第二步:使用 Nix Shell 创建临时环境
Nix Shell 是 Nix 最实用的功能之一,它能为你创建临时的、隔离的开发环境。让我们创建一个包含 Python 和 Node.js 的环境:
nix-shell -p python3 nodejs git
这个命令会创建一个包含 Python 3、Node.js 和 Git 的临时环境。退出 shell 后,这些软件包不会污染你的系统环境。
第三步:创建你的第一个 Shell 配置文件
对于更复杂的开发环境,你可以创建 shell.nix 文件来声明依赖。在项目根目录创建 shell.nix:
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = [ pkgs.python3 pkgs.nodejs-18_x pkgs.git pkgs.curl ];
shellHook = ''
echo "🎉 欢迎使用 Nix 开发环境!"
echo "Python 版本:$(python3 --version)"
echo "Node.js 版本:$(node --version)"
'';
}
这个配置文件定义了你的开发环境所需的所有依赖项和启动时的欢迎信息。
第四步:使用 Direnv 实现环境自动加载
Direnv 是一个强大的工具,它能根据当前目录自动加载和卸载环境变量。结合 Nix 使用,可以让你无缝切换不同项目的开发环境:
- 首先安装 Direnv:
nix-shell -p direnv
- 在项目目录创建
.envrc文件:
use nix
- 允许 Direnv 加载此配置:
direnv allow
现在,每次进入项目目录时,Nix 环境都会自动激活;离开时自动清理。
第五步:创建完全可复现的脚本
Nix 不仅能管理开发环境,还能创建完全可复现的脚本。创建一个 script.nix 文件:
{ pkgs ? import <nixpkgs> {} }:
pkgs.writeShellScriptBin "my-script" ''
#!/usr/bin/env bash
echo "这是一个完全可复现的脚本!"
echo "Python 版本:$(python3 --version)"
echo "当前时间:$(date)"
# 使用 Nix 提供的工具
${pkgs.curl}/bin/curl --version
${pkgs.jq}/bin/jq --version
''

