# Usocket is a portable socket library { depot, pkgs, ... }: let inherit (depot.nix) buildLisp; src = with pkgs; srcOnly lispPackages.usocket; in buildLisp.library { name = "usocket"; deps = with depot.third_party.lisp; [ (buildLisp.bundled "asdf") { ecl = buildLisp.bundled "sb-bsd-sockets"; sbcl = buildLisp.bundled "sb-bsd-sockets"; } split-sequence ]; srcs = [ # usocket also reads its version from ASDF, but there's further # shenanigans happening there that I don't intend to support right # now. Behold: (builtins.toFile "usocket.asd" '' (in-package :asdf) (defsystem usocket :version "0.8.3") '') ] ++ # Now for the regularly scheduled programming: (map (f: src + ("/" + f)) [ "package.lisp" "usocket.lisp" "condition.lisp" ] ++ [ { sbcl = "${src}/backend/sbcl.lisp"; } # ECL actually has two files, it supports the SBCL backend, # but usocket also has some ECL specific code { ecl = "${src}/backend/sbcl.lisp"; } { ecl = "${src}/backend/ecl.lisp"; } # Same for CCL { ccl = "${src}/backend/openmcl.lisp"; } { ccl = "${src}/backend/clozure.lisp"; } ]); }