声明式、可复现的系统配置与开发环境——彻底告别"在我机器上能跑"的时代
每个开发者都遭遇过这样的噩梦:在 A 机器上完美运行的代码,到了 B 机器就报错;升级一个包,另一个包的依赖就崩溃;想回滚系统状态,却发现无从下手。这不是你的问题——传统包管理(apt、brew、pip)本质上是可变的、有状态的,注定会制造"依赖地狱"。
Nix 用一个根本性的思路解决这一切:将包管理变成纯函数。每个包都有基于输入内容计算出的哈希路径(/nix/store/abc123-nodejs-20.11.0),不同版本共存互不干扰,依赖完全隔离。NixOS 更进一步,将整个操作系统的配置声明在一个文件里——重建、回滚、多机同步,全部一键完成。
本教程从 Nix 哲学到工程实践,覆盖 Nix 语言、开发环境、NixOS 配置、Flakes、Home Manager 直至 CI/CD 与多机器管理,带你掌握这门被誉为"包管理终极形态"的技艺。
Nix 生态六大支柱,从开发环境到整个系统
相同输入永远产生相同输出,/nix/store 哈希路径保证多版本共存、零冲突。
整个操作系统状态写入 configuration.nix,一条命令重建或回滚任意历史状态。
nix shell / nix develop 按项目隔离依赖,进目录自动激活,彻底告别全局污染。
flake.lock 像 package-lock.json 一样锁定所有依赖版本,跨机器 100% 一致。
用 Nix 声明式管理 dotfiles、Shell 配置、编辑器插件,跨机器同步用户环境。
nix build 构建 Docker 镜像无需 Dockerfile,deploy-rs 远程部署 NixOS 集群。
从 Nix 哲学到多机管理,完整的声明式系统学习路径
传统包管理的痛点,Nix 纯函数式解决方案,Derivation、Store Path、Closure 核心概念,Nix 生态全景,安装 Nix。
nix search/shell/run/profile,nix-env 经典命令,Nixpkgs 稳定版与 unstable,GC 垃圾回收,旧代清理。
纯函数式惰性求值,attrset 与 list,函数与柯里化,let/with/import,builtins 内置函数,写第一个 derivation。
shell.nix 传统方式,nix develop(Flakes),mkShell,direnv + nix-direnv 自动激活,多语言开发环境实战。
NixOS 安装,configuration.nix 结构,系统包、服务、用户、网络配置,nixos-rebuild switch,原子回滚。
NixOS 模块 options + config 范式,自定义模块,Nginx、PostgreSQL、Docker 服务配置,lib.mkIf/mkEnableOption。
Flakes 解决频道不可复现,flake.nix 结构,flake.lock 依赖锁定,packages/devShells/nixosConfigurations,迁移实战。
管理 dotfiles 与用户配置,home.nix,Git/Zsh/Neovim/Tmux 声明式配置,文件管理,dotfiles 完全 Nix 化。
GitHub Actions + Nix,Cachix 二进制缓存,nix build 构建,dockerTools 无 Dockerfile 制作镜像,交叉编译。
deploy-rs/nixos-anywhere 远程部署,colmena 集群管理,sops-nix 加密 secrets,模块化配置,学习路径规划。