Во-первых, позвольте мне прояснить несколько вещей, которые, надеюсь, помогут вам понять некоторые концепции NixOS и Nixpkgs.
Модули NixOS в основном связаны с конфигурацией системы, тогда как оверлеи - это всего лишь механизм внесения изменений.к пакету.Это отдельные функции двух отдельных компонентов (NixOS и Nixpkgs), которые распространяются вместе.
В результате NixOS загружает Nixpkgs при оценке.Это можно контролировать с помощью некоторых опций NixOS .Большинство из них просто передаются в функцию Nixpkgs (обычно обозначается import <nixpkgs>
).
Это означает, что конфигурация NixOS контролирует аргумент config
для Nixpkgs.Однако overlays
- это просто еще один параметр функции Nixpkgs, который не влияет на Nixpkgs config
.
Также обратите внимание, что self
и super
- это просто имена, которые обычно присваиваются параметрамфункция, которая определяет наложение.Это позиционные параметры, так что вы можете дать им разные имена, если вам нужно.Результатом оверлейной функции является набор атрибутов, содержащий атрибуты для добавления или обновления.self
и super
не имеют специального значения в качестве атрибутов в Nixpkgs.(Хотя вы скрывали пакет super
)
Так что нет, оверлей не может установить элемент конфигурации Nixpkgs.Вместо этого вы можете захотеть написать модуль NixOS.Модули NixOS и конфигурация NixOS - это одно и то же.
Также обратите внимание, что NixOS (nixos-rebuild
и т. Д.) Не будет читать ~/.config/nixpkgs/config.nix
.Он имеет свой собственный по умолчанию .