about summary refs log tree commit diff
path: root/third_party/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/lisp')
-rw-r--r--third_party/lisp/anaphora.nix7
-rw-r--r--third_party/lisp/babel.nix7
-rw-r--r--third_party/lisp/bordeaux-threads.nix7
-rw-r--r--third_party/lisp/cffi.nix7
-rw-r--r--third_party/lisp/chipz.nix7
-rw-r--r--third_party/lisp/chunga.nix7
-rw-r--r--third_party/lisp/cl-ansi-text.nix7
-rw-r--r--third_party/lisp/cl-base64.nix7
-rw-r--r--third_party/lisp/cl-colors.nix7
-rw-r--r--third_party/lisp/cl-colors2.nix11
-rw-r--r--third_party/lisp/cl-fad.nix7
-rw-r--r--third_party/lisp/cl-ppcre.nix7
-rw-r--r--third_party/lisp/cl-prevalence.nix7
-rw-r--r--third_party/lisp/cl-smtp.nix10
-rw-r--r--third_party/lisp/cl-who.nix10
-rw-r--r--third_party/lisp/closer-mop.nix7
-rw-r--r--third_party/lisp/closure-common.nix12
-rw-r--r--third_party/lisp/defclass-std.nix7
-rw-r--r--third_party/lisp/drakma.nix7
-rw-r--r--third_party/lisp/flexi-streams.nix9
-rw-r--r--third_party/lisp/global-vars.nix9
-rw-r--r--third_party/lisp/hunchentoot.nix8
-rw-r--r--third_party/lisp/ironclad.nix103
-rw-r--r--third_party/lisp/iterate.nix7
-rw-r--r--third_party/lisp/let-plus.nix7
-rw-r--r--third_party/lisp/local-time.nix19
-rw-r--r--third_party/lisp/marshal.nix9
-rw-r--r--third_party/lisp/md5.nix7
-rw-r--r--third_party/lisp/moptilities.nix7
-rw-r--r--third_party/lisp/nibbles.nix9
-rw-r--r--third_party/lisp/parse-float.nix9
-rw-r--r--third_party/lisp/parse-number.nix10
-rw-r--r--third_party/lisp/parseq.nix9
-rw-r--r--third_party/lisp/physical-quantities.nix9
-rw-r--r--third_party/lisp/postmodern.nix15
-rw-r--r--third_party/lisp/prove.nix7
-rw-r--r--third_party/lisp/puri.nix6
-rw-r--r--third_party/lisp/rfc2388.nix7
-rw-r--r--third_party/lisp/s-sysdeps.nix13
-rw-r--r--third_party/lisp/split-sequence.nix7
-rw-r--r--third_party/lisp/trivial-features.nix7
-rw-r--r--third_party/lisp/trivial-garbage.nix7
-rw-r--r--third_party/lisp/trivial-gray-streams.nix7
-rw-r--r--third_party/lisp/trivial-indent.nix9
-rw-r--r--third_party/lisp/trivial-mimes.nix7
-rw-r--r--third_party/lisp/uax-15.nix25
-rw-r--r--third_party/lisp/unix-opts.nix9
-rw-r--r--third_party/lisp/usocket-server.nix18
-rw-r--r--third_party/lisp/usocket.nix8
49 files changed, 172 insertions, 359 deletions
diff --git a/third_party/lisp/anaphora.nix b/third_party/lisp/anaphora.nix
index d2356f7b05ea..c079943e6725 100644
--- a/third_party/lisp/anaphora.nix
+++ b/third_party/lisp/anaphora.nix
@@ -1,11 +1,6 @@
 { depot, pkgs, ... }:
 
