about summary refs log tree commit diff
path: root/third_party/lisp
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-12-14T21·32+0300
committertazjin <mail@tazj.in>2021-12-15T10·34+0000
commite9bfa84aafc65896e2fffead2f1ef4853bdd59af (patch)
tree711bd7c6aa289a7175c635c8866e75c85287ab45 /third_party/lisp
parentb0614b5c83ae62672cb036bebb6ce12675aa3074 (diff)
refactor(3p/lisp): Use sources from nixpkgs where possible r/3246
nixpkgs includes a lispPackages set which is generated from something.
In the meantime, we pretty much never update our Lisp deps.

This commit ties our sources to nixpkgs.lispPackages where the desired
package is included in nixpkgs (which is actually most of them!)

Change-Id: I520a006535980271b2fa4e0ed4e34029475dcbef
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4331
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
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 d2356f7b05..c079943e67 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 c4a49e833f..ae7c5dd23d 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 92bc1f2629..17ee6e539e 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 c8d240c8cd..de1d0c2e8e 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 2a68d3b1f8..59e9914ee1 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 d402080633..d3f50bcb1a 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 5c01e02326..0e34015247 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 1152601a81..08055a0471 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 71f78e424e..b51e4d46a7 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 c90b8eae01..34201bc2fa 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 905e0821ca..ec1170bf16 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 1dc9eb5531..561e306191 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 f793136194..188cbc686d 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 a9905b5ef6..7ab9bea59f 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 50e4e68c03..601b09f118 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 21fb3ba14b..145b9cfd43 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 591620e487..0856fc9e52 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 781fd107f5..c31ddb3c5b 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 3757aad7b1..607f438d7e 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 8cdf062f1c..4b88809024 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 2b4078f588..0f6630f721 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 24eae6a348..5b953d94b2 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 cdd829924e..3436776b7d 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 5875be8d5c..b7d60265ac 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 3afb640e4e..bd7f31dfa0 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 65fb9c37fb..8e96c5e517 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 711e6e082d..73a1664a01 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 ef265d5b6e..8c3e255f16 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 a8a387ab91..d38fbcb946 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 da542fe911..3c0a75e46d 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 4e36e69c7d..e90824108e 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 1ceba2863d..61b0b1fddb 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 fe045d5299..23c67c2d9c 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 b8079e8eba..d594ff1a1c 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 333a9d9b77..b2ea318f8a 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 358049865e..af48149920 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 925b457f9f..f7146ba93f 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 6af55f9270..b82a490c9d 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 571eb147c7..9c4da4a02b 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 105646386f..4e8f723c31 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 13a63bab1a..02abac54a8 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 e5b3550de7..74224df60d 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 b5722f9a68..62a30f1e94 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 65d98604d7..70a6e19d48 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 ce45993d05..04e8b5ef5d 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 a13e5c1690..1e44f88d5c 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 389de25eff..e52eab959d 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 0000000000..f2f11d7a17
--- /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 dc4281c795..3359549784 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; [