ITADN
ngi-nix/ngipkgs
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

重要:本仓库现已弃用。新的打包工作正在 NGI ForgeNixpkgs 中进行。我们正在将所有内容从本仓库迁移到 Nixpkgs。

NGIpkgs

Nix 是一个开源的构建系统、配置管理系统和软件部署机制,专注于可重复性。 它是极其强大的工具生态系统的基础。 Nixpkgs 是全球最大、最新的软件仓库。 NixOS 是一个可以完全声明式配置的 Linux 发行版,具有无与伦比的灵活性。

本仓库将通过欧洲委员会的 Next Generation Internet (NGI) 倡议和 NLnet Foundation 资助的软件项目,以以下形式提供:

  • NixOS 兼容的配置模块
  • Nixpkgs 兼容的软件包配方

并提供自动测试的 NixOS 配置示例。

[!TIP] 在 https://ngi.nixos.org 上查看为 NixOS 打包的 NGI 软件。

NGIpkgs 是 Summer of Nix 的一部分,由 NixOS Foundation 组织。

如何使用 NGIpkgs 中的软件

以下是你可以使用 NGIpkgs 中的软件完成的操作:

  • 使用 Nix 在本地运行独立程序
  • 使用库或工具通过 Nixpkgs 构建软件
  • 服务部署到运行 NixOS 的机器上

为了做到这一点:

[!WARNING] 最终用户说明尚未提供,即使简单的工作流程也可能无法按预期工作。 目前这仍在进行中。

你需要对 Nix 语言和 NixOS 有足够熟练的掌握,以便阅读代码并设置一个环境,在该环境中你可以实验部署和运行本仓库中提供的应用程序。

如果你学会以下内容,将有助于你更快地进行:

NGIpkgs 的结构

NGIpkgs 中的每个软件部分被称为一个项目。 每个项目可能由多个打包工件组成:

  • 用于向 NixOS 系统添加应用程序组件的 NixOS 配置模块
  • 用于配置这些模块的示例
  • 用于确保模块和示例按预期工作的测试
  • 可用于与 Nixpkgs 软件包配方组合的各种编程语言的库
  • 指向上游文档的链接,用于使用应用程序或维护或扩展 NixOS 打包
.
├── README.md            # this file
├── default.nix          # collection of project configuration modules (and some helper tooling)
├── projects
│   ├── default.nix      # aggregates all projects
│   ├── models.nix       # data model for packaging artefacts
│   ├── <project-name>
│   │   ├── default.nix  # packaging artefacts for a project
│   …   └── …            # other files for implementing a project package
├── pkgs
│   └── by-name
│       └── …            # directories with Nixpkgs-compatible package recipes
├── flake.nix            # CI setup
└── …

NixOS 模块可以集成到 NixOS 配置中。 其中许多模块提供了用于配置一个或多个旨在 NixOS 上运行的 systemd 服务的选项。 这些模块已准备好部署到运行在容器、虚拟机或物理机上的 NixOS 系统中。

在相应的每个项目目录中找到的示例配置是任何希望使用这些模块的人的良好起点,并且可以预期它们能够正常工作,因为它们会在持续集成中自动测试。

Nixpkgs 风格的软件包配方原则上可以在 Nix 支持的任何操作系统上构建。 构建此类配方的输出通常是一个库或可执行文件,包括其依赖项。 在 NGIpkgs 中,这些配方维护在 the pkgs directory

对应于 由 NGI 通过 NLnet 资助的项目,在 the projects directory 内有每个项目的子目录。 这些子目录中的每一个都包含一个 default.nix,它

  • pkgsNixpkgs 中定义的包中选取与该项目相关的包,
  • 公开 NixOS 模块、测试和配置,这些也在每个项目目录中维护,
  • 可能包含关于该项目的额外元数据
  • 遵循 打包工件的数据模型

使用 Buildbot 持续构建软件包

NGIpkgs 主分支 中的所有软件包都由 Buildbot 服务器自动构建。 这些构建的结果可以在 https://buildbot.ngi.nixos.org/#/projects/1 找到

创建 NGIpkgs 单仓库的理由

  • 用户可以在概览页面发现 NGI 项目并立即使用它们。
  • 许多软件包是研究项目,目前(尚)不适合通过 Nixpkgs 或 NixOS 分发。
  • 资助机构可以了解打包情况。
  • NGI 软件集合的维护者可以实验代码架构和用户体验,而不会干扰上游 NixOS 开发,也无需应对更严格的稳定性要求。

我们的意图是在创新被证明运行良好,并且存在不会破坏上游贡献者和用户工作流程的现实迁移路径时,最终将这些创新引入 Nixpkgs 和 NixOS。

为 NGIpkgs 做贡献

请参阅 CONTRIBUTING.md

致谢

NGIpkgs 由欧洲委员会的下一代互联网 (NGI)计划通过NLNet 基金会NixOS 基金会资助。

European Commission logo    NLnet foundation logo