summaryrefslogtreecommitdiffstats
path: root/pkgs/games/cataclysm-dda
diff options
context:
space:
mode:
authorMitsuhiro Nakamura <m.nacamura@gmail.com>2020-11-12 10:48:19 +0900
committerMitsuhiro Nakamura <m.nacamura@gmail.com>2020-11-12 11:54:42 +0900
commit0c02a5599ca57497847dbda9f23058b34a6cdd9e (patch)
tree6d2fa974cc73c768aeea79d5553109d92aa688f6 /pkgs/games/cataclysm-dda
parent19deef39c7ad25219a9a08d772fcb8713e437b08 (diff)
cataclysmDDA: add utility function `attachPkgs`
Diffstat (limited to 'pkgs/games/cataclysm-dda')
-rw-r--r--pkgs/games/cataclysm-dda/default.nix3
-rw-r--r--pkgs/games/cataclysm-dda/git.nix9
-rw-r--r--pkgs/games/cataclysm-dda/lib.nix31
-rw-r--r--pkgs/games/cataclysm-dda/stable.nix9
4 files changed, 36 insertions, 16 deletions
diff --git a/pkgs/games/cataclysm-dda/default.nix b/pkgs/games/cataclysm-dda/default.nix
index ada212ea7e9f..1649cd031a4b 100644
--- a/pkgs/games/cataclysm-dda/default.nix
+++ b/pkgs/games/cataclysm-dda/default.nix
@@ -33,7 +33,8 @@ let
buildMod
buildSoundPack
buildTileSet
- wrapCDDA;
+ wrapCDDA
+ attachPkgs;
inherit pkgs;
};
diff --git a/pkgs/games/cataclysm-dda/git.nix b/pkgs/games/cataclysm-dda/git.nix
index 36f37f7aeba4..9af90481acda 100644
--- a/pkgs/games/cataclysm-dda/git.nix
+++ b/pkgs/games/cataclysm-dda/git.nix
@@ -1,4 +1,4 @@
-{ lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA
+{ lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA, attachPkgs
, tiles ? true, Cocoa
, debug ? false
, useXdgDir ? false
@@ -26,11 +26,6 @@ let
"VERSION=git-${version}-${lib.substring 0 8 src.rev}"
];
- passthru = common.passthru // {
- pkgs = pkgs.override { build = self; };
- withMods = wrapCDDA self;
- };
-
meta = common.meta // {
maintainers = with lib.maintainers;
common.meta.maintainers ++ [ rardiol ];
@@ -38,4 +33,4 @@ let
});
in
-self
+attachPkgs pkgs self
diff --git a/pkgs/games/cataclysm-dda/lib.nix b/pkgs/games/cataclysm-dda/lib.nix
index 02678ed0228e..f2b38a16aa53 100644
--- a/pkgs/games/cataclysm-dda/lib.nix
+++ b/pkgs/games/cataclysm-dda/lib.nix
@@ -1,6 +1,6 @@
{ callPackage }:
-{
+rec {
buildMod = callPackage ./builder.nix {
type = "mod";
};
@@ -14,4 +14,33 @@
};
wrapCDDA = callPackage ./wrapper.nix {};
+
+ # 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;
}
diff --git a/pkgs/games/cataclysm-dda/stable.nix b/pkgs/games/cataclysm-dda/stable.nix
index 076a33a9e899..b83184865fbe 100644
--- a/pkgs/games/cataclysm-dda/stable.nix
+++ b/pkgs/games/cataclysm-dda/stable.nix
@@ -1,4 +1,4 @@
-{ lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA
+{ lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA, attachPkgs
, tiles ? true, Cocoa
, debug ? false
, useXdgDir ? false
@@ -19,11 +19,6 @@ let
sha256 = "15l6w6lxays7qmsv0ci2ry53asb9an9dh7l7fc13256k085qcg68";
};
- passthru = common.passthru // {
- pkgs = pkgs.override { build = self; };
- withMods = wrapCDDA self;
- };
-
meta = common.meta // {
maintainers = with lib.maintainers;
common.meta.maintainers ++ [ skeidel ];
@@ -31,4 +26,4 @@ let
});
in
-self
+attachPkgs pkgs self