nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 stdenv,
3 pkgs,
4 lib,
5 chickenEggs,
6}:
7let
8 inherit (lib) addMetaAttrs;
9 addToNativeBuildInputs = pkg: old: {
10 nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ lib.toList pkg;
11 };
12 addToBuildInputs = pkg: old: {
13 buildInputs = (old.buildInputs or [ ]) ++ lib.toList pkg;
14 };
15 addToPropagatedBuildInputs = pkg: old: {
16 propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ lib.toList pkg;
17 };
18 addPkgConfig = old: {
19 nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.pkg-config ];
20 };
21 addToBuildInputsWithPkgConfig = pkg: old: (addPkgConfig old) // (addToBuildInputs pkg old);
22 addToPropagatedBuildInputsWithPkgConfig =
23 pkg: old: (addPkgConfig old) // (addToPropagatedBuildInputs pkg old);
24 broken = addMetaAttrs { broken = true; };
25 brokenOnDarwin = addMetaAttrs { broken = stdenv.hostPlatform.isDarwin; };
26 addToCscOptions = opt: old: {
27 CSC_OPTIONS = lib.concatStringsSep " " ([ old.CSC_OPTIONS or "" ] ++ lib.toList opt);
28 };
29in
30{
31 breadline = addToBuildInputs pkgs.readline;
32 blas = addToBuildInputsWithPkgConfig pkgs.blas;
33 blosc = addToBuildInputs pkgs.c-blosc;
34 botan = broken;
35 cairo =
36 old:
37 (addToBuildInputsWithPkgConfig pkgs.cairo old)
38 // (addToPropagatedBuildInputs (with chickenEggs; [
39 srfi-1
40 srfi-13
41 ]) old);
42 cmark = addToBuildInputs pkgs.cmark;
43 epoxy =
44 old:
45 (addToPropagatedBuildInputsWithPkgConfig pkgs.libepoxy old)
46 // {
47 env.NIX_CFLAGS_COMPILE = toString [
48 (
49 if stdenv.cc.isClang then
50 "-Wno-error=incompatible-function-pointer-types"
51 else
52 "-Wno-error=incompatible-pointer-types"
53 )
54 "-Wno-error=int-conversion"
55 ];
56 };
57 espeak = addToBuildInputsWithPkgConfig pkgs.espeak-ng;
58 exif = addToBuildInputsWithPkgConfig pkgs.libexif;
59 expat =
60 old:
61 (addToBuildInputsWithPkgConfig pkgs.expat old)
62 // {
63 env.NIX_CFLAGS_COMPILE = toString [
64 (
65 if stdenv.cc.isClang then
66 "-Wno-error=incompatible-function-pointer-types"
67 else
68 "-Wno-error=incompatible-pointer-types"
69 )
70 ];
71 };
72 ezxdisp =
73 old:
74 (addToBuildInputsWithPkgConfig pkgs.libx11 old)
75 // {
76 env.NIX_CFLAGS_COMPILE = toString [
77 "-Wno-error=implicit-function-declaration"
78 ];
79 };
80 freetype = addToBuildInputsWithPkgConfig pkgs.freetype;
81 fuse = addToBuildInputsWithPkgConfig pkgs.fuse;
82 gl-math = old: {
83 env.NIX_CFLAGS_COMPILE = toString [
84 "-Wno-error=incompatible-pointer-types"
85 ];
86 };
87 gl-utils = addPkgConfig;
88 glfw3 = addToBuildInputsWithPkgConfig pkgs.glfw3;
89 glls = addPkgConfig;
90 glut =
91 old:
92 (brokenOnDarwin old)
93 // lib.optionalAttrs (!stdenv.hostPlatform.isDarwin) (
94 addToCscOptions [
95 "-I${(lib.getDev pkgs.libglut)}/include"
96 "-I${(lib.getDev pkgs.libGL)}/include"
97 "-I${(lib.getDev pkgs.libGLU)}/include"
98 ] old
99 )
100 // (addToBuildInputs pkgs.libglut old);
101 icu = addToBuildInputsWithPkgConfig pkgs.icu;
102 imlib2 = addToBuildInputsWithPkgConfig pkgs.imlib2;
103 inotify =
104 old:
105 (addToBuildInputs (lib.optional stdenv.hostPlatform.isDarwin pkgs.libinotify-kqueue) old)
106 // lib.optionalAttrs stdenv.hostPlatform.isDarwin (addToCscOptions "-L -linotify" old);
107 leveldb = addToBuildInputs pkgs.leveldb;
108 magic = addToBuildInputs pkgs.file;
109 magic-pipes = addToBuildInputs pkgs.chickenPackages_5.chickenEggs.regex;
110 mdh =
111 old:
112 (addToBuildInputs pkgs.pcre old)
113 // {
114 env.NIX_CFLAGS_COMPILE = toString [
115 "-Wno-error=implicit-function-declaration"
116 "-Wno-error=implicit-int"
117 ];
118 };
119 # missing dependency in upstream egg
120 mistie = addToPropagatedBuildInputs (with chickenEggs; [ srfi-1 ]);
121 mosquitto = addToPropagatedBuildInputs [ pkgs.mosquitto ];
122 nanomsg = addToBuildInputs pkgs.nanomsg;
123 ncurses = addToBuildInputsWithPkgConfig [ pkgs.ncurses ];
124 opencl = addToBuildInputs [
125 pkgs.opencl-headers
126 pkgs.ocl-icd
127 ];
128 openssl = addToBuildInputs pkgs.openssl;
129 plot = addToBuildInputs pkgs.plotutils;
130 postgresql = addToBuildInputsWithPkgConfig pkgs.libpq;
131 rocksdb = addToBuildInputs pkgs.rocksdb_8_3;
132 # missing dependency in upstream egg
133 s9fes-char-graphics-shapes = addToPropagatedBuildInputs (
134 with chickenEggs;
135 [
136 utf8
137 s9fes-char-graphics
138 ]
139 );
140 # missing dependency in upstream egg
141 s9fes-char-graphics = addToPropagatedBuildInputs (
142 with chickenEggs;
143 [
144 srfi-1
145 utf8
146 record-variants
147 ]
148 );
149 scheme2c-compatibility = addPkgConfig;
150 sdl-base =
151 old:
152 (
153 (addToPropagatedBuildInputsWithPkgConfig pkgs.SDL old)
154 //
155 # needed for sdl-config to be in PATH
156 (addToNativeBuildInputs pkgs.SDL old)
157 );
158 sdl2 =
159 old:
160 (
161 (addToPropagatedBuildInputsWithPkgConfig pkgs.SDL2 old)
162 //
163 # needed for sdl2-config to be in PATH
164 (addToNativeBuildInputs pkgs.SDL2 old)
165 );
166 sdl2-image =
167 old:
168 (
169 (addToPropagatedBuildInputsWithPkgConfig pkgs.SDL2_image old)
170 //
171 # needed for sdl2-config to be in PATH
172 (addToNativeBuildInputs pkgs.SDL2 old)
173 );
174 sdl2-ttf =
175 old:
176 (
177 (addToPropagatedBuildInputsWithPkgConfig pkgs.SDL2_ttf old)
178 //
179 # needed for sdl2-config to be in PATH
180 (addToNativeBuildInputs pkgs.SDL2 old)
181 );
182 soil = addToPropagatedBuildInputsWithPkgConfig pkgs.libepoxy;
183 sqlite3 = addToBuildInputs pkgs.sqlite;
184 stemmer = old: (addToBuildInputs pkgs.libstemmer old) // (addToCscOptions "-L -lstemmer" old);
185 stfl =
186 old: (addToBuildInputs [ pkgs.ncurses pkgs.stfl ] old) // (addToCscOptions "-L -lncurses" old);
187 taglib =
188 old:
189 (addToBuildInputs [ pkgs.zlib pkgs.taglib_1 ] old)
190 // (
191 # needed for tablib-config to be in PATH
192 addToNativeBuildInputs pkgs.taglib_1 old
193 );
194 uuid-lib = addToBuildInputs pkgs.libuuid;
195 ws-client = addToBuildInputs pkgs.zlib;
196 xlib = addToPropagatedBuildInputs pkgs.libx11;
197 yaml = addToBuildInputs pkgs.libyaml;
198 zlib = addToBuildInputs pkgs.zlib;
199 zmq = addToBuildInputs pkgs.zeromq;
200 zstd = addToBuildInputs pkgs.zstd;
201
202 # less trivial fixes, should be upstreamed
203 git =
204 old:
205 (addToBuildInputsWithPkgConfig pkgs.libgit2 old)
206 // {
207 postPatch = ''
208 substituteInPlace libgit2.scm \
209 --replace "asize" "reserved"
210 '';
211 };
212 lazy-ffi =
213 old:
214 (addToBuildInputs pkgs.libffi old)
215 // {
216 postPatch = ''
217 substituteInPlace lazy-ffi.scm \
218 --replace "ffi/ffi.h" "ffi.h"
219 '';
220 };
221 opengl =
222 old:
223 (brokenOnDarwin old)
224 // (addToBuildInputsWithPkgConfig (lib.optionals (!stdenv.hostPlatform.isDarwin) [
225 pkgs.libGL
226 pkgs.libGLU
227 ]) old)
228 // {
229 postPatch = ''
230 substituteInPlace opengl.egg \
231 --replace 'framework ' 'framework" "'
232 '';
233 };
234 posix-shm = old: {
235 postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
236 substituteInPlace build.scm \
237 --replace "-lrt" ""
238 '';
239 };
240
241 # platform changes
242 pledge = addMetaAttrs { platforms = lib.platforms.openbsd; };
243 unveil = addMetaAttrs { platforms = lib.platforms.openbsd; };
244
245 # overrides for chicken 5.4
246 dbus =
247 old:
248 (addToBuildInputsWithPkgConfig [ pkgs.dbus ] old)
249 // {
250 # backticks in compiler options
251 # aren't supported anymore as of chicken 5.4, it seems.
252 preBuild = ''
253 substituteInPlace \
254 dbus.egg dbus.setup \
255 --replace '`pkg-config --cflags dbus-1`' "$(pkg-config --cflags dbus-1)" \
256 --replace '`pkg-config --libs dbus-1`' "$(pkg-config --libs dbus-1)"
257 '';
258 };
259 math = old: {
260 # define-values is used but not imported
261 # some breaking change happened now it needs to be done
262 # explicitly?
263 preBuild = ''
264 substituteInPlace *.scm **/*.scm \
265 --replace-quiet 'only chicken.base' 'only chicken.base define-values'
266 '';
267 };
268 socket = old: {
269 # chicken-do checks for changes to a file that doesn't exist
270 preBuild = ''
271 touch socket-config
272 '';
273 };
274
275 # mark broken
276 allegro =
277 old:
278 (broken old)
279 // {
280 # depends on 'chicken' egg, which doesn't exist, so we specify all the deps here (needs to be
281 # kept around even when marked as broken so that evaluation doesn't break due to the missing
282 # attribute).
283 propagatedBuildInputs = [
284 chickenEggs.foreigners
285 ];
286 };
287 ephem = broken;
288 canvas-draw = broken;
289 coops-utils = broken;
290 crypt = broken;
291 gemini = broken;
292 gemini-client = broken;
293 hypergiant = broken;
294 iup = broken;
295 kiwi = broken;
296 lmdb-ht = broken;
297 mpi = broken;
298 pyffi = broken;
299 qt-light = broken;
300 sundials = broken;
301 svn-client = broken;
302 tokyocabinet = broken;
303 # webkitgtk_4_0 was removed
304 webview = broken;
305
306 # mark broken darwin
307
308 # The last successful Darwin Hydra build was in 2024
309 iconv = brokenOnDarwin;
310 # fatal error: 'mqueue.h' file not found
311 posix-mq = brokenOnDarwin;
312 # Undefined symbols for architecture arm64: "_pthread_setschedprio"
313 pthreads = brokenOnDarwin;
314 # error: use of undeclared identifier 'B4000000'
315 stty = brokenOnDarwin;
316}