2015-12-22 10 views
1

Я читал немного о NixOS и пробовал это в наши дни, потому что у меня сложилось впечатление, что это позволит мне настроить Linux только с одним файлом.Как собрать полную конфигурацию системы NixOS?

Когда я использовал его, я установил кучу пакетов с nix-env, таким образом, они не попадают в configuration.nix, но я мог бы просто удалить их позже, и добавить их к configuration.nix вручную. Я там что-то вроде npm i -g <package>, который установил бы это глобально, чтобы он попал в configuration.nix и мог просто быть скопирован на другую машину.

Кроме того, я установил такие вещи, как zsh и atom, и они имеют совершенно другой подход к настройке и настройке (bashscript, javascript, less и т. Д.).

Есть ли способ для Nix/NixOS отслеживать конфигурацию, специфичную для пакета?

Это уже происходит, и я не вижу его? Как и выражение nix пакета знает, где пакет будет хранить свою конфигурацию и т. Д.

Я имею в виду, что я могу добавить эти пакеты в основную конфигурацию, а при использовании на другом ПК я получаю то же программное обеспечение, но я по-прежнему вижу, что пишу довольно много конфигураций для установленных пакетов.

ответ

5
  1. Если вы хотите пакеты, установленные через configuration.nix, то самый простой способ сделать это, чтобы добавить их к атрибуту environment.systemPackages. Пакеты, перечисленные там, будут доступны автоматически всем пользователям на машине. Однако, насколько я знаю, нет никакой команды оболочки для автоматизации обслуживания этого атрибута. Единственный способ управлять этим списком - отредактировать configuration.nix и вручную добавить пакеты, которые вы хотели бы установить.

  2. Nix не управляет определенными конфигурационными файлами. Как вы, наверное, знаете, NixOS предоставляет такой механизм для файлов в /etc, но аналогичного механизма для управления конфигурационными файлами в $HOME и т. Д. Не существует. PR https://github.com/NixOS/nixpkgs/pull/9250 на Github содержит конкретное предложение о добавлении этой возможности в Nix, но оно еще не было объединено, потому что для этого требуются некоторые изменения, которые противоречивы.

+0

Да, я видел это PR после того, как я разместил это. Похоже, что даже если он объединен, конфигурация Atom по-прежнему является JavaScript, а не выражением Nix. Таким образом, это будет, вероятно, всегда так. –

+0

В мире Nix обычно делается так, что пакеты Nix («выражения»), описывающие конкретное приложение, генерируют * конфигурационные файлы приложения (.json, .ini, .rc, .xml или что-то еще) под обертками , на основе «хороших» опций конфигурации, которые можно настроить с помощью * configuration.nix * (или * ~/.nixpkgs/config.nix *). Параметры обычно отображаются на основе «по мере необходимости» разработчиками пакетов (если вы изучаете Nix, вы можете попробовать сделать это сами!); Кроме того, не все приложения упрощают (нужно переопределить местоположение файла конфигурации по умолчанию, чтобы указать на автоматически сгенерированный файл в */nix/store/*). – akavel