about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Laporte <Vincent.Laporte@gmail.com>2015-01-24 09:06:27 +0100
committerVladimír Čunát <vcunat@gmail.com>2015-01-25 07:36:10 +0100
commit88d31f6db01ad2ed98f6a826f76c1e499a31bb25 (patch)
tree4018ca06ceec2e25bf4e2641997f8aed415e5359
parent833800aeba183ac8279fded97fbd7e0214174ec5 (diff)
downloadnixlib-88d31f6db01ad2ed98f6a826f76c1e499a31bb25.tar
nixlib-88d31f6db01ad2ed98f6a826f76c1e499a31bb25.tar.gz
nixlib-88d31f6db01ad2ed98f6a826f76c1e499a31bb25.tar.bz2
nixlib-88d31f6db01ad2ed98f6a826f76c1e499a31bb25.tar.lz
nixlib-88d31f6db01ad2ed98f6a826f76c1e499a31bb25.tar.xz
nixlib-88d31f6db01ad2ed98f6a826f76c1e499a31bb25.tar.zst
nixlib-88d31f6db01ad2ed98f6a826f76c1e499a31bb25.zip
coqPackages: add contribs (close #5242)
The Coq Users' Contributions

Homepage: http://www.lix.polytechnique.fr/coq/pylons/contribs/index
-rw-r--r--pkgs/development/coq-modules/contribs/all.nix163
-rw-r--r--pkgs/development/coq-modules/contribs/default.nix208
-rw-r--r--pkgs/development/coq-modules/contribs/mk-contrib.nix30
-rw-r--r--pkgs/top-level/all-packages.nix8
4 files changed, 409 insertions, 0 deletions
diff --git a/pkgs/development/coq-modules/contribs/all.nix b/pkgs/development/coq-modules/contribs/all.nix
new file mode 100644
index 000000000000..fe01fbf58913
--- /dev/null
+++ b/pkgs/development/coq-modules/contribs/all.nix
@@ -0,0 +1,163 @@
+{
+AACTactics = "0v18kf7xjys4g3z8m2sfiyipyn6mz75wxl2zgqk7nv1jr8i03min";
+ABP = "06cn70lbdivn1hxnlsqpiibq9nlwl6dggcn967q6n3nph37m4pdp";
+AILS = "1g0hc27kizrwm6x35j3w721cllfl4rvhiqifn3ljy868mwxwsiva";
+AMM11262 = "15rxr5bzyswxfznml4vij3pflqm3v2bl1xzg9m1p5gmd0385zh6l";
+ATBR = "1xfhc70m9qm51gwi7cls8znx37y5cp1m0wak1h0r51g1d2lxr7a6";
+Additions = "0bhl1wqbqigq0m6zj1yhdm5j0rsn75xy510kz9qy4dv5277wc7ab";
+Algebra = "061szlbg5zh5h0ksgmw34hqrvqy6794p3r1ijg0xi8mqa2wpbjd8";
+Angles = "1grqx88mibz4lg7k9ba89vpg4kwrm3s87wy0ls39i3d3wgx18n97";
+AreaMethod = "07d86p5xbnhbrily18hda0hymf3zx8yhw905plmrqyfbcc6x5531";
+Automata = "0g75gjdj79ysiq1pwqk658jxs2z1l8pk702iz69008vkjzbzkhvm";
+AxiomaticABP = "19x16dgsqyw2pflza8cgv29585a6yy3r8pz4z8ns3r7qhpp1449b";
+BDDs = "0s5a67w9v1lklph8dm4d9bkd6f9qzfb377gvisr3hslacn9ya8zy";
+Bertrand = "1ih0zbk3phk0zwms0mwkcikmki25hgbp1l980gpydj5a0s9ildyg";
+Buchberger = "1v7zi62ar4inncbcphalsyaggx8im02j81b0fnpvx2x3kyv2pr94";
+CCS = "1na7902k05z19a727wa7rz0dbf1fhcl53r4zxvcgvg5dasvwfc97";
+CFGV = "13gk597r9n2wcgcbhribsqrp9wb8mmr3qd4zbv2ig8469kng0j4m";
+CTLTCTL = "0il1hhizvd2zvh2bhjaa2f43q1qz5sjfdin00yx5l1a8867wjs05";
+CanonBDDs = "1l9yqj0dfqkq49acsy17cvz4rjj86wjbhsdbr4qw2qvn4shllc23";
+Cantor = "1ys81ivigsbsg5cfx9jvm0qprdwc3jm69xm3whq5v9b6skn958yp";
+CatsInZFC = "06rkhns5gz397mafxina52h9z35r0n5bpryk5yfja0kfiyjvp4cr";
+Checker = "0hvfmpy3w4jj4zi3bm9q2yy4361q0lg0znqa22n5l7hzvi28q796";
+Chinese = "191c1bcslxrjxcxvpcz0mzklrl1cwh0lzkd2nq5m0ch3vxar6rq4";
+Circuits = "1a091g5vvmg579mmbfbvhj0scv7zw4n5brmj8dmiwfayfscdh5vg";
+ClassicalRealizability = "1zgivy679rl3ay9mf5ahs0lzrwfg19pcmz5nqm9hq0dpfn9avd6a";
+CoLoR = "05x1drvvhrspj2wzh8v1abblmb9fxy0yx6gg9y4nldkc24widjr7";
+CoRN = "1wv8y67bm2072bd6i3gbvy4sc665sci5kzd1zwv9n2ffxzhy0l5j";
+Coalgebras = "1wzwadfii9mm11bifjbg6f23qbab1ix3valysgq2b4myxlnpwdfz";
+CoinductiveExamples = "1iw6jsxvshsmn52xac3dspkw8f95214f0dcx0y6gi13ln02h8njy";
+CoinductiveReals = "149nsygwlb80s2805qgn85a6mcp7rxifbicbr84l3nyzilfyr6lk";
+ConCaT = "0537r0lamfz657llarxjl030qw29dnya7rb73kx0bdbyphxszr71";
+ConstructiveGeometry = "0cfz64yciyma6jrskc37md4mnv2vbx9hw7y69vyxzy7xdax55j64";
+Containers = "07pjbnzhh418ypppvfkls2x0ycslgl274a913xwi3rb1wrg6q84g";
+Continuations = "0l35xl9kvmq8l9gx3rmcx11p22inw76m1s18y0dnhc6qnhhkq1qg";
+CoqInCoq = "0d5m71xq66rfaa6xr51bsv9hykzfv4dwpclxpnqc7a7ss1q9ccqz";
+Coqoban = "1xp6wblg31asbqbkvbha94lbzn6xnhl0v5y0f3qh4nbmv6hslc54";
+Counting = "150la62c1j4yg8myr7nrp1qwp4z15rfg788j9vraz5q6f2n8c8ph";
+CoursDeCoq = "1qgc03ngzyd138s2cmcwrwrmyq0lf3z3vwhiaq5p371al34fk0d9";
+#Dblib = "00704xi5348fbw9bc0cy5bqx5w4a7aqwpcwdd3740i15ihk60mrl";
+Demos = "0j5ndysvhsj57971yz7xz5mmnzwymgigr3b9mr6nh9iids98g9vy";
+DescenteInfinie = "0is6kclxhfd9n4sdpfkzm4kcc740ifkylg11b8z90frwq79a8yzb";
+Dictionaries = "13zhjvgl20f0hj2pp0zkczm9pwdgh174248jgbqj87rn5alyr2iy";
+DistributedReferenceCounting = "1kw6fb7rvkkrh5rz1839jwf9hrpnrsdnhjlpx3634d5a5kbbdj6a";
+DomainTheory = "1g39bgyxfj9r51vrmrxhrq1xqr36j5q8x0zgz2a12b0k3fj8bswn";
+Ergo = "0xkza35n3f05gkfywaisnis70zsrkh1kwq5idsb2k0rw8m4hq9ki";
+EuclideanGeometry = "11n8877zksgksdfcj7arjx0zcfhsrvg83lcp6yb2bynvfp80gyzb";
+EulerFormula = "1nhh49rf6wza2m5qmz5l5m24m299qn3v80wqzvf51lybadzll2h6";
+ExactRealArithmetic = "1p32g13sx2z5rj3q6390ym8902gvl5x16wdhgz5i75y44s6kmkb1";
+Exceptions = "0w2b16nr80f70dxllmhbqwfr1aw26rcfbak5bdyc0fna8hqp4q3p";
+#FOUnify = "1vwp5rwvs5ng4d13l9jjh4iljasfqmc5jpla8rga4v968bp84nw6";
+FSSecModel = "0fi78vqfrw4vrmdw215ic08rw8y6aia901wqs4f1s9z2idd6m8qy";
+FSets = "1n54s2vr6snh31jnvr79q951vyk0w0w6jrnwnlz9d3vyw47la9js";
+Fairisle = "0gg9x69qr0zflaryniqnl8d34kjdij0i55fcb1f1i5hmrwn2sqn6";
+Fermat4 = "0d5lkkrw3vqw6dip1mrgn8imq861xaipirzwpd35jgdkamds802v";
+FingerTree = "1kzfv97mc9sbprgg76lb5lk71gr4a5q10q8yaj57qw3m5hvmdhmw";
+FiringSquad = "0y2dy75j97x0592dxcbcd00ffwnf61f92yiap68xszv3dixl9i9x";
+Float = "1xmskkfd9w3j0bynlmadsrv997988k17bcs0r3zxaazm7vvw2sci";
+FreeGroups = "00pskmp0kfnnafldzcw8vak5v2n0nsjl9pfbw8qkj1xzzbvym2wk";
+FunctionsInZFC = "1vfs27m5f2cx0q2qjlxj3nim1bv53mk241pqz9mpj4plcj0g838l";
+FundamentalArithmetics = "1vvgl5c7rcg3bxizcjdix0fn20vdqy73ixcvm714llb8p986lan5";
+GC = "11kwn43nm58bv7v3p8xg2ih4x0gvgigz26gzh8l8w3lgmriqmzx0";
+GenericEnvironments = "1w05ysx0rl17fgxq3fc0p7p3h70c94qxa6yq88ppyhwm1cqqgihw";
+Goedel = "0b1dfmxp9q5z2l59yz5bn37m0zz4307kq94a7fs8s0lbbwrgyhrf";
+GraphBasics = "1f2bsfkhlyzjvy6ln62sf6hpy9dh8azrnlfpjq6jn667nfb7cbf6";
+Graphs = "0smhsas27llkmfkn4vs8ygb9w19ci2q4ps0f2q969xv8n8n0bj4z";
+GroupTheory = "141w3zbf7jczbk1lrpz6dnpk8yh1vr4f7kw55siawwaai11bh7c1";
+Groups = "00zmn1q9lz7dz8p5wk34svwki9xwn62xkgnhw4bcx8awlbx1pw3a";
+Hardware = "1bp9bnvlv54ksngmgzyxaqw1idxw5snmwrcifqcd6088w6hd9w1n";
+Hedges = "1abbf8v0i8akmhbi2hmb1l9wxvql275c9mxf0r5lzxigwmf0qrbv";
+HighSchoolGeometry = "09n70n0sb1dxnss9xz7xj2z1070gzxs4ap1h0kjcrfkiqss11fpy";
+HigmanCF = "05qg4ci8bvd6s9nmj80imj3b9kfwy4xzfy8ckr5870505mkzxyxv";
+HigmanNW = "0i3mmyh20iib7pglalf4l2p62qyqa6w0mz557n53aa2zx6l0dw18";
+HigmanS = "1c9db1jrpwzqw0arsiljskx3pcxpc1flkdql87fn55lgypbfz5gk";
+HistoricalExamples = "16alm4cv9hj59jyn1rnmb1dnbwp488wpzbnkq6hrnl5drr78gx08";
+HoareTut = "1mazqhb0hclknnzbr4ka1aafkk36hl6n4vixkf5kfvyymr094d0a";
+Huffman = "1h14qdbmawjn9hw813hsywxz0az80nx620rr35mb9wg8hy4xw7jj";
+IEEE754 = "06xrpzg2q9x2bzm7h16k0czm56sgsdn1rxpdgcl44743q3mvpi5p";
+IPC = "1xcgrln8nn2h98qyqz36d0zszjs33kcclv9vamz8mc163agk6jxy";
+IZF = "12inbpihh35hbrh4prs93r4avxlgsj5019n7bndi4fgn09m839bm";
+Icharate = "0giak87mv7g0312i05r7v06wb8wmfkrd2ai54r4c80497f72d17l";
+IdxAssoc = "0gdaxnwyw8phi97izx0wfbpccql73yjdzqqygc4i6nfw4lwanx38";
+IntMap = "1zmlcqv2mz488vpxa6iwbi6sqcljkmb55mywb5pabjjwjj745jhx";
+JProver = "0vz07sclzx0izwm5klwmd0amxhzqly6aknh876vvh3033jp62ik0";
+JordanCurveTheorem = "0varv6ib4f0l3jjq71rafb071ivzcnyxjb5ri8bf6vbjl4fqr335";
+Karatsuba = "02190l3dl0k6qxi3djr2imy4h31kcr5kj94l2ys3xqg1kjjajcmj";
+Kildall = "0lbby3gd3pwivkhr6v8c73915cswmvh50nj3ch10f0zix8lsxrpa";
+LTL = "0bk4232pa6mkbmxjazknfbnmzh2pcjccr68dkf8a2ndd06yfaii1";
+Lambda = "1wy9r95acwf7srs54y5kgmgl9d48j8b871n4z26xpbhdi2pvv9a4";
+Lambek = "0f6nd3fsxsaij9wypwd3cxmgn3larkxg4xww9c0yvjqxpgc5s552";
+LesniewskiMereology = "11wgw93fxwnbvwmpnscvgg9caakhr3wbvqwzqkk1p8wfslpvf7pj";
+LinAlg = "0gl081rx0iikhaghjny3g04aaqgiv0wq6r6c34qpcr5jc6i40mdr";
+MapleMode = "0a50dx473mmg7ksmghbjqs2rg4334dqdd2rkydicw8fl406z19ab";
+Markov = "06aacr8ghycjm68r36hip4rjhwfnbz7az2k8pa92pakjm0am78lq";
+MathClasses = "1gj6dznlc2ma5b5qn9mlinavlrl4xq18dilzd0l9j8jrxfdk1q7n";
+Maths = "15qbv7dxj4ygmw38gnmyf2kwdmy75a21yf991c8lw6fzx334b4dv";
+Matrices = "1q3683xvsgjqlav6kfxx7y05lvr5gp60hpbx4ypwa0hsl6w14mn0";
+#Micromega = "0h2ybdlbdvy30l5kzkfvp5kwsf236fxd3xi87pl4pl3dzylzsbh4";
+MiniC = "1gg9jinay9i3jbsi8bbwxzr9584wycdadf02c5al5yv281ywjar0";
+MiniCompiler = "0yq0k8c0rp120pfssdwfpmz017vq2w8s0rzk9gls476gywjmdvgf";
+MiniML = "1fd4k6rzn5cr24d11dnyy9jp2wf3n8d8l7q7bxk94lbrj6lhrzw2";
+ModRed = "1khg29cm83npasxqlm13bv2w2kfkn9hrvf5q2wch9l1l4ghys4rk";
+Multiplier = "07bj7j4agq2cvhfbkwgrvg39jlzlj1mzlm0ykqjwljd7hi4f6yv9";
+MutualExclusion = "1j3fmf0zvnxg0yzj956jfpjqccnk9l2393q6as80a5gfqhlb3rcr";
+Nfix = "1mpn1fbx15naa2d5lbcxl88xsgp1p88xx4g94f8cjzhg6kdnz7cc";
+OrbStab = "06gg3d2f9qybs2c49mm7srzqx5r9dxail92bcxdi6lr0k74y75ml";
+OtwayRees = "1d39yxppnpzpn5yxdk6rinrgxwgsnr348cggyhwjmgyjm8mr9gcp";
+PAutomata = "0hlzvdi9kb291g36lgyy3vlpn7i8rphpwjisy3wh19j4yqqc7ddf";
+PTS = "12y9niiks4rzpvzzvgfwc1z37480c4l9nvsmh4wx6gsvpnjqvyl3";
+PTSATR = "10jsfbsdaiqrdgp9vnc84wwkxjyfin35kr1qckbax6599xgyk7vj";
+PTSF = "0yz7sh2d4ldcqblnvb96yyimsb4351qqjl8di1cy785mnxa1zfla";
+Paradoxes = "03b22vhkra038z3nfbv9wpbr63x984qyrfvrg58lwqq87s5kgv1d";
+ParamPi = "1p64yj2pqqvyx5b5xm0pv0pm9lqp7hc5hb3wjnwvzi3qchqf7hwi";
+PersistentUnionFind = "1ljdnsm6h3zfn43vla13ibx42kfvgmy6n9qyfn7cgkcw5yv4fh6m";
+PiCalc = "1af8ws86mqs55dldcpm7x4qhk11k0f8l88z2bv6hylfvy6fpbpiy";
+Pocklington = "18zx1ca3pn3vn763smmrnfi395007ddzicrr0cydrph6g4agdw3g";
+Presburger = "1n3nqrplgx1r2vvpcbp91l02c7zc297fkpsqgx1x1msqrldnac9y";
+Prfx = "1nyh134hlh6cdxpys9kv0ngiiibgigh2mifwf8rdz6aj6xj7dgyv";
+ProjectiveGeometry = "01x409rbh3rqxyz53v0kdixnqqv7b890va04a21862g8bml7ls6k";
+QArith = "0xvkw3d3kgiyw6b255f6zbkali1023a9wmn12ga3bgak24jsa8lg";
+QArithSternBrocot = "1kvzww76nxgq7b3b3v2wrjxaxskfrzk55zpg6mj1jjcpgydfqwjr";
+QuicksortComplexity = "0c5gj65rxnxydspc4jqq20c8v9mjbnjrkjkk220yxymbv5n3nqd1";
+RSA = "0b56ipivbbdwc0w7bp4v4lwl0fhhb73k2b62ybmb3x7alc599mc0";
+RailroadCrossing = "0z5cnw1d8jbg30lc9p1hsgrnjwjc4yhpxl74m2pcjscrrnr01zsf";
+Ramsey = "0sd3cihzfx7mn7wcsng15y4jqvp1ql49fy1ch997wfbchp6515ld";
+Random = "0b7gwz38fbk9j5sfa76c2n4781kcb18r65v9vzz8qigx37gm89w4";
+Rational = "0v1zjcf22ij9daxharmaavwp2msgl77y5ad46lskshpypd1ysrsc";
+RecursiveDefinition = "1y4gy2ksxkvmz16zrnblwd1axi7gdjw171n8xfw4f8400my1qhm0";
+ReflexiveFirstOrder = "156a6kmds25kc645w6kkhn3a4bvryp307b76ghz5m5wv2wsajgrn";
+RegExp = "0gya2kckr6325hykd12vwpbwwf7cf04yyjrr2dvmcc81dkygrwxb";
+RelationAlgebra = "1nrhkvypkk7k48gb18c2q9cwbgy02ldfg6s3j74f5rgff1i6c9in";
+RelationExtraction = "1g6hvmsfal17pppqf9v8zh2i1dph0lj5a1r3xiszqr4biiig09ch";
+ReleasedSsreflect = "17wirznfsizmw6gjb54vk9bp97a3bc1l2sb4gdxfbzvxmabx1a9l";
+Rem = "03559q60ibf4dr1np82341xfrw134d27dx8dim84q9fszr4gy8sx";
+RulerCompassGeometry = "02vm80xvvw22pdxrag3pv5zrhqf8726i9jqsiv4bnjqavj5z2hdr";
+SMC = "0ca3ar1y9nyj5147r18babqsbg2q2ywws8fdi91xb5z9m3i97nv1";
+Schroeder = "0mfbjmw4a48758k88yv01494wnywcp5yamkl394axvvbbna9h8b6";
+SearchTrees = "1jyps6ddm8klmxjm50p2j9i014ij7imy3229pwz3dkzg54gxzzxb";
+#Semantics = "157db1y5zgxs9shl7rmqg89gxfa4cqxwlf6qys0jh3j0wsxs8580";
+Shuffle = "14v1m4s9k49w30xrnyncjzgqjcckiga8wd2vnnzy8axrwr9zq7iq";
+SquareMatrices = "07dlykg3w59crc54qqdqxq6hf8rmzvwwfr1g8z8v2l8h4yvfnhfl";
+Ssreflect = "1capfvkdnsv95ik0yj9kpwj4smm7i7n2n98d6rlv68bdd2abw9f3";
+Stalmarck = "0vcbkzappq1si4hxbnb9bjkfk82j3jklb8g8ia83h1mdhzr7xdpz";
+Streams = "1spcqnvwayahk12fd13vzh922ypzrjkcmws9gcy12qdqp04h8bnc";
+String = "1wy7g66yq9y8m8y3gq29q7whfdm98g3cj9jxm5yibdzfahfdzzni";
+Subst = "1wxscjhz2y2jv5rdga80ldx2kc954sklip4jsbsd2fim5gwxzl23";
+Sudoku = "0f9h8gwzrdzk5j76nhvlnvpll81zar3pk84r2bf1xfav4yvj8sj7";
+SumOfTwoSquare = "1lxf9wdmvpi0vz4d21p6v9h2vvkk9v8113mvr2cdxd0j43l4ra18";
+Tait = "0bwxl894isndwadbbc3664j51haj3c0i57zmmycnxmhnmsx5pnjj";
+TarskiGeometry = "1vkznrjla943wcyddzyq0pqraiklgn62n1720msxp7cs13ckzpy0";
+ThreeGap = "01nj27xs348126ynsnva1jnvk0nin61xzyi6hwcybj5n46r7nlcv";
+Topology = "1kchddfiksjnkvwdr2ffpqcvmqkd6gf359r09yngf340sa15p5wk";
+TortoiseHareAlgorithm = "1ldm1z48j59lxz60szpy64d0928j4fmygp5npfksvwkvghijchq8";
+TreeAutomata = "0jzfa6rxv7lw1nzrqaxv08h9mpyvc2g4cbdc09ncyhazincrix0z";
+TreeDiameter = "0xdansrbmxrwicvqjjr9ivgs0255nd4ic6jkfv37m1c10vxcjq2n";
+WeakUpTo = "1baaapciaqhyjx8bqa4l04l1vwycyy1bvjr2arrc9myqacifmnpp";
+ZChinese = "0v7gffmcj9yazbbssb2i2iha1dr82b4bl8df9g021s40da49k09k";
+ZF = "0am15lgpn127pzx6ghm76axy75w7m9a8wqa26msgkczjk4x497ni";
+ZFC = "0s11g9rzacng2xg9ygx9lxyqv2apxyirnf7cg3iz95531n46ppn2";
+ZSearchTrees = "1lh6jlzm53jnsg91aa60f6gir6bsx77hg8xwl24771jg8a9b9mcl";
+ZornsLemma = "0dxizjfjx4qsdwc60k6k9fnq8hj4m13vi0llsv9xk3lj3izhpil1";
+lazyPCF = "0wzpv41nv3gdd07g9pr7wydfjv1wxz8kylzmyn07ab38kahhhzh9";
+lc = "05zr0y2ivznmf1ijszq249v4rw6kvdx6jz4s2hhnaiqvx35g4cqg";
+}
diff --git a/pkgs/development/coq-modules/contribs/default.nix b/pkgs/development/coq-modules/contribs/default.nix
new file mode 100644
index 000000000000..fb231bfdeac6
--- /dev/null
+++ b/pkgs/development/coq-modules/contribs/default.nix
@@ -0,0 +1,208 @@
+contribs:
+
+let
+  mkContrib = import ./mk-contrib.nix;
+  all = import ./all.nix;
+  overrides = {
+    BDDs = self: {
+      buildInputs = self.buildInputs ++ [ contribs.IntMap ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../../Cachan/IntMap IntMap
+        32d30
+        < extraction
+        EOF
+      '';
+      postInstall = ''
+        mkdir -p $out/bin
+        cp extraction/dyade $out/bin
+      '';
+    };
+    CanonBDDs = self: {
+      patchPhase = ''
+        patch Make <<EOF
+        17d16
+        < rauzy/algorithme1/extraction
+        EOF
+      '';
+      postInstall = ''
+        mkdir -p $out/bin
+        cp rauzy/algorithme1/extraction/suresnes $out/bin
+      '';
+    };
+    CoinductiveReals = self: {
+      buildInputs = self.buildInputs ++ [ contribs.QArithSternBrocot ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../QArithSternBrocot QArithSternBrocot
+        EOF
+      '';
+    };
+    CoRN = self: {
+      buildInputs = self.buildInputs ++ [ contribs.MathClasses ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../MathClasses/ MathClasses
+        EOF
+      '';
+      installFlags = self.installFlags + " -f Makefile.coq";
+    };
+    Counting = self: {
+      postInstall = ''
+        for ext in cma cmxs
+        do
+          cp src/counting_plugin.$ext $out/lib/coq/8.4/user-contrib/Counting/
+        done
+      '';
+    };
+    Ergo = self: {
+      buildInputs = self.buildInputs ++ (with contribs; [ Containers Counting Nfix ]);
+      patchPhase = ''
+        patch Make <<EOF
+        4,9d3
+        < -I ../Containers/src
+        < -R ../Containers/theories Containers
+        < -I ../Nfix/src
+        < -R ../Nfix/theories Nfix
+        < -I ../Counting/src
+        < -R ../Counting/theories Counting
+        EOF
+      '';
+    };
+    FingerTree = self: {
+      patchPhase = ''
+        patch Make <<EOF
+        21d20
+        < extraction
+        EOF
+      '';
+    };
+    Goedel = self: {
+      buildInputs = self.buildInputs ++ [ contribs.Pocklington ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+	< -R ../../Eindhoven/Pocklington Pocklington
+        EOF
+      '';
+    };
+    Graphs = self: {
+      buildInputs = self.buildInputs ++ [ contribs.IntMap ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../../Cachan/IntMap IntMap
+        EOF
+      '';
+      postInstall = ''
+        mkdir -p $out/bin
+        cp checker $out/bin/
+      '';
+    };
+    IntMap = self: { configurePhase = "coq_makefile -f Make -o Makefile"; };
+    LinAlg = self: {
+      buildInputs = self.buildInputs ++ [ contribs.Algebra ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../../Sophia-Antipolis/Algebra/ Algebra
+        EOF
+      '';
+    };
+    Markov = self: { configurePhase = "coq_makefile -o Makefile -R . Markov markov.v"; };
+    Nfix = self: {
+      postInstall = ''
+        for ext in cma cmxs
+        do
+          cp src/nfix_plugin.$ext $out/lib/coq/8.4/user-contrib/Nfix/
+        done
+      '';
+    };
+    OrbStab = self: {
+      buildInputs = self.buildInputs ++ (with contribs; [ LinAlg Algebra ]);
+      patchPhase = ''
+        patch Make <<EOF
+        2,3d1
+        < -R ../../Sophia-Antipolis/Algebra Algebra
+        < -R ../../Nijmegen/LinAlg LinAlg
+        EOF
+      '';
+    };
+    PTSF = self: {
+      buildInputs = self.buildInputs ++ [ contribs.PTSATR ];
+      patchPhase = ''
+        patch Make <<EOF
+        1d0
+        < -R ../../Paris/PTSATR/ PTSATR
+        EOF
+      '';
+    };
+    RelationExtraction = self: {
+      patchPhase = ''
+        patch Make <<EOF
+        31d30
+        < test
+        EOF
+      '';
+    };
+    SMC = self: {
+      buildInputs = self.buildInputs ++ [ contribs.IntMap ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../../Cachan/IntMap IntMap
+        EOF
+      '';
+    };
+    Ssreflect = self: {
+      patchPhase = ''
+        substituteInPlace Makefile \
+	--replace "/bin/mkdir" "mkdir"
+      '';
+    };
+    Stalmarck = self: {
+      configurePhase = "coq_makefile -R . Stalmarck *.v staltac.ml4 > Makefile";
+    };
+    Topology = self: {
+      buildInputs = self.buildInputs ++ [ contribs.ZornsLemma ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../ZornsLemma ZornsLemma
+        EOF
+      '';
+    };
+    TreeAutomata = self: {
+      buildInputs = self.buildInputs ++ [ contribs.IntMap ];
+      patchPhase = ''
+        patch Make <<EOF
+        2d1
+        < -R ../../Cachan/IntMap IntMap
+        EOF
+      '';
+    };
+  };
+in
+
+callPackage: extra:
+
+builtins.listToAttrs (
+map
+(name:
+  let
+    sha256 = builtins.getAttr name all;
+    override =
+      if builtins.hasAttr name overrides
+      then builtins.getAttr name overrides
+      else x: { };
+  in
+  {
+    inherit name;
+    value = callPackage (mkContrib { inherit name sha256 override; }) extra;
+  }
+)
+(builtins.attrNames all)
+)
diff --git a/pkgs/development/coq-modules/contribs/mk-contrib.nix b/pkgs/development/coq-modules/contribs/mk-contrib.nix
new file mode 100644
index 000000000000..12dd700a6310
--- /dev/null
+++ b/pkgs/development/coq-modules/contribs/mk-contrib.nix
@@ -0,0 +1,30 @@
+{ name, sha256, override }:
+
+{ stdenv, fetchzip, coq }:
+
+let
+  self = {
+
+  name = "coq-contribs-${name}-${coq.coq-version}";
+
+  src = fetchzip {
+    url = "http://www.lix.polytechnique.fr/coq/pylons/contribs/files/${name}/v${coq.coq-version}/${name}.tar.gz";
+    inherit sha256;
+  };
+
+  buildInputs = [ coq.ocaml coq.camlp5 ];
+  propagatedBuildInputs = [ coq ];
+
+  installFlags = "COQLIB=$(out)/lib/coq/${coq.coq-version}/";
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.lix.polytechnique.fr/coq/pylons/contribs/view/${name}/v${coq.coq-version}";
+    maintainers = with maintainers; [ vbgl ];
+    platforms = coq.meta.platforms;
+  };
+
+};
+
+in
+
+stdenv.mkDerivation (self // override self)
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index d26473104b6d..92330bba8334 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -12538,6 +12538,14 @@ let
 
     bedrock = callPackage ../development/coq-modules/bedrock {};
 
+    contribs =
+      let contribs =
+        import ../development/coq-modules/contribs
+        contribs
+        callPackage { };
+      in
+        recurseIntoAttrs contribs;
+
     coqExtLib = callPackage ../development/coq-modules/coq-ext-lib {};
 
     coqeal = callPackage ../development/coq-modules/coqeal {};