-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
executable file
·156 lines (144 loc) · 4.58 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
{
description = "Doom2D flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
nix-github-actions.url = "github:nix-community/nix-github-actions";
osxcross.url = "github:polybluez/osxcross/framework";
DF-res = {
url = "github:Doom2D/DF-Res";
flake = false;
};
Doom2D-Forever = {
url = "git+https://github.com/Doom2D/Doom2D-Forever?submodules=1";
flake = false;
};
d2df-editor = {
url = "github:Doom2D/Doom2D-Forever/d2df-editor.git";
flake = false;
};
d2df-distro-content = {
url = "https://doom2d.org/doom2d_forever/latest/df_distro_content.rar";
flake = false;
};
d2df-distro-soundfont = {
url = "https://doom2d.org/doom2d_forever/latest/df_midi_bank.rar";
flake = false;
};
};
outputs = inputs @ {
self,
nixpkgs,
flake-utils,
nix-github-actions,
osxcross,
DF-res,
Doom2D-Forever,
d2df-editor,
d2df-distro-content,
d2df-distro-soundfont,
}:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system;
config = {
android_sdk.accept_license = true;
allowUnfree = true;
allowUnsupportedSystem = true;
};
overlays = [
(final: prev: {
wadcvt = final.callPackage d2dfPkgs.wadcvt {
inherit Doom2D-Forever;
};
dfwad = final.callPackage d2dfPkgs.dfwad {
src = pins.dfwad.src;
};
})
];
};
lib = pkgs.lib;
fpcPkgs = import ./fpc {
inherit (pkgs) callPackage fetchgit stdenv;
inherit pkgs;
inherit lib pins;
};
d2dfPkgs = import ./game;
bundles = import ./game/bundle {
inherit (pkgs) callPackage;
};
assetsLib = import ./game/assets {
inherit (pkgs) callPackage;
};
pins = import ./pins/generated.nix {
inherit (pkgs) fetchgit fetchurl fetchFromGitHub dockerTools;
};
in {
dfInputs = {
inherit Doom2D-Forever d2df-editor DF-res d2df-distro-content d2df-distro-soundfont;
};
osxcross = osxcross;
checks = let
nativeArches = lib.removeAttrs self.legacyPackages.${system} ["android" "universal"];
in
lib.mapAttrs (n: v: v.drv) (lib.foldl (acc: x: acc // x) {} (lib.map (x: x.executables) (lib.attrValues nativeArches)));
assetsLib = assetsLib;
executables = import ./packages/executables.nix {
inherit pkgs lib fpcPkgs d2dfPkgs;
inherit Doom2D-Forever d2df-editor;
inherit pins osxcross;
};
assets = import ./packages/assets.nix {
inherit lib;
inherit (pkgs) callPackage stdenv writeText dfwad;
inherit DF-res d2df-editor;
inherit (d2dfPkgs) buildWad;
inherit (assetsLib) mkAssetsPath;
};
inherit pins;
legacyPackages = import ./packages {
inherit lib;
inherit pins;
inherit (pkgs) callPackage;
inherit (assetsLib) androidRoot androidIcons mkAndroidManifest;
defaultAssetsPath = self.assets.${system}.defaultAssetsPath;
inherit (bundles) mkExecutablePath mkGamePath mkAndroidApk;
executablesAttrs = self.executables.${system};
};
packages = {
inherit (pkgs) wadcvt dfwad;
};
forPrebuild = let
thisPkgs = self.legacyPackages.${system};
nativeArches = lib.removeAttrs self.legacyPackages.${system} ["android" "universal" "mingw32" "mingw64"];
allArches = lib.attrNames nativeArches;
allDrvs = lib.flatten (lib.map (arch: thisPkgs.${arch}.__forPrebuild) allArches);
in
pkgs.linkFarmFromDrvs "cache" allDrvs;
devShells = {
default = pkgs.mkShell {
nativeBuildInputs = with pkgs; [
bash
alejandra
nixd
jq
_7zz
git
findutils
dos2unix
libfaketime
coreutils
openjdk
npins
unrar-wrapper
rar
openssl
coreutils-full
(pkgs.writeShellScriptBin "zipalign" "${self.legacyPackages.${system}.arm64-v8a-linux-android.__archPkgs.androidSdk}/libexec/android-sdk/build-tools/35.0.0/zipalign $@")
(pkgs.writeShellScriptBin "apksigner" "${self.legacyPackages.${system}.arm64-v8a-linux-android.__archPkgs.androidSdk}/libexec/android-sdk/build-tools/35.0.0/apksigner $@")
cdrkit
];
};
};
});
}