1{
2 pkgs,
3 config,
4 idris-no-deps,
5 overrides ? (self: super: { }),
6}:
7let
8 inherit (pkgs.lib) callPackageWith fix' extends;
9
10 # Taken from haskell-modules/default.nix, should probably abstract this away
11 callPackageWithScope =
12 scope: drv: args:
13 (callPackageWith scope drv args)
14 // {
15 overrideScope = f: callPackageWithScope (mkScope (fix' (extends f scope.__unfix__))) drv args;
16 };
17
18 mkScope = scope: pkgs // pkgs.xorg // pkgs.gnome2 // scope;
19
20 idrisPackages =
21 self:
22 let
23 defaultScope = mkScope self;
24
25 callPackage = callPackageWithScope defaultScope;
26
27 builtins_ = pkgs.lib.mapAttrs self.build-builtin-package {
28 prelude = [ ];
29
30 base = [ self.prelude ];
31
32 contrib = [
33 self.prelude
34 self.base
35 ];
36
37 effects = [
38 self.prelude
39 self.base
40 ];
41
42 pruviloj = [
43 self.prelude
44 self.base
45 ];
46 };
47
48 in
49 {
50 inherit idris-no-deps callPackage;
51
52 # Idris wrapper with specified compiler and library paths, used to build packages
53
54 idris = pkgs.callPackage ./idris-wrapper.nix {
55 inherit idris-no-deps;
56 };
57
58 # Utilities for building packages
59
60 with-packages = callPackage ./with-packages.nix { };
61
62 build-builtin-package = callPackage ./build-builtin-package.nix { };
63
64 build-idris-package = callPackage ./build-idris-package.nix { };
65
66 # The set of libraries that comes with idris
67
68 builtins = pkgs.lib.mapAttrsToList (name: value: value) builtins_;
69
70 # Libraries
71
72 array = callPackage ./array.nix { };
73
74 bi = callPackage ./bi.nix { };
75
76 bifunctors = callPackage ./bifunctors.nix { };
77
78 bytes = callPackage ./bytes.nix { };
79
80 canvas = callPackage ./canvas.nix { };
81
82 categories = callPackage ./categories.nix { };
83
84 coda = callPackage ./coda.nix { };
85
86 config = callPackage ./config.nix { };
87
88 comonad = callPackage ./comonad.nix { };
89
90 composition = callPackage ./composition.nix { };
91
92 console = callPackage ./console.nix { };
93
94 containers = callPackage ./containers.nix { };
95
96 cube = callPackage ./cube.nix { };
97
98 derive = callPackage ./derive.nix { };
99
100 descncrunch = callPackage ./descncrunch.nix { };
101
102 dict = callPackage ./dict.nix { };
103
104 dom = callPackage ./dom.nix { };
105
106 electron = callPackage ./electron.nix { };
107
108 eternal = callPackage ./eternal.nix { };
109
110 farrp = callPackage ./farrp.nix { };
111
112 free = callPackage ./free.nix { };
113
114 fsm = callPackage ./fsm.nix { };
115
116 glfw = callPackage ./glfw.nix { };
117
118 graphviz = callPackage ./graphviz.nix { };
119
120 hamt = callPackage ./hamt.nix { };
121
122 html = callPackage ./html.nix { };
123
124 hezarfen = callPackage ./hezarfen.nix { };
125
126 hrtime = callPackage ./hrtime.nix { };
127
128 http = callPackage ./http.nix { };
129
130 http4idris = callPackage ./http4idris.nix { };
131
132 iaia = callPackage ./iaia.nix { };
133
134 idrishighlighter = callPackage ./idrishighlighter.nix { };
135
136 idrisscript = callPackage ./idrisscript.nix { };
137
138 ipkgparser = callPackage ./ipkgparser.nix { };
139
140 jheiling-extras = callPackage ./jheiling-extras.nix { };
141
142 jheiling-js = callPackage ./jheiling-js.nix { };
143
144 js = callPackage ./js.nix { };
145
146 lens = callPackage ./lens.nix { };
147
148 lightyear = callPackage ./lightyear.nix { };
149
150 logic = callPackage ./logic.nix { };
151
152 mapping = callPackage ./mapping.nix { };
153
154 mhd = callPackage ./mhd.nix { };
155
156 pacman = callPackage ./pacman.nix { };
157
158 patricia = callPackage ./patricia.nix { };
159
160 permutations = callPackage ./permutations.nix { };
161
162 pfds = callPackage ./pfds.nix { };
163
164 pipes = callPackage ./pipes.nix { };
165
166 posix = callPackage ./posix.nix { };
167
168 quantities = callPackage ./quantities.nix { };
169
170 rationals = callPackage ./rationals.nix { };
171
172 recursion_schemes = callPackage ./recursion_schemes.nix { };
173
174 refined = callPackage ./refined.nix { };
175
176 sdl2 = callPackage ./sdl2.nix { };
177
178 semidirect = callPackage ./semidirect.nix { };
179
180 setoids = callPackage ./setoids.nix { };
181
182 smproc = callPackage ./smproc.nix { };
183
184 snippets = callPackage ./snippets.nix { };
185
186 software_foundations = callPackage ./software_foundations.nix { };
187
188 specdris = callPackage ./specdris.nix { };
189
190 tap = callPackage ./tap.nix { };
191
192 test = callPackage ./test.nix { };
193
194 tf-random = callPackage ./tfrandom.nix { };
195
196 tlhydra = callPackage ./tlhydra.nix { };
197
198 tomladris = callPackage ./tomladris.nix { };
199
200 tp = callPackage ./tp.nix { };
201
202 tparsec = callPackage ./tparsec.nix { };
203
204 transducers = callPackage ./transducers.nix { };
205
206 trees = callPackage ./trees.nix { };
207
208 union_type = callPackage ./union_type.nix { };
209
210 vdom = callPackage ./vdom.nix { };
211
212 vecspace = callPackage ./vecspace.nix { };
213
214 webgl = callPackage ./webgl.nix { };
215
216 wl-pprint = callPackage ./wl-pprint.nix { };
217
218 wyvern = callPackage ./wyvern.nix { };
219
220 xhr = callPackage ./xhr.nix { };
221
222 yaml = callPackage ./yaml.nix { };
223
224 yampa = callPackage ./yampa.nix { };
225
226 }
227 // builtins_
228 // pkgs.lib.optionalAttrs config.allowAliases {
229 # removed packages
230 protobuf = throw "idrisPackages.protobuf has been removed: abandoned by upstream"; # Added 2022-02-06
231 sdl = throw "'idrisPackages.sdl' has been removed, as it was broken and unmaintained"; # added 2024-05-09
232 };
233in
234fix' (extends overrides idrisPackages)