下载 nixpkgs.maven 时修改 $out/maven/conf 中的 settings.xml
modifying settings.xml in $out/maven/conf when downlaoding nixpkgs.maven
https://github.com/NixOS/nixpkgs/tree/master/pkgs/development/tools/build-managers/apache-maven
以上是apache maven的推导。当我从 nix 商店下载 Maven 时,它会在 $out/maven/conf 目录中创建一个 settings.xml 文件,我想覆盖它。
要求是在上述推导中添加一个步骤,该步骤将覆盖 settings.xml 文件。
这可以通过叠加或覆盖此推导来完成吗?
其 current state doesn't follow the normal stdenv
phases, but its custom builder does call unpackPhase
. This means that you can set variables 中的 maven 包影响其行为。
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: /* ... */)
}
https://github.com/NixOS/nixpkgs/tree/master/pkgs/development/tools/build-managers/apache-maven 以上是apache maven的推导。当我从 nix 商店下载 Maven 时,它会在 $out/maven/conf 目录中创建一个 settings.xml 文件,我想覆盖它。 要求是在上述推导中添加一个步骤,该步骤将覆盖 settings.xml 文件。 这可以通过叠加或覆盖此推导来完成吗?
其 current state doesn't follow the normal stdenv
phases, but its custom builder does call unpackPhase
. This means that you can set variables 中的 maven 包影响其行为。
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: /* ... */)
}