Nix ecosystem/zh: Difference between revisions

Weijia (talk | contribs)
No edit summary
FuzzyBot (talk | contribs)
Updating to match new version of source page
Tags: Mobile edit Mobile web edit
Line 1: Line 1:
<languages/>
<languages/>
'''Nix 核心生态系统'''是一组技术的集合,旨在以可复现的方式构建、声明性地配置和管理软件包、系统及其依赖项。它通过将函数式编程范式从程序领域扩展到系统领域来实现这一目标,并使用一种动态的、函数式的、惰性求值的领域特定语言(DSL),即 [[Overview of the Nix Language|Nix 语言]],来指定可复现的构建过程。  
<div class="mw-translate-fuzzy">
'''Nix 核心生态系统'''是一组技术的集合,旨在以可复现的方式构建、声明性地配置和管理软件包、系统及其依赖项。它通过将函数式编程范式从程序领域扩展到系统领域来实现这一目标,并使用一种动态的、函数式的、惰性求值的领域特定语言(DSL),即 [[Overview of the Nix Language|Nix 语言]],来指定可复现的构建过程。
</div>


此外,还有许多由 Nix 社区开发的[[applications|应用程序]]('''''Nix 扩展生态系统''''')利用并支持了这些核心技术。  
<div class="mw-translate-fuzzy">
此外,还有许多由 Nix 社区开发的[[applications|应用程序]]('''''Nix 扩展生态系统''''')利用并支持了这些核心技术。
</div>


<span id="Official_ecosystem"></span>
<span id="Official_ecosystem"></span>
Line 8: Line 12:


