Nix 生態系統
Appearance
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 用戶的更新時間。
Type of development | Location of Development | Examples |
---|---|---|
Platform Agnostic Packaging | Nixpkgs | coreutils package, stdenv framework, Libreoffice package |
Platform Agnostic Tooling | Nixpkgs and various repositories | upstream/default Nix implementation (CppNix), Hydra source code, Nixpkgs merge bot |
NixOS Tooling | mostly Nixpkgs | nixos-rebuild-ng source code, NixOS Installation ISOs |
NixOS Module System | Nixpkgs | Display Manager configuration, MySQL (and derivative) database configuration |
Infrastructure | Infrastructure for this Wiki, NixOS infra | |
Documentation | This Wiki, stdenv documentation, NixOS IPv6 configuration (visible in the IPv6 section of the NixOS manual), Nixpkgs Contribution Guidelines | |
Tech Organisation | NixOS RelEng, Nix and NixOS RFCs | |
Other | NixOS artwork, NixOS (and related) discourse, NixOS Foundation |
See also: Nix organisation repository