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