-
Notifications
You must be signed in to change notification settings - Fork 0
/
coil-core.nix
93 lines (91 loc) · 1.67 KB
/
coil-core.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
{ stdenv
, lib
, features ? null
, cmake
, ninja
, pkg-config
, writeText
, SDL2
, vulkan-headers
, vulkan-loader
, spirv-headers
, nlohmann_json
, zstd
, sqlite
, mbedtls
, libpng
, libsquish
, freetype
, harfbuzz
, wayland
, wayland-protocols
, wayland-scanner
, wlr-protocols
, libxkbcommon
, pulseaudio
, libogg
, libwebm
, libopus
, libgav1
, curl
, libdatachannel
, steam-sdk
}: let
hasFeature = feature: if features == null then true else features."${feature}" or false;
in stdenv.mkDerivation {
name = "coil-core";
src = ./src/coil;
nativeBuildInputs = [
cmake
ninja
] ++ lib.optionals stdenv.buildPlatform.isLinux [
pkg-config
] ++ lib.optionals (hasFeature "graphics" && stdenv.hostPlatform.isLinux) [
wayland-scanner
];
propagatedBuildInputs = [
nlohmann_json
zstd
sqlite
mbedtls
]
++ lib.optionals (hasFeature "graphics") [
SDL2
vulkan-headers
vulkan-loader
spirv-headers
libpng
libsquish
freetype
harfbuzz
]
++ lib.optionals (hasFeature "audio") [
libogg
libopus
]
++ lib.optionals (hasFeature "video") [
libwebm
libgav1
]
++ lib.optionals (hasFeature "network") [
curl
libdatachannel
]
++ lib.optionals (hasFeature "steam") [
steam-sdk
]
++ lib.optionals (hasFeature "graphics" && stdenv.hostPlatform.isLinux) [
wayland
wayland-protocols
wlr-protocols
libxkbcommon
]
++ lib.optionals (hasFeature "audio" && stdenv.hostPlatform.isLinux) [
pulseaudio
];
cmakeFlags = lib.optional (features != null) "-DCOIL_CORE_REQUIRE_LIBS=";
doCheck = true;
outputs = ["out" "dev"];
outputLib = "dev";
meta.license = lib.licenses.mit;
}