cataclysmDDA: add utility function `attachPkgs`

+36 -16
+2 -1
pkgs/games/cataclysm-dda/default.nix
··· 33 buildMod 34 buildSoundPack 35 buildTileSet 36 - wrapCDDA; 37 38 inherit pkgs; 39 };
··· 33 buildMod 34 buildSoundPack 35 buildTileSet 36 + wrapCDDA 37 + attachPkgs; 38 39 inherit pkgs; 40 };
+2 -7
pkgs/games/cataclysm-dda/git.nix
··· 1 - { lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA 2 , tiles ? true, Cocoa 3 , debug ? false 4 , useXdgDir ? false ··· 26 "VERSION=git-${version}-${lib.substring 0 8 src.rev}" 27 ]; 28 29 - passthru = common.passthru // { 30 - pkgs = pkgs.override { build = self; }; 31 - withMods = wrapCDDA self; 32 - }; 33 - 34 meta = common.meta // { 35 maintainers = with lib.maintainers; 36 common.meta.maintainers ++ [ rardiol ]; ··· 38 }); 39 in 40 41 - self
··· 1 + { lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA, attachPkgs 2 , tiles ? true, Cocoa 3 , debug ? false 4 , useXdgDir ? false ··· 26 "VERSION=git-${version}-${lib.substring 0 8 src.rev}" 27 ]; 28 29 meta = common.meta // { 30 maintainers = with lib.maintainers; 31 common.meta.maintainers ++ [ rardiol ]; ··· 33 }); 34 in 35 36 + attachPkgs pkgs self
+30 -1
pkgs/games/cataclysm-dda/lib.nix
··· 1 { callPackage }: 2 3 - { 4 buildMod = callPackage ./builder.nix { 5 type = "mod"; 6 }; ··· 14 }; 15 16 wrapCDDA = callPackage ./wrapper.nix {}; 17 }
··· 1 { callPackage }: 2 3 + rec { 4 buildMod = callPackage ./builder.nix { 5 type = "mod"; 6 }; ··· 14 }; 15 16 wrapCDDA = callPackage ./wrapper.nix {}; 17 + 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; 46 }
+2 -7
pkgs/games/cataclysm-dda/stable.nix
··· 1 - { lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA 2 , tiles ? true, Cocoa 3 , debug ? false 4 , useXdgDir ? false ··· 19 sha256 = "15l6w6lxays7qmsv0ci2ry53asb9an9dh7l7fc13256k085qcg68"; 20 }; 21 22 - passthru = common.passthru // { 23 - pkgs = pkgs.override { build = self; }; 24 - withMods = wrapCDDA self; 25 - }; 26 - 27 meta = common.meta // { 28 maintainers = with lib.maintainers; 29 common.meta.maintainers ++ [ skeidel ]; ··· 31 }); 32 in 33 34 - self
··· 1 + { lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA, attachPkgs 2 , tiles ? true, Cocoa 3 , debug ? false 4 , useXdgDir ? false ··· 19 sha256 = "15l6w6lxays7qmsv0ci2ry53asb9an9dh7l7fc13256k085qcg68"; 20 }; 21 22 meta = common.meta // { 23 maintainers = with lib.maintainers; 24 common.meta.maintainers ++ [ skeidel ]; ··· 26 }); 27 in 28 29 + attachPkgs pkgs self