изменение settings.xml в $out/maven/conf при отключении nixpkgs.maven

#maven #functional-programming #overlay #nix #nixos

#maven #функциональное программирование #наложение #nix #nixos

Вопрос:

https://github.com/NixOS/nixpkgs/tree/master/pkgs/development/tools/build-managers/apache-maven Выше приведен вывод apache maven. Когда я загружаю maven из хранилища nix, он создает settings.xml файл в каталоге $out/maven/conf, который я хочу перезаписать. Требуется добавить шаг к приведенному выше выводу, который перезапишет settings.xml досье. Можно ли это сделать с помощью наложений или переопределения этого вывода?

Ответ №1:

Пакет maven в его текущем состоянии не выполняет обычные stdenv фазы, но его пользовательский конструктор вызывает unpackPhase . Это означает, что вы можете устанавливать переменные, влияющие на его поведение.

 maven.overrideAttrs (o: { postUnpack = ''
  rm $name/conf/settings.xml  # just an example; do your thing here
''; })
  

Технически это изменение файлов перед копированием в $out, но я не думаю, что это будет проблемой. Если это так, вам придется разделить build.sh сценарий на обычные stdenv фазы. Тогда вы могли бы использовать postInstall .

Чтобы использовать его в оверлее:

 final: prev: {  # aka self: super:
  maven = prev.maven.overrideAttrs (o: /* ... */)
}