模块一:基础认知#
1.1 NixOS 是什么 & 设计哲学
- 声明式 vs 命令式系统管理
- 函数式包管理的含义
/nix/store的工作原理- 与 Arch/Debian 的根本差异
资料:
1.2 Nix 语言基础
- 基本类型:string, int, bool, list, attrset
let ... in、with、import- 函数语法(
x: x + 1) - 路径类型与字符串插值
资料:
- Nix Language Basics (official)
- Nix Pills Ch.4-6
- nix.dev — Nix 官方文档站,适合结合教程与参考手册阅读。
本地构建文档
在可信的 nix.dev 源码 checkout 中,先按仓库版本选择开发环境,再执行构建:
cd /path/to/nix.dev
direnv allow # 阅读 .envrc 后授权;或使用仓库支持的 nix-shell
make html
xdg-open build/html/index.html构建入口与输出路径以 checkout 的 README/Makefile 为准。
模块二:系统配置#
2.1 configuration.nix 核心结构
environment.systemPackagesservices.*启用系统服务users.users.*用户管理networking,time,i18n基础配置nixos-rebuild switch / boot / test的区别
资料:
- NixOS Manual: Configuration
- NixOS Options Search — 查所有可用 option 的必备工具
- MyNixOS — 可视化浏览 options
2.2 包管理
nix search、nix-env(legacy)vs declarative- Unfree 包的开启方式
- Overlays 简介:覆盖/修改已有包
nix-shell -p临时环境
资料:
2.3 Generations & 回滚
- 成功构建与 profile 切换形成可恢复配置世代;求值检查不等于创建或激活世代
- GRUB 多 generation 启动
nix-collect-garbage清理旧 generation
资料:
模块三:Flakes(常用工作流)#
3.1 Flakes 是什么
- 解决了什么问题(reproducibility,
nix-channel的缺点) flake.nix结构:inputs/outputsflake.lock版本锁定
3.2 启用 Flakes & 迁移
- 在
configuration.nix启用实验性功能 - 用
nixos-rebuild switch --flake .#workstation构建 - 管理多机器配置
资料:
模块四:Home Manager#
4.1 Home Manager 简介
- 系统配置 vs 用户配置的边界
- standalone 模式 vs NixOS module 模式
home.nix基本结构
4.2 常见用途
- 管理 dotfiles(
.zshrc,nvim,git等) programs.*直接配置应用home.file.*声明式 symlink
资料:
- Home Manager Manual
- Home Manager Options Search 或 MyNixOS HM options
- nix-community/home-manager (GitHub)
模块五:开发环境#
5.1 nix-shell & nix develop
shell.nix编写flake.nix的devShellsoutput- 与
direnv集成(use flake/use nix)
5.2 语言生态
- Python:
python3.withPackages、uv 与 nix 的边界问题 - Rust:
fenix/rust-overlay - C/C++:
pkgs.mkShell+stdenv
资料:
- nix.dev: Dev Environments
- nix-direnv (GitHub)
- nix-community/fenix — Rust toolchain
模块六:进阶主题(按需)#
| 主题 | 简介 | 资料 |
|---|---|---|
| NixOS Modules 系统 | 如何写自己的 module | Module System deep dive |
| Cross-compilation | 交叉编译嵌入式目标 | Nixpkgs Cross Manual |
| Hydra / CI | Nix 原生 CI 系统 | Hydra Docs |
| NixOS on ARM / 嵌入式 | RPi, STM32 sysroot | nix-community/nixos-hardware |
| Secrets 管理 | agenix / sops-nix | agenix / sops-nix |
推荐学习顺序#
模块一 → 模块二 → 模块三(Flakes)
↓
模块四(Home Manager)
↓
模块五(Dev Env)
↓
模块六(按项目需求选)综合资源#
- zero-to-nix.com — 最友好的入门站点
- nix.dev — Nix 官方教程与参考集合
- Nixpkgs GitHub — 直接读源码学写法
- awesome-nix — 社区资源汇总
- NixOS Discourse — 提问/找案例的最佳论坛
- NixOS Wiki — 比 ArchWiki 小但在成长
学习中的验收边界#
基础认知先连接 /nix/store、Nix 语言与系统配置;随后理解 Flake 输入锁定、Home Manager 用户边界,再按项目学习开发环境与 ARM、CI、交叉编译、Secrets。build 只构建,test 激活但不设启动默认,boot 设下次启动,switch 即时激活并设默认;这些阶段要分别验证。参考资源中的第三方教程与观点保留原链接,不能替代当前锁定版本的选项和源码。
参考与延伸
根据技术笔记重新整理,示例使用通用名称。