#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: /* ... */)
}