summaryrefslogtreecommitdiffstats
path: root/pkgs/games/cataclysm-dda
diff options
context:
space:
mode:
authorSandro <sandro.jaeckel@gmail.com>2021-04-12 16:31:01 +0200
committerGitHub <noreply@github.com>2021-04-12 16:31:01 +0200
commite355946df1ba59072329653507113b7d9ed5dedd (patch)
treeb3789385e4bda38ff15d353fe48769ac5f32e433 /pkgs/games/cataclysm-dda
parentb50d86446a40c3645cb3c64123b198cf576ca8ba (diff)
parentcdfbdb0b2c0eab92079d1e477a93781d7b9e2cc2 (diff)
Merge pull request #103546 from mnacamura/cdda-small-fix
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/pkgs/default.nix10
-rw-r--r--pkgs/games/cataclysm-dda/stable.nix9
5 files changed, 42 insertions, 20 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/pkgs/default.nix b/pkgs/games/cataclysm-dda/pkgs/default.nix
index 6f3df09a7861..39abad809c5b 100644
--- a/pkgs/games/cataclysm-dda/pkgs/default.nix
+++ b/pkgs/games/cataclysm-dda/pkgs/default.nix
@@ -13,15 +13,17 @@ let
};
};
- pkgs' = lib.mapAttrs (_: mod: lib.filterAttrs availableForBuild mod) pkgs;
+ pkgs' = lib.mapAttrs (_: mods: lib.filterAttrs isAvailable mods) pkgs;
- availableForBuild = _: mod:
+ isAvailable = _: mod:
if isNull build then
true
else if build.isTiles then
- mod.forTiles
+ mod.forTiles or false
+ else if build.isCurses then
+ mod.forCurses or false
else
- mod.forCurses;
+ false;
in
lib.makeExtensible (_: pkgs')
diff --git a/pkgs/games/cataclysm-dda/stable.nix b/pkgs/games/cataclysm-dda/stable.nix
index 4210a2166946..d0452090ca65 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 = "qhHtsm5cM0ct/7qXev0SiLInO2jqs2odxhWndLfRDIE=";
};
- 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