加载中...

| 所属项目 | Nix、NixOS |
| 范式 | 纯函数式、声明式 |
| 求值策略 | 惰性求值 |
| 核心类型 | 属性集、函数 |
| 典型用途 | 包管理、系统配置 |
Nix 表达式语言 是一种纯函数式、惰性求值的领域特定语言,专门用于 Nix 包管理器和基于它的 NixOS 操作系统。开发者用 Nix 语言编写表达式,声明式地描述如何构建软件包、如何配置整个系统,从而实现可复现、可回滚的软件部署。
Nix 语言的诞生源于对可复现构建的追求。传统包管理常受全局状态和隐式依赖困扰,导致在不同机器上构建结果不一致。Nix 用纯函数式的方式解决这一问题:每个软件包被视为一个由其所有输入(源码、依赖、编译参数)唯一确定的函数输出,构建结果被存放在带哈希的独立路径中。语言本身是惰性求值的,只有真正需要时才会计算相应的表达式,这使得描述庞大的软件集合成为可能。
Nix 语言几乎专用于 Nix 生态:编写软件包定义、配置 NixOS 系统、用 Home Manager 管理用户环境,以及借助 Nix Flakes 定义可复现的开发环境。它在追求确定性构建、无冲突多版本共存和一键回滚的场景中价值突出,被 DevOps、科研计算和大型工程团队用来消除环境不一致带来的困扰。它是学习声明式系统配置和可复现构建理念的典型代表。
问:Nix 语言和 NixOS 是一回事吗?答:不是。Nix 语言是描述构建与配置的编程语言,NixOS 是用这种语言来声明式配置整个系统的 Linux 发行版,两者配合使用。
问:为什么说 Nix 能实现可复现构建?答:因为每个包由其全部输入唯一决定,构建产物按哈希隔离存放,相同的表达式在任何机器上都会得到一致的结果,从而消除环境差异。

| 所属项目 | Nix、NixOS |
| 范式 | 纯函数式、声明式 |
| 求值策略 | 惰性求值 |
| 核心类型 | 属性集、函数 |
| 典型用途 | 包管理、系统配置 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