{| class="wikitable"
{| class="wikitable"
|+ <span class="mw-translate-fuzzy">{| class="wikitable"
|+ Nix 生态系统核心组件
|+ Nix 生态系统核心组件
|-
|-
Line 38: Line 43:
| 一款软件包管理器,能解析指定可重现构建的 Nix 表达式,并将结果与依赖关系树的哈希值一起放入存储地址,从而避免依赖关系地狱,并支持多版本安装和回滚。
| 一款软件包管理器,能解析指定可重现构建的 Nix 表达式,并将结果与依赖关系树的哈希值一起放入存储地址,从而避免依赖关系地狱,并支持多版本安装和回滚。
| Linux 和 Darwin 中的可重现构建和软件包管理
| Linux 和 Darwin 中的可重现构建和软件包管理
| LGPL-2.1
|}</span>
|-
! <span lang="en" dir="ltr" class="mw-content-ltr">Component</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Manual</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Description</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Use</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">License</span>
|-
| [[Special:MyLanguage/NixOS|NixOS]]
| <span lang="en" dir="ltr" class="mw-content-ltr">[https://nixos.org/nixos/manual/ NixOS Manual]</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">A Linux distribution with ''all'' components built by Nix, and thus supporting reproducible and declarative system-wide configuration management as well as atomic upgrades and rollbacks.</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Declaratively configure desktops, servers & clusters</span>
| MIT
|-
| [[Special:MyLanguage/Nixpkgs|Nixpkgs]]
| <span lang="en" dir="ltr" class="mw-content-ltr">[https://nixos.org/nixpkgs/manual/ Nixpkgs Manual]</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">The largest community maintained Nix package and NixOS module repository; standard releases of NixOS are hosted here.</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Share Nix packages & NixOS modules</span>
| MIT
|-
| [[Special:MyLanguage/Hydra|Hydra]]
| <span lang="en" dir="ltr" class="mw-content-ltr">[https://nixos.org/hydra/manual/ Hydra Manual]</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">A Nix based continuous build system.</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">CI build farms</span>
| GPL-3.0
|-
| [[Special:MyLanguage/Nix|Nix]]
| <span lang="en" dir="ltr" class="mw-content-ltr">[https://nixos.org/nix/manual/ Nix Manual]</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">A package manager that parses Nix expressions specifying reproducible build, putting the result in a store address with a hash of the dependency tree, sidestepping dependency hell and supporting multiversion installs and rollbacks.</span>
| <span lang="en" dir="ltr" class="mw-content-ltr">Reproducible builds & package management in Linux & Darwin</span>
| LGPL-2.1
| LGPL-2.1
|}  
|}  


{| style="max-width: 36rem; margin: auto;"
{| style="max-width: 36rem; margin: auto;"
|+ <span class="mw-translate-fuzzy">{| style="max-width: 36rem; margin: auto;"
|+'''Nix 核心生态系统技术栈'''
|+'''Nix 核心生态系统技术栈'''
|style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
|style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
Line 58: Line 96:
<div style="font-size: 1.3em; font-weight: bold">Nix</div>
<div style="font-size: 1.3em; font-weight: bold">Nix</div>
一个纯函数式的构建系统
一个纯函数式的构建系统
|}</span>
| style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
<div style="font-size: 1.3em; font-weight: bold">NixOS</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A Linux distribution and configuration system built using Nixpkgs.</span>
|-
| style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
<div style="font-size: 1.3em; font-weight: bold">Nixpkgs</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A large, community-maintained repository of packages.</span>
| style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%"|
<div style="font-size: 1.3em; font-weight: bold">Hydra</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A continuous build system built on Nix.</span>
|-
| style="text-align: center; border: 1px solid var(--border-color-base); background: var(--background-color-neutral); padding: 1.6rem" width="2%" colspan="2"|
<div style="font-size: 1.3em; font-weight: bold">Nix</div>
<span lang="en" dir="ltr" class="mw-content-ltr">A pure and functional build system.</span>
|}
|}


<span id="Usage_of_NixOS"></span>
<div class="mw-translate-fuzzy">
== NixOS 的使用方式 ==
== NixOS 的使用方式 ==
用户可以像安装其他 Linux 发行版一样,将 ''NixOS'' 发行版安装到他们的电脑上。他们通过 https://search.nixos.org 和本维基查阅有关 ''Nixpkgs'' 中可安装的软件包和配置选项的信息。他们使用 ''Nix'' 语言以声明式的方式,在一个文本文件中描述应该安装哪些软件包以及如何配置系统。然后,他们在终端中运行两个命令行程序,将系统转变为所描述的系统。此后,他们像使用任何其他 Linux 系统一样使用该系统。
用户可以像安装其他 Linux 发行版一样,将 ''NixOS'' 发行版安装到他们的电脑上。他们通过 https://search.nixos.org 和本维基查阅有关 ''Nixpkgs'' 中可安装的软件包和配置选项的信息。他们使用 ''Nix'' 语言以声明式的方式,在一个文本文件中描述应该安装哪些软件包以及如何配置系统。然后,他们在终端中运行两个命令行程序,将系统转变为所描述的系统。此后,他们像使用任何其他 Linux 系统一样使用该系统。
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Users install the ''NixOS'' distribution on their computers just as any other Linux distribution. They read about packages to install and configuration options in ''Nixpkgs'' via https://search.nixos.org and this wiki. They use the ''Nix'' language to declaratively describe in a text file what software packages should be installed and how the system should be configured. They run 2 command line programs in a terminal to transform the system into the described system. They use the system as any other Linux system.
</div>
<span id="Development_of_NixOS"></span>
<div class="mw-translate-fuzzy">
== NixOS 的开发 ==
== NixOS 的开发 ==
''NixOS'' 的开发者主要工作在 ''Nixpkgs'' 上。''NixOS'' 本身的开发由三个主要领域组成,同时还有一些体量较小但同样重要的其他领域。主要领域包括打包、模块系统和文档。
''NixOS'' 的开发者主要工作在 ''Nixpkgs'' 上。''NixOS'' 本身的开发由三个主要领域组成,同时还有一些体量较小但同样重要的其他领域。主要领域包括打包、模块系统和文档。
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
Developers of ''NixOS'' mainly work on ''Nixpkgs''. ''NixOS'' development itself is compromised of three large areas as well as some others which are smaller by volume (but no less important). The major ones include packaging, the module system, and documentation.
</div>


* 打包工作在 ''Nixpkgs'' 中进行,并不仅限于 ''NixOS'' 或基于 Linux 的平台。那些不专属于 ''NixOS'' 的软件包(例如运行发行版本身所需的工具)的维护者通常会照顾多个平台,尽管这并非严格要求。
* 打包工作在 ''Nixpkgs'' 中进行,并不仅限于 ''NixOS'' 或基于 Linux 的平台。那些不专属于 ''NixOS'' 的软件包(例如运行发行版本身所需的工具)的维护者通常会照顾多个平台,尽管这并非严格要求。
Line 77: Line 144:


{| class="wikitable"
{| class="wikitable"
|+ <span class="mw-translate-fuzzy">{| class="wikitable"
|+ ''NixOS'' 开发的各种示例及相关链接
|+ ''NixOS'' 开发的各种示例及相关链接
! 开发类型 !! 开发位置 !! 示例
! 开发类型 !! 开发位置 !! 示例
Line 95: Line 163:
|-
|-
| 其他 || || [https://github.com/NixOS/nixos-artwork ''NixOS'' artwork], [https://discourse.nixos.org/ ''NixOS''(及相关)讨论区], [https://github.com/NixOS/foundation ''NixOS 基金会'']  
| 其他 || || [https://github.com/NixOS/nixos-artwork ''NixOS'' artwork], [https://discourse.nixos.org/ ''NixOS''(及相关)讨论区], [https://github.com/NixOS/foundation ''NixOS 基金会'']  
|}</span>
! <span lang="en" dir="ltr" class="mw-content-ltr">Type of development</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Location of Development</span> !! <span lang="en" dir="ltr" class="mw-content-ltr">Examples</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Platform Agnostic Packaging</span> || ''Nixpkgs'' || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nixpkgs/blob/bf3287dac860542719fe7554e21e686108716879/pkgs/tools/misc/coreutils/default.nix coreutils package], [https://github.com/NixOS/nixpkgs/tree/5fe6820251dfab92c84ff356a7c7c336f8d8490c/pkgs/stdenv ''stdenv'' framework], [https://github.com/NixOS/nixpkgs/blob/5fe6820251dfab92c84ff356a7c7c336f8d8490c/pkgs/applications/office/libreoffice/default.nix Libreoffice package]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Platform Agnostic Tooling</span> || <span lang="en" dir="ltr" class="mw-content-ltr">''Nixpkgs'' and various repositories</span> || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nix upstream/default Nix implementation (CppNix)], [https://github.com/NixOS/hydra ''Hydra'' source code], [https://github.com/NixOS/nixpkgs-merge-bot ''Nixpkgs'' merge bot]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">''NixOS'' Tooling</span> || <span lang="en" dir="ltr" class="mw-content-ltr">mostly ''Nixpkgs''</span> || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nixpkgs/tree/5fe6820251dfab92c84ff356a7c7c336f8d8490c/pkgs/by-name/ni/nixos-rebuild-ng nixos-rebuild-ng source code], [https://github.com/NixOS/nixpkgs/blob/5fe6820251dfab92c84ff356a7c7c336f8d8490c/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix ''NixOS'' Installation ISOs]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">''NixOS'' Module System</span> || ''Nixpkgs'' || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/display-managers/default.nix Display Manager configuration], [https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/databases/mysql.nix MySQL (and derivative) database configuration]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Infrastructure</span> || || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nixos-wiki-infra Infrastructure for this Wiki], [https://github.com/NixOS/infra ''NixOS'' infra]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Documentation</span> || || <span lang="en" dir="ltr" class="mw-content-ltr">[https://wiki.nixos.org This Wiki], [https://github.com/NixOS/nixpkgs/blob/8d92119c540d78599ba208010c722a60958810f4/doc/stdenv/stdenv.chapter.md ''stdenv'' documentation], [https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/configuration/ipv6-config.section.md ''NixOS'' IPv6 configuration] (visible in the [https://nixos.org/manual/nixos/stable/#sec-ipv6 IPv6 section of the ''NixOS'' manual]), [https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md ''Nixpkgs'' Contribution Guidelines]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Tech Organisation</span> || || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nixpkgs/issues/390768 ''NixOS'' RelEng], [https://github.com/NixOS/rfcs/ ''Nix'' and ''NixOS'' RFCs]</span>
|-
| <span lang="en" dir="ltr" class="mw-content-ltr">Other</span> || || <span lang="en" dir="ltr" class="mw-content-ltr">[https://github.com/NixOS/nixos-artwork ''NixOS'' artwork], [https://discourse.nixos.org/ ''NixOS'' (and related) discourse], [https://github.com/NixOS/foundation ''NixOS Foundation'']</span>
|}
|}