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