Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ build-asdf-system, spec, quicklispPackagesFor, stdenv, pkgs, ... }:
2
3let
4
5 inherit (pkgs.lib)
6 head
7 makeLibraryPath
8 makeSearchPath
9 setAttr
10 hasAttr
11 optionals
12 hasSuffix
13 splitString
14 remove
15 ;
16
17 # Used by builds that would otherwise attempt to write into storeDir.
18 #
19 # Will run build two times, keeping all files created during the
20 # first run, exept the FASL's. Then using that directory tree as the
21 # source of the second run.
22 #
23 # E.g. cl-unicode creating .txt files during compilation
24 build-with-compile-into-pwd = args:
25 let
26 build = (build-asdf-system (args // { version = args.version + "-build"; }))
27 .overrideAttrs(o: {
28 buildPhase = with builtins; ''
29 mkdir __fasls
30 export ASDF_OUTPUT_TRANSLATIONS="$(pwd):$(pwd)/__fasls:${storeDir}:${storeDir}"
31 export CL_SOURCE_REGISTRY=$CL_SOURCE_REGISTRY:$(pwd)//
32 ${o.pkg}/bin/${o.program} ${toString (o.flags or [])} < ${o.buildScript}
33 '';
34 installPhase = ''
35 mkdir -pv $out
36 rm -rf __fasls
37 cp -r * $out
38 '';
39 });
40 in build-asdf-system (args // {
41 # Patches are already applied in `build`
42 patches = [];
43 src = build;
44 });
45
46 # Makes it so packages imported from Quicklisp can be re-used as
47 # lispLibs ofpackages in this file.
48 ql = quicklispPackagesFor spec;
49
50 packages = ql.overrideScope (self: super: {
51
52 cl-environments = super.cl-environments.overrideLispAttrs (old: {
53 patches = old.patches or [] ++ [
54 # Needed because SB-INT:TRULY-DYNAMIC-EXTENT has been removed since sbcl 2.3.10.
55 # The update isn't available on quicklisp yet, but we can fetch from upstream directly
56 (pkgs.fetchpatch {
57 url = "https://github.com/alex-gutev/cl-environments/commit/1bd7ecf68adeaf654616c6fb763c1239e0f2e221.patch";
58 sha256 = "sha256-i6KdthYqPlJPvxM2c2kossHYvXNhpZHl/7NzELNrOHU=";
59 })
60 ];
61 });
62
63 cl-unicode = build-with-compile-into-pwd {
64 inherit (super.cl-unicode) pname version src systems;
65 lispLibs = super.cl-unicode.lispLibs ++ [ self.flexi-streams ];
66 };
67
68 dissect = super.dissect.overrideAttrs {
69 version = "1.0.0-trunk";
70 src = pkgs.fetchFromGitHub {
71 owner = "Shinmera";
72 repo = "dissect";
73 rev = "a70cabcd748cf7c041196efd711e2dcca2bbbb2c";
74 hash = "sha256-WXv/jbokgKJTc47rBjvOF5npnqDlsyr8oSXIzN/7ofo=";
75 };
76 };
77
78 cl-gobject-introspection = super.cl-gobject-introspection.overrideLispAttrs (o: {
79 postPatch = ''
80 substituteInPlace src/init.lisp \
81 --replace sb-ext::set-floating-point-modes sb-int:set-floating-point-modes
82 '';
83 });
84
85 jzon = super.com_dot_inuoe_dot_jzon;
86
87 cl-notify = build-asdf-system {
88 pname = "cl-notify";
89 version = "20080904-138ca7038";
90 src = pkgs.fetchzip {
91 url = "https://repo.or.cz/cl-notify.git/snapshot/138ca703861f4a1fbccbed557f92cf4d213668a1.tar.gz";
92 sha256 = "0k6ns6fzvjcbpsqgx85r4g5m25fvrdw9481i9vyabwym9q8bbqwx";
93 };
94 lispLibs = [
95 self.cffi
96 ];
97 nativeLibs = [
98 pkgs.libnotify
99 ];
100 };
101
102 cl-liballegro-nuklear = build-with-compile-into-pwd {
103 inherit (super.cl-liballegro-nuklear) pname version src;
104 nativeBuildInputs = [ pkgs.allegro5 ];
105 nativeLibs = [ pkgs.allegro5 ];
106 lispLibs = super.cl-liballegro-nuklear.lispLibs ++ [ self.cl-liballegro ];
107 patches = [ ./patches/cl-liballegro-nuklear-missing-dll.patch ];
108 };
109
110 lessp = build-asdf-system {
111 pname = "lessp";
112 version = "0.2-f8a9e4664";
113 src = pkgs.fetchzip {
114 url = "https://github.com/facts-db/cl-lessp/archive/632217602b85b679e8d420654a0aa39e798ca3b5.tar.gz";
115 sha256 = "0i3ia14dzqwjpygd0zn785ff5vqnnmkn75psfpyx0ni3jr71lkq9";
116 };
117 };
118
119 rollback = build-asdf-system {
120 pname = "rollback";
121 version = "0.1-5d3f21fda";
122 src = pkgs.fetchzip {
123 url = "https://github.com/facts-db/cl-rollback/archive/5d3f21fda8f04f35c5e9d20ee3b87db767915d15.tar.gz";
124 sha256 = "12dpxsbm2al633y87i8p784k2dn4bbskz6sl40v9f5ljjmjqjzxf";
125 };
126 };
127
128 facts = build-asdf-system {
129 pname = "facts";
130 version = "0.1-632217602";
131 src = pkgs.fetchzip {
132 url = "https://beta.quicklisp.org/archive/cl-facts/2022-11-06/cl-facts-20221106-git.tgz";
133 sha256 = "sha256-PBpyyJYkq1NjKK9VikSAL4TmrGRwUJlEWRSeKj/f4Sc=";
134 };
135 lispLibs = [ self.lessp self.rollback self.local-time ];
136 };
137
138 cl-fuse = build-with-compile-into-pwd {
139 inherit (super.cl-fuse) pname version src lispLibs;
140 nativeBuildInputs = [ pkgs.fuse ];
141 nativeLibs = [ pkgs.fuse ];
142 };
143
144 cl-containers = build-asdf-system {
145 inherit (super.cl-containers) pname version src;
146 lispLibs = super.cl-containers.lispLibs ++ [ self.moptilities ];
147 systems = [ "cl-containers" "cl-containers/with-moptilities" ];
148 };
149
150 swank = build-with-compile-into-pwd rec {
151 inherit (super.swank) pname lispLibs;
152 version = "2.29.1";
153 src = pkgs.fetchFromGitHub {
154 owner = "slime";
155 repo = "slime";
156 rev = "v${version}";
157 hash = "sha256-5hNB5XxbTER4HX3dn4umUGnw6UeiTQkczmggFz4uWoE=";
158 };
159 systems = [ "swank" "swank/exts" ];
160 patches = [ ./patches/swank-pure-paths.patch ];
161 postConfigure = ''
162 substituteAllInPlace swank-loader.lisp
163 '';
164 };
165
166 slynk = build-asdf-system {
167 pname = "slynk";
168 version = "trunk";
169 src = pkgs.fetchFromGitHub {
170 owner = "joaotavora";
171 repo = "sly";
172 rev = "ba40c8f054ec3b7040a6c36a1ef3e9596b936421";
173 hash = "sha256-hoaCZtyezuXptDPnAvBTT0SZ14M9Ifrmki3beBOwFmI=";
174 };
175 systems = [
176 "slynk" "slynk/arglists" "slynk/fancy-inspector"
177 "slynk/package-fu" "slynk/mrepl" "slynk/trace-dialog"
178 "slynk/profiler" "slynk/stickers" "slynk/indentation"
179 "slynk/retro"
180 ];
181 };
182
183 cephes = build-with-compile-into-pwd {
184 inherit (super.cephes) pname version src lispLibs;
185 patches = [ ./patches/cephes-make.patch ];
186 postConfigure = ''
187 substituteAllInPlace cephes.asd
188 '';
189 };
190
191 clx-truetype = build-asdf-system {
192 pname = "clx-truetype";
193 version = "20160825-git";
194 src = pkgs.fetchzip {
195 url = "http://beta.quicklisp.org/archive/clx-truetype/2016-08-25/clx-truetype-20160825-git.tgz";
196 sha256 = "079hyp92cjkdfn6bhkxsrwnibiqbz4y4af6nl31lzw6nm91j5j37";
197 };
198 lispLibs = with self; [
199 alexandria bordeaux-threads cl-aa cl-fad cl-paths cl-paths-ttf
200 cl-store cl-vectors clx trivial-features zpb-ttf
201 ];
202 };
203
204 mathkit = build-asdf-system {
205 inherit (super.mathkit) pname version src asds ;
206 lispLibs = super.mathkit.lispLibs ++ [ super.sb-cga ];
207 };
208
209 cl-colors2_0_5_4 = build-asdf-system {
210 inherit (super.cl-colors2) pname systems lispLibs;
211 version = "0.5.4";
212
213 src = pkgs.fetchgit {
214 url = "https://codeberg.org/cage/cl-colors2";
215 rev = "v0.5.4";
216 sha256 = "sha256-JbT1BKjaXDwdlzHLPjX1eg0RMIOT86R17SPgbe2h+tA=";
217 };
218 };
219
220 prompter = build-asdf-system rec {
221 pname = "prompter";
222 version = "20240108-git";
223
224 src = pkgs.fetchFromGitHub {
225 owner = "atlas-engineer";
226 repo = "prompter";
227 rev = "7890ed5d02e70aba01ceb964c6ee4f40776e7dc0";
228 hash = "sha256-rRKtpSKAqfzvnlC3NQ4840RrlbBUpI4V6uX6p5hRJWQ=";
229 };
230
231 lispLibs = [
232 self.cl-containers
233 self.nclasses
234 self.alexandria
235 self.calispel
236 self.closer-mop
237 self.lparallel
238 self.moptilities
239 self.serapeum
240 self.str
241 self.trivial-package-local-nicknames
242 ];
243
244 };
245
246 njson = build-asdf-system rec {
247 pname = "njson";
248 version = "1.2.2";
249 src = pkgs.fetchFromGitHub {
250 owner = "atlas-engineer";
251 repo = "njson";
252 rev = version;
253 sha256 = "sha256-kw5DD0GJp/TeCiYATBY8GL8UKqYS6Q4j0a0eQsdcZRc=";
254 };
255 lispLibs = [ self.cl-json self.com_dot_inuoe_dot_jzon];
256 systems = [ "njson" "njson/cl-json" "njson/jzon"];
257 };
258
259 nsymbols = build-asdf-system rec {
260 pname = "nsymbols";
261 version = "0.3.2";
262 src = pkgs.fetchFromGitHub {
263 owner = "atlas-engineer";
264 repo = "nsymbols";
265 rev = version;
266 sha256 = "sha256-psk29WEA7Hxgp29oUniBNvI+lyZfMkdpa5A7okc6kKs=";
267 };
268 lispLibs = [ self.closer-mop ];
269 systems = [ "nsymbols" "nsymbols/star" ];
270
271 };
272
273 nclasses = build-asdf-system rec {
274 pname = "nclasses";
275 version = "0.6.1";
276 src = pkgs.fetchFromGitHub {
277 owner = "atlas-engineer";
278 repo = "nclasses";
279 rev = version;
280 sha256 = "sha256-foXmaLxMYMFieB2Yd2iPsU4EX5kLXq7kyElqGZ47OgI=";
281 };
282 lispLibs = [ self.moptilities ];
283 };
284
285 nfiles = build-asdf-system rec {
286 pname = "nfiles";
287 version = "1.1.4";
288 src = pkgs.fetchFromGitHub {
289 owner = "atlas-engineer";
290 repo = "nfiles";
291 rev = version;
292 sha256 = "sha256-4rhpBErQgZHcwZRblxgiYaUmKalvllSbJjnRteDVH6k=";
293 };
294 lispLibs = [
295 self.nclasses
296 self.quri
297 self.alexandria
298 self.iolib
299 self.serapeum
300 self.trivial-garbage
301 self.trivial-package-local-nicknames
302 self.trivial-types
303 ];
304 };
305
306 nhooks = build-asdf-system rec {
307 pname = "nhooks";
308 version = "1.2.2";
309 src = pkgs.fetchFromGitHub {
310 owner = "atlas-engineer";
311 repo = "nhooks";
312 rev = version;
313 hash = "sha256-6A3fsemsv2KbTmdGMQeL9iHFUBHc4kK6CRNVyc91LdU=";
314 };
315 lispLibs = with self; [ bordeaux-threads closer-mop serapeum ];
316 };
317
318 nkeymaps = build-asdf-system rec {
319 pname = "nkeymaps";
320 version = "1.1.1";
321 src = pkgs.fetchFromGitHub {
322 owner = "atlas-engineer";
323 repo = "nkeymaps";
324 rev = version;
325 hash = "sha256-/t85Yh4EvnSyIM6xeDBLmfVz3wddmavInXzeYafNMJ0=";
326 };
327 lispLibs = with self; [ alexandria fset trivial-package-local-nicknames
328 str ];
329 };
330
331
332 history-tree = build-asdf-system rec {
333 pname = "history-tree";
334 version = "0.1.2";
335 src = pkgs.fetchFromGitHub {
336 owner = "atlas-engineer";
337 repo = "history-tree";
338 rev = version;
339 hash = "sha256-wpVONvShNnvrPOlbNoX/t9sYiwxnIKnnJaJyALEyeNg=";
340 };
341 lispLibs = with self; [
342 alexandria
343 cl-custom-hash-table
344 local-time
345 nclasses
346 trivial-package-local-nicknames
347 ];
348 };
349
350 nyxt-gtk = build-asdf-system {
351 pname = "nyxt";
352 version = "3.11.6";
353
354 lispLibs = (with self; [
355 alexandria
356 bordeaux-threads
357 calispel
358 cl-base64
359 cl-gopher
360 cl-html-diff
361 cl-json
362 cl-ppcre
363 cl-ppcre-unicode
364 cl-prevalence
365 cl-qrencode
366 cl-tld
367 closer-mop
368 dissect
369 moptilities
370 dexador
371 enchant
372 flexi-streams
373 idna
374 iolib
375 lass
376 local-time
377 lparallel
378 log4cl
379 montezuma
380 ndebug
381 osicat
382 parenscript
383 py-configparser
384 serapeum
385 str
386 phos
387 plump
388 clss
389 spinneret
390 trivia
391 trivial-features
392 trivial-garbage
393 trivial-package-local-nicknames
394 trivial-types
395 unix-opts
396 cluffer
397 cl-cffi-gtk
398 quri
399 sqlite
400 trivial-clipboard
401 cl-gobject-introspection
402 cl-webkit2
403 slynk
404 iterate
405 symbol-munger
406 history-tree
407 nhooks
408 nkeymaps
409 prompter
410 cl-colors2_0_5_4
411 njson
412 nsymbols
413 nclasses
414 nfiles
415 cl-containers
416 swank
417 ]);
418
419 src = pkgs.fetchFromGitHub {
420 owner = "atlas-engineer";
421 repo = "nyxt";
422 rev = "3.11.6";
423 hash = "sha256-o+4LnSNyhdz5YAjNQJuE2ERtt48PckjKfts9QVRw82A=";
424 };
425
426 nativeBuildInputs = [ pkgs.makeWrapper ];
427
428 buildInputs = [
429 # needed for GSETTINGS_SCHEMAS_PATH
430 pkgs.gsettings-desktop-schemas pkgs.glib pkgs.gtk3
431
432 # needed for XDG_ICON_DIRS
433 pkgs.adwaita-icon-theme
434 ];
435
436 # This patch removes the :build-operation component from the nyxt/gi-gtk-application system.
437 # This is done because if asdf:operate is used and the operation matches the system's :build-operation
438 # then output translations are ignored, causing the result of the operation to be placed where
439 # the .asd is located, which in this case is the nix store.
440 # see: https://gitlab.common-lisp.net/asdf/asdf/-/blob/master/doc/asdf.texinfo#L2582
441 patches = [ ./patches/nyxt-remove-build-operation.patch ];
442
443 NASDF_USE_LOGICAL_PATHS = true;
444
445 buildScript = pkgs.writeText "build-nyxt.lisp" ''
446 (load "${super.alexandria.asdfFasl}/asdf.${super.alexandria.faslExt}")
447 (require :uiop)
448 (let ((pwd (uiop:ensure-directory-pathname (uiop/os:getcwd))))
449 (asdf:load-asd (uiop:merge-pathnames* "libraries/nasdf/nasdf.asd" pwd))
450 (asdf:load-asd (uiop:merge-pathnames* "nyxt.asd" pwd)))
451 ;; There's a weird error while copy/pasting in Nyxt that manifests with sb-ext:save-lisp-and-die, so we use asdf:operare :program-op instead
452 (asdf:operate :program-op :nyxt/gi-gtk-application)
453 '';
454
455 # TODO(kasper): use wrapGAppsHook3
456 installPhase = ''
457 mkdir -pv $out
458 cp -r * $out
459 rm -fv $out/nyxt
460 mkdir -p $out/bin
461 cp -v nyxt $out/bin
462 wrapProgram $out/bin/nyxt \
463 --prefix LD_LIBRARY_PATH : $LD_LIBRARY_PATH \
464 --prefix XDG_DATA_DIRS : $XDG_ICON_DIRS \
465 --prefix XDG_DATA_DIRS : $GSETTINGS_SCHEMAS_PATH \
466 --prefix GI_TYPELIB_PATH : $GI_TYPELIB_PATH \
467 --prefix GIO_EXTRA_MODULES ":" ${pkgs.dconf.lib}/lib/gio/modules/ \
468 --prefix GIO_EXTRA_MODULES ":" ${pkgs.glib-networking}/lib/gio/modules/
469 '';
470 };
471
472 nyxt = self.nyxt-gtk;
473
474 stumpwm = super.stumpwm.overrideLispAttrs (o: rec {
475 version = "22.11";
476 src = pkgs.fetchFromGitHub {
477 owner = "stumpwm";
478 repo = "stumpwm";
479 rev = version;
480 hash = "sha256-zXj17ucgyFhv7P0qEr4cYSVRPGrL1KEIofXWN2trr/M=";
481 };
482 buildScript = pkgs.writeText "build-stumpwm.lisp" ''
483 (load "${super.stumpwm.asdfFasl}/asdf.${super.stumpwm.faslExt}")
484
485 (asdf:load-system 'stumpwm)
486
487 ;; Prevents package conflict error
488 (when (uiop:version<= "3.1.5" (asdf:asdf-version))
489 (uiop:symbol-call '#:asdf '#:register-immutable-system :stumpwm)
490 (dolist (system-name (uiop:symbol-call '#:asdf
491 '#:system-depends-on
492 (asdf:find-system :stumpwm)))
493 (uiop:symbol-call '#:asdf '#:register-immutable-system system-name)))
494
495 ;; Prevents "cannot create /homeless-shelter" error
496 (asdf:disable-output-translations)
497
498 (sb-ext:save-lisp-and-die
499 "stumpwm"
500 :executable t
501 :purify t
502 #+sb-core-compression :compression
503 #+sb-core-compression t
504 :toplevel #'stumpwm:stumpwm)
505 '';
506 installPhase = ''
507 mkdir -p $out/bin
508 cp -v stumpwm $out/bin
509 '';
510 });
511
512 stumpwm-unwrapped = super.stumpwm;
513
514 clfswm = super.clfswm.overrideAttrs (o: rec {
515 buildScript = pkgs.writeText "build-clfswm.lisp" ''
516 (load "${o.asdfFasl}/asdf.${o.faslExt}")
517 (asdf:load-system 'clfswm)
518 (sb-ext:save-lisp-and-die
519 "clfswm"
520 :executable t
521 #+sb-core-compression :compression
522 #+sb-core-compression t
523 :toplevel #'clfswm:main)
524 '';
525 installPhase = o.installPhase + ''
526 mkdir -p $out/bin
527 mv $out/clfswm $out/bin
528 '';
529 });
530
531 magicl = build-with-compile-into-pwd {
532 inherit (super.magicl) pname version src lispLibs;
533 nativeBuildInputs = [ pkgs.gfortran ];
534 nativeLibs = [ pkgs.openblas ];
535 patches = [ ./patches/magicl-dont-build-fortran-twice.patch ];
536 };
537
538 cl-glib = build-asdf-system {
539 pname = "cl-glib";
540 version = "1.0.0";
541 src = pkgs.fetchFromGitHub {
542 owner = "bohonghuang";
543 repo = "cl-glib";
544 rev = "84b128192d6b11cf03f1150e474a23368f07edff";
545 hash = "sha256-A56Yz+W4n1rAxxZg15zfkrLMbKMEG/zsWqaX7+kx4Qg=";
546 };
547 lispLibs = with self; [
548 cl-gobject-introspection-wrapper
549 bordeaux-threads
550 ];
551 };
552
553 cl-glib_dot_gio = build-asdf-system {
554 pname = "cl-glib.gio";
555 version = "1.0.0";
556 src = pkgs.fetchFromGitHub {
557 owner = "bohonghuang";
558 repo = "cl-glib";
559 rev = "84b128192d6b11cf03f1150e474a23368f07edff";
560 hash = "sha256-A56Yz+W4n1rAxxZg15zfkrLMbKMEG/zsWqaX7+kx4Qg=";
561 };
562 lispLibs = with self; [
563 cl-gobject-introspection-wrapper
564 ];
565 };
566
567 cl-gtk4 = build-asdf-system {
568 pname = "cl-gtk4";
569 version = "1.0.0";
570 src = pkgs.fetchFromGitHub {
571 owner = "bohonghuang";
572 repo = "cl-gtk4";
573 rev = "e18f621b996fd986d9829d590203c690440dee64";
574 hash = "sha256-++qydw6db4O3m+DAjutVPN8IuePOxseo9vhWEvwiR6E=";
575 };
576 lispLibs = with self; [
577 cl-gobject-introspection-wrapper
578 cl-glib
579 cl-glib_dot_gio
580 ];
581 nativeBuildInputs = [
582 pkgs.gobject-introspection
583 pkgs.gtk4
584 ];
585 nativeLibs = [
586 pkgs.gtk4
587 ];
588 };
589
590 cl-gtk4_dot_adw = build-asdf-system {
591 pname = "cl-gtk4.adw";
592 version = "1.0.0";
593 src = pkgs.fetchFromGitHub {
594 owner = "bohonghuang";
595 repo = "cl-gtk4";
596 rev = "e18f621b996fd986d9829d590203c690440dee64";
597 hash = "sha256-++qydw6db4O3m+DAjutVPN8IuePOxseo9vhWEvwiR6E=";
598 };
599 lispLibs = with self; [
600 cl-gobject-introspection-wrapper
601 cl-gtk4
602 ];
603 nativeBuildInputs = [
604 pkgs.libadwaita
605 ];
606 nativeLibs = [
607 pkgs.libadwaita
608 ];
609 };
610
611 cl-gtk4_dot_webkit2 = build-asdf-system {
612 pname = "cl-gtk4.webkit2";
613 version = "1.0.0";
614 src = pkgs.fetchFromGitHub {
615 owner = "bohonghuang";
616 repo = "cl-gtk4";
617 rev = "e18f621b996fd986d9829d590203c690440dee64";
618 hash = "sha256-++qydw6db4O3m+DAjutVPN8IuePOxseo9vhWEvwiR6E=";
619 };
620 lispLibs = with self; [
621 cl-gobject-introspection-wrapper
622 cl-gtk4
623 ];
624 nativeBuildInputs = [
625 pkgs.webkitgtk_6_0
626 ];
627 nativeLibs = [
628 pkgs.webkitgtk_6_0
629 ];
630 # Requires old webkitgtk_5_0 which was replaced by webkitgtk_6_0
631 meta.broken = true;
632 };
633
634 cl-avro = build-asdf-system {
635 pname = "cl-avro";
636 version = "trunk";
637 src = pkgs.fetchFromGitHub {
638 owner = "SahilKang";
639 repo = "cl-avro";
640 rev = "7d624253e98afb987a01729bd72c99bae02f0d7d";
641 hash = "sha256-AlTn+Q1gKnAFEfcnz9+VeHz681pPIirg2za3VXYiNWk=";
642 };
643 lispLibs = with self; [
644 alexandria
645 babel
646 chipz
647 closer-mop
648 ieee-floats
649 flexi-streams
650 local-time
651 local-time-duration
652 md5
653 salza2
654 st-json
655 time-interval
656 trivial-extensible-sequences
657 ];
658 };
659
660 trivial-clock = build-asdf-system {
661 pname = "trivial-clock";
662 version = "trunk";
663 src = pkgs.fetchFromGitHub {
664 owner = "ak-coram";
665 repo = "cl-trivial-clock";
666 rev = "641e12ab1763914996beb1ceee67aabc9f1a3b1e";
667 hash = "sha256-mltQEJ2asxyQ/aS/9BuWmN3XZ9bGmmkopcF5YJU1cPk=";
668 };
669 systems = [ "trivial-clock" "trivial-clock/test" ];
670 lispLibs = [ self.cffi self.fiveam ];
671 };
672
673 frugal-uuid = build-asdf-system {
674 pname = "frugal-uuid";
675 version = "trunk";
676 src = pkgs.fetchFromGitHub {
677 owner = "ak-coram";
678 repo = "cl-frugal-uuid";
679 rev = "be27972333a16fc3f16bc7fbf9e3013b2123d75c";
680 hash = "sha256-rWO43vWMibF8/OxL70jle5nhd9oRWC7+MI44KWrQD48=";
681 };
682 systems = [ "frugal-uuid"
683 "frugal-uuid/non-frugal"
684 "frugal-uuid/benchmark"
685 "frugal-uuid/test" ];
686 lispLibs = with self; [
687 babel
688 bordeaux-threads
689 fiveam
690 ironclad
691 trivial-benchmark
692 trivial-clock
693 ];
694 };
695
696 duckdb = build-asdf-system {
697 pname = "duckdb";
698 version = "trunk";
699 src = pkgs.fetchFromGitHub {
700 owner = "ak-coram";
701 repo = "cl-duckdb";
702 rev = "3ed1df5ba5c738a0b7fed7aa73632ec86f558d09";
703 hash = "sha256-AJMxhtDACe6WTwEOxLsC8y6uBaPqjt8HLRw/eIZI02E=";
704 };
705 systems = [ "duckdb" "duckdb/test" "duckdb/benchmark" ];
706 lispLibs = with self; [
707 bordeaux-threads
708 cffi-libffi
709 cl-ascii-table
710 cl-spark
711 cl-ppcre
712 frugal-uuid
713 let-plus
714 local-time
715 local-time-duration
716 periods
717 float-features
718 ];
719 nativeLibs = with pkgs; [
720 duckdb libffi
721 ];
722 };
723
724 polyclot = build-asdf-system {
725 pname = "polyclot";
726 version = "trunk";
727 src = pkgs.fetchfossil {
728 url = "https://fossil.turtleware.eu/polyclot";
729 rev = "e678b3c3e002f53b446780406c9ed13f8451309d22a1dc50ced4dbeedf08a1ec";
730 sha256 = "sha256-J08bU9HSVbzEivYtQsyIYPZJTrugj+jJSa4LglS0Olg=";
731 };
732 systems = [ "eu.turtleware.polyclot" "eu.turtleware.polyclot/demo" ];
733 lispLibs = with self; [ clim mcclim mcclim-layouts ];
734 };
735
736 kons-9 = build-asdf-system rec {
737 pname = "kons-9";
738 version = "trunk";
739 src = pkgs.fetchFromGitHub {
740 owner = "kaveh808";
741 repo = "kons-9";
742 rev = "95ad44fac0566f445c4b7bd040339dcff75ee992";
743 sha256 = "19rl7372j9f1cv2kl55r8vyf4dhcz4way4hkjgysbxzrb1psp17n";
744 };
745 systems = [ "kons-9" "kons-9/testsuite" ];
746 lispLibs = with self; [
747 closer-mop trivial-main-thread trivial-backtrace cffi cl-opengl cl-glu
748 cl-glfw3 cl-paths-ttf zpb-ttf cl-vectors origin clobber
749 org_dot_melusina_dot_confidence
750 ];
751 };
752
753 sb-cga = build-asdf-system {
754 pname = "sb-cga";
755 version = "1.0.1";
756 src = pkgs.fetchFromGitHub {
757 owner = "nikodemus";
758 repo = "sb-cga";
759 rev = "9a554ea1c01cac998ff7eaa5f767bc5bcdc4c094";
760 sha256 = "sha256-iBM+VXu6JRqGmeIFzfXbGot+elvangmfSpDB7DjFpPg";
761 };
762 lispLibs = [ self.alexandria ];
763 };
764
765 nsb-cga = super.nsb-cga.overrideLispAttrs (oa: {
766 lispLibs = oa.lispLibs ++ [ self.sb-cga ];
767 });
768
769 qlot-cli = build-asdf-system rec {
770 pname = "qlot";
771 version = "1.5.2";
772
773 src = pkgs.fetchFromGitHub {
774 owner = "fukamachi";
775 repo = "qlot";
776 rev = "refs/tags/${version}";
777 hash = "sha256-j9iT25Yz9Z6llCKwwiHlVNKLqwuKvY194LrAzXuljsE=";
778 };
779
780 lispLibs = with self; [
781 archive
782 deflate
783 dexador
784 fuzzy-match
785 ironclad
786 lparallel
787 yason
788 ];
789
790 nativeLibs = [
791 pkgs.openssl
792 ];
793
794 nativeBuildInputs = [
795 pkgs.makeWrapper
796 ];
797
798 buildScript = pkgs.writeText "build-qlot-cli" ''
799 (load "${self.qlot-cli.asdfFasl}/asdf.${self.qlot-cli.faslExt}")
800 (asdf:load-system :qlot/command)
801 (asdf:load-system :qlot/subcommands)
802
803 ;; Use uiop:dump-image instead of sb-ext:dump-image for the image restore hooks
804 (setf uiop:*image-entry-point* #'qlot/cli:main)
805 (uiop:dump-image "qlot"
806 :executable t
807 #+sb-core-compression :compression
808 #+sb-core-compression t)
809 '';
810
811 installPhase = ''
812 runHook preInstall
813
814 mkdir -p $out/bin
815 cp qlot.asd $out
816 rm *.asd
817 cp -r * $out
818
819 mv $out/qlot $out/bin
820 wrapProgram $out/bin/qlot \
821 --prefix LD_LIBRARY_PATH : $LD_LIBRARY_PATH
822
823 runHook postInstall
824 '';
825
826 meta.mainProgram = "qlot";
827 };
828
829 misc-extensions = super.misc-extensions.overrideLispAttrs (old: rec {
830 version = "4.0.3";
831 src = pkgs.fetchFromGitLab {
832 domain = "gitlab.common-lisp.net";
833 owner = "misc-extensions";
834 repo = "misc-extensions";
835 rev = "v${version}";
836 hash = "sha256-bDNI4mIaNw/rf7ZwvwolKo6+mUUxsgubGUd/988sHAo=";
837 };
838 });
839
840 fset = super.fset.overrideLispAttrs (old: rec {
841 version = "1.4.0";
842 src = pkgs.fetchFromGitHub {
843 owner = "slburson";
844 repo = "fset";
845 rev = "v${version}";
846 hash = "sha256-alO8Ek5Xpyl5N99/LgyIZ50aoRbY7bKh3XBntFV6Q5k=";
847 };
848 lispLibs = with super; [
849 self.misc-extensions
850 mt19937
851 named-readtables
852 ];
853 meta = {
854 description = "functional collections library";
855 homepage = "https://gitlab.common-lisp.net/fset/fset/-/wikis/home";
856 license = pkgs.lib.licenses.llgpl21;
857 };
858 });
859
860 coalton = build-asdf-system {
861 pname = "coalton";
862 version = "trunk";
863 src = pkgs.fetchFromGitHub {
864 owner = "coalton-lang";
865 repo = "coalton";
866 rev = "05111b8a59e3f7346b175ce1ec621bff588e1e1f";
867 hash = "sha256-L9o7Y3zDx9qLXGe/70c1LWEKUWsSRgBQru66mIuaCFw=";
868 };
869 lispLibs = with super; [
870 alexandria
871 eclector-concrete-syntax-tree
872 fiasco
873 float-features
874 self.fset
875 named-readtables
876 trivial-garbage
877 ];
878 nativeLibs = [ pkgs.mpfr ];
879 systems = [ "coalton" "coalton/tests" ];
880 meta = {
881 description = "statically typed functional programming language that supercharges Common Lisp";
882 homepage = "https://coalton-lang.github.io";
883 license = pkgs.lib.licenses.mit;
884 };
885 };
886
887 });
888
889in packages