Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

《Nix 与 NixOS 中文手册》

一本全面、深入、以中文写就的 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 的工程师 对函数式思想在系统软件领域落地感兴趣的研究者

以上作废:本书实为个人自用的学习笔记与参考手册,顺带公开分享。

完成状态与统计(2026-08-24)

全书已完成: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 或联系作者,将及时处理。在未补充正式许可证之前,本书内容默认保留所有权利,请勿整体转载。

全书结构

第一部分:思想与历史(第 1–5 章)

  1. 软件部署的问题——为什么需要 Nix
  2. Nix 的诞生——Dolstra 论文与乌得勒支
  3. Nix 生态发展史(2003–2026)
  4. 声明式与纯函数式包管理思想
  5. 核心概念地图:一图看懂 Nix 世界

第二部分:Nix 语言(第 6–12 章)

  1. Nix 语言基础:值、类型与表达式
  2. 函数:lambda、多参数与柯里化
  3. let、with 与作用域规则
  4. 字符串:深入字符串上下文与模板
  5. 属性集:Nix 世界的中心数据结构
  6. 惰性求值:Nix 的执行模型
  7. 惯用法:写出地道的 Nix 代码

第三部分:Nix 包管理器机制(第 13–21 章)

  1. 派生(Derivation):构建的原子
  2. 存储模型:/nix/store 的设计
  3. 哈希、固定输出与内容寻址
  4. 构建过程:沙箱、钩子与复现
  5. 闭包:依赖的完整图谱
  6. Profile、channel 与 generation
  7. 垃圾回收:gcroots 与安全删除
  8. 二进制缓存与 substituter 生态
  9. Flakes:新一代 Nix 工作流

第四部分:NixOS(第 22–31 章)

  1. NixOS 的起源与发展
  2. 从包到操作系统:NixOS 的构建哲学
  3. configuration.nix 全面精讲
  4. 模块系统深度剖析
  5. 激活机制:activation scripts
  6. switch-to-configuration:系统切换的内部
  7. 启动流程:从 bootloader 到登录提示符
  8. systemd 集成
  9. 用户、状态与"无状态"哲学
  10. 部署工具生态

第五部分:nixpkgs 与打包(第 32–41 章)

  1. nixpkgs 仓库全景与组织思想
  2. stdenv:标准构建环境
  3. mkDerivation 逐行剖析
  4. 打包方式总览:全部 builder 分类详解
  5. 简单包实例精讲(逐行注释)
  6. 中等包实例精讲(逐行注释)
  7. 复杂包实例精讲(逐行注释)
  8. override 与 overlay:定制一切
  9. 交叉编译
  10. 测试与持续集成

第六部分:实战(第 42–46 章)

  1. 从零打包一个软件:完整实战
  2. 编写自己的 NixOS 模块
  3. Flake 应用开发模板
  4. 用户环境与 home-manager
  5. 常见问题与排错手册

附录

导出 PDF

nix shell nixpkgs#pandoc nixpkgs#texliveFull   # 或自行安装 pandoc + xelatex
bash build/build-pdf.sh                        # 产出 build/Nix与NixOS中文手册.pdf

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages