anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / games / cataclysm-dda / lib.nix
blobf2b38a16aa534a3af63267f881cbb655c2260bd6
1 { callPackage }:
3 rec {
4   buildMod = callPackage ./builder.nix {
5     type = "mod";
6   };
8   buildSoundPack = callPackage ./builder.nix {
9     type = "soundpack";
10   };
12   buildTileSet = callPackage ./builder.nix {
13     type = "tileset";
14   };
16   wrapCDDA = callPackage ./wrapper.nix {};
18   # Required to fix `pkgs` and `withMods` attrs after applying `overrideAttrs`.
19   #
20   # Example:
21   #     let
22   #       myBuild = cataclysmDDA.jenkins.latest.tiles.overrideAttrs (_: {
23   #         x = "hello";
24   #       });
25   #
26   #       # This refers to the derivation before overriding! So, `badExample.x` is not accessible.
27   #       badExample = myBuild.withMods (_: []);
28   #
29   #       # `myBuild` is correctly referred by `withMods` and `goodExample.x` is accessible.
30   #       goodExample = let
31   #         inherit (cataclysmDDA) attachPkgs pkgs;
32   #       in
33   #       (attachPkgs pkgs myBuild).withMods (_: []);
34   #     in
35   #     goodExample.x  # returns "hello"
36   attachPkgs = pkgs: super:
37   let
38     self = super.overrideAttrs (old: {
39       passthru = old.passthru // {
40         pkgs = pkgs.override { build = self; };
41         withMods = wrapCDDA self;
42       };
43     });
44   in
45   self;