История изменений
Исправление theNamelessOne, (текущая версия) :
Практически в любом дистрибутиве мне для этого надо отдельно скачать пакет с исходниками, наложить патчи от производителя дистрибутива, скачать зависимости для компиляции. Затем удалить установленный firefox, собрать из исходников, исправить исходники до нужного мне состояния, сделать из исходников пакет и установить собранный пакет.
Потом, чтобы при обновлении моя доработка сохранилась, мне надо снова получить неизменённые мною исходники, сделать из разницы своих и неизменённых исходников патч, а затем после каждого обновления системы повторять часть с скачиванием исходников, наложением патча, сбором пакета и установкой пакета.
В NixOS у тебя есть файл, в котором описывается состояние твоей системы (configuration.nix
или flake.nix
, если ты включил хлопья) — список установленных приложений, конфиги системы и приложений. В простейшем виде у тебя так выглядит список установленных приложений:
{
# ...
environment.systemPackages = [
pkgs.firefox
# другие пакеты
];
}
Ты хочешь, например, пропатчить Firefox. Модифицируешь пакет firefox
, например, через overrideAttrs
(есть и другие способы):
{
# ...
environment.systemPackages = let
firefox-patched = pkgs.firefox.overrideAttrs (final: prev: {
patches = prev.patches + [
# путь к твоему патчу
./path/to/my.patch
];
});
in [
firefox-patched
# другие пакеты
];
}
Теперь при каждой пересборке системы у тебя Firefox будет пересобираться из исходников с твоими патчами. Скачивать исходники Firefox не нужно, скачивать пакет не нужно, руками делать тоже ничего не надо.
Исходная версия theNamelessOne, :
Практически в любом дистрибутиве мне для этого надо отдельно скачать пакет с исходниками, наложить патчи от производителя дистрибутива, скачать зависимости для компиляции. Затем удалить установленный firefox, собрать из исходников, исправить исходники до нужного мне состояния, сделать из исходников пакет и установить собранный пакет.
Потом, чтобы при обновлении моя доработка сохранилась, мне надо снова получить неизменённые мною исходники, сделать из разницы своих и неизменённых исходников патч, а затем после каждого обновления системы повторять часть с скачиванием исходников, наложением патча, сбором пакета и установкой пакета.
В NixOS у тебя есть файл, в котором описывается состояние твоей системы (configuration.nix
или flake.nix
, если ты включил хлопья) — список установленных приложений, конфиги системы и приложений. В простейшем виде у тебя так выглядит список установленных приложений:
{
# ...
environment.systemPackages = [
pkgs.firefox
# другие пакеты
];
}
Ты хочешь, например, пропатчить Firefox. Модифицируешь пакет firefox
, например, через overrideAttrs
(есть и другие способы):
{
# ...
environment.systemPackages = let
firefox-patched = pkgs.firefox.overrideAttrs (final: prev: {
patches = prev.patches + [
# путь к твоему патчу
./path/to/my.patch
];
});
in [
firefox-patched
# другие пакеты
];
}
Теперь при каждой пересборке системы у тебя Firefox будет пересобираться из исходников с твоими патчами. Скачивать пакет не нужно, руками делать тоже ничего не надо.