-let src = pkgs.fetchFromGitHub {
-    owner = "tokenrove";
-    repo = "anaphora";
-    rev = "018590df36ffb30ece561fb28ea6521363efc6e2";
-    sha256 = "0pq6y5swvrjd0kjs2dl2648s13s0pzxin0chrq35jam8jrci3kd1";
-  };
+let src = with pkgs; srcOnly lispPackages.anaphora;
 in depot.nix.buildLisp.library {
   name = "anaphora";
 
diff --git a/third_party/lisp/babel.nix b/third_party/lisp/babel.nix
index c4a49e833f76..ae7c5dd23d18 100644
--- a/third_party/lisp/babel.nix
+++ b/third_party/lisp/babel.nix
@@ -1,10 +1,7 @@
 # Babel is an encoding conversion library for Common Lisp.
-{ depot, ... }:
+{ depot, pkgs, ... }:
 
-let src = builtins.fetchGit {
-  url = "https://github.com/cl-babel/babel.git";
-  rev = "f892d0587c7f3a1e6c0899425921b48008c29ee3"; # 2020-07-19
-};
+let src = with pkgs; srcOnly lispPackages.babel;
 in depot.nix.buildLisp.library {
   name = "babel";
   deps = [
diff --git a/third_party/lisp/bordeaux-threads.nix b/third_party/lisp/bordeaux-threads.nix
index 92bc1f2629c4..17ee6e539ef8 100644
--- a/third_party/lisp/bordeaux-threads.nix
+++ b/third_party/lisp/bordeaux-threads.nix
@@ -1,12 +1,9 @@
 # This library is meant to make writing portable multi-threaded apps
 # in Common Lisp simple.
-{ depot, ... }:
+{ depot, pkgs, ... }:
 
 let
-  src = builtins.fetchGit {
-    url = "https://github.com/sionescu/bordeaux-threads.git";
-    rev = "499b6d3f0ce635417d6096acf0a671d8bf3f6e5f";
-  };
+  src = with pkgs; srcOnly lispPackages.bordeaux-threads;
   getSrc = f: "${src}/src/${f}";
 in depot.nix.buildLisp.library {
   name = "bordeaux-threads";
diff --git a/third_party/lisp/cffi.nix b/third_party/lisp/cffi.nix
index c8d240c8cd0e..de1d0c2e8ed7 100644
--- a/third_party/lisp/cffi.nix
+++ b/third_party/lisp/cffi.nix
@@ -1,11 +1,8 @@
 # CFFI purports to be the Common Foreign Function Interface.
-{ depot, ... }:
+{ depot, pkgs, ... }:
 
 with depot.nix;
-let src = builtins.fetchGit {
-  url = "https://github.com/cffi/cffi.git";
-  rev = "a49ff36a95cb62ffa6cb069d98378d665769926b";
-};
+let src = with pkgs; srcOnly lispPackages.cffi;
 in buildLisp.library {
   name = "cffi";
   deps = with depot.third_party.lisp; [
diff --git a/third_party/lisp/chipz.nix b/third_party/lisp/chipz.nix
index 2a68d3b1f8e9..59e9914ee1d1 100644
--- a/third_party/lisp/chipz.nix
+++ b/third_party/lisp/chipz.nix
@@ -1,12 +1,7 @@
 # Common Lisp library for decompressing deflate, zlib, gzip, and bzip2 data
 { depot, pkgs, ... }:
 
-let src = pkgs.fetchFromGitHub {
-  owner = "froydnj";
-  repo = "chipz";
-  rev = "75dfbc660a5a28161c57f115adf74c8a926bfc4d";
-  sha256 = "0plx4rs39zbs4gjk77h4a2q11zpy75fh9v8hnxrvsf8fnakajhwg";
-};
+let src = with pkgs; srcOnly lispPackages.chipz;
 in depot.nix.buildLisp.library {
   name = "chipz";
   deps = [ (depot.nix.buildLisp.bundled "asdf") ];
diff --git a/third_party/lisp/chunga.nix b/third_party/lisp/chunga.nix
index d40208063372..d3f50bcb1af8 100644
--- a/third_party/lisp/chunga.nix
+++ b/third_party/lisp/chunga.nix
@@ -1,12 +1,7 @@
 # Portable chunked streams for Common Lisp
 { depot, pkgs, ... }:
 
-let src = pkgs.fetchFromGitHub {
-  owner = "edicl";
-  repo = "chunga";
-  rev = "16330852d01dfde4dd97dee7cd985a88ea571e7e";
-  sha256 = "0jzn3nyb3f22gm983rfk99smqs3mhb9ivjmasvhq9qla5cl9pyhd";
-};
+let src = with pkgs; srcOnly lispPackages.chunga;
 in depot.nix.buildLisp.library {
   name = "chunga";
   deps = with depot.third_party.lisp; [
diff --git a/third_party/lisp/cl-ansi-text.nix b/third_party/lisp/cl-ansi-text.nix
index 5c01e023265a..0e3401524755 100644
--- a/third_party/lisp/cl-ansi-text.nix
+++ b/third_party/lisp/cl-ansi-text.nix
@@ -1,10 +1,7 @@
 # Enables ANSI colors for printing.
-{ depot, ... }:
+{ depot, pkgs, ... }:
 
-let src = builtins.fetchGit {
-  url = "https://github.com/pnathan/cl-ansi-text.git";
-  rev = "257a5f19a2dc92d22f8fd772c0a78923b99b36a8";
-};
+let src = with pkgs; srcOnly lispPackages.cl-ansi-text;
 in depot.nix.buildLisp.library {
   name = "cl-ansi-text";
   deps = with depot.third_party.lisp; [
diff --git a/third_party/lisp/cl-base64.nix b/third_party/lisp/cl-base64.nix
index 1152601a81d3..08055a047119 100644
--- a/third_party/lisp/cl-base64.nix
+++ b/third_party/lisp/cl-base64.nix
@@ -1,10 +1,7 @@
 # Base64 encoding for Common Lisp
-{ depot, ... }:
+{ depot, pkgs, ... }:
 
-let src = builtins.fetchGit {
-  url = "http://git.kpe.io/cl-base64.git";
-  rev = "fc62a5342445d4ec1dd44e95f7dc513473a8c89a";
-};
+let src = with pkgs; srcOnly lispPackages.cl-base64;
 in depot.nix.buildLisp.library {
   name = "cl-base64";
   srcs = [
diff --git a/third_party/lisp/cl-colors.nix b/third_party/lisp/cl-colors.nix
index 71f78e424e79..b51e4d46a747 100644
--- a/third_party/lisp/cl-colors.nix
+++ b/third_party/lisp/cl-colors.nix
@@ -1,11 +1,6 @@
 { depot, pkgs, ... }:
 
-let
-  src = pkgs.fetchgit {
-    url = "https://github.com/tpapp/cl-colors.git";
-    rev = "827410584553f5c717eec6182343b7605f707f75";
-    hash = "sha256:0l446lday4hybsm9bq3jli97fvv8jb1d33abg79vbylpwjmf3y9a";
-  };
+let src = with pkgs; srcOnly lispPackages.cl-colors;
 in depot.nix.buildLisp.library {
   name = "cl-colors";
   deps = [
diff --git a/third_party/lisp/cl-colors2.nix b/third_party/lisp/cl-colors2.nix
index c90b8eae0118..34201bc2faa0 100644
--- a/third_party/lisp/cl-colors2.nix
+++ b/third_party/lisp/cl-colors2.nix
@@ -1,10 +1,6 @@
+{ depot, pkgs, ... }:
 
-{ depot, ... }:
-
-let src = builtins.fetchGit {
-  url = "https://notabug.org/cage/cl-colors2.git";
-  rev = "795aedee593b095fecde574bd999b520dd03ed24";
-};
+let src = with pkgs; srcOnly lispPackages.cl-colors2;
 in depot.nix.buildLisp.library {
   name = "cl-colors2";
   deps = with depot.third_party.lisp; [
@@ -15,7 +11,8 @@ in depot.nix.buildLisp.library {
   srcs = map (f: src + ("/" + f)) [
     "package.lisp"
     "colors.lisp"
-    "colornames.lisp"
+    "colornames-x11.lisp"
+    "colornames-svg.lisp"
     "hexcolors.lisp"
   ];
 }
diff --git a/third_party/lisp/cl-fad.nix b/third_party/lisp/cl-fad.nix
index 905e0821cac7..ec1170bf1661 100644
--- a/third_party/lisp/cl-fad.nix
+++ b/third_party/lisp/cl-fad.nix
@@ -3,12 +3,7 @@
 
 with depot.nix;
 
-let src = pkgs.fetchFromGitHub {
-  owner = "edicl";
-  repo = "cl-fad";
-  rev = "13cbffe08fc660041359302f4057f8fc20d09402"; # 2021-01-10
-  sha256 = "049laj8an6g9bh0m0cn0bxhq313p8qq1h37cil15l66147ad8slc";
-};
+let src = with pkgs; srcOnly lispPackages.cl-fad;
 in buildLisp.library {
   name = "cl-fad";
 
diff --git a/third_party/lisp/cl-ppcre.nix b/third_party/lisp/cl-ppcre.nix
index 1dc9eb553118..561e306191ca 100644
--- a/third_party/lisp/cl-ppcre.nix
+++ b/third_party/lisp/cl-ppcre.nix
@@ -1,10 +1,7 @@
 # cl-ppcre is a Common Lisp regular expression library.
-{ depot, ... }:
+{ depot, pkgs, ... }:
 
-let src = builtins.fetchGit {
-  url = "https://github.com/edicl/cl-ppcre";
-  rev = "1ca0cd9ca0d161acd49c463d6cb5fff897596e2f";
-};
+let src = with pkgs; srcOnly lispPackages.cl-ppcre;
 in depot.nix.buildLisp.library {
   name = "cl-ppcre";
 
diff --git a/third_party/lisp/cl-prevalence.nix b/third_party/lisp/cl-prevalence.nix
index f793136194cb..188cbc686d28 100644
--- a/third_party/lisp/cl-prevalence.nix
+++ b/third_party/lisp/cl-prevalence.nix
@@ -2,12 +2,7 @@
 # an in-memory database)
 { depot, pkgs, ... }:
 
-let src = pkgs.fetchFromGitHub {
-  owner = "40ants";
-  repo = "cl-prevalence";
-  rev = "b1f90a525f37be0335a8761051fa5661aa74b696";
-  sha256 = "1svw58pp7jxb9l08cgnqxf0cf8qa9qsb0z2fnv86a51z7pfz4c0g";
-};
+let src = with pkgs; srcOnly lispPackages.cl-prevalence;
 in depot.nix.buildLisp.library {
   name = "cl-prevalence";
 
diff --git a/third_party/lisp/cl-smtp.nix b/third_party/lisp/cl-smtp.nix
index a9905b5ef6f5..7ab9bea59ff5 100644
--- a/third_party/lisp/cl-smtp.nix
+++ b/third_party/lisp/cl-smtp.nix
@@ -1,14 +1,6 @@
 { depot, pkgs, ... }:
 
-let
-  src = pkgs.fetchFromGitLab {
-    domain = "gitlab.common-lisp.net";
-    owner = "cl-smtp";
-    repo = "cl-smtp";
-    rev = "ed47d326fad867ee11323fa3a0f307b5d40e8f2b";
-    sha256 = "0vjjfapcrdc5671jz2d24h8zvpz7skq1x6pi9fvw6ls5sgms6fr0";
-  };
-
+let src = with pkgs; srcOnly lispPackages.cl-smtp;
 in depot.nix.buildLisp.library {
   name = "cl-smtp";
   deps = with depot.third_party.lisp; [
diff --git a/third_party/lisp/cl-who.nix b/third_party/lisp/cl-who.nix
index 50e4e68c0348..601b09f118db 100644
--- a/third_party/lisp/cl-who.nix
+++ b/third_party/lisp/cl-who.nix
@@ -1,14 +1,6 @@
 { depot, pkgs, ... }:
 
-let
-
-  src = pkgs.fetchFromGitHub {
-    owner = "edicl";
-    repo = "cl-who";
-    rev = "0d3826475133271ee8c590937136c1bc41b8cbe0";
-    sha256 = "0sc8nji9q1df04lhsiwsjy1a35996bibl31w5hp5sh8q6sa122dy";
-  };
-
+let src = with pkgs; srcOnly lispPackages.cl-who;
 in depot.nix.buildLisp.library {
   name = "cl-who";
 
diff --git a/third_party/lisp/closer-mop.nix b/third_party/lisp/closer-mop.nix
index 21fb3ba14bef..145b9cfd4325 100644
--- a/third_party/lisp/closer-mop.nix
+++ b/third_party/lisp/closer-mop.nix
@@ -3,12 +3,7 @@
 # Lisp implementations
 { depot, pkgs, ... }:
 
-let src = pkgs.fetchFromGitHub {
-  owner = "pcostanza";
-  repo = "closer-mop";
-  rev = "8ec9577029b08ade5978236121c9ac276f78d8be"; # 2021-07-30
-  sha256 = "0dm8xsa3hzpxjd7x248pbzd8blw01a8ls7spalzgbg1g7vbn6zg5";
-};
+let src = with pkgs; srcOnly lispPackages.closer-mop;
 in depot.nix.buildLisp.library {
   name = "closer-mop";
 
diff --git a/third_party/lisp/closure-common.nix b/third_party/lisp/closure-common.nix
index 591620e48705..0856fc9e52d8 100644
--- a/third_party/lisp/closure-common.nix
+++ b/third_party/lisp/closure-common.nix
@@ -1,17 +1,9 @@
 { depot, pkgs, ... }:
 
 let
-  src = pkgs.fetchFromGitHub {
-    owner = "sharplispers";
-    repo = "closure-common";
-    rev = "e3c5f5f454b72b01b89115e581c3c52a7e201e5c"; # 2018-09-09
-    sha256 = "0k5r2qxn122pxi301ijir3nayi9sg4d7yiy276l36qmzwhp4mg5n";
-  };
-
+  src = with pkgs; srcOnly lispPackages.closure-common;
   getSrcs = builtins.map (p: "${src}/${p}");
-in
-
-depot.nix.buildLisp.library {
+in depot.nix.buildLisp.library {
   name = "closure-common";
 
   # closure-common.asd surpresses some warnings otherwise breaking
diff --git a/third_party/lisp/defclass-std.nix b/third_party/lisp/defclass-std.nix
index 781fd107f59d..c31ddb3c5b74 100644
--- a/third_party/lisp/defclass-std.nix
+++ b/third_party/lisp/defclass-std.nix
@@ -2,12 +2,7 @@
 # Seems to be unmaintained (since early 2021)
 { depot, pkgs, ... }:
 
-let src = pkgs.fetchFromGitHub {
-    owner = "EuAndreh";
-    repo = "defclass-std";
-    rev = "a4d32260a619eddf3a3e49df3af304f3c07ccec6";
-    sha256 = "1c0ymb49wd205lzxmnmsrpqyv0pn61snn2xvsbk5iis135r4fr18";
-  };
+let src = with pkgs; srcOnly lispPackages.defclass-std;
 in depot.nix.buildLisp.library {
   name = "defclass-std";
   deps = with depot.third_party.lisp; [
diff --git a/third_party/lisp/drakma.nix b/third_party/lisp/drakma.nix
index 3757aad7b144..607f438d7e72 100644
--- a/third_party/lisp/drakma.nix
+++ b/third_party/lisp/drakma.nix
@@ -1,12 +1,7 @@
 # Drakma is an HTTP client for Common Lisp.
 { depot, pkgs, ... }:
 
-let src = pkgs.fetchFromGitHub {
-  owner = "edicl";
-  repo = "drakma";
-  rev = "87feb02bef00b11a753d5fb21a5fec526b0d0bbb";
-  sha256 = "01b80am2vrw94xmdj7f21qm7p5ys08mmpzv4nc4icql81hqr1w2m";
-};
+let src = with pkgs; srcOnly lispPackages.drakma;
 in depot.nix.buildLisp.library {
   name = "drakma";
   deps = with depot.third_party.lisp; [
diff --git a/third_party/lisp/flexi-streams.nix b/third_party/lisp/flexi-streams.nix
index 8cdf062f1cf2..4b8880902458 100644
--- a/third_party/lisp/flexi-streams.nix
+++ b/third_party/lisp/flexi-streams.nix
@@ -1,10 +1,7 @@
 # Flexible bivalent streams for Common Lisp
-{ depot, ... }:
+{ depot, pkgs, ... }:
 
-let src = builtins.fetchGit {
-  url = "https://github.com/edicl/flexi-streams.git";
-  rev = "0fd872ae32022e834ef861a67d86879cf33a6b64";
-};
+let src = with pkgs; srcOnly lispPackages.flexi-streams;
 in depot.nix.buildLisp.library {
   name = "flexi-streams";
   deps = [ depot.third_party.lisp.trivial-gray-streams ];
@@ -14,7 +11,9 @@ in depot.nix.buildLisp.library {
     "mapping.lisp"
     "ascii.lisp"
     "koi8-r.lisp"
+    "mac.lisp"
     "iso-8859.lisp"
+    "enc-cn-tbl.lisp"
     "code-pages.lisp"
     "specials.lisp"
     "util.lisp"
diff --git a/third_party/lisp/global-vars.nix b/third_party/lisp/global-vars.nix
index 2b4078f588cd..0f6630f721de 100644
--- a/third_party/lisp/global-vars.nix
+++ b/third_party/lisp/global-vars.nix
@@ -1,13 +1,6 @@
 { depot, pkgs, ... }:
 
-let
-  src = pkgs.fetchFromGitHub {
-    owner = "lmj";
-    repo = "global-vars";
-    rev = "c749f32c9b606a1457daa47d59630708ac0c266e";
-    sha256 = "06m3xc8l3pgsapl8fvsi9wf6y46zs75cp9zn7zh6dc65v4s5wz3d";
-  };
-
+let src = with pkgs; srcOnly lispPackages.global-vars;
 in depot.nix.buildLisp.library {
   name = "global-vars";
   srcs = [ "${src}/global-vars.lisp" ] ;
diff --git a/third_party/lisp/hunchentoot.nix b/third_party/lisp/hunchentoot.nix
index 24eae6a348cf..5b953d94b29e 100644
--- a/third_party/lisp/hunchentoot.nix
+++ b/third_party/lisp/hunchentoot.nix
@@ -2,12 +2,8 @@
 { depot, pkgs, ...}:
 
 let
-  src = pkgs.fetchFromGitHub {
-    owner = "edicl";
-    repo = "hunchentoot";
-    rev = "585b45b6b873f2da421fdf456b61860ab5868207";
-    sha256 = "13nazwix067mdclq9vgjhsi2vpr57a8dz51dd5d3h99ccsq4mik5";
-  };
+  src = with pkgs; srcOnly lispPackages.hunchentoot;
+
   url-rewrite = depot.nix.buildLisp.library {
     name = "url-rewrite";
 
diff --git a/third_party/lisp/ironclad.nix b/third_party/lisp/ironclad.nix
index cdd829924ee5..3436776b7da6 100644
--- a/third_party/lisp/ironclad.nix
+++ b/third_party/lisp/ironclad.nix
@@ -3,13 +3,7 @@
 let
   inherit (pkgs) runCommand;
   inherit (depot.nix.buildLisp) bundled;
-  src = pkgs.fetchFromGitHub {
-    owner = "sharplispers";
-    repo = "ironclad";
-    rev = "c3aa33080621abc10fdb0f34acc4655cc4e982a6";
-    sha256 = "0k4bib9mbrzalbl9ivkw4a7g4c7bbad1l5jw4pzkifqszy2swkr5";
-  };
-
+  src = with pkgs; srcOnly lispPackages.ironclad;
   getSrc = f: "${src}/src/${f}";
 
 in depot.nix.buildLisp.library {
@@ -24,19 +18,22 @@ in depot.nix.buildLisp.library {
     nibbles
   ];
 
-  srcs = [
-    {
-      # TODO(grfn): Figure out how to get this compiling with the assembly
-      # optimization eventually - see https://cl.tvl.fyi/c/depot/+/1333
-      sbcl = runCommand "package.lisp" {} ''
-        substitute ${src}/src/package.lisp $out \
-          --replace \#-ecl-bytecmp "" \
-          --replace '(pushnew :ironclad-assembly *features*)' ""
-      '';
-      default = getSrc "package.lisp";
-    }
-  ] ++ map getSrc [
+  srcs = map getSrc [
+    # {
+    #   # TODO(grfn): Figure out how to get this compiling with the assembly
+    #   # optimization eventually - see https://cl.tvl.fyi/c/depot/+/1333
+    #   sbcl = runCommand "package.lisp" {} ''
+    #     substitute ${src}/src/package.lisp $out \
+    #       --replace \#-ecl-bytecmp "" \
+    #       --replace '(pushnew :ironclad-assembly *features*)' ""
+    #   '';
+    #   default = getSrc "package.lisp";
+    # }
+    "package.lisp"
+    "conditions.lisp"
+    "generic.lisp"
     "macro-utils.lisp"
+    "util.lisp"
   ] ++ [
     { sbcl = getSrc "opt/sbcl/fndb.lisp"; }
     { sbcl = getSrc "opt/sbcl/cpu-features.lisp"; }
@@ -46,36 +43,31 @@ in depot.nix.buildLisp.library {
 
     { ccl = getSrc "opt/ccl/x86oid-vm.lisp"; }
   ] ++ map getSrc [
-
     "common.lisp"
-    "conditions.lisp"
-    "generic.lisp"
-    "util.lisp"
 
-    "ciphers/padding.lisp"
     "ciphers/cipher.lisp"
-    "ciphers/chacha.lisp"
+    "ciphers/padding.lisp"
+    "ciphers/make-cipher.lisp"
     "ciphers/modes.lisp"
-    "ciphers/salsa20.lisp"
-    "ciphers/xchacha.lisp"
-    "ciphers/xsalsa20.lisp"
+
+    # subsystem def ironclad/ciphers
     "ciphers/aes.lisp"
     "ciphers/arcfour.lisp"
-    "ciphers/arcfour.lisp"
     "ciphers/aria.lisp"
     "ciphers/blowfish.lisp"
     "ciphers/camellia.lisp"
     "ciphers/cast5.lisp"
+    "ciphers/chacha.lisp"
     "ciphers/des.lisp"
     "ciphers/idea.lisp"
-    "ciphers/keystream.lisp"
     "ciphers/kalyna.lisp"
     "ciphers/kuznyechik.lisp"
-    "ciphers/make-cipher.lisp"
     "ciphers/misty1.lisp"
     "ciphers/rc2.lisp"
     "ciphers/rc5.lisp"
     "ciphers/rc6.lisp"
+    "ciphers/salsa20.lisp"
+    "ciphers/keystream.lisp"
     "ciphers/seed.lisp"
     "ciphers/serpent.lisp"
     "ciphers/sm4.lisp"
@@ -84,10 +76,13 @@ in depot.nix.buildLisp.library {
     "ciphers/tea.lisp"
     "ciphers/threefish.lisp"
     "ciphers/twofish.lisp"
+    "ciphers/xchacha.lisp"
     "ciphers/xor.lisp"
+    "ciphers/xsalsa20.lisp"
     "ciphers/xtea.lisp"
 
     "digests/digest.lisp"
+    # subsystem def ironclad/digests
     "digests/adler32.lisp"
     "digests/blake2.lisp"
     "digests/blake2s.lisp"
@@ -113,14 +108,8 @@ in depot.nix.buildLisp.library {
     "digests/tree-hash.lisp"
     "digests/whirlpool.lisp"
 
-    "prng/prng.lisp"
-    "prng/generator.lisp"
-    "prng/fortuna.lisp"
-    "prng/os-prng.lisp"
-
-    "math.lisp"
-
     "macs/mac.lisp"
+    # subsystem def ironclad/macs
     "macs/blake2-mac.lisp"
     "macs/blake2s-mac.lisp"
     "macs/cmac.lisp"
@@ -130,26 +119,44 @@ in depot.nix.buildLisp.library {
     "macs/siphash.lisp"
     "macs/skein-mac.lisp"
 
-    "kdf/kdf-common.lisp"
-    "kdf/argon2.lisp"
-    "kdf/password-hash.lisp"
-    "kdf/pkcs5.lisp"
-    "kdf/scrypt.lisp"
-    "kdf/hmac.lisp"
+    "prng/prng.lisp"
+    "prng/os-prng.lisp"
+    "prng/generator.lisp"
+    "prng/fortuna.lisp"
+
+    "math.lisp"
+
+    "octet-stream.lisp"
 
     "aead/aead.lisp"
+    # subsystem def ironclad/aead
     "aead/eax.lisp"
     "aead/etm.lisp"
     "aead/gcm.lisp"
 
+    "kdf/kdf.lisp"
+    # subsystem def ironclad/kdfs
+    "kdf/argon2.lisp"
+    "kdf/bcrypt.lisp"
+    "kdf/hmac.lisp"
+    "kdf/pkcs5.lisp"
+    "kdf/password-hash.lisp"
+    "kdf/scrypt.lisp"
+
     "public-key/public-key.lisp"
+    "public-key/pkcs1.lisp"
+    "public-key/elliptic-curve.lisp"
+    # subsystem def ironclad/public-keys
+    "public-key/dsa.lisp"
+    "public-key/rsa.lisp"
+    "public-key/elgamal.lisp"
     "public-key/curve25519.lisp"
     "public-key/curve448.lisp"
-    "public-key/dsa.lisp"
     "public-key/ed25519.lisp"
     "public-key/ed448.lisp"
-    "public-key/elgamal.lisp"
-    "public-key/pkcs1.lisp"
-    "public-key/rsa.lisp"
+    "public-key/secp256k1.lisp"
+    "public-key/secp256r1.lisp"
+    "public-key/secp384r1.lisp"
+    "public-key/secp521r1.lisp"
   ];
 }
diff --git a/third_party/lisp/iterate.nix b/third_party/lisp/iterate.nix
index 5875be8d5c88..b7d60265ac37 100644
--- a/third_party/lisp/iterate.nix
+++ b/third_party/lisp/iterate.nix
@@ -1,11 +1,8 @@
 # iterate is an iteration construct for Common Lisp, similar to the
 # LOOP macro.
-{ depot, ... }:
+{ depot, pkgs, ... }:
 
-let src = builtins.fetchGit {
-  url = "https://gitlab.common-lisp.net/iterate/iterate.git";
-  rev = "c24f6715bb3b962499bb4643636baaac2df4a957"; # 2021-05-23, 1.5.3
-};
+let src = with pkgs; srcOnly lispPackages.iterate;
 in depot.nix.buildLisp.library {
   name = "iterate";
   srcs = [
diff --git a/third_party/lisp/let-plus.nix b/third_party/lisp/let-plus.nix
index 3afb640e4e5a..bd7f31dfa0de 100644
--- a/third_party/lisp/let-plus.nix
+++ b/third_party/lisp/let-plus.nix
@@ -1,11 +1,6 @@
 { depot, pkgs, ... }:
 
-let
-  src = pkgs.fetchgit {
-    url = "https://github.com/tpapp/let-plus.git";
-    rev = "7cf18b29ed0fe9c667a9a6a101b08ab9661a59e9";
-    hash = "sha256:1xy3b05dwjddk33mah2jaigm4jzsmrxjcc1d0dhsw0krwgr4450f";
-  };
+let src = with pkgs; srcOnly lispPackages.let-plus;
 in depot.nix.buildLisp.library {
   name = "let-plus";
   deps = [
diff --git a/third_party/lisp/local-time.nix b/third_party/lisp/local-time.nix
index 65fb9c37fbf2..8e96c5e51714 100644
--- a/third_party/lisp/local-time.nix
+++ b/third_party/lisp/local-time.nix
@@ -1,15 +1,18 @@
 # Library for manipulating dates & times
 { depot, pkgs, ... }:
 
-let src = pkgs.fetchFromGitHub {
-  owner = "dlowe-net";
-  repo = "local-time";
-  rev = "dc54f61415c76ee755a6f69d4154a3a282f2789f";
-  sha256 = "1l9v07ghx7g9p2gp003fki4j8bsa1w2gbm40qc41i94mdzikc0ry";
-};
-in depot.nix.buildLisp.library {
+let
+  inherit (depot.nix) buildLisp;
+  src = with pkgs; srcOnly lispPackages.local-time;
+in buildLisp.library {
   name = "local-time";
-  deps = [ depot.third_party.lisp.cl-fad ];
+  deps = [
+    depot.third_party.lisp.cl-fad
+    {
+      scbl = buildLisp.bundled "uiop";
+      default = buildLisp.bundled "asdf";
+    }
+  ];
 
   srcs = [
     "${src}/src/package.lisp"
diff --git a/third_party/lisp/marshal.nix b/third_party/lisp/marshal.nix
index 711e6e082d61..73a1664a0162 100644
--- a/third_party/lisp/marshal.nix
+++ b/third_party/lisp/marshal.nix
@@ -1,13 +1,6 @@
 { depot, pkgs, ... }:
 
-let
-  src = pkgs.fetchFromGitHub {
-    owner = "wlbr";
-    repo = "cl-marshal";
-    rev = "eff1b15f2b0af2f26f71ad6a4dd5c4beab9299ec";
-    sha256 = "08qs6fhk38xpkkjkpcj92mxx0lgy4ygrbbzrmnivdx281syr0gwh";
-  };
-
+let src = with pkgs; srcOnly lispPackages.marshal;
 in depot.nix.buildLisp.library {
   name = "marshal";
   srcs = map (f: src + ("/" + f)) [
diff --git a/third_party/lisp/md5.nix b/third_party/lisp/md5.nix
index ef265d5b6e8f..8c3e255f166b 100644
--- a/third_party/lisp/md5.nix
+++ b/third_party/lisp/md5.nix
@@ -3,12 +3,7 @@
 
 with depot.nix;
 
-let src = pkgs.fetchFromGitHub {
-  owner = "pmai";
-  repo = "md5";
-  rev = "b1412600f60d526ee34a7ba1596ec483da7894ab";
-  sha256 = "0lzip6b6xg7gd70xl1xmqp24fvxqj6ywjnz9lmx7988zpj20nhl2";
-};
+let src = with pkgs; srcOnly lispPackages.md5;
 in buildLisp.library {
   name = "md5";
   deps = [
diff --git a/third_party/lisp/moptilities.nix b/third_party/lisp/moptilities.nix
index a8a387ab914f..d38fbcb9469a 100644
--- a/third_party/lisp/moptilities.nix
+++ b/third_party/lisp/moptilities.nix
@@ -1,12 +1,7 @@
 # Compatibility layer for minor MOP implementation differences
 { depot, pkgs, ... }:
 
-let src = pkgs.fetchFromGitHub {
-  owner = "gwkkwg";
-  repo = "moptilities";
-  rev = "a436f16b357c96b82397ec018ea469574c10dd41";
-  sha256 = "1q12bqjbj47lx98yim1kfnnhgfhkl80102fkgp9pdqxg0fp6g5fc";
-};
+let src = with pkgs; srcOnly lispPackages.moptilities;
 in depot.nix.buildLisp.library {
   name = "moptilities";
   deps = [ depot.third_party.lisp.closer-mop ];
diff --git a/third_party/lisp/nibbles.nix b/third_party/lisp/nibbles.nix
index da542fe91130..3c0a75e46dc7 100644
--- a/third_party/lisp/nibbles.nix
+++ b/third_party/lisp/nibbles.nix
@@ -2,14 +2,7 @@
 
 let
   inherit (depot.nix.buildLisp) bundled;
-  src = pkgs.fetchFromGitHub {
-    owner = "sharplispers";
-    repo = "nibbles";
-    rev = "dad25240928d5cf8f7df69c4398244e03570bb35";
-    sha256 = "0r6ljlpgjmkf87pmvdwzva8qj15bhznc3ylgcjjqyy4frbx9lygz";
-    name = "nibbles-source";
-  };
-
+  src = with pkgs; srcOnly lispPackages.nibbles;
 in depot.nix.buildLisp.library {
   name = "nibbles";
 
diff --git a/third_party/lisp/parse-float.nix b/third_party/lisp/parse-float.nix
index 4e36e69c7d98..e90824108ed1 100644
--- a/third_party/lisp/parse-float.nix
+++ b/third_party/lisp/parse-float.nix
@@ -1,13 +1,6 @@
 { depot, pkgs, ... }:
 
-let
-  src = pkgs.fetchFromGitHub {
-    owner = "soemraws";
-    repo = "parse-float";
-    rev = "3074765101e41222b6b624a66aaf1e6416379f9c";
-    sha256 = "0jd2spawc3v8vzqf8ky4cngl45jm65fhkrdf20mf6dcbn3mzpkmr";
-  };
-
+let src = with pkgs; srcOnly lispPackages.parse-float;
 in depot.nix.buildLisp.library {
   name = "parse-float";
 
diff --git a/third_party/lisp/parse-number.nix b/third_party/lisp/parse-number.nix
index 1ceba2863d8d..61b0b1fddbda 100644
--- a/third_party/lisp/parse-number.nix
+++ b/third_party/lisp/parse-number.nix
@@ -1,14 +1,6 @@
 { depot, pkgs, ... }:
 
-let
-
-  src = pkgs.fetchFromGitHub {
-    owner = "sharplispers";
-    repo = "parse-number";
-    rev = "7707b224c4b941c2cbd28459113534242cee3a31";
-    sha256 = "0sk06ib1bhqv9y39vwnnw44vmbc4b0kvqm37xxmkxd4dwchq82d7";
-  };
-
+let src = with pkgs; srcOnly lispPackages.parse-number;
 in depot.nix.buildLisp.library {
   name = "parse-number";
   srcs = map (f: src + ("/" + f)) [
diff --git a/third_party/lisp/parseq.nix b/third_party/lisp/parseq.nix
index fe045d52996f..23c67c2d9c30 100644
--- a/third_party/lisp/parseq.nix
+++ b/third_party/lisp/parseq.nix
@@ -1,13 +1,6 @@
 { depot, pkgs, ... }:
 
-let
-  src = pkgs.fetchFromGitHub {
-    owner = "mrossini-ethz";
-    repo = "parseq";
-    rev = "5cd95b324b68255d89f27f8065f4c29674558b26";
-    sha256 = "1f3vvxgyiv0xn2hzafhh63l3gnvn2vaxr5pi3ld7d340mka2ndg0";
-  };
-
+let src = with pkgs; srcOnly lispPackages.parseq;
 in depot.nix.buildLisp.library {
   name = "parseq";
 
diff --git a/third_party/lisp/physical-quantities.nix b/third_party/lisp/physical-quantities.nix
index b8079e8ebaaf..d594ff1a1cf7 100644
--- a/third_party/lisp/physical-quantities.nix
+++ b/third_party/lisp/physical-quantities.nix
@@ -1,13 +1,6 @@
 { depot, pkgs, ... }:
 
-let
-  src = pkgs.fetchFromGitHub {
-    owner = "mrossini-ethz";
-    repo = "physical-quantities";
-    rev = "v0.2.1";
-    sha256 = "0mb2s94s6fhw5vfa89naalw7ld11sdsszlqpz0c65dvpfyfmmdmh";
-  };
-
+let src = with pkgs; srcOnly lispPackages.physical-quantities;
 in depot.nix.buildLisp.library {
   name = "physical-quantities";
 
diff --git a/third_party/lisp/postmodern.nix b/third_party/lisp/postmodern.nix
index 333a9d9b770f..b2ea318f8a40 100644
--- a/third_party/lisp/postmodern.nix
+++ b/third_party/lisp/postmodern.nix
@@ -2,13 +2,7 @@
 
 let
   inherit (depot.nix.buildLisp) bundled;
-
-  src = pkgs.fetchFromGitHub {
-    owner = "marijnh";
-    repo = "Postmodern";
-    rev = "v1.32";
-    sha256 = "0prwmpixcqpzqd67v77cs4zgbs73a10m6hs7q0rpv0z1qm7mqfcb";
-  };
+  src = with pkgs; srcOnly lispPackages.postmodern;
 
   cl-postgres = depot.nix.buildLisp.library {
     name = "cl-postgres";
@@ -24,13 +18,15 @@ let
     srcs = map (f: src + ("/cl-postgres/" + f)) [
       "package.lisp"
       "features.lisp"
+      "config.lisp"
+      "oid.lisp"
       "errors.lisp"
+      "data-types.lisp"
       "sql-string.lisp"
       "trivial-utf-8.lisp"
       "strings-utf-8.lisp"
       "communicate.lisp"
       "messages.lisp"
-      "oid.lisp"
       "ieee-floats.lisp"
       "interpret.lisp"
       "saslprep.lisp"
@@ -50,6 +46,7 @@ let
 
     srcs = map (f: src + ("/s-sql/" + f)) [
       "package.lisp"
+      "config.lisp"
       "s-sql.lisp"
     ];
   };
@@ -72,7 +69,9 @@ let
       "${src}/postmodern.asd"
     ] ++ (map (f: src + ("/postmodern/" + f)) [
       "package.lisp"
+      "config.lisp"
       "connect.lisp"
+      "json-encoder.lisp"
       "query.lisp"
       "prepare.lisp"
       "roles.lisp"
diff --git a/third_party/lisp/prove.nix b/third_party/lisp/prove.nix
index 358049865efb..af481499207f 100644
--- a/third_party/lisp/prove.nix
+++ b/third_party/lisp/prove.nix
@@ -1,11 +1,6 @@
 { depot, pkgs, ... }:
 
-let
-  src = pkgs.fetchgit {
-    url = "https://github.com/fukamachi/prove.git";
-    rev = "5d71f02795b89e36f34e8c7d50e69b67ec6ca2de";
-    hash = "sha256:0ca6ha3zhmckq3ad9lxm6sbg4i0hg3m81xhan4dkxd3x9898jzpc";
-  };
+let src = with pkgs; srcOnly lispPackages.prove;
 in depot.nix.buildLisp.library {
   name = "prove";
 
diff --git a/third_party/lisp/puri.nix b/third_party/lisp/puri.nix
index 925b457f9f03..f7146ba93f1f 100644
--- a/third_party/lisp/puri.nix
+++ b/third_party/lisp/puri.nix
@@ -1,11 +1,7 @@
 # Portable URI library
 { depot, pkgs, ... }:
 
-let src = pkgs.fetchgit {
-  url = "http://git.kpe.io/puri.git";
-  rev = "4bbab89d9ccbb26346899d1f496c97604fec567b";
-  sha256 = "0gq2rsr0aihs0z20v4zqvmdl4szq53b52rh97pvnmwrlbn4mapmd";
-};
+let src = with pkgs; srcOnly lispPackages.puri;
 in depot.nix.buildLisp.library {
   name = "puri";
   srcs = [
diff --git a/third_party/lisp/rfc2388.nix b/third_party/lisp/rfc2388.nix
index 6af55f927001..b82a490c9d71 100644
--- a/third_party/lisp/rfc2388.nix
+++ b/third_party/lisp/rfc2388.nix
@@ -1,12 +1,7 @@
 # Implementation of RFC2388 (multipart/form-data)
 { depot, pkgs, ... }:
 
-let src = pkgs.fetchFromGitHub {
-  owner = "jdz";
-  repo = "rfc2388";
-  rev = "591bcf7e77f2c222c43953a80f8c297751dc0c4e";
-  sha256 = "0phh5n3clhl9ji8jaxrajidn22d3f0aq87mlbfkkxlnx2pnw694k";
-};
+let src = with pkgs; srcOnly lispPackages.rfc2388;
 in depot.nix.buildLisp.library {
   name = "rfc2388";
 
diff --git a/third_party/lisp/s-sysdeps.nix b/third_party/lisp/s-sysdeps.nix
index 571eb147c724..9c4da4a02b25 100644
--- a/third_party/lisp/s-sysdeps.nix
+++ b/third_party/lisp/s-sysdeps.nix
@@ -1,12 +1,7 @@
 # A Common Lisp abstraction layer over platform dependent functionality.
 { depot, pkgs, ... }:
 
-let src = pkgs.fetchFromGitHub {
-  owner = "svenvc";
-  repo = "s-sysdeps";
-  rev = "d28246b5dffef9e73a0e0e6cfbc4e878006fe34d";
-  sha256 = "14b69b81yrxmjlvmm3lfxk04x5v7hqz4fql121334wh72czznfh9";
-};
+let src = with pkgs; srcOnly lispPackages.s-sysdeps;
 in depot.nix.buildLisp.library {
   name = "s-sysdeps";
 
@@ -14,4 +9,10 @@ in depot.nix.buildLisp.library {
     "${src}/src/package.lisp"
     "${src}/src/sysdeps.lisp"
   ];
+
+  deps = with depot.third_party.lisp; [
+    bordeaux-threads
+    usocket
+    usocket-server
+  ];
 }
diff --git a/third_party/lisp/split-sequence.nix b/third_party/lisp/split-sequence.nix
index 105646386fd3..4e8f723c3182 100644
--- a/third_party/lisp/split-sequence.nix
+++ b/third_party/lisp/split-sequence.nix
@@ -1,10 +1,7 @@
 # split-sequence is a library for, well, splitting sequences apparently.
-{ depot, ... }:
+{ depot, pkgs, ... }:
 
-let src = builtins.fetchGit {
-  url = "https://github.com/sharplispers/split-sequence.git";
-  rev = "41c0fc79a5a2871d16e5727969a8f699ef44d791";
-};
+let src = with pkgs; srcOnly lispPackages.split-sequence;
 in depot.nix.buildLisp.library {
   name = "split-sequence";
   srcs = map (f: src + ("/" + f)) [
diff --git a/third_party/lisp/trivial-features.nix b/third_party/lisp/trivial-features.nix
index 13a63bab1aba..02abac54a853 100644
--- a/third_party/lisp/trivial-features.nix
+++ b/third_party/lisp/trivial-features.nix
@@ -1,9 +1,6 @@
-{ depot, ... }:
+{ depot, pkgs, ... }:
 
-let src = builtins.fetchGit {
-  url = "https://github.com/trivial-features/trivial-features.git";
-  rev = "f6e8dd7268ae0137dbde4be469101a7f735f6416"; # 2021-02-28
-};
+let src = with pkgs; srcOnly lispPackages.trivial-features;
 in depot.nix.buildLisp.library {
   name = "trivial-features";
   srcs = [
diff --git a/third_party/lisp/trivial-garbage.nix b/third_party/lisp/trivial-garbage.nix
index e5b3550de7ba..74224df60d91 100644
--- a/third_party/lisp/trivial-garbage.nix
+++ b/third_party/lisp/trivial-garbage.nix
@@ -1,11 +1,8 @@
 # trivial-garbage provides a portable API to finalizers, weak
 # hash-tables and weak pointers
-{ depot, ... }:
+{ depot, pkgs, ... }:
 
-let src = builtins.fetchGit {
-  url = "https://github.com/trivial-garbage/trivial-garbage.git";
-  rev = "dbc8e35acb0176b9a14fdc1027f5ebea93435a84";
-};
+let src = with pkgs; srcOnly lispPackages.trivial-garbage;
 in depot.nix.buildLisp.library {
   name = "trivial-garbage";
   srcs = [ (src + "/trivial-garbage.lisp") ];
diff --git a/third_party/lisp/trivial-gray-streams.nix b/third_party/lisp/trivial-gray-streams.nix
index b5722f9a685a..62a30f1e94f3 100644
--- a/third_party/lisp/trivial-gray-streams.nix
+++ b/third_party/lisp/trivial-gray-streams.nix
@@ -1,10 +1,7 @@
 # Portability library for CL gray streams.
-{ depot, ... }:
+{ depot, pkgs, ... }:
 
-let src = builtins.fetchGit {
-  url = "https://github.com/trivial-gray-streams/trivial-gray-streams.git";
-  rev = "ebd59b1afed03b9dc8544320f8f432fdf92ab010";
-};
+let src = with pkgs; srcOnly lispPackages.trivial-gray-streams;
 in depot.nix.buildLisp.library {
   name = "trivial-gray-streams";
   srcs = [
diff --git a/third_party/lisp/trivial-indent.nix b/third_party/lisp/trivial-indent.nix
index 65d98604d78c..70a6e19d48a9 100644
--- a/third_party/lisp/trivial-indent.nix
+++ b/third_party/lisp/trivial-indent.nix
@@ -1,13 +1,6 @@
-
 { depot, pkgs, ... }:
 
-let
-  src = pkgs.fetchFromGitHub {
-    owner = "Shinmera";
-    repo = "trivial-indent";
-    rev = "2d016941751647c6cc5bd471751c2cf68861c94a";
-    sha256 = "1sj90nqz17w4jq0ixz00gb9g5g6d2s7l8r17zdby27gxxh51w266";
-  };
+let src = with pkgs; srcOnly lispPackages.trivial-indent;
 in depot.nix.buildLisp.library {
   name = "trivial-indent";
 
diff --git a/third_party/lisp/trivial-mimes.nix b/third_party/lisp/trivial-mimes.nix
index ce45993d05e9..04e8b5ef5d10 100644
--- a/third_party/lisp/trivial-mimes.nix
+++ b/third_party/lisp/trivial-mimes.nix
@@ -1,12 +1,7 @@
 { depot, pkgs, ... }:
 
 let
-  src = pkgs.fetchFromGitHub {
-    owner = "Shinmera";
-    repo = "trivial-mimes";
-    rev = "a741fc2f567a4f86b853fd4677d75e62c03e51d9";
-    sha256 = "00kcm17q5plpzdj1qwg83ldhxksilgpcdkf3m9azxcdr968xs9di";
-  };
+  src = with pkgs; srcOnly lispPackages.trivial-mimes;
 
   mime-types = pkgs.runCommand "mime-types.lisp" {} ''
     substitute ${src}/mime-types.lisp $out \
diff --git a/third_party/lisp/uax-15.nix b/third_party/lisp/uax-15.nix
index a13e5c1690d3..1e44f88d5cb7 100644
--- a/third_party/lisp/uax-15.nix
+++ b/third_party/lisp/uax-15.nix
@@ -3,16 +3,7 @@
 let
   inherit (pkgs) runCommand;
   inherit (depot.nix.buildLisp) bundled;
-
-  src = pkgs.fetchFromGitHub {
-    owner = "sabracrolleton";
-    repo = "uax-15";
-    rev = "a62fc7253663fac6467fc6b6bb69a73a0e8dfaa0";
-    sha256 = "028kc3yfi29qjxs2nyr7dbrr2rcrr8lwpvbxvrq3g8bcwamc4jz4";
-  };
-
-  # src = ../../../uax-15;
-
+  src = with pkgs; srcOnly lispPackages.uax-15;
 in depot.nix.buildLisp.library {
   name = "uax-15";
 
@@ -23,22 +14,28 @@ in depot.nix.buildLisp.library {
   ];
 
   srcs = [
-    "${src}/uax-15.asd"
     "${src}/src/package.lisp"
     "${src}/src/utilities.lisp"
     "${src}/src/trivial-utf-16.lisp"
+
+    # uax-15 has runtime data files that need to have their references
+    # replaced with store paths.
+    #
+    # additionally there are some wonky variable usages of variables
+    # that are never defined, for which we patch in defvar statements.
     (runCommand "precomputed-tables.lisp" {} ''
       substitute ${src}/src/precomputed-tables.lisp precomputed-tables.lisp \
         --replace "(asdf:system-source-directory (asdf:find-system 'uax-15 nil))" \
                   '"${src}/"'
 
       sed -i precomputed-tables.lisp \
-        -e '17i(defvar *canonical-decomp-map*)' \
-        -e '17i(defvar *compatible-decomp-map*)' \
-        -e '17i(defvar *canonical-combining-class*)'
+        -e '10i(defvar *canonical-decomp-map*)' \
+        -e '10i(defvar *compatible-decomp-map*)' \
+        -e '10i(defvar *canonical-combining-class*)'
 
       cp precomputed-tables.lisp $out
     '')
+
     "${src}/src/normalize-backend.lisp"
     "${src}/src/uax-15.lisp"
   ];
diff --git a/third_party/lisp/unix-opts.nix b/third_party/lisp/unix-opts.nix
index 389de25eff4f..e52eab959d3e 100644
--- a/third_party/lisp/unix-opts.nix
+++ b/third_party/lisp/unix-opts.nix
@@ -1,13 +1,8 @@
 # unix-opts is a portable command line argument parser
 { depot, pkgs, ...}:
 
-let
-  src = pkgs.fetchFromGitHub {
-    owner = "libre-man";
-    repo = "unix-opts";
-    rev = "b805050b074bd860edd18cfc8776fdec666ec36e";
-    sha256 = "0j93dkc9f77wz1zfspm7q1scx6wwbm6jhk8vl2rm6bfd0n8scxla";
-  };
+
+let src = with pkgs; srcOnly lispPackages.unix-opts;
 in depot.nix.buildLisp.library {
   name = "unix-opts";
 
diff --git a/third_party/lisp/usocket-server.nix b/third_party/lisp/usocket-server.nix
new file mode 100644
index 000000000000..f2f11d7a17c8
--- /dev/null
+++ b/third_party/lisp/usocket-server.nix
@@ -0,0 +1,18 @@
+# Universal socket library for Common Lisp (server side)
+{ depot, pkgs, ... }:
+
+let
+  inherit (depot.nix) buildLisp;
+  src = with pkgs; srcOnly lispPackages.usocket-server;
+in buildLisp.library {
+  name = "usocket-server";
+
+  deps = with depot.third_party.lisp; [
+    usocket
+    bordeaux-threads
+  ];
+
+  srcs = [
+    "${src}/server.lisp"
+  ];
+}
diff --git a/third_party/lisp/usocket.nix b/third_party/lisp/usocket.nix
index dc4281c795c0..335954978494 100644
--- a/third_party/lisp/usocket.nix
+++ b/third_party/lisp/usocket.nix
@@ -3,13 +3,7 @@
 
 let
   inherit (depot.nix) buildLisp;
-
-  src = pkgs.fetchFromGitHub {
-    owner = "usocket";
-    repo = "usocket";
-    rev = "fdf4fd1e0051ce83340ccfbbc8a43a462bb19cf2";
-    sha256 = "0x746wr2324l6bn7skqzgkzcbj5kd0zp2ck0c8rldrw0rzabg826";
-  };
+  src = with pkgs; srcOnly lispPackages.usocket;
 in buildLisp.library {
   name = "usocket";
   deps = with depot.third_party.lisp; [