2020-04-08 03:46:57 +02:00
|
|
|
{ callPackage }:
|
|
|
|
|
2020-11-12 02:48:19 +01:00
|
|
|
rec {
|
2020-04-08 03:46:57 +02:00
|
|
|
buildMod = callPackage ./builder.nix {
|
|
|
|
type = "mod";
|
|
|
|
};
|
|
|
|
|
|
|
|
buildSoundPack = callPackage ./builder.nix {
|
|
|
|
type = "soundpack";
|
|
|
|
};
|
|
|
|
|
|
|
|
buildTileSet = callPackage ./builder.nix {
|
|
|
|
type = "tileset";
|
|
|
|
};
|
|
|
|
|
|
|
|
wrapCDDA = callPackage ./wrapper.nix {};
|
2020-11-12 02:48:19 +01:00
|
|
|
|
|
|
|
# Required to fix `pkgs` and `withMods` attrs after applying `overrideAttrs`.
|
|
|
|
#
|
|
|
|
# Example:
|
|
|
|
# let
|
|
|
|
# myBuild = cataclysmDDA.jenkins.latest.tiles.overrideAttrs (_: {
|
|
|
|
# x = "hello";
|
|
|
|
# });
|
|
|
|
#
|
|
|
|
# # This refers to the derivation before overriding! So, `badExample.x` is not accessible.
|
|
|
|
# badExample = myBuild.withMods (_: []);
|
|
|
|
#
|
|
|
|
# # `myBuild` is correctly referred by `withMods` and `goodExample.x` is accessible.
|
|
|
|
# goodExample = let
|
|
|
|
# inherit (cataclysmDDA) attachPkgs pkgs;
|
|
|
|
# in
|
|
|
|
# (attachPkgs pkgs myBuild).withMods (_: []);
|
|
|
|
# in
|
|
|
|
# goodExample.x # returns "hello"
|
|
|
|
attachPkgs = pkgs: super:
|
|
|
|
let
|
|
|
|
self = super.overrideAttrs (old: {
|
|
|
|
passthru = old.passthru // {
|
|
|
|
pkgs = pkgs.override { build = self; };
|
|
|
|
withMods = wrapCDDA self;
|
|
|
|
};
|
|
|
|
});
|
|
|
|
in
|
|
|
|
self;
|
2020-04-08 03:46:57 +02:00
|
|
|
}
|