tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
cataclysmDDA: add utility function `attachPkgs`
Mitsuhiro Nakamura
5 years ago
0c02a559
19deef39
+36
-16
4 changed files
expand all
collapse all
unified
split
pkgs
games
cataclysm-dda
default.nix
git.nix
lib.nix
stable.nix
+2
-1
pkgs/games/cataclysm-dda/default.nix
···
33
33
buildMod
34
34
buildSoundPack
35
35
buildTileSet
36
36
-
wrapCDDA;
36
36
+
wrapCDDA
37
37
+
attachPkgs;
37
38
38
39
inherit pkgs;
39
40
};
+2
-7
pkgs/games/cataclysm-dda/git.nix
···
1
1
-
{ lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA
1
1
+
{ lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA, attachPkgs
2
2
, tiles ? true, Cocoa
3
3
, debug ? false
4
4
, useXdgDir ? false
···
26
26
"VERSION=git-${version}-${lib.substring 0 8 src.rev}"
27
27
];
28
28
29
29
-
passthru = common.passthru // {
30
30
-
pkgs = pkgs.override { build = self; };
31
31
-
withMods = wrapCDDA self;
32
32
-
};
33
33
-
34
29
meta = common.meta // {
35
30
maintainers = with lib.maintainers;
36
31
common.meta.maintainers ++ [ rardiol ];
···
38
33
});
39
34
in
40
35
41
41
-
self
36
36
+
attachPkgs pkgs self
+30
-1
pkgs/games/cataclysm-dda/lib.nix
···
1
1
{ callPackage }:
2
2
3
3
-
{
3
3
+
rec {
4
4
buildMod = callPackage ./builder.nix {
5
5
type = "mod";
6
6
};
···
14
14
};
15
15
16
16
wrapCDDA = callPackage ./wrapper.nix {};
17
17
+
18
18
+
# Required to fix `pkgs` and `withMods` attrs after applying `overrideAttrs`.
19
19
+
#
20
20
+
# Example:
21
21
+
# let
22
22
+
# myBuild = cataclysmDDA.jenkins.latest.tiles.overrideAttrs (_: {
23
23
+
# x = "hello";
24
24
+
# });
25
25
+
#
26
26
+
# # This refers to the derivation before overriding! So, `badExample.x` is not accessible.
27
27
+
# badExample = myBuild.withMods (_: []);
28
28
+
#
29
29
+
# # `myBuild` is correctly referred by `withMods` and `goodExample.x` is accessible.
30
30
+
# goodExample = let
31
31
+
# inherit (cataclysmDDA) attachPkgs pkgs;
32
32
+
# in
33
33
+
# (attachPkgs pkgs myBuild).withMods (_: []);
34
34
+
# in
35
35
+
# goodExample.x # returns "hello"
36
36
+
attachPkgs = pkgs: super:
37
37
+
let
38
38
+
self = super.overrideAttrs (old: {
39
39
+
passthru = old.passthru // {
40
40
+
pkgs = pkgs.override { build = self; };
41
41
+
withMods = wrapCDDA self;
42
42
+
};
43
43
+
});
44
44
+
in
45
45
+
self;
17
46
}
+2
-7
pkgs/games/cataclysm-dda/stable.nix
···
1
1
-
{ lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA
1
1
+
{ lib, callPackage, CoreFoundation, fetchFromGitHub, pkgs, wrapCDDA, attachPkgs
2
2
, tiles ? true, Cocoa
3
3
, debug ? false
4
4
, useXdgDir ? false
···
19
19
sha256 = "15l6w6lxays7qmsv0ci2ry53asb9an9dh7l7fc13256k085qcg68";
20
20
};
21
21
22
22
-
passthru = common.passthru // {
23
23
-
pkgs = pkgs.override { build = self; };
24
24
-
withMods = wrapCDDA self;
25
25
-
};
26
26
-
27
22
meta = common.meta // {
28
23
maintainers = with lib.maintainers;
29
24
common.meta.maintainers ++ [ skeidel ];
···
31
26
});
32
27
in
33
28
34
34
-
self
29
29
+
attachPkgs pkgs self