about summary refs log tree commit diff
path: root/pkgs/development/lisp-modules/quicklisp-to-nix-overrides.nix
blob: 377f694e7a8e84831b51d02c74aa47e32f3ffb53 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
{pkgs, buildLispPackage, clwrapper, quicklisp-to-nix-packages}:
let
  addDeps = newdeps: x: {deps = x.deps ++ newdeps;};
  addNativeLibs = libs: x: { propagatedBuildInputs = libs; };
  skipBuildPhase = x: {
    overrides = y: ((x.overrides y) // { buildPhase = "true"; });
  };
  qlnp = quicklisp-to-nix-packages;
  multiOverride = l: x: if l == [] then {} else
    ((builtins.head l) x) // (multiOverride (builtins.tail l) x);
in
{
  stumpwm = x:{
    overrides = y: (x.overrides y) // {
      preConfigure = ''
        export configureFlags="$configureFlags --with-$NIX_LISP=common-lisp.sh";
      '';
    };
  };
  iterate = skipBuildPhase;
  cl-fuse = x: {
    propagatedBuildInputs = [pkgs.fuse];
    overrides = y : (x.overrides y) // {
      configurePhase = ''
        export SAVED_CL_SOURCE_REGISTRY="$CL_SOURCE_REGISTRY"
        export CL_SOURCE_REGISTRY="$CL_SOURCE_REGISTRY:$PWD"
        export makeFlags="$makeFlags LISP=common-lisp.sh"
      '';
      preInstall = ''
        export CL_SOURCE_REGISTRY="$SAVED_CL_SOURCE_REGISTRY"
      '';
    };
  };
  hunchentoot = addNativeLibs [pkgs.openssl];
  iolib = x: {
    propagatedBuildInputs = (x.propagatedBuildInputs or []) ++
     [pkgs.libfixposix pkgs.gcc];
    testSystems = (x.testSystems or ["iolib"]) ++ [
      "iolib/os" "iolib/zstreams" "iolib/common-lisp" "iolib/base" "iolib/asdf"
      "iolib/conf" "iolib/grovel" "iolib/syscalls" "iolib/sockets"
      "iolib/multiplex" "iolib/streams" "iolib/pathnames"
    ];
  };
  cl-unicode = addDeps (with qlnp; [cl-ppcre flexi-streams]);
  clack =  addDeps (with qlnp;[lack bordeaux-threads prove]);
  clack-v1-compat =  addDeps (with qlnp;[
    lack bordeaux-threads prove usocket dexador http-body trivial-backtrace
    marshal local-time cl-base64 cl-ppcre quri trivial-mimes trivial-types
    flexi-streams circular-streams ironclad cl-syntax-annot alexandria
    split-sequence
  ]);
  lack = addDeps (with qlnp; [ironclad]);
  cxml = multiOverride [ skipBuildPhase (addDeps (with qlnp; [
    closure-common puri trivial-gray-streams
  ]))];
  wookie = multiOverride [(addDeps (with qlnp; [
      alexandria blackbird cl-async chunga fast-http quri babel cl-ppcre
      cl-fad fast-io vom do-urlencode cl-async-ssl
    ]))
    (addNativeLibs (with pkgs; [libuv openssl]))];
  woo = addDeps (with qlnp; [
    cffi lev clack swap-bytes static-vectors fast-http proc-parse quri fast-io
    trivial-utf-8 vom
  ]);
  lev = addNativeLibs [pkgs.libev];
  dexador = addDeps (with qlnp; [
    usocket fast-http quri fast-io chunga cl-ppcre cl-cookie trivial-mimes
    chipz cl-base64 cl-reexport qlnp."cl+ssl" alexandria bordeaux-threads
  ]);
  fast-http = addDeps (with qlnp; [
    alexandria cl-utilities proc-parse xsubseq smart-buffer
  ]);
  cl-emb = addDeps (with qlnp; [cl-ppcre]);
  "cl+ssl" = addNativeLibs [pkgs.openssl];
  cl-colors = skipBuildPhase;
  cl-libuv = addNativeLibs [pkgs.libuv];
  cl-async = addDeps (with qlnp; [cl-async-base]);
  cl-async-ssl = multiOverride [(addDeps (with qlnp; [cl-async-base]))
    (addNativeLibs [pkgs.openssl])];
  cl-async-repl = addDeps (with qlnp; [cl-async]);
  cl-async-base = addDeps (with qlnp; [
    cffi fast-io vom cl-libuv cl-ppcre trivial-features static-vectors
    trivial-gray-streams babel
  ]);
  cl-async-util = addDeps (with qlnp; [ cl-async-base ]);
  css-lite = addDeps (with qlnp; [parenscript]);
  clsql = x: {
    propagatedBuildInputs = with pkgs; [mysql postgresql sqlite zlib];
    overrides = y: (x.overrides y) // {
      preConfigure = ((x.overrides y).preConfigure or "") + ''
        export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${pkgs.lib.getDev pkgs.mysql.client}/include/mysql"
        export NIX_LDFLAGS="$NIX_LDFLAGS -L${pkgs.lib.getLib pkgs.mysql.client}/lib/mysql"
      '';
    };
  };
  clx-truetype = skipBuildPhase;
  query-fs = x: {
    overrides = y: (x.overrides y) // {
      linkedSystems = [];
      postInstall = ((x.overrides y).postInstall or "") + ''
        export CL_SOURCE_REGISTRY="$CL_SOURCE_REGISTRY:$out/lib/common-lisp/query-fs"
	export HOME=$PWD
	build-with-lisp.sh sbcl \
	  ":query-fs $(echo "$linkedSystems" | sed -re 's/(^| )([^ :])/ :\2/g')" \
	  "$out/bin/query-fs" \
	  "(query-fs:run-fs-with-cmdline-args)"
      '';
    };
  };
  cffi = multiOverride [(addNativeLibs [pkgs.libffi])
    (addDeps (with qlnp; [uffi uiop trivial-features]))];
  cl-vectors = addDeps (with qlnp; [zpb-ttf]);
  "3bmd" = addDeps (with qlnp; [esrap split-sequence]);
  cl-dbi = addDeps (with qlnp; [
    cl-syntax cl-syntax-annot split-sequence closer-mop bordeaux-threads
  ]);
  dbd-sqlite3 = addDeps (with qlnp; [cl-dbi]);
  dbd-postgres = addDeps (with qlnp; [cl-dbi]);
  dbd-mysql = addDeps (with qlnp; [cl-dbi]);
  cl-mysql = addNativeLibs [pkgs.mysql];
  cl-ppcre-template = x: {
    overrides = y: (x.overrides y) // {
      postPatch = ''
        ln -s lib-dependent/*.asd .
      '';
    };
  };
  cl-unification = addDeps (with qlnp; [cl-ppcre]);
  cl-syntax-annot = addDeps (with qlnp; [cl-syntax]);
  cl-syntax-anonfun = addDeps (with qlnp; [cl-syntax]);
  cl-syntax-markup = addDeps (with qlnp; [cl-syntax]);
  cl-test-more = addDeps (with qlnp; [prove]);
  babel-streams = addDeps (with qlnp; [babel]);
  plump = addDeps (with qlnp; [array-utils trivial-indent]);
  sqlite = addNativeLibs [pkgs.sqlite];
  uiop = x: {
    overrides = y: (x.overrides y) // {
      postInstall = ((x.overrides y).postInstall or "") + ''
        cp -r "${pkgs.asdf}/lib/common-lisp/asdf/uiop/contrib" "$out/lib/common-lisp/uiop"
      '';
    };
  };
}