【问题标题】:How to gather the full config of a NixOS system?如何收集 NixOS 系统的完整配置?
【发布时间】:2016-03-28 17:21:42
【问题描述】:

这几天我读了一些关于 NixOS 的文章并尝试了一下,因为我的印象是它可以让我只用一个文件配置 Linux。

当我使用它时,我用nix-env 安装了一堆包,所以它们最终没有出现在configuration.nix 中,但我可以稍后将它们卸载并手动将它们添加到configuration.nix。我有类似npm i -g <package> 的东西,它会全局安装它,所以它最终会在configuration.nix 中,并且可以简单地复制到另一台机器上。

另外,我安装了 zshatom 之类的东西,它们有完全不同的配置和自定义方法(bashscript、javascript、less 等)。

Nix/NixOS 是否也可以跟踪特定于软件包的配置?

它是否已经发生而我没有看到?就像包的 nix 表达式知道包将在哪里存储其配置等。

我的意思是,很高兴我可以将这些软件包添加到主配置中,当在另一台 PC 上使用它时,我安装了相同的软件,但我仍然看到自己为已安装的软件包编写了相当多的配置。

【问题讨论】:

    标签: nixos nix


    【解决方案1】:
    1. 如果您希望通过configuration.nix 安装软件包,那么最简单的方法是将它们添加到environment.systemPackages 属性中。此处列出的软件包将自动可供机器上的所有用户使用。不过,据我所知,没有可用于自动维护该属性的 shell 命令。管理该列表的唯一方法是编辑 configuration.nix 并手动添加您想要安装的软件包。

    2. Nix 管理特定于包的配置文件。您可能知道,NixOS 为/etc 中的文件提供了这样的机制,但在$HOME 等中管理配置文件的类似机制并不存在。 Github 上的 PR https://github.com/NixOS/nixpkgs/pull/9250 包含一个向 Nix 添加此功能的具体提案,但它尚未合并,因为它需要一些有争议的更改。

    【讨论】:

    • 是的,我在发布此消息后看到了 PR。似乎即使它被合并,Atom 配置仍然是 JavaScript 而不是 Nix 表达式。所以我自己的版本可能永远都是这样。
    • 在 Nix 世界中,Nix 包(“表达式”)描述特定应用生成应用特定配置文件(.json、.ini、. rc、.xml 或其他任何文件),基于“漂亮”的配置选项,可以从 configuration.nix (或 ~/.nixpkgs/config.nix我>)。这些选项通常由包编写者在“需要”的基础上公开(如果你学习 Nix,你可以尝试自己做!);此外,并非所有应用程序都可以轻松实现(必须覆盖配置文件的默认位置以指向 /nix/store/ 中的自动生成文件)。
    【解决方案2】:

    Nix 当前不提供管理用户特定配置或特定语言包管理器的方法。 AFAICT 那是因为与为 sshd 等生成配置相比,它是一个非常复杂和固执己见的领域。

    然而,基于 Nix 的项目至少可以为您的部分问题提供解决方案。要管理用户配置(zsh 等),请查看home manager

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      • 2015-05-18
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 2022-08-06
      • 1970-01-01
      相关资源
      最近更新 更多