Как собрать полную конфигурацию системы NixOS?

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

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

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

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

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

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


person K..    schedule 22.12.2015    source источник


Ответы (2)


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

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

person Peter Simons    schedule 05.01.2016
comment
Да, я видел этот пиар после того, как разместил это. Похоже, что даже если он объединен, конфигурация Atom по-прежнему остается JavaScript, а не выражением Nix. Так что я, вероятно, всегда буду делать это самостоятельно. - person K..; 05.01.2016
comment
В мире Nix это обычно делается таким образом, что пакеты (выражения) Nix, описывающие конкретное приложение, генерируют файлы конфигурации для конкретного приложения (.json, .ini, .rc, .xml или любые другие) в обертки, основанные на красивых параметрах конфигурации, которые можно настроить из configuration.nix (или ~ / .nixpkgs / config.nix). Параметры обычно предоставляются авторами пакетов по мере необходимости (если вы изучаете Nix, вы можете попробовать сделать это самостоятельно!); Кроме того, не все приложения упрощают эту задачу (нужно переопределить расположение файла конфигурации по умолчанию, чтобы он указывал на автоматически сгенерированный файл в / nix / store /). - person akavel; 21.07.2016

Nix в настоящее время не предлагает способов управления пользовательской конфигурацией или языковыми менеджерами пакетов. AFAICT, потому что это очень сложная и самоуверенная территория по сравнению с генерацией конфигураций для sshd и т. Д.

Однако есть проекты на базе Nix, которые решают, по крайней мере, некоторые части вашего вопроса. Для управления конфигурацией пользователей (zsh и т. Д.) Просмотрите домашний менеджер.

person Vojtech Kane    schedule 31.12.2020