Nix ecosystem/zh-cn: Difference between revisions
No edit summary |
No edit summary |
||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<languages/> | <languages/> | ||
'''Nix 核心生态系统'''是一组技术的集合,旨在以可复现的方式构建、声明性地配置和管理软件包、系统及其依赖项。它通过将函数式编程范式从程序领域扩展到系统领域来实现这一目标,并使用一种动态的、函数式的、惰性求值的领域特定语言(DSL),即[[Overview of the Nix Language|Nix 语言]],来指定可复现的构建过程。 | '''Nix 核心生态系统'''是一组技术的集合,旨在以可复现的方式构建、声明性地配置和管理软件包、系统及其依赖项。它通过将函数式编程范式从程序领域扩展到系统领域来实现这一目标,并使用一种动态的、函数式的、惰性求值的领域特定语言(DSL),即 [[Overview of the Nix Language|Nix 语言]],来指定可复现的构建过程。 | ||
此外,还有许多由 Nix 社区开发的[[applications|应用程序]]('''''Nix 扩展生态系统''''')利用并支持了这些核心技术。 | |||
<span id="Official_ecosystem"></span> | <span id="Official_ecosystem"></span> | ||
== | == 官方生态系统 == | ||
{| class="wikitable" | {| class="wikitable" | ||
|+ Nix | |+ Nix 生态系统核心组件 | ||
|- | |- | ||
! 组件 | ! 组件 | ||
Line 17: | Line 17: | ||
|- | |- | ||
| [[NixOS]] | | [[NixOS]] | ||
| [https://nixos.org/nixos/manual/ NixOS | | [https://nixos.org/nixos/manual/ NixOS 手册] | ||
| 一个由 Nix 构建''所有''组件的 Linux 发行版,因此支持可重现的、声明式的全系统配置管理以及原子升级和回滚。 | | 一个由 Nix 构建''所有''组件的 Linux 发行版,因此支持可重现的、声明式的全系统配置管理以及原子升级和回滚。 | ||
| 声明式配置桌面、服务器和集群。 | | 声明式配置桌面、服务器和集群。 | ||
Line 23: | Line 23: | ||
|- | |- | ||
| [[Nixpkgs]] | | [[Nixpkgs]] | ||
| [https://nixos.org/nixpkgs/manual/ Nixpkgs | | [https://nixos.org/nixpkgs/manual/ Nixpkgs 手册] | ||
| 最大的社区维护的 Nix 软件包和 NixOS | | 最大的社区维护的 Nix 软件包和 NixOS 模块仓库,NixOS 的标准版本也托管在这里。 | ||
| 分享 Nix 软件包和 NixOS 模块 | | 分享 Nix 软件包和 NixOS 模块 | ||
| MIT | | MIT | ||
|- | |- | ||
| [[Hydra]] | | [[Hydra]] | ||
| [https://nixos.org/hydra/manual/ Hydra | | [https://nixos.org/hydra/manual/ Hydra 手册] | ||
| 基于 Nix 的持续构建系统 | | 基于 Nix 的持续构建系统 | ||
| | | 持续构建集群 | ||
| GPL-3.0 | | GPL-3.0 | ||
|- | |- | ||
| [[Nix]] | | [[Nix]] | ||
| [https://nixos.org/nix/manual/ Nix | | [https://nixos.org/nix/manual/ Nix 手册] | ||
| 一款软件包管理器,能解析指定可重现构建的 Nix 表达式,并将结果与依赖关系树的哈希值一起放入存储地址,从而避免依赖关系地狱,并支持多版本安装和回滚。 | | 一款软件包管理器,能解析指定可重现构建的 Nix 表达式,并将结果与依赖关系树的哈希值一起放入存储地址,从而避免依赖关系地狱,并支持多版本安装和回滚。 | ||
| Linux 和 Darwin 中的可重现构建和软件包管理 | | Linux 和 Darwin 中的可重现构建和软件包管理 | ||
Line 42: | Line 42: | ||
{| style="max-width: 36rem; margin: auto;" | {| style="max-width: 36rem; margin: auto;" | ||
|+''' | |+'''Nix 核心生态系统技术栈''' | ||
|style="text-align: center; border: 1px solid #ddd; background: #fafafa; padding: 1.6rem" width="2%"| | |style="text-align: center; border: 1px solid #ddd; background: #fafafa; padding: 1.6rem" width="2%"| | ||
<div style="font-size: 1.3em; font-weight: bold">NixOS</div> | <div style="font-size: 1.3em; font-weight: bold">NixOS</div> | ||
一个用 Nixpkgs 构建的 Linux 发行版和配置系统 | |||
! | ! | ||
|- | |- | ||
Line 53: | Line 53: | ||
|style="text-align: center; border: 1px solid #ddd; background: #fafafa; padding: 1.6rem" width="2%"| | |style="text-align: center; border: 1px solid #ddd; background: #fafafa; padding: 1.6rem" width="2%"| | ||
<div style="font-size: 1.3em; font-weight: bold">Hydra</div> | <div style="font-size: 1.3em; font-weight: bold">Hydra</div> | ||
一个基于 Nix 的持续构建系统 | |||
|- | |- | ||
|style="text-align: center; border: 1px solid #ddd; background: #fafafa; padding: 1.6rem" width="2%" colspan="2"| | |style="text-align: center; border: 1px solid #ddd; background: #fafafa; padding: 1.6rem" width="2%" colspan="2"| | ||
<div style="font-size: 1.3em; font-weight: bold">Nix</div> | <div style="font-size: 1.3em; font-weight: bold">Nix</div> | ||
一个纯函数式的构建系统 | |||
|} | |} | ||
== | == NixOS 的使用方式 == | ||
用户可以像安装其他 Linux 发行版一样,将 ''NixOS'' 发行版安装到他们的电脑上。他们通过 https://search.nixos.org 和本维基查阅有关 ''Nixpkgs'' 中可安装的软件包和配置选项的信息。他们使用 ''Nix'' 语言以声明式的方式,在一个文本文件中描述应该安装哪些软件包以及如何配置系统。然后,他们在终端中运行两个命令行程序,将系统转变为所描述的系统。此后,他们像使用任何其他 Linux 系统一样使用该系统。 | |||
== NixOS 的开发 == | == NixOS 的开发 == | ||
''NixOS''的开发人员主要在''Nixpkgs''上工作,用''Nix''语言的文本文件描述软件包应该如何构建。经过同行评审后,这些修改将被整合到 ''Nixpkgs'' 中。其中一些软件包预先在''Hydra''上构建,以减少''NixOS''用户的更新时间。 | ''NixOS'' 的开发人员主要在 ''Nixpkgs'' 上工作,用 ''Nix'' 语言的文本文件描述软件包应该如何构建。经过同行评审后,这些修改将被整合到 ''Nixpkgs'' 中。其中一些软件包预先在 ''Hydra'' 上构建,以减少 ''NixOS'' 用户的更新时间。 | ||
Latest revision as of 23:20, 6 December 2024
Nix 核心生态系统是一组技术的集合,旨在以可复现的方式构建、声明性地配置和管理软件包、系统及其依赖项。它通过将函数式编程范式从程序领域扩展到系统领域来实现这一目标,并使用一种动态的、函数式的、惰性求值的领域特定语言(DSL),即 Nix 语言,来指定可复现的构建过程。
此外,还有许多由 Nix 社区开发的应用程序(Nix 扩展生态系统)利用并支持了这些核心技术。
官方生态系统
组件 | 手册(Manual) | 描述 | 用途 | 协议 |
---|---|---|---|---|
NixOS | NixOS 手册 | 一个由 Nix 构建所有组件的 Linux 发行版,因此支持可重现的、声明式的全系统配置管理以及原子升级和回滚。 | 声明式配置桌面、服务器和集群。 | MIT |
Nixpkgs | Nixpkgs 手册 | 最大的社区维护的 Nix 软件包和 NixOS 模块仓库,NixOS 的标准版本也托管在这里。 | 分享 Nix 软件包和 NixOS 模块 | MIT |
Hydra | Hydra 手册 | 基于 Nix 的持续构建系统 | 持续构建集群 | GPL-3.0 |
Nix | Nix 手册 | 一款软件包管理器,能解析指定可重现构建的 Nix 表达式,并将结果与依赖关系树的哈希值一起放入存储地址,从而避免依赖关系地狱,并支持多版本安装和回滚。 | Linux 和 Darwin 中的可重现构建和软件包管理 | LGPL-2.1 |
NixOS
一个用 Nixpkgs 构建的 Linux 发行版和配置系统 |
|
Nixpkgs
一个巨大的,社区维护的软件仓库 |
Hydra
一个基于 Nix 的持续构建系统 |
Nix
一个纯函数式的构建系统 |
NixOS 的使用方式
用户可以像安装其他 Linux 发行版一样,将 NixOS 发行版安装到他们的电脑上。他们通过 https://search.nixos.org 和本维基查阅有关 Nixpkgs 中可安装的软件包和配置选项的信息。他们使用 Nix 语言以声明式的方式,在一个文本文件中描述应该安装哪些软件包以及如何配置系统。然后,他们在终端中运行两个命令行程序,将系统转变为所描述的系统。此后,他们像使用任何其他 Linux 系统一样使用该系统。
NixOS 的开发
NixOS 的开发人员主要在 Nixpkgs 上工作,用 Nix 语言的文本文件描述软件包应该如何构建。经过同行评审后,这些修改将被整合到 Nixpkgs 中。其中一些软件包预先在 Hydra 上构建,以减少 NixOS 用户的更新时间。