Я хотел бы определить rc-файлы моего программного обеспечения через Nix. Поэтому я определяю новый пакет в config.nix
, который будет содержать конфигурационный файл:Nix: Может ли установленный пакет установить переменную пользовательской среды?
{ pkgs, ... }:
{
packageOverrides = pkgs : with pkgs; {
custom-config = import ./custom-config {
inherit (pkgs) stdenv;
};
};
}
Тогда в пользовательской-конфигурации/default.nix файл определяется рядный:
{ stdenv }:
stdenv.mkDerivation rec {
name = "custom-config";
stdenv.mkDerivation {
name = "CustomConfig";
src = builtins.toFile "customrc" ''
# content
'';
};
}
Последняя часть хватает: Добавьте определенную переменную среды в оболочку по умолчанию для пользователей, например, CUSTOM_CONFIG_RC
, которая удостоена соответствующей программы.
Может ли кто-нибудь дать мне подсказку? Я только начинаю понимать язык.
Хорошо, я вижу. Но использование «makeWrapper» приводит к перекомпиляции из источника всего пакета - в то время как единственное изменение, которое мне нужно, это переменная среды выполнения и добавленный файл? Второй совет: Да, если бы это было так ... не понравилось правильно ;-) Хотелось бы иметь все спецификации в одном месте. Правильно ли: «config.nix» не может влиять на переменную «environment», присутствующую в «configuration.nix»? –
1. Вместо того, чтобы изменять пакет, вы можете сделать завернутую программу отдельным деривацией, чтобы избежать необходимости перекомпиляции. 2. «Одно место» может быть каталогом этих сценариев, например. '~/.nix-profile/share/rc-scripts/...' и ваш '.bashrc' мог бы перебирать этот каталог и выводить их все. 3. Я не совсем понимаю, но я думаю, что вы говорите правильно. Насколько я знаю, нет прямого механизма для настройки базовой среды из пакетов, и, на мой взгляд, это сломается с философией Nix. –