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)