LINUX.ORG.RU

История изменений

Исправление 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 будет пересобираться из исходников с твоими патчами. Скачивать пакет не нужно, руками делать тоже ничего не надо.