一本全面、深入、以中文写就的 Nix / NixOS / nixpkgs 参考书。 涵盖思想源流、历史沿革、语言规范、构建机制、操作系统原理与真实打包实例。
本书全部内容由 AI(ZCode / GLM 模型)生成:从全书结构、各章正文到打包实例的逐行注释,均由 AI 撰写;人类作者的角色是提出需求、审阅与修改意见(如增补 home-manager 一章、调整结构等),并做最终把关。请读者据此判断内容的可靠程度:尽管写作过程中尽量以官方手册、NixOS Wiki 与 nixpkgs 真实源码为依据并标注来源,AI 生成内容仍可能存在事实错误与过时细节,使用前请与官方文档交叉验证,发现问题欢迎提 issue。
网络上关于 Nix 生态的优质资料几乎全部是英文:官方手册、NixOS Wiki、nix.dev 教程、nixpkgs 源码注释…… 这为中文用户设下了太高的门槛。本书的目标是把这套知识体系完整地翻译成中文并重新组织: 不仅讲"怎么做",更讲"为什么这么设计",并配以 nixpkgs 仓库中的真实打包源码逐行注释精讲。
想系统学习 Nix/NixOS 的中文用户(从零开始)
已有一定 Linux 使用经验、被"依赖地狱"折磨过的开发者
想给 nixpkgs 贡献包、或在自己公司内部使用 Nix 的工程师
对函数式思想在系统软件领域落地感兴趣的研究者
以上作废:本书实为个人自用的学习笔记与参考手册,顺带公开分享。
全书已完成:46 章 + 4 个附录,共 52 个文件。
- 总计约 16,070 行 / 54.7 万字符(其中中文正文约 14.9 万字,其余为代码与英文术语);
- 按中文技术书籍常规排版(每页约 800–1000 字符)估算,约 550–680 页,满足「不少于 500 页」的目标;
- 打包实例章(36–38)采用 nixpkgs master 分支 2026-08 的真实源码逐行注释(hello、figlet、fzf、ripgrep、requests 为完整逐字源码;linux 内核与 firefox 为结构精讲);
- 语言与打包章节全程标注 ✅ 现行规范 /
⚠️ 过渡机制 / ⛔ 已弃用写法(finalAttrs、SRI 哈希、nixfmt-rfc-style、flakes 新命令等)。
- 本书中命令行示例以
$开头表示普通用户命令,#开头表示 root 命令。 - 涉及真实 nixpkgs 源码的章节,文件路径均标注仓库内相对路径,代码逐行(逐块)注释。
- 版本说明:以 2026 年 8 月的 NixOS 26.05(Yarara)/ Nix 2.35(含 Lix、Determinate 等实现)为准,机制层面的内容对所有现代版本通用。
- 零基础先读:附录 C 的 C.0「新手速解」用大白话解释派生、overlay、flake 等高频术语,扫清术语障碍再进正文。
- 入门路线:第 1 → 4 → 5 → 6 → 13 → 14 章,然后直接安装 NixOS 边用边读第四部分。
- 打包贡献路线:第 4 → 6–12(语言)→ 32–38(nixpkgs 与实例)→ 42(实战)。
- 深度理解路线:按顺序通读,重点精读第 25(模块系统)与 34(mkDerivation)两章。
本书为 AI 生成、人工审阅修订的学习资料,内容参考并整理自 Nix / NixOS 官方手册、NixOS Wiki、nix.dev、nixpkgs 源码及社区公开资料(正文中尽可能标注了来源),仅供学习与研究参考,不作商业用途。书中引用的 nixpkgs 源码版权归其贡献者所有(MIT 许可证)。如有侵权或来源标注遗漏,请提 issue 或联系作者,将及时处理。在未补充正式许可证之前,本书内容默认保留所有权利,请勿整体转载。
- Nix 语言基础:值、类型与表达式
- 函数:lambda、多参数与柯里化
- let、with 与作用域规则
- 字符串:深入字符串上下文与模板
- 属性集:Nix 世界的中心数据结构
- 惰性求值:Nix 的执行模型
- 惯用法:写出地道的 Nix 代码
- 派生(Derivation):构建的原子
- 存储模型:/nix/store 的设计
- 哈希、固定输出与内容寻址
- 构建过程:沙箱、钩子与复现
- 闭包:依赖的完整图谱
- Profile、channel 与 generation
- 垃圾回收:gcroots 与安全删除
- 二进制缓存与 substituter 生态
- Flakes:新一代 Nix 工作流
- NixOS 的起源与发展
- 从包到操作系统:NixOS 的构建哲学
- configuration.nix 全面精讲
- 模块系统深度剖析
- 激活机制:activation scripts
- switch-to-configuration:系统切换的内部
- 启动流程:从 bootloader 到登录提示符
- systemd 集成
- 用户、状态与"无状态"哲学
- 部署工具生态
- nixpkgs 仓库全景与组织思想
- stdenv:标准构建环境
- mkDerivation 逐行剖析
- 打包方式总览:全部 builder 分类详解
- 简单包实例精讲(逐行注释)
- 中等包实例精讲(逐行注释)
- 复杂包实例精讲(逐行注释)
- override 与 overlay:定制一切
- 交叉编译
- 测试与持续集成
nix shell nixpkgs#pandoc nixpkgs#texliveFull # 或自行安装 pandoc + xelatex
bash build/build-pdf.sh # 产出 build/Nix与NixOS中文手册.pdf