Nix / NixOS

Nix 包管理与 NixOS 配置

声明式、可复现的系统配置与开发环境——彻底告别"在我机器上能跑"的时代

声明式配置
100% 可复现
原子回滚
Flakes 锁定
10 核心章节
100% 可复现构建
80k+ Nixpkgs 包数量

为什么 Nix 是包管理的终极答案?

每个开发者都遭遇过这样的噩梦:在 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 按项目隔离依赖,进目录自动激活,彻底告别全局污染。

📦

Flakes 精确锁定

flake.lock 像 package-lock.json 一样锁定所有依赖版本,跨机器 100% 一致。

🏠

Home Manager

用 Nix 声明式管理 dotfiles、Shell 配置、编辑器插件,跨机器同步用户环境。

🚀

CI/CD 与多机管理

nix build 构建 Docker 镜像无需 Dockerfile,deploy-rs 远程部署 NixOS 集群。

课程目录

从 Nix 哲学到多机管理,完整的声明式系统学习路径

Chapter 01

Nix 哲学与核心概念

传统包管理的痛点,Nix 纯函数式解决方案,Derivation、Store Path、Closure 核心概念,Nix 生态全景,安装 Nix。

哲学 Store 安装
Chapter 02

Nix 包管理器基础

nix search/shell/run/profile,nix-env 经典命令,Nixpkgs 稳定版与 unstable,GC 垃圾回收,旧代清理。

nix shell nix run GC
Chapter 03

Nix 语言入门

纯函数式惰性求值,attrset 与 list,函数与柯里化,let/with/import,builtins 内置函数,写第一个 derivation。

Nix 语言 函数式 derivation
Chapter 04

Nix Shell 开发环境

shell.nix 传统方式,nix develop(Flakes),mkShell,direnv + nix-direnv 自动激活,多语言开发环境实战。

mkShell direnv 开发环境
Chapter 05

NixOS 系统配置基础

NixOS 安装,configuration.nix 结构,系统包、服务、用户、网络配置,nixos-rebuild switch,原子回滚。

NixOS configuration.nix 回滚
Chapter 06

NixOS 服务与模块系统

NixOS 模块 options + config 范式,自定义模块,Nginx、PostgreSQL、Docker 服务配置,lib.mkIf/mkEnableOption。

模块系统 Nginx 服务
Chapter 07

Flakes——现代 Nix

Flakes 解决频道不可复现,flake.nix 结构,flake.lock 依赖锁定,packages/devShells/nixosConfigurations,迁移实战。

Flakes flake.lock inputs
Chapter 08

Home Manager 用户环境管理

管理 dotfiles 与用户配置,home.nix,Git/Zsh/Neovim/Tmux 声明式配置,文件管理,dotfiles 完全 Nix 化。

Home Manager dotfiles home.nix
Chapter 09

Nix 在 CI/CD 中的应用

GitHub Actions + Nix,Cachix 二进制缓存,nix build 构建,dockerTools 无 Dockerfile 制作镜像,交叉编译。

CI/CD Cachix Docker
Chapter 10

多机器管理与高级实践

deploy-rs/nixos-anywhere 远程部署,colmena 集群管理,sops-nix 加密 secrets,模块化配置,学习路径规划。

deploy-rs sops-nix colmena