guile-xyz.scm 190 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
  3. ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
  4. ;;; Copyright © 2015, 2017 Christine Lemmer-Webber <cwebber@dustycloud.org>
  5. ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
  6. ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
  7. ;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
  8. ;;; Copyright © 2016, 2019, 2020, 2021 Eraim Flashner <efraim@flashner.co.il>
  9. ;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
  10. ;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
  11. ;;; Copyright © 2016, 2021 Amirouche <amirouche@hypermove.net>
  12. ;;; Copyright © 2016, 2019, 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
  13. ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
  14. ;;; Copyright © 2017 David Thompson <davet@gnu.org>
  15. ;;; Copyright © 2017, 2018, 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
  16. ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
  17. ;;; Copyright © 2017 Nikita <nikita@n0.is>
  18. ;;; Copyright © 2017, 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
  19. ;;; Copyright © 2018, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
  20. ;;; Copyright © 2018, 2019, 2020, 2021 Arun Isaac <arunisaac@systemreboot.net>
  21. ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
  22. ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
  23. ;;; Copyright © 2019 swedebugia <swedebugia@riseup.net>
  24. ;;; Copyright © 2019, 2020 Amar Singh <nly@disroot.org>
  25. ;;; Copyright © 2019, 2021 Timothy Sample <samplet@ngyro.com>
  26. ;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
  27. ;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com>
  28. ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
  29. ;;; Copyright © 2020 Julien Lepiler <julien@lepiller.eu>
  30. ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
  31. ;;; Copyright © 2020, 2021 Masaya Tojo <masaya@tojo.tokyo>
  32. ;;; Copyright © 2020 Jesse Gibbons <jgibbons2357@gmail.com>
  33. ;;; Copyright © 2020 Mike Rosset <mike.rosset@gmail.com>
  34. ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
  35. ;;; Copyright © 2020, 2021 pukkamustard <pukkamustard@posteo.net>
  36. ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
  37. ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
  38. ;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net>
  39. ;;; Copyright © 2021 Zelphir Kaltstahl <zelphirkaltstahl@posteo.de>
  40. ;;; Copyright © 2021 Oleg Pykhalov <go.wigust@gmail.com>
  41. ;;;
  42. ;;; This file is part of GNU Guix.
  43. ;;;
  44. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  45. ;;; under the terms of the GNU General Public License as published by
  46. ;;; the Free Software Foundation; either version 3 of the License, or (at
  47. ;;; your option) any later version.
  48. ;;;
  49. ;;; GNU Guix is distributed in the hope that it will be useful, but
  50. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  51. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  52. ;;; GNU General Public License for more details.
  53. ;;;
  54. ;;; You should have received a copy of the GNU General Public License
  55. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  56. (define-module (gnu packages guile-xyz)
  57. #:use-module ((guix licenses) #:prefix license:)
  58. #:use-module (gnu packages)
  59. #:use-module (gnu packages algebra)
  60. #:use-module (gnu packages aspell)
  61. #:use-module (gnu packages autotools)
  62. #:use-module (gnu packages avahi)
  63. #:use-module (gnu packages base)
  64. #:use-module (gnu packages bash)
  65. #:use-module (gnu packages compression)
  66. #:use-module (gnu packages crypto)
  67. #:use-module (gnu packages databases)
  68. #:use-module (gnu packages disk)
  69. #:use-module (gnu packages emacs)
  70. #:use-module (gnu packages emacs-xyz)
  71. #:use-module (gnu packages gawk)
  72. #:use-module (gnu packages gettext)
  73. #:use-module (gnu packages gl)
  74. #:use-module (gnu packages glib)
  75. #:use-module (gnu packages gnome)
  76. #:use-module (gnu packages gnupg)
  77. #:use-module (gnu packages gperf)
  78. #:use-module (gnu packages gstreamer)
  79. #:use-module (gnu packages gtk)
  80. #:use-module (gnu packages guile)
  81. #:use-module (gnu packages hurd)
  82. #:use-module (gnu packages image)
  83. #:use-module (gnu packages imagemagick)
  84. #:use-module (gnu packages libffi)
  85. #:use-module (gnu packages libunistring)
  86. #:use-module (gnu packages linux)
  87. #:use-module (gnu packages man)
  88. #:use-module (gnu packages maths)
  89. #:use-module (gnu packages mes)
  90. #:use-module (gnu packages multiprecision)
  91. #:use-module (gnu packages ncurses)
  92. #:use-module (gnu packages networking)
  93. #:use-module (gnu packages noweb)
  94. #:use-module (gnu packages nss)
  95. #:use-module (gnu packages package-management)
  96. #:use-module (gnu packages password-utils)
  97. #:use-module (gnu packages perl)
  98. #:use-module (gnu packages pkg-config)
  99. #:use-module (gnu packages python)
  100. #:use-module (gnu packages readline)
  101. #:use-module (gnu packages sdl)
  102. #:use-module (gnu packages search)
  103. #:use-module (gnu packages serialization)
  104. #:use-module (gnu packages slang)
  105. #:use-module (gnu packages sqlite)
  106. #:use-module (gnu packages swig)
  107. #:use-module (gnu packages tex)
  108. #:use-module (gnu packages texinfo)
  109. #:use-module (gnu packages tls)
  110. #:use-module (gnu packages version-control)
  111. #:use-module (gnu packages webkit)
  112. #:use-module (gnu packages xdisorg)
  113. #:use-module (gnu packages xorg)
  114. #:use-module (guix packages)
  115. #:use-module (guix download)
  116. #:use-module (guix git-download)
  117. #:use-module (guix hg-download)
  118. #:use-module (guix build-system cmake)
  119. #:use-module (guix build-system glib-or-gtk)
  120. #:use-module (guix build-system gnu)
  121. #:use-module (guix build-system guile)
  122. #:use-module (guix utils)
  123. #:use-module ((guix build utils) #:select (alist-replace))
  124. #:use-module (ice-9 match)
  125. #:use-module ((srfi srfi-1) #:select (alist-delete)))
  126. (define-public artanis
  127. (package
  128. (name "artanis")
  129. (version "0.5")
  130. (source (origin
  131. (method url-fetch)
  132. (uri (string-append "mirror://gnu/artanis/artanis-"
  133. version ".tar.gz"))
  134. (sha256
  135. (base32
  136. "1vk1kp2xhz35xa5n27cxlq9c88wk6qm7fqaac8rb0pb6k9pvsv7v"))
  137. (modules '((guix build utils)))
  138. (snippet
  139. '(begin
  140. ;; Unbundle guile-redis and guile-json
  141. (delete-file-recursively "artanis/third-party/json.scm")
  142. (delete-file-recursively "artanis/third-party/json")
  143. (delete-file-recursively "artanis/third-party/redis.scm")
  144. (delete-file-recursively "artanis/third-party/redis")
  145. (substitute* '("artanis/artanis.scm"
  146. "artanis/lpc.scm"
  147. "artanis/oht.scm")
  148. (("(#:use-module \\()artanis third-party (json\\))" _
  149. use-module json)
  150. (string-append use-module json)))
  151. (substitute* '("artanis/lpc.scm"
  152. "artanis/session.scm")
  153. (("(#:use-module \\()artanis third-party (redis\\))" _
  154. use-module redis)
  155. (string-append use-module redis)))
  156. (substitute* "artanis/oht.scm"
  157. (("([[:punct:][:space:]]+)(->json-string)([[:punct:][:space:]]+)"
  158. _ pre json-string post)
  159. (string-append pre
  160. "scm" json-string
  161. post)))
  162. (substitute* "artanis/artanis.scm"
  163. (("[[:punct:][:space:]]+->json-string[[:punct:][:space:]]+")
  164. ""))
  165. #t))))
  166. (build-system gnu-build-system)
  167. (inputs
  168. `(("guile" ,guile-3.0)
  169. ("nspr" ,nspr)
  170. ("nss" ,nss)))
  171. ;; FIXME the bundled csv contains one more exported procedure
  172. ;; (sxml->csv-string) than guile-csv. The author is maintainer of both
  173. ;; projects.
  174. ;; TODO: Add guile-dbi and guile-dbd optional dependencies.
  175. (propagated-inputs
  176. `(("guile-json" ,guile-json-3)
  177. ("guile-readline" ,guile-readline)
  178. ("guile-redis" ,guile-redis)))
  179. (native-inputs
  180. `(("bash" ,bash) ;for the `source' builtin
  181. ("pkgconfig" ,pkg-config)
  182. ("util-linux" ,util-linux))) ;for the `script' command
  183. (arguments
  184. `(#:modules (((guix build guile-build-system)
  185. #:select (target-guile-effective-version))
  186. ,@%gnu-build-system-modules)
  187. #:imported-modules ((guix build guile-build-system)
  188. ,@%gnu-build-system-modules)
  189. #:make-flags
  190. ;; TODO: The documentation must be built with the `docs' target.
  191. (let* ((out (assoc-ref %outputs "out"))
  192. ;; We pass guile explicitly here since this executes before the
  193. ;; set-paths phase and therefore guile is not yet in PATH.
  194. (effective-version (target-guile-effective-version
  195. (assoc-ref %build-inputs "guile")))
  196. (scm (string-append out "/share/guile/site/" effective-version))
  197. (go (string-append out "/lib/guile/" effective-version "/site-ccache")))
  198. ;; Don't use (%site-dir) for site paths.
  199. (list (string-append "MOD_PATH=" scm)
  200. (string-append "MOD_COMPILED_PATH=" go)))
  201. #:test-target "test"
  202. #:phases
  203. (modify-phases %standard-phases
  204. (add-after 'unpack 'patch-site-dir
  205. (lambda* (#:key outputs #:allow-other-keys)
  206. (substitute* "artanis/commands/help.scm"
  207. (("\\(%site-dir\\)")
  208. (string-append "\""
  209. (assoc-ref outputs "out")
  210. "/share/guile/site/"
  211. (target-guile-effective-version)
  212. "\"")))))
  213. (add-after 'unpack 'patch-reference-to-libnss
  214. (lambda* (#:key inputs #:allow-other-keys)
  215. (substitute* "artanis/security/nss.scm"
  216. (("ffi-binding \"libnss3\"")
  217. (string-append
  218. "ffi-binding \""
  219. (assoc-ref inputs "nss") "/lib/nss/libnss3.so"
  220. "\""))
  221. (("ffi-binding \"libssl3\"")
  222. (string-append
  223. "ffi-binding \"" (assoc-ref inputs "nss") "/lib/nss/libssl3.so\"")))))
  224. (add-before 'install 'substitute-root-dir
  225. (lambda* (#:key outputs #:allow-other-keys)
  226. (let ((out (assoc-ref outputs "out")))
  227. (substitute* "Makefile" ;ignore the execution of bash.bashrc
  228. ((" /etc/bash.bashrc") " /dev/null"))
  229. (substitute* "Makefile" ;set the root of config files to OUT
  230. ((" /etc") (string-append " " out "/etc")))
  231. (mkdir-p (string-append out "/bin")) )))
  232. (add-after 'install 'wrap-art
  233. (lambda* (#:key inputs outputs #:allow-other-keys)
  234. (let* ((out (assoc-ref outputs "out"))
  235. (effective-version (target-guile-effective-version))
  236. (bin (string-append out "/bin"))
  237. (scm (string-append out "/share/guile/site/" effective-version))
  238. (go (string-append out "/lib/guile/" effective-version
  239. "/site-ccache")))
  240. (wrap-program (string-append bin "/art")
  241. `("GUILE_LOAD_PATH" ":" prefix
  242. (,scm ,(getenv "GUILE_LOAD_PATH")))
  243. `("GUILE_LOAD_COMPILED_PATH" ":" prefix
  244. (,go ,(getenv "GUILE_LOAD_COMPILED_PATH"))))))))))
  245. (synopsis "Web application framework written in Guile")
  246. (description "GNU Artanis is a web application framework written in Guile
  247. Scheme. A web application framework (WAF) is a software framework that is
  248. designed to support the development of dynamic websites, web applications, web
  249. services and web resources. The framework aims to alleviate the overhead
  250. associated with common activities performed in web development. Artanis
  251. provides several tools for web development: database access, templating
  252. frameworks, session management, URL-remapping for RESTful, page caching, and
  253. more.")
  254. (home-page "https://www.gnu.org/software/artanis/")
  255. (license (list license:gpl3+ license:lgpl3+)))) ;dual license
  256. (define-public guile-f-scm
  257. (package
  258. (name "guile-f-scm")
  259. (version "0.2.0")
  260. (source
  261. (origin
  262. (method git-fetch)
  263. (uri (git-reference
  264. (url "https://git.sr.ht/~brown121407/f.scm")
  265. (commit version)))
  266. (file-name (git-file-name name version))
  267. (sha256
  268. (base32 "14wyrs3m1649l3km4pl2175dmap1372j5h8nkhykrbxg5xqp6ivd"))))
  269. (build-system guile-build-system)
  270. (native-inputs
  271. `(("guile" ,guile-3.0)))
  272. (home-page "https://git.sr.ht/~brown121407/f.scm")
  273. (synopsis "Library for working with files and directories")
  274. (description
  275. "f.scm is a library intended to facilitate working with files and
  276. directories (the file system in general). It was initially inspired by the
  277. f library for Emacs.")
  278. (license license:gpl3+)))
  279. ;; There has not been any release yet.
  280. (define-public guildhall
  281. (let ((commit "2fe2cc539f4b811bbcd69e58738db03eb5a2b778")
  282. (revision "1"))
  283. (package
  284. (name "guildhall")
  285. (version (string-append "0-" revision "." (string-take commit 9)))
  286. (source (origin
  287. (method git-fetch)
  288. (uri (git-reference
  289. (url "https://github.com/ijp/guildhall")
  290. (commit commit)))
  291. (file-name (string-append name "-" version "-checkout"))
  292. (sha256
  293. (base32
  294. "115bym7bg66h3gs399yb2vkzc2ygriaqsn4zbrg8f054mgy8wzn1"))))
  295. (build-system gnu-build-system)
  296. (arguments
  297. `(#:phases
  298. (modify-phases %standard-phases
  299. ;; Tests fail without this fix because they try to load the bash
  300. ;; executable as a Scheme file. See bug report at
  301. ;; https://github.com/ijp/guildhall/issues/22
  302. (add-after 'unpack 'fix-bug-22
  303. (lambda _
  304. (substitute* "Makefile.am"
  305. (("TESTS_ENVIRONMENT=.*")
  306. "AM_TESTS_ENVIRONMENT=srcdir=$(abs_top_srcdir)/tests/
  307. TEST_EXTENSIONS = .scm
  308. SCM_LOG_COMPILER= $(top_builddir)/env $(GUILE)
  309. AM_SCM_LOG_FLAGS = --no-auto-compile -s")
  310. ;; FIXME: one of the database tests fails for unknown
  311. ;; reasons. It does not fail when run outside of Guix.
  312. (("tests/database.scm") ""))
  313. #t)))))
  314. (inputs
  315. `(("guile" ,guile-2.0)))
  316. (native-inputs
  317. `(("zip" ,zip) ; for tests
  318. ("autoconf" ,autoconf)
  319. ("automake" ,automake)
  320. ("texinfo" ,texinfo)))
  321. (synopsis "Package manager for Guile")
  322. (description
  323. "Guildhall is a package manager written for Guile Scheme. A guild is
  324. an association of independent craftspeople. A guildhall is where they meet.
  325. This Guildhall aims to make a virtual space for Guile wizards and journeyfolk
  326. to share code.
  327. On a practical level, Guildhall lets you share Scheme modules and programs
  328. over the internet, and install code that has been shared by others. Guildhall
  329. can handle dependencies, so when a program requires several libraries, and
  330. each of those has further dependencies, all of the prerequisites for the
  331. program can be installed in one go.")
  332. (home-page "https://github.com/ijp/guildhall")
  333. (license license:gpl3+))))
  334. (define-public guile-aspell
  335. (package
  336. (name "guile-aspell")
  337. (version "0.4")
  338. (source (origin
  339. (method url-fetch)
  340. (uri (string-append
  341. "http://lonelycactus.com/tarball/guile_aspell-"
  342. version ".tar.gz"))
  343. (sha256
  344. (base32
  345. "0vpk5xj9m9qc702z3khmkwhgpb949qbsyz8kw2qycda6qnxk0077"))))
  346. (build-system gnu-build-system)
  347. (arguments
  348. '(#:phases (modify-phases %standard-phases
  349. (add-before 'configure 'set-guilesitedir
  350. (lambda _
  351. (substitute* "Makefile.in"
  352. (("^guilesitedir =.*$")
  353. "guilesitedir = \
  354. $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
  355. #t))
  356. (add-before 'build 'set-libaspell-file-name
  357. (lambda* (#:key inputs #:allow-other-keys)
  358. (let ((aspell (assoc-ref inputs "aspell")))
  359. (substitute* "aspell.scm"
  360. (("\"libaspell\\.so\"")
  361. (string-append "\"" aspell
  362. "/lib/libaspell\"")))
  363. #t))))))
  364. (native-inputs `(("pkg-config" ,pkg-config)))
  365. (inputs `(("guile" ,guile-2.2)
  366. ("aspell" ,aspell)))
  367. (home-page "https://github.com/spk121/guile-aspell")
  368. (synopsis "Spell-checking from Guile")
  369. (description
  370. "guile-aspell is a Guile Scheme library for comparing a string against a
  371. dictionary and suggesting spelling corrections.")
  372. (license license:gpl3+)))
  373. (define-public guile2.0-bash
  374. ;; This project is currently retired. It was initially announced here:
  375. ;; <https://lists.gnu.org/archive/html/guile-user/2015-02/msg00003.html>.
  376. (let ((commit "1eabc563ca5692b3e08d84f1f0e6fd2283284469")
  377. (revision "0"))
  378. (package
  379. (name "guile2.0-bash")
  380. (version (string-append "0.1.6-" revision "." (string-take commit 7)))
  381. (home-page
  382. "https://anonscm.debian.org/cgit/users/kaction-guest/retired/dev.guile-bash.git")
  383. (source (origin
  384. (method git-fetch)
  385. (uri (git-reference
  386. (commit commit)
  387. (url home-page)))
  388. (sha256
  389. (base32
  390. "097vny990wp2qpjij6a5a5gwc6fxzg5wk56inhy18iki5v6pif1p"))
  391. (file-name (string-append name "-" version "-checkout"))))
  392. (build-system gnu-build-system)
  393. (arguments
  394. '(#:configure-flags
  395. ;; Add -I to match 'bash.pc' of Bash 4.4.
  396. (list (string-append "CPPFLAGS=-I"
  397. (assoc-ref %build-inputs "bash:include")
  398. "/include/bash/include")
  399. ;; The '.a' file is useless.
  400. "--disable-static"
  401. ;; Install 'lib/bash' as Bash 4.4 expects.
  402. (string-append "--libdir=" (assoc-ref %outputs "out")
  403. "/lib/bash"))))
  404. (native-inputs `(("pkg-config" ,pkg-config)
  405. ("autoconf" ,autoconf)
  406. ("automake" ,automake)
  407. ("libtool" ,libtool)
  408. ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
  409. ("gettext" ,gettext-minimal)
  410. ;; Bash with loadable module support, for the test
  411. ;; suite.
  412. ("bash-full" ,bash)))
  413. (inputs `(("guile" ,guile-2.0)
  414. ("bash:include" ,bash "include")))
  415. (synopsis "Extend Bash using Guile")
  416. (description
  417. "Guile-Bash provides a shared library and set of Guile modules,
  418. allowing you to extend Bash in Scheme. Scheme interfaces allow you to access
  419. the following aspects of Bash:
  420. @itemize
  421. @item aliases;
  422. @item setting and getting Bash variables;
  423. @item creating dynamic variables;
  424. @item creating Bash functions with a Scheme implementation;
  425. @item reader macro for output capturing;
  426. @item reader macro for evaluating raw Bash commands.
  427. @end itemize
  428. To enable it, run:
  429. @example
  430. enable -f ~/.guix-profile/lib/bash/libguile-bash.so scm
  431. @end example
  432. and then run @command{scm example.scm}.")
  433. (license license:gpl3+))))
  434. (define-public guile-bash
  435. (package
  436. (inherit guile2.0-bash)
  437. (name "guile-bash")
  438. (inputs
  439. `(("guile" ,guile-3.0-latest)
  440. ,@(assoc-remove! (package-inputs guile2.0-bash) "guile")))
  441. (arguments
  442. `(#:tests? #f
  443. #:phases (modify-phases %standard-phases
  444. (add-after 'install 'install-guile
  445. (lambda* (#:key inputs outputs #:allow-other-keys)
  446. (copy-recursively
  447. (string-append (assoc-ref outputs "out")
  448. (assoc-ref inputs "guile") "/share")
  449. (string-append (assoc-ref outputs "out") "/share"))
  450. #t)))
  451. ,@(package-arguments guile2.0-bash)))))
  452. (define-public guile-8sync
  453. (package
  454. (name "guile-8sync")
  455. (version "0.4.2")
  456. (source (origin
  457. (method url-fetch)
  458. (uri (string-append "mirror://gnu/8sync/8sync-" version
  459. ".tar.gz"))
  460. (sha256
  461. (base32
  462. "031wm13srak3wsnll7j2mbbi29g1pcm4swdb71ds9yn567pn20qw"))))
  463. (build-system gnu-build-system)
  464. (native-inputs `(("autoconf" ,autoconf)
  465. ("automake" ,automake)
  466. ("guile" ,guile-2.2)
  467. ("pkg-config" ,pkg-config)
  468. ("texinfo" ,texinfo)))
  469. (arguments
  470. `(#:phases (modify-phases %standard-phases
  471. (add-before 'configure 'setenv
  472. (lambda _
  473. ;; quiet warnings
  474. (setenv "GUILE_AUTO_COMPILE" "0")
  475. #t)))))
  476. (home-page "https://gnu.org/s/8sync/")
  477. (synopsis "Asynchronous actor model library for Guile")
  478. (description
  479. "GNU 8sync (pronounced \"eight-sync\") is an asynchronous programming
  480. library for GNU Guile based on the actor model.
  481. Note that 8sync is only available for Guile 2.2.")
  482. (properties '((upstream-name . "8sync")))
  483. (license license:lgpl3+)))
  484. (define-public guile-daemon
  485. (package
  486. (name "guile-daemon")
  487. (version "0.1.3")
  488. (source (origin
  489. (method url-fetch)
  490. (uri (string-append "https://github.com/alezost/" name
  491. "/releases/download/v" version
  492. "/" name "-" version ".tar.gz"))
  493. (sha256
  494. (base32
  495. "08gaqrgjlly9k5si72vvpbr4xhq5v52l5ma5y6a7spid5dd057cy"))))
  496. (build-system gnu-build-system)
  497. (native-inputs
  498. `(("pkg-config" ,pkg-config)))
  499. (inputs
  500. `(("guile" ,guile-2.2)))
  501. (home-page "https://github.com/alezost/guile-daemon")
  502. (synopsis "Evaluate code in a running Guile process")
  503. (description
  504. "Guile-Daemon is a small Guile program that loads your initial
  505. configuration file, and then reads and evaluates Guile expressions that
  506. you send to a FIFO file.")
  507. (license license:gpl3+)))
  508. (define-public guile-dsv
  509. (package
  510. (name "guile-dsv")
  511. (version "0.4.0")
  512. (source (origin
  513. (method git-fetch)
  514. (uri (git-reference
  515. (url "https://github.com/artyom-poptsov/guile-dsv")
  516. (commit (string-append "v" version))))
  517. (file-name (string-append name "-" version "-checkout"))
  518. (sha256
  519. (base32
  520. "1mvyc8i38j56frjh3p6vwziv8lrzlyqndz30663h5nwcp0044sdn"))))
  521. (build-system gnu-build-system)
  522. (native-inputs
  523. `(("autoconf" ,autoconf)
  524. ("automake" ,automake)
  525. ("pkg-config" ,pkg-config)
  526. ("texinfo" ,texinfo)))
  527. (inputs `(("guile" ,guile-3.0)))
  528. (propagated-inputs `(("guile-lib" ,guile-lib)))
  529. (arguments
  530. `(#:modules (((guix build guile-build-system)
  531. #:select (target-guile-effective-version))
  532. ,@%gnu-build-system-modules)
  533. #:imported-modules ((guix build guile-build-system)
  534. ,@%gnu-build-system-modules)
  535. #:phases (modify-phases %standard-phases
  536. (add-before 'configure 'set-guilesitedir
  537. (lambda _
  538. (substitute* "Makefile.in"
  539. (("^guilesitedir =.*$")
  540. "guilesitedir = \
  541. $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
  542. (substitute* "modules/Makefile.in"
  543. (("^guilesitedir =.*$")
  544. "guilesitedir = \
  545. $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
  546. (substitute* "modules/dsv/Makefile.in"
  547. (("^guilesitedir =.*$")
  548. "guilesitedir = \
  549. $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
  550. #t))
  551. (add-after 'install 'wrap-program
  552. (lambda* (#:key inputs outputs #:allow-other-keys)
  553. (let* ((out (assoc-ref outputs "out"))
  554. (bin (string-append out "/bin"))
  555. (guile-lib (assoc-ref inputs "guile-lib"))
  556. (version (target-guile-effective-version))
  557. (scm (string-append "/share/guile/site/"
  558. version))
  559. (go (string-append "/lib/guile/"
  560. version "/site-ccache")))
  561. (wrap-program (string-append bin "/dsv")
  562. `("GUILE_LOAD_PATH" prefix
  563. (,(string-append out scm)
  564. ,(string-append guile-lib scm)))
  565. `("GUILE_LOAD_COMPILED_PATH" prefix
  566. (,(string-append out go)
  567. ,(string-append guile-lib go)))))
  568. #t)))))
  569. (home-page "https://github.com/artyom-poptsov/guile-dsv")
  570. (synopsis "DSV module for Guile")
  571. (description
  572. "Guile-DSV is a GNU Guile module for working with the
  573. delimiter-separated values (DSV) data format. Guile-DSV supports the
  574. Unix-style DSV format and RFC 4180 format.")
  575. (license license:gpl3+)))
  576. (define-public guile2.2-dsv
  577. (package
  578. (inherit guile-dsv)
  579. (name "guile2.2-dsv")
  580. (inputs `(("guile" ,guile-2.2)))
  581. (propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
  582. (define-public guile-fibers
  583. (package
  584. (name "guile-fibers")
  585. (version "1.0.0")
  586. (source (origin
  587. (method url-fetch)
  588. (uri (string-append "https://wingolog.org/pub/fibers/fibers-"
  589. version ".tar.gz"))
  590. (sha256
  591. (base32
  592. "0vjkg72ghgdgphzbjz9ig8al8271rq8974viknb2r1rg4lz92ld0"))
  593. (modules '((guix build utils)))
  594. (snippet
  595. '(begin
  596. ;; Allow builds with Guile 3.0.
  597. (substitute* "configure"
  598. (("search=\"2\\.2\"")
  599. "search=\"3.0 2.2\""))
  600. ;; Explicitly include system headers rather than relying on
  601. ;; <libguile.h> to do it for us.
  602. (substitute* "epoll.c"
  603. (("#include.*libguile\\.h.*$" all)
  604. (string-append "#include <unistd.h>\n"
  605. "#include <string.h>\n"
  606. all "\n")))
  607. ;; Import (ice-9 threads) for 'current-processor-count'.
  608. (substitute* "tests/channels.scm"
  609. (("#:use-module \\(fibers\\)")
  610. (string-append "#:use-module (fibers)\n"
  611. "#:use-module (ice-9 threads)\n")))
  612. #t))
  613. (patches
  614. ;; fixes a resource leak that causes crashes in the tests
  615. (search-patches "guile-fibers-destroy-peer-schedulers.patch"))))
  616. (build-system gnu-build-system)
  617. (arguments
  618. '(;; The code uses 'scm_t_uint64' et al., which are deprecated in 3.0.
  619. #:configure-flags '("CFLAGS=-Wno-error=deprecated-declarations")
  620. #:phases (modify-phases %standard-phases
  621. (add-after 'install 'mode-guile-objects
  622. (lambda* (#:key outputs #:allow-other-keys)
  623. ;; .go files are installed to "lib/guile/X.Y/cache".
  624. ;; This phase moves them to "…/site-ccache".
  625. (let* ((out (assoc-ref outputs "out"))
  626. (lib (string-append out "/lib/guile"))
  627. (old (car (find-files lib "^ccache$"
  628. #:directories? #t)))
  629. (new (string-append (dirname old)
  630. "/site-ccache")))
  631. (rename-file old new)
  632. #t))))))
  633. (native-inputs
  634. `(("texinfo" ,texinfo)
  635. ("pkg-config" ,pkg-config)))
  636. (inputs
  637. `(("guile" ,guile-3.0)))
  638. (synopsis "Lightweight concurrency facility for Guile")
  639. (description
  640. "Fibers is a Guile library that implements a a lightweight concurrency
  641. facility, inspired by systems like Concurrent ML, Go, and Erlang. A fiber is
  642. like a \"goroutine\" from the Go language: a lightweight thread-like
  643. abstraction. Systems built with Fibers can scale up to millions of concurrent
  644. fibers, tens of thousands of concurrent socket connections, and many parallel
  645. cores. The Fibers library also provides Concurrent ML-like channels for
  646. communication between fibers.
  647. Note that Fibers makes use of some Guile 2.1/2.2-specific features and
  648. is not available for Guile 2.0.")
  649. (home-page "https://github.com/wingo/fibers")
  650. (license license:lgpl3+)))
  651. (define-public guile2.0-fibers
  652. (package
  653. (inherit guile-fibers)
  654. (name "guile2.2-fibers")
  655. (inputs `(("guile" ,guile-2.2)))))
  656. (define-public guile3.0-fibers
  657. (deprecated-package "guile3.0-fibers" guile-fibers))
  658. (define-public guile-filesystem
  659. (package
  660. (name "guile-filesystem")
  661. (version "0.1.0")
  662. (source (origin
  663. (method git-fetch)
  664. (uri (git-reference
  665. (url "https://gitlab.com/leoprikler/guile-filesystem.git")
  666. (commit version)))
  667. (file-name (git-file-name name version))
  668. (sha256
  669. (base32
  670. "1shmkc0y9r2sj3kw7hrsnamnp7y8xifkhf3m3rnfxczqg63k67vy"))))
  671. (build-system gnu-build-system)
  672. (native-inputs
  673. `(("autoconf" ,autoconf)
  674. ("automake" ,automake)
  675. ("pkg-config" ,pkg-config)
  676. ("texinfo" ,texinfo)))
  677. (inputs
  678. `(("guile" ,guile-3.0)))
  679. (home-page "https://gitlab.com/leoprikler/guile-filesystem")
  680. (synopsis "Complementary library to Guile's built-in file system procedures")
  681. (description "@code{guile-filesystem} provides a set of utility functions,
  682. that augment Guile's support for handling files and their names.")
  683. (license license:lgpl3+)))
  684. (define-public guile2.0-filesystem
  685. (package
  686. (inherit guile-filesystem)
  687. (name "guile2.0-filesystem")
  688. (inputs `(("guile" ,guile-2.0)))))
  689. (define-public guile2.2-filesystem
  690. (package
  691. (inherit guile-filesystem)
  692. (name "guile2.2-filesystem")
  693. (inputs `(("guile" ,guile-2.2)))))
  694. (define-public guile-syntax-highlight
  695. (package
  696. (name "guile-syntax-highlight")
  697. (version "0.1")
  698. (source (origin
  699. (method url-fetch)
  700. (uri (string-append "https://files.dthompson.us/"
  701. "guile-syntax-highlight/"
  702. "guile-syntax-highlight-"
  703. version ".tar.gz"))
  704. (sha256
  705. (base32
  706. "1p771kq15x83483m23bhah1sz6vkalg3drm7x279f4j1cxligkzi"))
  707. (modules '((guix build utils)))
  708. (snippet
  709. '(begin
  710. ;; Allow builds with Guile 3.0.
  711. (substitute* "configure"
  712. (("2\\.2 2\\.0")
  713. "3.0 2.2 2.0"))
  714. #t))))
  715. (build-system gnu-build-system)
  716. (native-inputs
  717. `(("pkg-config" ,pkg-config)))
  718. (inputs
  719. `(("guile" ,guile-3.0)))
  720. (synopsis "General-purpose syntax highlighter for GNU Guile")
  721. (description "Guile-syntax-highlight is a general-purpose syntax
  722. highlighting library for GNU Guile. It can parse code written in various
  723. programming languages into a simple s-expression that can be converted to
  724. HTML (via SXML) or any other format for rendering.")
  725. (home-page "https://dthompson.us/projects/guile-syntax-highlight.html")
  726. (license license:lgpl3+)))
  727. ;; gitile requires a more recent version than the latest release.
  728. (define-public guile-syntax-highlight-for-gitile
  729. (let ((commit "897fa5156ff41588e0d281eb00e4e94de63ccd8a")
  730. (revision "0"))
  731. (package
  732. (inherit guile-syntax-highlight)
  733. (version (git-version "0.1" revision commit))
  734. (source (origin
  735. (method git-fetch)
  736. (uri (git-reference
  737. (url "https://git.dthompson.us/guile-syntax-highlight.git")
  738. (commit commit)))
  739. (file-name (git-file-name "guile-syntax-highlight" version))
  740. (sha256
  741. (base32
  742. "18zlg4mkgd3swgv2ggfz91ivnnzc0zhvc9ybgrxg1y762va9hyvj"))))
  743. (native-inputs
  744. `(("autoconf" ,autoconf)
  745. ("automake" ,automake)
  746. ("texinfo" ,texinfo)
  747. ,@(package-native-inputs guile-syntax-highlight)))
  748. (properties '((hidden? . #t))))))
  749. (define-public guile2.2-syntax-highlight
  750. (package
  751. (inherit guile-syntax-highlight)
  752. (name "guile2.2-syntax-highlight")
  753. (inputs `(("guile" ,guile-2.2)))))
  754. (define-public guile3.0-syntax-highlight
  755. (deprecated-package "guile3.0-syntax-highlight" guile-syntax-highlight))
  756. (define-public guile-sjson
  757. (package
  758. (name "guile-sjson")
  759. (version "0.2.1")
  760. (source (origin
  761. (method url-fetch)
  762. (uri (string-append "https://dustycloud.org/misc/sjson-" version
  763. ".tar.gz"))
  764. (sha256
  765. (base32
  766. "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3"))
  767. (modules '((guix build utils)))
  768. (snippet
  769. '(begin
  770. ;; Allow builds with Guile 3.0.
  771. (substitute* "configure"
  772. (("2\\.2 2\\.0")
  773. "3.0 2.2 2.0"))
  774. #t))))
  775. (build-system gnu-build-system)
  776. (native-inputs
  777. `(("autoconf" ,autoconf)
  778. ("automake" ,automake)
  779. ("pkg-config" ,pkg-config)))
  780. (inputs
  781. `(("guile" ,guile-3.0)))
  782. (home-page "https://gitlab.com/dustyweb/guile-sjson")
  783. (synopsis "S-expression based json reader/writer for Guile")
  784. (description "guile-sjson is a json reader/writer for Guile.
  785. It has a nice, simple s-expression based syntax.")
  786. (license license:lgpl3+)))
  787. (define-public guile2.2-sjson
  788. (package
  789. (inherit guile-sjson)
  790. (name "guile2.2-sjson")
  791. (inputs `(("guile" ,guile-2.2)))))
  792. (define-public guile-squee
  793. (let ((commit "c1497a216e881cfde39d6aa7c73d0bf6b497c89b")
  794. (revision "2"))
  795. (package
  796. (name "guile-squee")
  797. (version (string-append "0-" revision "." (string-take commit 7)))
  798. (source (origin
  799. (method git-fetch)
  800. (uri (git-reference
  801. (url "https://notabug.org/cwebber/guile-squee.git")
  802. (commit commit)))
  803. (file-name (git-file-name name version))
  804. (sha256
  805. (base32
  806. "1alskrplnyl1n5wb39drn72cwplp47a8cpdd1n9cdnw3jhk5p12p"))))
  807. (build-system guile-build-system)
  808. (arguments
  809. '(#:phases
  810. (modify-phases %standard-phases
  811. (add-after 'unpack 'patch
  812. (lambda* (#:key inputs #:allow-other-keys)
  813. (substitute* "squee.scm"
  814. (("dynamic-link \"libpq\"")
  815. (string-append
  816. "dynamic-link \""
  817. (assoc-ref inputs "postgresql") "/lib/libpq.so"
  818. "\"")))
  819. #t)))))
  820. (inputs
  821. `(("postgresql" ,postgresql)))
  822. (native-inputs
  823. `(("guile" ,guile-3.0)))
  824. (home-page "https://notabug.org/cwebber/guile-squee")
  825. (synopsis "Connect to PostgreSQL using Guile")
  826. (description
  827. "@code{squee} is a Guile library for connecting to PostgreSQL databases
  828. using Guile's foreign function interface.")
  829. (license license:lgpl3+))))
  830. (define-public guile2.2-squee
  831. (package
  832. (inherit guile-squee)
  833. (name "guile2.2-squee")
  834. (native-inputs `(("guile" ,guile-2.2)
  835. ,@(alist-delete "guile"
  836. (package-native-inputs guile-squee))))))
  837. (define-public guile3.0-squee
  838. (deprecated-package "guile3.0-squee" guile-squee))
  839. (define-public guile-colorized
  840. (package
  841. (name "guile-colorized")
  842. (version "0.1")
  843. (source
  844. (origin
  845. (method git-fetch)
  846. (uri (git-reference
  847. (url "https://gitlab.com/NalaGinrut/guile-colorized.git")
  848. (commit (string-append "v" version))))
  849. (file-name (git-file-name name version))
  850. (sha256
  851. (base32 "10mv8c63159r3qvwwdvsgnsvdg7nc2ghak85zapwqpv4ywrqp9zc"))))
  852. (build-system guile-build-system)
  853. (native-inputs
  854. `(("guile" ,guile-3.0)))
  855. (home-page "https://gitlab.com/NalaGinrut/guile-colorized")
  856. (synopsis "Colorized REPL for Guile")
  857. (description
  858. "Guile-colorized provides you with a colorized REPL for GNU Guile.")
  859. (license license:gpl3+)))
  860. (define-public guile2.2-colorized
  861. (package
  862. (inherit guile-colorized)
  863. (name "guile2.2-colorized")
  864. (native-inputs `(("guile" ,guile-2.2)))))
  865. (define-public guile3.0-colorized
  866. (deprecated-package "guile3.0-colorized" guile-colorized))
  867. (define-public guile-pfds
  868. (package
  869. (name "guile-pfds")
  870. (version "0.3")
  871. (home-page "https://github.com/ijp/pfds")
  872. (source (origin
  873. (method git-fetch)
  874. (uri (git-reference
  875. (url home-page)
  876. (commit (string-append "v" version))))
  877. (sha256
  878. (base32
  879. "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh"))
  880. (file-name (string-append name "-" version "-checkout"))))
  881. (build-system guile-build-system)
  882. (arguments
  883. '(#:source-directory "src"
  884. #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
  885. #:phases (modify-phases %standard-phases
  886. (add-after 'unpack 'patch-sources
  887. ;; Initially reported here:
  888. ;; https://github.com/ijp/pfds/pull/6, and merged into
  889. ;; other projects such as IronScheme (see:
  890. ;; https://github.com/IronScheme/pfds/pull/1).
  891. (lambda _
  892. (substitute* "hamts.sls"
  893. (("subtrie-vector vector")
  894. "subtrie-vector trie"))))
  895. (add-after 'patch-sources 'move-files-around
  896. (lambda _
  897. ;; Move files under a pfds/ directory to reflect the
  898. ;; module hierarchy.
  899. (mkdir-p "src/pfds")
  900. (for-each (lambda (file)
  901. (rename-file
  902. file (string-append "src/pfds/" file)))
  903. '("bbtrees.sls"
  904. "deques"
  905. "deques.sls"
  906. "dlists.sls"
  907. "fingertrees.sls"
  908. "hamts.sls"
  909. "heaps.sls"
  910. "private"
  911. "psqs.sls"
  912. "queues"
  913. "queues.sls"
  914. "sequences.sls"
  915. "sets.sls")))))))
  916. (native-inputs
  917. `(("guile" ,guile-3.0)))
  918. (synopsis "Purely functional data structures for Guile")
  919. (description
  920. "This package provides purely functional data structures written in R6RS
  921. Scheme and compiled for Guile. It has been tested with Racket, Guile 2,
  922. Vicare Scheme and IronScheme. Right now it contains:
  923. @itemize
  924. @item queues
  925. @item deques
  926. @item bbtrees
  927. @item sets
  928. @item dlists
  929. @item priority search queues (PSQs)
  930. @item finger trees
  931. @item sequences
  932. @item heaps
  933. @item hash array mapped tries (HAMTs).
  934. @end itemize\n")
  935. (license license:bsd-3)))
  936. (define-public guile2.0-pg
  937. (package
  938. (name "guile2.0-pg")
  939. (version "0.49")
  940. (source (origin
  941. (method url-fetch)
  942. (uri (string-append "mirror://savannah/guile-pg/guile-pg-"
  943. version ".tar.xz"))
  944. (sha256
  945. (base32
  946. "1fizcqga96p9n2jjhi9nprhry20hg9wvcl5b8gya4vhzwz6qhysp"))))
  947. (build-system gnu-build-system)
  948. (arguments
  949. '(#:phases
  950. (modify-phases %standard-phases
  951. (add-before 'install 'patch-src/Makefile
  952. (lambda* (#:key outputs #:allow-other-keys)
  953. (substitute* "src/Makefile"
  954. (("\\/share\\/guile\\/site") "/share/guile/site/2.0"))
  955. #t)))))
  956. (native-inputs
  957. `(("procps" ,procps) ; fake-cluster-control uses ps
  958. ("guile" ,guile-2.0)
  959. ("postgresql" ,postgresql)))
  960. (inputs
  961. `(("guile" ,guile-2.0)
  962. ("postgresql" ,postgresql)))
  963. (home-page "https://www.nongnu.org/guile-pg/")
  964. (synopsis "Guile modules for accessing PostgreSQL")
  965. (description
  966. "Guile-PG is a collection of modules for Guile allowing access to the
  967. PostgreSQL RDBMS from Scheme programs.
  968. This has been tested against PostgreSQL 10 through 13, but currently only
  969. works with Guile 1.4.x to 2.0.x.")
  970. (license license:gpl3+)))
  971. (define-public guile-prometheus
  972. (let ((commit "35dc26c0ea44c3d70f1819f240d84e2cbb4b7b4c")
  973. (revision "5"))
  974. (package
  975. (name "guile-prometheus")
  976. (version (git-version "0" revision commit))
  977. (source (origin
  978. (method git-fetch)
  979. (uri (git-reference
  980. (url "https://git.cbaines.net/git/guile/prometheus")
  981. (commit commit)))
  982. (sha256
  983. (base32
  984. "07822jj4appw37lf444kc4xlgl7nm64mgldag56072l55kwashgb"))
  985. (file-name (string-append name "-" version "-checkout"))))
  986. (build-system gnu-build-system)
  987. (native-inputs
  988. `(("pkg-config" ,pkg-config)
  989. ("autoconf" ,autoconf)
  990. ("automake" ,automake)
  991. ("guile" ,guile-3.0)))
  992. (inputs
  993. `(("guile" ,guile-3.0)))
  994. (home-page "https://git.cbaines.net/guile/prometheus")
  995. (synopsis "Prometheus client library for Guile")
  996. (description
  997. "This Guile library provides instrumentation code intended to be used
  998. with the Prometheus time series service. Counter, gauge and histogram metric
  999. types are supported.")
  1000. (license license:gpl3+))))
  1001. (define-public guile2.2-pfds
  1002. (package
  1003. (inherit guile-pfds)
  1004. (name "guile2.2-pfds")
  1005. (native-inputs `(("guile" ,guile-2.2)))
  1006. (arguments
  1007. (substitute-keyword-arguments (package-arguments guile-pfds)
  1008. ((#:phases phases)
  1009. `(modify-phases ,phases
  1010. (delete 'work-around-guile-bug)
  1011. (add-after 'move-files-around 'sls->scm
  1012. (lambda _
  1013. ;; In Guile <= 2.2.4, there's no way to tell 'guild
  1014. ;; compile' to accept the ".sls" extension. So...
  1015. (for-each (lambda (file)
  1016. (rename-file file
  1017. (string-append
  1018. (string-drop-right file 4)
  1019. ".scm")))
  1020. (find-files "." "\\.sls$"))
  1021. #t))))))))
  1022. (define-public guile3.0-pfds
  1023. (deprecated-package "guile3.0-pfds" guile-pfds))
  1024. (define-public guile-aa-tree
  1025. (package
  1026. (name "guile-aa-tree")
  1027. (version "3.1.1")
  1028. (source (origin
  1029. (method url-fetch)
  1030. (uri (string-append "mirror://savannah/guile-aa-tree/guile-aa-tree-"
  1031. version ".tar.gz"))
  1032. (sha256
  1033. (base32
  1034. "0044c105r3q9vpl17pv3phl1b79kjm1llhkakqgiasixyav01blh"))))
  1035. (build-system guile-build-system)
  1036. (native-inputs `(("guile" ,guile-2.2)))
  1037. ;; https://savannah.nongnu.org/projects/guile-aa-tree
  1038. (home-page "https://qlfiles.net/guile-aa-tree/")
  1039. (synopsis "AA tree data structure for Guile")
  1040. (description
  1041. "This package provides an implementation of @dfn{AA trees}, a
  1042. self-balancing binary tree data structure, for Guile. It ensure @math{O(log
  1043. n)} worst case performance for core operations. The module provides
  1044. non-mutating insert, delete, and search operations, with support for
  1045. convenient nested tree operations.")
  1046. (license license:gpl3+)))
  1047. (define-public guile-simple-zmq
  1048. (let ((commit "b2ea97e5a0e7417ce718b27b6fd55a3146364b82")
  1049. (revision "9"))
  1050. (package
  1051. (name "guile-simple-zmq")
  1052. (version (git-version "0.0.0" revision commit))
  1053. (source
  1054. (origin
  1055. (method git-fetch)
  1056. (uri (git-reference
  1057. (url "https://github.com/jerry40/guile-simple-zmq")
  1058. (commit commit)))
  1059. (sha256
  1060. (base32
  1061. "08qvcxx0njz9545xa0lq3wpf55v9cl9nbb640ry1lig11wpymqxb"))
  1062. (file-name (git-file-name name version))))
  1063. (build-system gnu-build-system)
  1064. (arguments
  1065. '(#:make-flags
  1066. '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
  1067. (native-inputs
  1068. `(("guile" ,guile-3.0)))
  1069. (inputs
  1070. `(("autoconf" ,autoconf)
  1071. ("automake" ,automake)
  1072. ("pkg-config" ,pkg-config)
  1073. ("zeromq" ,zeromq)))
  1074. (home-page "https://github.com/jerry40/guile-simple-zmq")
  1075. (synopsis "Guile wrapper over ZeroMQ library")
  1076. (description
  1077. "This package provides a Guile programming interface to the ZeroMQ
  1078. messaging library.")
  1079. (license license:gpl3+))))
  1080. (define-public guile2.2-simple-zmq
  1081. (package
  1082. (inherit guile-simple-zmq)
  1083. (name "guile2.2-simple-zmq")
  1084. (native-inputs `(("guile" ,guile-2.2)))))
  1085. (define-public guile3.0-simple-zmq
  1086. (deprecated-package "guile3.0-simple-zmq" guile-simple-zmq))
  1087. (define-public jupyter-guile-kernel
  1088. (let ((commit "f25fb90b95529b17a006a807bd04e6aee12ea304")
  1089. (revision "2"))
  1090. (package
  1091. (name "jupyter-guile-kernel")
  1092. (version (git-version "0.0.0" revision commit))
  1093. (source
  1094. (origin
  1095. (method git-fetch)
  1096. (uri (git-reference
  1097. (url "https://github.com/jerry40/guile-kernel")
  1098. (commit commit)))
  1099. (file-name (git-file-name name version))
  1100. (sha256
  1101. (base32
  1102. "0zr1fasdb2yv9kn21yll993y9higqss4jnfs030ndhjb93raa9sr"))))
  1103. (build-system guile-build-system)
  1104. (arguments
  1105. '(#:phases (modify-phases %standard-phases
  1106. (add-after 'unpack 'set-openssl-file-name
  1107. (lambda* (#:key inputs #:allow-other-keys)
  1108. ;; Record the absolute file name of the 'openssl'
  1109. ;; command.
  1110. (substitute* "src/hmac.scm"
  1111. (("openssl")
  1112. (search-input-file inputs "/bin/openssl")))))
  1113. ;; XXX: The code uses 'include' to include its own source
  1114. ;; files, and "-L src" isn't enough in this case.
  1115. (add-before 'build 'chdir
  1116. (lambda _ (chdir "src") #t))
  1117. (add-after 'build 'chdir-back
  1118. (lambda _ (chdir "..") #t))
  1119. (add-after 'install 'install-kernel
  1120. (lambda* (#:key inputs outputs #:allow-other-keys)
  1121. (let* ((out (assoc-ref outputs "out"))
  1122. (json (assoc-ref inputs "guile-json"))
  1123. (zmq (assoc-ref inputs "guile-simple-zmq"))
  1124. (deps (list json zmq))
  1125. (dir (string-append
  1126. out "/share/jupyter/kernels/guile"))
  1127. (effective (target-guile-effective-version)))
  1128. ;; Install kernel.
  1129. (install-file "src/kernel.json" dir)
  1130. ;; Fix hard-coded file name in the kernel.
  1131. (substitute* (string-append dir "/kernel.json")
  1132. (("/usr/local/.*/guile-jupyter-kernel.scm")
  1133. (string-append out "/share/guile/site/"
  1134. (target-guile-effective-version)
  1135. "/guile-jupyter-kernel.scm"))
  1136. (("\"guile\"")
  1137. (string-append "\"" (assoc-ref inputs "guile")
  1138. "/bin/guile\""))
  1139. (("-s")
  1140. ;; Add '-L' and '-C' flags so that the kernel
  1141. ;; finds its dependencies.
  1142. (let ((-L (map (lambda (item)
  1143. (string-append "\"" item
  1144. "/share/guile/site/"
  1145. effective "\""))
  1146. deps))
  1147. (-C (map (lambda (item)
  1148. (string-append "\"" item
  1149. "/lib/guile/"
  1150. effective
  1151. "/site-ccache\""))
  1152. deps)))
  1153. (string-append "--no-auto-compile\""
  1154. (string-join -L ", \"-L\", "
  1155. 'prefix)
  1156. (string-join -C ", \"-C\", "
  1157. 'prefix)
  1158. ", \"-s"))))
  1159. #t))))))
  1160. (inputs
  1161. `(("openssl" ,openssl)
  1162. ("guile" ,guile-3.0)
  1163. ("guile-json" ,guile-json-3)
  1164. ("guile-simple-zmq" ,guile-simple-zmq)))
  1165. (synopsis "Guile kernel for the Jupyter Notebook")
  1166. (description
  1167. "This package provides a Guile 2.x kernel for the Jupyter Notebook. It
  1168. allows users to interact with the Guile REPL through Jupyter.")
  1169. (home-page "https://github.com/jerry40/guile-kernel")
  1170. (license license:gpl3+))))
  1171. (define-public guile-sparql
  1172. (package
  1173. (name "guile-sparql")
  1174. (version "0.0.8")
  1175. (source (origin
  1176. (method url-fetch)
  1177. (uri (string-append
  1178. "https://github.com/roelj/guile-sparql/releases/download/"
  1179. version "/guile-sparql-" version ".tar.gz"))
  1180. (sha256
  1181. (base32 "1jf4972f9fpm0rd865xpnc9mzl3xv6vhfnp0iygadydy905z9nln"))))
  1182. (build-system gnu-build-system)
  1183. (native-inputs
  1184. `(("pkg-config" ,pkg-config)))
  1185. (inputs
  1186. `(("guile" ,guile-3.0)))
  1187. (home-page "https://github.com/roelj/guile-sparql")
  1188. (synopsis "SPARQL module for Guile")
  1189. (description "This package provides the functionality to query a SPARQL
  1190. endpoint. Additionally, it provides an interface to write SPARQL queries
  1191. using S-expressions.")
  1192. (license license:gpl3+)))
  1193. (define-public guile-debbugs
  1194. (package
  1195. (name "guile-debbugs")
  1196. (version "0.0.3")
  1197. (source (origin
  1198. (method url-fetch)
  1199. (uri (string-append "mirror://gnu/guile-debbugs/guile-debbugs-"
  1200. version ".tar.gz"))
  1201. (sha256
  1202. (base32
  1203. "1cc63nw3xdfjrfk8c58r6d5lidmfq5cpqcy32yd5xp81yccprvn9"))))
  1204. (build-system gnu-build-system)
  1205. (propagated-inputs
  1206. `(("guile-email" ,guile-email)))
  1207. (native-inputs
  1208. `(("guile" ,guile-3.0)
  1209. ("pkg-config" ,pkg-config)))
  1210. (home-page "https://savannah.gnu.org/projects/guile-debbugs/")
  1211. (synopsis "Guile interface to the Debbugs bug tracking service")
  1212. (description
  1213. "This package provides a Guile library to communicate with a Debbugs bug
  1214. tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
  1215. (license license:gpl3+)))
  1216. (define-public guile-email
  1217. (package
  1218. (name "guile-email")
  1219. (version "0.2.2")
  1220. (source
  1221. (origin
  1222. (method url-fetch)
  1223. (uri (string-append
  1224. "https://guile-email.systemreboot.net/releases/guile-email-"
  1225. version ".tar.lz"))
  1226. (sha256
  1227. (base32
  1228. "1rc8r0fgvflnyq5ckl7ii8sghpsgpkzxa8vskjr1ak2kyar6m35k"))))
  1229. (build-system gnu-build-system)
  1230. (native-inputs
  1231. `(("pkg-config" ,pkg-config)
  1232. ("lzip" ,lzip)))
  1233. (inputs
  1234. `(("guile" ,guile-3.0)))
  1235. (arguments
  1236. '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
  1237. (home-page "https://guile-email.systemreboot.net")
  1238. (synopsis "Guile email parser")
  1239. (description "guile-email is a collection of email utilities implemented
  1240. in pure guile. It supports parsing MIME (Multipurpose Internet Mail
  1241. Extensions) compliant email messages and reading emails from the mbox
  1242. format.")
  1243. (license license:agpl3+)))
  1244. (define-public guile-email-latest
  1245. (let ((commit "ca0520a33c9042a68691d85c6849f88412ca8357")
  1246. (revision "1"))
  1247. (package
  1248. (inherit guile-email)
  1249. (name "guile-email-latest")
  1250. (version (git-version "0.2.2" revision commit))
  1251. (source
  1252. (origin
  1253. (method git-fetch)
  1254. (uri (git-reference
  1255. (url "https://git.systemreboot.net/guile-email")
  1256. (commit commit)))
  1257. (file-name (git-file-name name version))
  1258. (sha256
  1259. (base32
  1260. "1l5mikalawq83786rnb9zky908ncsd5dna9vyz6bx6kc2frrl7xv"))))
  1261. (native-inputs
  1262. `(("pkg-config" ,pkg-config)
  1263. ("autoconf" ,autoconf)
  1264. ("automake" ,automake)
  1265. ("texinfo" ,texinfo))))))
  1266. (define-public guile2.2-email
  1267. (package
  1268. (inherit guile-email)
  1269. (name "guile2.2-email")
  1270. (inputs `(("guile" ,guile-2.2)
  1271. ,@(alist-delete "guile" (package-inputs guile-email))))))
  1272. (define-public guile3.0-email
  1273. (deprecated-package "guile3.0-email" guile-email))
  1274. (define-public guile-newt
  1275. (package
  1276. (name "guile-newt")
  1277. (version "0.0.2")
  1278. (source (origin
  1279. (method git-fetch)
  1280. (uri (git-reference
  1281. (url "https://gitlab.com/mothacehe/guile-newt")
  1282. (commit version)))
  1283. (file-name (git-file-name name version))
  1284. (sha256
  1285. (base32
  1286. "1gksd1lzgjjh1p9vczghg8jw995d22hm34kbsiv8rcryirv2xy09"))))
  1287. (build-system gnu-build-system)
  1288. (arguments
  1289. '(#:make-flags
  1290. '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
  1291. (inputs
  1292. `(("guile" ,guile-3.0)
  1293. ("newt" ,newt)))
  1294. (native-inputs
  1295. `(("autoconf" ,autoconf)
  1296. ("automake" ,automake)
  1297. ("pkg-config" ,pkg-config)))
  1298. (synopsis "Guile bindings to Newt")
  1299. (description
  1300. "This package provides bindings for Newt, a programming library for
  1301. color text mode, widget based user interfaces. The bindings are written in pure
  1302. Scheme by using Guile’s foreign function interface.")
  1303. (home-page "https://gitlab.com/mothacehe/guile-newt")
  1304. (license license:gpl3+)))
  1305. (define-public guile2.2-newt
  1306. (package
  1307. (inherit guile-newt)
  1308. (name "guile2.2-newt")
  1309. (inputs `(("guile" ,guile-2.2)
  1310. ,@(alist-delete "guile" (package-inputs guile-newt))))))
  1311. (define-public guile3.0-newt
  1312. (deprecated-package "guile3.0-newt" guile-newt))
  1313. (define-public guile-mastodon
  1314. (let ((commit "74b75bcf547df92acee1e0466ecd7ec07f775392")
  1315. (revision "1"))
  1316. (package
  1317. (name "guile-mastodon")
  1318. (version (git-version "0.0.1" revision commit))
  1319. (source (origin
  1320. (method git-fetch)
  1321. (uri (git-reference
  1322. (url "https://framagit.org/prouby/guile-mastodon.git")
  1323. (commit commit)))
  1324. (file-name (string-append name "-" version "-checkout"))
  1325. (sha256
  1326. (base32
  1327. "1wx5h6wa9c0na8mrnr2nv1nzjvq68zyrly8yyp11dsskhaw4y33h"))))
  1328. (build-system gnu-build-system)
  1329. (native-inputs
  1330. `(("autoconf" ,autoconf)
  1331. ("automake" ,automake)
  1332. ("emacs" ,emacs-minimal)
  1333. ("pkg-config" ,pkg-config)
  1334. ("texinfo" ,texinfo)))
  1335. (inputs
  1336. `(("guile" ,guile-3.0)
  1337. ("gnutls" ,gnutls)
  1338. ("guile-json" ,guile-json-4)))
  1339. (home-page "https://framagit.org/prouby/guile-mastodon")
  1340. (synopsis "Guile Mastodon REST API module")
  1341. (description "This package provides Guile modules to access the
  1342. @uref{https://docs.joinmastodon.org/api/, REST API of Mastodon}, a federated
  1343. microblogging service.")
  1344. (license license:gpl3+))))
  1345. (define-public guile-parted
  1346. (package
  1347. (name "guile-parted")
  1348. (version "0.0.5")
  1349. (source (origin
  1350. (method git-fetch)
  1351. (uri (git-reference
  1352. (url "https://gitlab.com/mothacehe/guile-parted")
  1353. (commit version)))
  1354. (file-name (git-file-name name version))
  1355. (sha256
  1356. (base32
  1357. "1ar6n38br3h1jm54yy6d54rpqdgsy7pmnj3nqdzqrfk8z0kx0rm9"))
  1358. (modules '((guix build utils)))))
  1359. (build-system gnu-build-system)
  1360. (arguments
  1361. '(#:make-flags
  1362. '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
  1363. (inputs
  1364. `(("guile" ,guile-3.0)
  1365. ("parted" ,parted)))
  1366. (propagated-inputs
  1367. `(("guile-bytestructures" ,guile-bytestructures)))
  1368. (native-inputs
  1369. `(("autoconf" ,autoconf)
  1370. ("automake" ,automake)
  1371. ("pkg-config" ,pkg-config)))
  1372. (synopsis "Guile bindings to GNU Parted")
  1373. (description
  1374. "This package provides bindings for GNU Parted library, a C library
  1375. allowing disk partition tables creation and manipulation. The bindings are
  1376. written in pure Scheme by using Guile's foreign function interface.")
  1377. (home-page "https://gitlab.com/mothacehe/guile-parted")
  1378. (license license:gpl3+)))
  1379. (define-public guile2.2-parted
  1380. (package
  1381. (inherit guile-parted)
  1382. (name "guile2.2-parted")
  1383. (inputs `(("guile" ,guile-2.2)
  1384. ,@(alist-delete "guile" (package-inputs guile-parted))))
  1385. (propagated-inputs
  1386. `(("guile-bytestructures" ,guile2.2-bytestructures)))))
  1387. (define-public guile3.0-parted
  1388. (deprecated-package "guile3.0-parted" guile-parted))
  1389. (define-public guile-xosd
  1390. (package
  1391. (name "guile-xosd")
  1392. (version "0.2.1")
  1393. (source (origin
  1394. (method url-fetch)
  1395. (uri (string-append "https://github.com/alezost/" name
  1396. "/releases/download/v" version
  1397. "/" name "-" version ".tar.gz"))
  1398. (sha256
  1399. (base32
  1400. "1ri5065c16kmgrf2pysn2ymxjqi5302lhpb07wkl1jr75ym8fn8p"))))
  1401. (build-system gnu-build-system)
  1402. (native-inputs
  1403. `(("pkg-config" ,pkg-config)))
  1404. (inputs
  1405. `(("guile" ,guile-2.2)
  1406. ("libx11" ,libx11)
  1407. ("libxext" ,libxext)
  1408. ("libxinerama" ,libxinerama)
  1409. ("xosd" ,xosd)))
  1410. (home-page "https://github.com/alezost/guile-xosd")
  1411. (synopsis "XOSD bindings for Guile")
  1412. (description
  1413. "Guile-XOSD provides Guile bindings for @code{libxosd},
  1414. @uref{http://sourceforge.net/projects/libxosd/, the X On Screen Display
  1415. library}.")
  1416. (license license:gpl3+)))
  1417. (define-public guile-dbi
  1418. (package
  1419. (name "guile-dbi")
  1420. (version "2.1.6")
  1421. (source (origin
  1422. (method git-fetch)
  1423. (uri (git-reference
  1424. (url "https://example.org") ;only hosted on Software Heritage
  1425. (commit "e19b019e9683faf66c3f385b20fcc112e65f8c6e")))
  1426. (file-name (git-file-name name version))
  1427. (sha256
  1428. (base32
  1429. "09ys5hj7gnj5w1iv1m194j06jk6b8sdhc8j6hcv3bprq1428kyxw"))))
  1430. (build-system gnu-build-system)
  1431. (arguments
  1432. '(#:configure-flags
  1433. (list (string-append
  1434. "--with-guile-site-dir=" %output "/share/guile/site/2.2"))
  1435. #:make-flags
  1436. (list (string-append
  1437. "LDFLAGS=-Wl,-rpath=" %output "/lib:"
  1438. (assoc-ref %build-inputs "guile-dbd-sqlite3") "/lib" ":"
  1439. (assoc-ref %build-inputs "guile-dbd-postgresql") "/lib"))
  1440. #:phases
  1441. (modify-phases %standard-phases
  1442. (add-after 'install 'patch-extension-path
  1443. (lambda* (#:key outputs #:allow-other-keys)
  1444. (let* ((out (assoc-ref outputs "out"))
  1445. (dbi.scm (string-append
  1446. out "/share/guile/site/2.2/dbi/dbi.scm"))
  1447. (ext (string-append out "/lib/libguile-dbi")))
  1448. (substitute* dbi.scm (("libguile-dbi") ext))
  1449. #t))))))
  1450. (inputs
  1451. `(("guile-dbd-sqlite3" ,guile-dbd-sqlite3)
  1452. ("guile-dbd-postgresql" ,guile-dbd-postgresql))) ; only shared library, no scheme files
  1453. (propagated-inputs
  1454. `(("guile" ,guile-2.2)))
  1455. (synopsis "Guile database abstraction layer")
  1456. (home-page "https://web.archive.org/web/20160328232717/http://home.gna.org/guile-dbi/guile-dbi.html")
  1457. (description
  1458. "guile-dbi is a library for Guile that provides a convenient interface to
  1459. SQL databases. Database programming with guile-dbi is generic in that the same
  1460. programming interface is presented regardless of which database system is used.
  1461. It currently supports MySQL, Postgres and SQLite3.")
  1462. (license license:gpl2+)))
  1463. (define guile-dbi-bootstrap
  1464. (package
  1465. (inherit guile-dbi)
  1466. (name "guile-dbi-bootstrap")
  1467. (inputs '())
  1468. (arguments
  1469. (substitute-keyword-arguments (package-arguments guile-dbi)
  1470. ((#:make-flags _) '(list))))))
  1471. (define-public guile-dbd-sqlite3
  1472. (package
  1473. (name "guile-dbd-sqlite3")
  1474. (version "2.1.6")
  1475. (source (origin
  1476. (method git-fetch)
  1477. (uri (git-reference
  1478. (url "https://example.org") ;only hosted on Software Heritage
  1479. (commit "0758c615e9e85ad76d153d5dc6179881f1f50089")))
  1480. (file-name (git-file-name name version))
  1481. (sha256
  1482. (base32
  1483. "1rwf3z6ib6nkhfnk2nw8p6fqirdx2pparcrlmsm0i2ii62plpqhb"))))
  1484. (build-system gnu-build-system)
  1485. (native-inputs
  1486. `(("pkg-config" ,pkg-config)
  1487. ("guile-dbi-bootstrap" ,guile-dbi-bootstrap))) ; only required for headers
  1488. (inputs
  1489. `(("sqlite" ,sqlite)
  1490. ("zlib" ,(@ (gnu packages compression) zlib))))
  1491. (synopsis "Guile DBI driver for SQLite")
  1492. ;; Unofficial home-page.
  1493. ;; Added by b9cbfa52f71505de8447fefabd97f16d0a9cbde6 (2016-06)
  1494. (home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3")
  1495. (description
  1496. "guile-dbi is a library for Guile that provides a convenient interface to
  1497. SQL databases. This package implements the interface for SQLite.")
  1498. (license license:gpl2+)))
  1499. (define-public guile-dbd-postgresql
  1500. (let ((commit "e97589b6b018b206c901e4cc24db463407a4036b")
  1501. (revision 0))
  1502. (package
  1503. (name "guile-dbd-postgresql")
  1504. (version (string-append
  1505. "2.1.6-" (number->string revision) "." (string-take commit 7)))
  1506. (source
  1507. (origin
  1508. (method git-fetch)
  1509. (uri (git-reference
  1510. (url "https://github.com/opencog/guile-dbi")
  1511. (commit commit)))
  1512. (file-name (git-file-name name version))
  1513. (sha256
  1514. (base32 "0n1gv9a0kdys10a4qmnrwvg5sydwb03880asri4gqdchcj3fimni"))))
  1515. (build-system gnu-build-system)
  1516. (arguments
  1517. '(#:phases
  1518. (modify-phases %standard-phases
  1519. (add-after 'unpack 'chdir
  1520. (lambda _
  1521. ;; The upstream Git repository contains all the code, so change
  1522. ;; to the relevant directory.
  1523. (chdir "guile-dbd-postgresql")
  1524. #t))
  1525. (add-after 'chdir 'patch-src/Makefile.am
  1526. (lambda* (#:key inputs #:allow-other-keys)
  1527. (substitute* "src/Makefile.am"
  1528. (("/usr/include")
  1529. (string-append (assoc-ref inputs "postgresql") "/include")))
  1530. #t))
  1531. (add-after 'patch-src/Makefile.am 'patch-src
  1532. (lambda _
  1533. (substitute* "src/guile-dbd-postgresql.c"
  1534. (("postgresql/libpq-fe\\.h") "libpq-fe.h"))
  1535. #t)))))
  1536. (native-inputs
  1537. `(("pkg-config" ,pkg-config)
  1538. ("automake" ,automake)
  1539. ("autoconf" ,autoconf)
  1540. ("perl" ,perl)
  1541. ("libtool" ,libtool)
  1542. ("guile-dbi-bootstrap" ,guile-dbi-bootstrap)))
  1543. (inputs
  1544. `(("postgresql" ,postgresql)
  1545. ("zlib" ,zlib)))
  1546. (synopsis "Guile DBI driver for PostgreSQL")
  1547. (home-page
  1548. "https://github.com/opencog/guile-dbi/tree/master/guile-dbd-postgresql")
  1549. (description
  1550. "@code{guile-dbi} is a library for Guile that provides a convenient
  1551. interface to SQL databases. This package implements the interface for
  1552. PostgreSQL.")
  1553. (license license:gpl2+))))
  1554. (define-public guile-config
  1555. (package
  1556. (name "guile-config")
  1557. (version "0.4.2")
  1558. (source
  1559. (origin
  1560. (method git-fetch)
  1561. (uri (git-reference
  1562. (url "https://gitlab.com/a-sassmannshausen/guile-config")
  1563. (commit version)))
  1564. (file-name (git-file-name name version))
  1565. (sha256 (base32
  1566. "09028ylbddjdp3d67zdjz3pnsjqz6zs2bfck5rr3dfaa0qjap40n"))))
  1567. (build-system gnu-build-system)
  1568. (native-inputs
  1569. `(("autoconf" ,autoconf)
  1570. ("automake" ,automake)
  1571. ("pkg-config" ,pkg-config)
  1572. ("texinfo" ,texinfo)))
  1573. (inputs `(("guile" ,guile-3.0)))
  1574. (synopsis
  1575. "Guile application configuration parsing library.")
  1576. (description
  1577. "Guile Config is a library providing a declarative approach to
  1578. application configuration specification. The library provides clean
  1579. configuration declaration forms, and processors that take care of:
  1580. configuration file creation; configuration file parsing; command-line
  1581. parameter parsing using getopt-long; basic GNU command-line parameter
  1582. generation (--help, --usage, --version); automatic output generation for the
  1583. above command-line parameters.")
  1584. (home-page
  1585. "https://gitlab.com/a-sassmannshausen/guile-config")
  1586. (license license:gpl3+)))
  1587. (define-public guile2.2-config
  1588. (package
  1589. (inherit guile-config)
  1590. (name "guile2.2-config")
  1591. (inputs `(("guile" ,guile-2.2)
  1592. ,@(alist-delete "guile" (package-inputs guile-config))))))
  1593. (define-public guile3.0-config
  1594. (deprecated-package "guile3.0-config" guile-config))
  1595. (define-public guile-hall
  1596. (package
  1597. (name "guile-hall")
  1598. (version "0.3.1")
  1599. (source
  1600. (origin
  1601. (method git-fetch)
  1602. (uri (git-reference
  1603. (url "https://gitlab.com/a-sassmannshausen/guile-hall")
  1604. (commit version)))
  1605. (file-name "guile-hall-0.3.1-checkout")
  1606. (sha256
  1607. (base32 "1s24nigdra6rvclvy15l2aw00c3aq9vv8qwxylzs60darbl36206"))))
  1608. (build-system gnu-build-system)
  1609. (arguments
  1610. `(#:modules
  1611. ((ice-9 match)
  1612. (ice-9 ftw)
  1613. ,@%gnu-build-system-modules)
  1614. #:phases
  1615. (modify-phases
  1616. %standard-phases
  1617. (add-after 'install 'hall-wrap-binaries
  1618. (lambda* (#:key inputs outputs #:allow-other-keys)
  1619. (let* ((compiled-dir
  1620. (lambda (out version)
  1621. (string-append
  1622. out "/lib/guile/" version "/site-ccache")))
  1623. (uncompiled-dir
  1624. (lambda (out version)
  1625. (string-append
  1626. out "/share/guile/site"
  1627. (if (string-null? version) "" "/") version)))
  1628. (dep-path
  1629. (lambda (env modules path)
  1630. (list env ":" 'prefix
  1631. (cons modules
  1632. (map (lambda (input)
  1633. (string-append
  1634. (assoc-ref inputs input)
  1635. path))
  1636. ,''("guile-config"))))))
  1637. (out (assoc-ref outputs "out"))
  1638. (bin (string-append out "/bin/"))
  1639. (site (uncompiled-dir out "")))
  1640. (match (scandir site)
  1641. (("." ".." version)
  1642. (for-each
  1643. (lambda (file)
  1644. (wrap-program
  1645. (string-append bin file)
  1646. (dep-path
  1647. "GUILE_LOAD_PATH"
  1648. (uncompiled-dir out version)
  1649. (uncompiled-dir "" version))
  1650. (dep-path
  1651. "GUILE_LOAD_COMPILED_PATH"
  1652. (compiled-dir out version)
  1653. (compiled-dir "" version))))
  1654. ,''("hall"))
  1655. #t))))))))
  1656. (native-inputs
  1657. `(("autoconf" ,autoconf)
  1658. ("automake" ,automake)
  1659. ("pkg-config" ,pkg-config)
  1660. ("texinfo" ,texinfo)))
  1661. (inputs `(("guile" ,guile-3.0)))
  1662. (propagated-inputs
  1663. `(("guile-config" ,guile-config)))
  1664. (synopsis "Guile project tooling")
  1665. (description
  1666. "Hall is a command-line application and a set of Guile libraries that
  1667. allow you to quickly create and publish Guile projects. It allows you to
  1668. transparently support the GNU build system, manage a project hierarchy &
  1669. provides tight coupling to Guix.")
  1670. (home-page "https://gitlab.com/a-sassmannshausen/guile-hall")
  1671. (license license:gpl3+)))
  1672. (define-public guile2.2-hall
  1673. (package
  1674. (inherit guile-hall)
  1675. (name "guile2.2-hall")
  1676. (inputs `(("guile" ,guile-2.2)
  1677. ,@(alist-delete "guile" (package-inputs guile-hall))))
  1678. (propagated-inputs
  1679. `(("guile-config" ,guile2.2-config)
  1680. ,@(alist-delete "guile-config"
  1681. (package-propagated-inputs guile-hall))))))
  1682. (define-public guile3.0-hall
  1683. (deprecated-package "guile3.0-hall" guile-hall))
  1684. (define-public guile-ics
  1685. (package
  1686. (name "guile-ics")
  1687. (version "0.2.0")
  1688. (source (origin
  1689. (method git-fetch)
  1690. (uri (git-reference
  1691. (url "https://github.com/artyom-poptsov/guile-ics")
  1692. (commit (string-append "v" version))))
  1693. (file-name (string-append name "-" version "-checkout"))
  1694. (sha256
  1695. (base32
  1696. "0qjjvadr7gibdq9jvwkmlkb4afsw9n2shfj9phpiadinxk3p4m2g"))
  1697. (modules '((guix build utils)))
  1698. (snippet
  1699. '(begin
  1700. ;; Allow builds with Guile 3.0.
  1701. (substitute* "configure.ac"
  1702. (("^GUILE_PKG.*")
  1703. "GUILE_PKG([3.0 2.2 2.0])\n"))
  1704. #t))))
  1705. (build-system gnu-build-system)
  1706. (native-inputs
  1707. `(("autoconf" ,autoconf)
  1708. ("automake" ,automake)
  1709. ("texinfo" ,texinfo)
  1710. ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
  1711. ("gettext" ,gettext-minimal)
  1712. ("pkg-config" ,pkg-config)))
  1713. (inputs `(("guile" ,guile-3.0) ("which" ,which)))
  1714. (propagated-inputs `(("guile-lib" ,guile-lib)))
  1715. (home-page "https://github.com/artyom-poptsov/guile-ics")
  1716. (synopsis "Guile parser library for the iCalendar format")
  1717. (description
  1718. "Guile-ICS is an iCalendar (RFC5545) format parser library written in
  1719. pure Scheme. The library can be used to read and write iCalendar data.
  1720. The library is shipped with documentation in Info format and usage examples.")
  1721. (license license:gpl3+)))
  1722. (define-public guile2.2-ics
  1723. (package
  1724. (inherit guile-ics)
  1725. (name "guile2.2-ics")
  1726. (inputs `(("guile" ,guile-2.2)
  1727. ,@(alist-delete "guile" (package-inputs guile-ics))))
  1728. (propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
  1729. (define-public guile3.0-ics
  1730. (deprecated-package "guile3.0-ics" guile-ics))
  1731. (define-public guile-imanifest
  1732. (let ((commit "ccd5a2111b008d778106f5595a3a585954d95d0")
  1733. (revision "0"))
  1734. (package
  1735. (name "guile-imanifest")
  1736. (version (git-version "0.0.0" revision commit))
  1737. (source (origin
  1738. (method git-fetch)
  1739. (uri (git-reference
  1740. (url "https://git.sr.ht/~brown121407/guile-imanifest")
  1741. (commit commit)))
  1742. (file-name (git-file-name name version))
  1743. (sha256
  1744. (base32
  1745. "0i5qllcrhdjhspyj7j9h4dc9y37d3cfbpackmybm3030qgfxqirf"))))
  1746. (build-system guile-build-system)
  1747. (native-inputs
  1748. `(("guile" ,guile-3.0)))
  1749. (propagated-inputs
  1750. `(("guile-readline" ,guile-readline)
  1751. ("guile-colorized" ,guile-colorized)
  1752. ("guix" ,guix)))
  1753. (home-page "https://sr.ht/~brown121407/guile-imanifest")
  1754. (synopsis "Interactive Guix manifests")
  1755. (description "This package provides functions to generate Guix manifests
  1756. interactively. It works by scanning an alist of package categories, to ask the
  1757. user which package sets would they like to install from it.")
  1758. (license license:gpl3+))))
  1759. (define-public guile-wisp
  1760. (package
  1761. (name "guile-wisp")
  1762. (version "1.0.5")
  1763. (source (origin
  1764. (method hg-fetch)
  1765. (uri (hg-reference
  1766. (url "https://hg.sr.ht/~arnebab/wisp")
  1767. (changeset (string-append "v" version))))
  1768. (file-name (git-file-name name version))
  1769. (sha256
  1770. (base32
  1771. "00iknn03gf421gg3061g35fbraqrkcqypkrfn10rhlgg6j0lgk67"))))
  1772. (build-system gnu-build-system)
  1773. (arguments
  1774. `(#:modules ((guix build gnu-build-system)
  1775. ((guix build emacs-build-system) #:prefix emacs:)
  1776. (guix build utils)
  1777. (guix build emacs-utils)
  1778. (ice-9 rdelim)
  1779. (ice-9 popen))
  1780. #:imported-modules (,@%gnu-build-system-modules
  1781. (guix build emacs-build-system)
  1782. (guix build emacs-utils))
  1783. #:phases
  1784. (modify-phases %standard-phases
  1785. (replace 'bootstrap
  1786. (lambda _
  1787. (invoke "autoreconf" "-vif")
  1788. #t))
  1789. (add-before 'configure 'patch-/usr/bin/env
  1790. (lambda _
  1791. (substitute* "Makefile.in"
  1792. (("/usr/bin/env bash") (which "bash")))
  1793. #t))
  1794. ;; auto compilation breaks, but if we set HOME to /tmp,
  1795. ;; that works ok
  1796. (add-before 'check 'auto-compile-hacky-workaround
  1797. (lambda _ (setenv "HOME" "/tmp") #t))
  1798. (add-after 'install 'install-go-files
  1799. (lambda* (#:key outputs inputs #:allow-other-keys)
  1800. (let* ((out (assoc-ref outputs "out"))
  1801. (effective (read-line
  1802. (open-pipe* OPEN_READ
  1803. "guile" "-c"
  1804. "(display (effective-version))")))
  1805. (module-dir (string-append out "/share/guile/site/"
  1806. effective))
  1807. (object-dir (string-append out "/lib/guile/" effective
  1808. "/site-ccache"))
  1809. (prefix (string-length module-dir)))
  1810. ;; compile to the destination
  1811. (for-each (lambda (file)
  1812. (let* ((base (string-drop (string-drop-right file 4)
  1813. prefix))
  1814. (go (string-append object-dir base ".go")))
  1815. (invoke "guild" "compile" "-L" module-dir
  1816. file "-o" go)))
  1817. (find-files module-dir "\\.scm$"))
  1818. #t)))
  1819. (add-after 'install 'install-emacs-files
  1820. (assoc-ref emacs:%standard-phases 'install))
  1821. (add-after 'install-emacs-files 'compile-emacs-files
  1822. (assoc-ref emacs:%standard-phases 'build))
  1823. (add-after 'compile-emacs-files 'make-autoloads
  1824. (assoc-ref emacs:%standard-phases 'make-autoloads)))))
  1825. (home-page "https://www.draketo.de/english/wisp")
  1826. (inputs
  1827. `(("guile" ,guile-3.0)))
  1828. (native-inputs
  1829. `(("autoconf" ,autoconf)
  1830. ("automake" ,automake)
  1831. ("emacs" ,emacs-minimal)
  1832. ("python" ,python)
  1833. ("pkg-config" ,pkg-config)))
  1834. (synopsis "Whitespace to lisp syntax for Guile")
  1835. (description "Wisp is a syntax for Guile which provides a Python-like
  1836. whitespace-significant language. It may be easier on the eyes for some
  1837. users and in some situations.")
  1838. (license (list license:gpl3+ ; the project as a whole
  1839. license:expat)))) ; the language spec (see also SRFI 119)
  1840. (define-public guile2.2-wisp
  1841. (package
  1842. (inherit guile-wisp)
  1843. (name "guile2.2-wisp")
  1844. (inputs `(("guile" ,guile-2.2)))))
  1845. (define-public guile3.0-wisp
  1846. (deprecated-package "guile3.0-wisp" guile-wisp))
  1847. (define-public guile-udev
  1848. (package
  1849. (name "guile-udev")
  1850. (version "0.1.0")
  1851. (source (origin
  1852. (method git-fetch)
  1853. (uri (git-reference
  1854. (url "https://github.com/artyom-poptsov/guile-udev")
  1855. (commit (string-append "v" version))))
  1856. (file-name (git-file-name name version))
  1857. (sha256
  1858. (base32
  1859. "1l6csncjqnx58c6c3wdl7rshnhk4pzhjq2q8lnkg483564s9w5py"))))
  1860. (build-system gnu-build-system)
  1861. (native-inputs
  1862. `(("autoconf" ,autoconf)
  1863. ("automake" ,automake)
  1864. ("gettext" ,gettext-minimal)
  1865. ("libtool" ,libtool)
  1866. ("texinfo" ,texinfo)
  1867. ("pkg-config" ,pkg-config)
  1868. ("which" ,which)))
  1869. (inputs
  1870. `(("guile" ,guile-3.0)
  1871. ("eudev" ,eudev)))
  1872. (home-page "https://github.com/artyom-poptsov/guile-udev")
  1873. (synopsis "Guile bindings to libudev")
  1874. (description
  1875. "Guile-Udev provides GNU Guile bindings to libudev.")
  1876. (license license:gpl3+)))
  1877. (define-public guile-sly
  1878. (package
  1879. (name "guile-sly")
  1880. (version "0.1")
  1881. (source (origin
  1882. (method url-fetch)
  1883. (uri (string-append "https://files.dthompson.us/sly/sly-"
  1884. version ".tar.gz"))
  1885. (sha256
  1886. (base32
  1887. "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq"))
  1888. (modules '((guix build utils)))
  1889. (snippet
  1890. '(begin
  1891. (substitute* "configure"
  1892. (("_guile_required_version=\"2.0.11\"")
  1893. "_guile_required_version=\"2\"")
  1894. (("ac_subst_vars='")
  1895. "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
  1896. (substitute* (find-files "." "Makefile.in")
  1897. (("moddir = .*$")
  1898. (string-append
  1899. "moddir = "
  1900. "$(prefix)/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n"))
  1901. (("godir = .*$")
  1902. (string-append
  1903. "godir = "
  1904. "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))
  1905. #t))))
  1906. (build-system gnu-build-system)
  1907. (arguments
  1908. '(#:configure-flags
  1909. (list (string-append "--with-libfreeimage-prefix="
  1910. (assoc-ref %build-inputs "freeimage"))
  1911. (string-append "--with-libgslcblas-prefix="
  1912. (assoc-ref %build-inputs "gsl")))))
  1913. (native-inputs
  1914. `(("pkg-config" ,pkg-config)))
  1915. (propagated-inputs
  1916. `(("guile-sdl" ,guile-sdl)
  1917. ("guile-opengl" ,guile-opengl)))
  1918. (inputs
  1919. `(("guile" ,guile-2.2)
  1920. ("gsl" ,gsl)
  1921. ("freeimage" ,freeimage)
  1922. ("mesa" ,mesa)))
  1923. (synopsis "2D/3D game engine for GNU Guile")
  1924. (description "Sly is a 2D/3D game engine written in Guile Scheme. Sly
  1925. features a functional reactive programming interface and live coding
  1926. capabilities.")
  1927. (home-page "https://dthompson.us/projects/sly.html")
  1928. (license license:gpl3+)))
  1929. (define-public g-golf
  1930. (let ((commit "ef830107b9765bd6a2da848d0cbe45e11374c0b5")
  1931. (revision "839"))
  1932. (package
  1933. (name "g-golf")
  1934. (version (git-version "0.1.0" revision commit))
  1935. (source
  1936. (origin
  1937. (method git-fetch)
  1938. (uri (git-reference
  1939. (url "https://git.savannah.gnu.org/git/g-golf.git")
  1940. (commit commit)))
  1941. (file-name (git-file-name name version))
  1942. (sha256
  1943. (base32 "0r472hvmf447kqvkahp1wy4irb5gy8y793hm8r9rc511smdx66cw"))))
  1944. (build-system gnu-build-system)
  1945. (native-inputs
  1946. `(("autoconf" ,autoconf)
  1947. ("automake" ,automake)
  1948. ("texinfo" ,texinfo)
  1949. ("gettext" ,gettext-minimal)
  1950. ("libtool" ,libtool)
  1951. ("pkg-config" ,pkg-config)
  1952. ("xorg-server" ,xorg-server)))
  1953. (inputs
  1954. `(("guile" ,guile-2.2)
  1955. ("guile-lib" ,guile2.2-lib)
  1956. ("clutter" ,clutter)
  1957. ("gtk" ,gtk+)
  1958. ("glib" ,glib)))
  1959. (propagated-inputs
  1960. `(("gobject-introspection" ,gobject-introspection)))
  1961. (arguments
  1962. `(#:phases
  1963. (modify-phases %standard-phases
  1964. (add-before 'configure 'tests-work-arounds
  1965. (lambda* (#:key inputs #:allow-other-keys)
  1966. ;; In build environment, There is no /dev/tty
  1967. (substitute*
  1968. "test-suite/tests/gobject.scm"
  1969. (("/dev/tty") "/dev/null"))))
  1970. (add-before 'configure 'substitute-libs
  1971. (lambda* (#:key inputs outputs #:allow-other-keys)
  1972. (let* ((get (lambda (key lib)
  1973. (string-append (assoc-ref inputs key) "/lib/" lib)))
  1974. (libgi (get "gobject-introspection" "libgirepository-1.0"))
  1975. (libglib (get "glib" "libglib-2.0"))
  1976. (libgobject (get "glib" "libgobject-2.0"))
  1977. (libgdk (get "gtk" "libgdk-3")))
  1978. (substitute* "configure"
  1979. (("SITEDIR=\"\\$datadir/g-golf\"")
  1980. "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"")
  1981. (("SITECCACHEDIR=\"\\$libdir/g-golf/")
  1982. "SITECCACHEDIR=\"$libdir/"))
  1983. (substitute* "g-golf/init.scm"
  1984. (("libgirepository-1.0") libgi)
  1985. (("libglib-2.0") libglib)
  1986. (("libgdk-3") libgdk)
  1987. (("libgobject-2.0") libgobject)
  1988. (("\\(dynamic-link \"libg-golf\"\\)")
  1989. (format #f "~s"
  1990. `(dynamic-link
  1991. (format #f "~alibg-golf"
  1992. (if (getenv "GUILE_GGOLF_UNINSTALLED")
  1993. ""
  1994. ,(format #f "~a/lib/"
  1995. (assoc-ref outputs "out"))))))))
  1996. (setenv "GUILE_AUTO_COMPILE" "0")
  1997. (setenv "GUILE_GGOLF_UNINSTALLED" "1")
  1998. #t)))
  1999. (add-before 'check 'start-xorg-server
  2000. (lambda* (#:key inputs #:allow-other-keys)
  2001. ;; The test suite requires a running X server.
  2002. (system (format #f "~a/bin/Xvfb :1 &"
  2003. (assoc-ref inputs "xorg-server")))
  2004. (setenv "DISPLAY" ":1")
  2005. #t)))))
  2006. (home-page "https://www.gnu.org/software/g-golf/")
  2007. (synopsis "Guile bindings for GObject Introspection")
  2008. (description
  2009. "G-Golf (Gnome: (Guile Object Library for)) is a library for developing
  2010. modern applications in Guile Scheme. It comprises a direct binding to the
  2011. GObject Introspection API and higher-level functionality for importing Gnome
  2012. libraries and making GObject classes (and methods) available in Guile's
  2013. object-oriented programming system, GOOPS.")
  2014. (license license:lgpl3+))))
  2015. (define-public g-wrap
  2016. (package
  2017. (name "g-wrap")
  2018. (version "1.9.15")
  2019. (source (origin
  2020. (method url-fetch)
  2021. (uri (string-append "mirror://savannah/g-wrap/g-wrap-"
  2022. version ".tar.gz"))
  2023. (sha256
  2024. (base32
  2025. "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg"))))
  2026. (build-system gnu-build-system)
  2027. (native-inputs
  2028. `(("pkg-config" ,pkg-config)))
  2029. (propagated-inputs
  2030. `(("guile" ,guile-2.2)
  2031. ("guile-lib" ,guile-lib)))
  2032. (inputs
  2033. `(("libffi" ,libffi)))
  2034. (arguments
  2035. `(#:configure-flags '("--disable-Werror")
  2036. #:phases
  2037. (modify-phases %standard-phases
  2038. (add-before 'configure 'pre-configure
  2039. (lambda* (#:key outputs #:allow-other-keys)
  2040. (let ((out (assoc-ref outputs "out")))
  2041. (substitute* (find-files "." "^Makefile.in$")
  2042. (("guilemoduledir =.*guile/site" all)
  2043. (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
  2044. #t))))))
  2045. (synopsis "Generate C bindings for Guile")
  2046. (description "G-Wrap is a tool and Guile library for generating function
  2047. wrappers for inter-language calls. It currently only supports generating Guile
  2048. wrappers for C functions. Given a definition of the types and prototypes for
  2049. a given C interface, G-Wrap will automatically generate the C code that
  2050. provides access to that interface and its types from the Scheme level.")
  2051. (home-page "https://www.nongnu.org/g-wrap/index.html")
  2052. (license license:lgpl2.1+)))
  2053. (define-public guile-miniadapton
  2054. (let ((commit "1b5749422304567c96ac5367f2221dda9eff5880")
  2055. (revision "1"))
  2056. (package
  2057. (name "guile-miniadapton")
  2058. (version (string-append "0-" revision "." (string-take commit 9)))
  2059. (source (origin
  2060. (method git-fetch)
  2061. (uri (git-reference
  2062. (url "https://github.com/fisherdj/miniAdapton")
  2063. (commit commit)))
  2064. (file-name (string-append name "-" version "-checkout"))
  2065. (sha256
  2066. (base32
  2067. "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh"))))
  2068. (build-system guile-build-system)
  2069. (native-inputs
  2070. `(("guile" ,guile-2.2)))
  2071. (home-page "https://github.com/fisherdj/miniAdapton")
  2072. (synopsis "Minimal implementation of incremental computation in Guile
  2073. Scheme")
  2074. (description "This package provides a complete Scheme implementation of
  2075. miniAdapton, which implements the core functionality of the Adapton system for
  2076. incremental computation (also known as self-adjusting computation). Like
  2077. Adapton, miniAdapton allows programmers to safely combine mutation and
  2078. memoization. miniAdapton is built on top of an even simpler system,
  2079. microAdapton. Both miniAdapton and microAdapton are designed to be easy to
  2080. understand, extend, and port to host languages other than Scheme.")
  2081. (license license:expat))))
  2082. (define-public guile-raw-strings
  2083. (let ((commit "aa1cf783f2542811b473f797e12490920b779baa")
  2084. (revision "0"))
  2085. (package
  2086. (name "guile-raw-strings")
  2087. (version (git-version "0.0.0" revision commit))
  2088. (source (origin
  2089. (method git-fetch)
  2090. (uri (git-reference
  2091. (url "https://github.com/lloda/guile-raw-strings")
  2092. (commit commit)))
  2093. (file-name (git-file-name name version))
  2094. (sha256
  2095. (base32
  2096. "1r2gx86zw5hb6byllra3nap3fw9p7q7rvdmg6qn9myrdxyjpns3l"))))
  2097. (build-system guile-build-system)
  2098. (arguments
  2099. `(#:phases
  2100. (modify-phases %standard-phases
  2101. (add-after 'build 'check
  2102. (lambda* (#:key tests? #:allow-other-keys)
  2103. (when tests?
  2104. (invoke "guile" "-L" "." "-s" "test.scm")))))))
  2105. (native-inputs
  2106. `(("guile" ,guile-3.0)))
  2107. (home-page "https://github.com/lloda/guile-raw-strings")
  2108. (synopsis "Guile reader extension for `raw strings'")
  2109. (description "This package provides A Guile reader extension for `raw
  2110. strings', it lets you write verbatim strings without having to escape double
  2111. quotes. ")
  2112. (license license:public-domain))))
  2113. (define-public guile-reader
  2114. (package
  2115. (name "guile-reader")
  2116. (version "0.6.3")
  2117. (source (origin
  2118. (method url-fetch)
  2119. (uri (string-append "mirror://savannah/guile-reader/guile-reader-"
  2120. version ".tar.gz"))
  2121. (sha256
  2122. (base32
  2123. "1fyjckmygkhq22lq8nqc86yl5zzbqd7a944dnz5c1f6vx92b9hiq"))))
  2124. (build-system gnu-build-system)
  2125. (native-inputs `(("pkgconfig" ,pkg-config)
  2126. ("gperf" ,gperf)))
  2127. (inputs `(("guile" ,guile-3.0)))
  2128. (synopsis "Framework for building readers for GNU Guile")
  2129. (description
  2130. "Guile-Reader is a simple framework for building readers for GNU Guile.
  2131. The idea is to make it easy to build procedures that extend Guile’s read
  2132. procedure. Readers supporting various syntax variants can easily be written,
  2133. possibly by re-using existing “token readers” of a standard Scheme
  2134. readers. For example, it is used to implement Skribilo’s R5RS-derived
  2135. document syntax.
  2136. Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
  2137. hopefully more powerful and flexible (for instance, one may instantiate as
  2138. many readers as needed).")
  2139. (home-page "https://www.nongnu.org/guile-reader/")
  2140. (license license:gpl3+)))
  2141. (define-public guile2.2-reader
  2142. (package
  2143. (inherit guile-reader)
  2144. (name "guile2.2-reader")
  2145. (inputs `(("guile" ,guile-2.2)))))
  2146. (define-public guile-ncurses
  2147. (package
  2148. (name "guile-ncurses")
  2149. (version "3.0")
  2150. (source (origin
  2151. (method url-fetch)
  2152. (uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-"
  2153. version ".tar.gz"))
  2154. (sha256
  2155. (base32
  2156. "038xbffalhymg26lvmzgf7ljilxz2f2zmqg5r5nfzbipfbprwjhf"))))
  2157. (build-system gnu-build-system)
  2158. (inputs `(("ncurses" ,ncurses)
  2159. ("guile" ,guile-3.0)))
  2160. (native-inputs `(("pkg-config" ,pkg-config)))
  2161. (arguments
  2162. `(#:modules ((guix build gnu-build-system)
  2163. ((guix build guile-build-system)
  2164. #:select (target-guile-effective-version))
  2165. (guix build utils))
  2166. #:imported-modules ((guix build guile-build-system)
  2167. ,@%gnu-build-system-modules)
  2168. #:configure-flags (list "--with-ncursesw" ; Unicode support
  2169. "--with-gnu-filesystem-hierarchy")
  2170. #:phases
  2171. (modify-phases %standard-phases
  2172. (add-before 'build 'fix-libguile-ncurses-file-name
  2173. (lambda* (#:key outputs #:allow-other-keys)
  2174. (invoke "make" "install"
  2175. "-C" "src/ncurses"
  2176. "-j" (number->string
  2177. (parallel-job-count)))
  2178. (let* ((out (assoc-ref outputs "out"))
  2179. (dir "src/ncurses")
  2180. (files (find-files dir ".scm")))
  2181. (substitute* files
  2182. (("\"libguile-ncurses\"")
  2183. (format #f "\"~a/lib/guile/~a/libguile-ncurses\""
  2184. out (target-guile-effective-version))))
  2185. #t))))))
  2186. (home-page "https://www.gnu.org/software/guile-ncurses/")
  2187. (synopsis "Guile bindings to ncurses")
  2188. (description
  2189. "guile-ncurses provides Guile language bindings for the ncurses
  2190. library.")
  2191. (license license:lgpl3+)))
  2192. (define-public guile2.2-ncurses
  2193. (package
  2194. (inherit guile-ncurses)
  2195. (name "guile2.2-ncurses")
  2196. (inputs `(("ncurses" ,ncurses)
  2197. ("guile" ,guile-2.2)))))
  2198. (define-public guile3.0-ncurses
  2199. (deprecated-package "guile3.0-ncurses" guile-ncurses))
  2200. (define-public guile-ncurses/gpm
  2201. (package
  2202. (inherit guile-ncurses)
  2203. (name "guile-ncurses-with-gpm")
  2204. (inputs `(("ncurses" ,ncurses/gpm)
  2205. ("guile" ,guile-3.0)))))
  2206. (define-public guile3.0-ncurses/gpm
  2207. (package
  2208. (inherit guile3.0-ncurses)
  2209. (name "guile3.0-ncurses-with-gpm")
  2210. (inputs `(("ncurses" ,ncurses/gpm)
  2211. ("guile" ,guile-3.0)))))
  2212. (define-public guile-lib
  2213. (package
  2214. (name "guile-lib")
  2215. (version "0.2.7")
  2216. (source (origin
  2217. (method url-fetch)
  2218. (uri (string-append "mirror://savannah/guile-lib/guile-lib-"
  2219. version ".tar.gz"))
  2220. (sha256
  2221. (base32
  2222. "1ph4z4a64m75in36pdb4dw63dzdq3hdgh16gq33q460jby23pvz4"))))
  2223. (build-system gnu-build-system)
  2224. (arguments
  2225. '(#:make-flags '("GUILE_AUTO_COMPILE=0") ;placate guild warnings
  2226. #:phases
  2227. (modify-phases %standard-phases
  2228. (add-before 'configure 'patch-module-dir
  2229. (lambda _
  2230. (substitute* "src/Makefile.in"
  2231. (("^moddir = ([[:graph:]]+)")
  2232. "moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n")
  2233. (("^godir = ([[:graph:]]+)")
  2234. "godir = \
  2235. $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))))))
  2236. (native-inputs
  2237. `(("autoconf" ,autoconf)
  2238. ("automake" ,automake)
  2239. ("gettext" ,gettext-minimal)
  2240. ("guile" ,guile-3.0)
  2241. ("pkg-config" ,pkg-config)))
  2242. (inputs
  2243. `(("guile" ,guile-3.0))) ;for cross-compilation
  2244. (home-page "https://www.nongnu.org/guile-lib/")
  2245. (synopsis "Collection of useful Guile Scheme modules")
  2246. (description
  2247. "Guile-Lib is intended as an accumulation place for pure-scheme Guile
  2248. modules, allowing for people to cooperate integrating their generic Guile
  2249. modules into a coherent library. Think \"a down-scaled, limited-scope CPAN
  2250. for Guile\". It provides the following modules:
  2251. +@itemize
  2252. +@item (apicheck) Describe and verify library programming interfaces.
  2253. +@item (config load) Loading configuration files.
  2254. +@item (container async-queue) A thread-safe message queue.
  2255. +@item (container nodal-tree) A tree consisting of nodes with attributes.
  2256. +@item (container delay-tree) A nodal tree with lazily evaluated fields.
  2257. +@item (debugging assert) Helpful assert macro.
  2258. +@item (debugging time) A simple macro to time the execution of an expression.
  2259. +@item (graph topological-sort) Routines to perform topological sorts.
  2260. +@item (htmlprag) Neil Van Dyke's permissive (\"pragmatic\") HTML parser.
  2261. +@item (io string) SLIB's IO routines dealing with strings.
  2262. +@item (logging logger) A flexible logging system.
  2263. +@item (logging port-log) A logger that outputs to a port.
  2264. +@item (logging rotating-log) A logger that rotates its output files.
  2265. +@item (match-bind) Nifty and concise regular expression routines.
  2266. +@item (math minima) A golden-section minimum finder.
  2267. +@item (math primes) Functions related to prime numbers and factorization.
  2268. +@item (os process) Spawning processes and capturing their output.
  2269. +@item (scheme documentation) Macros to define different kinds of variables
  2270. +with documentation.
  2271. +@item (scheme kwargs) Defining functions with flexible keyword arguments.
  2272. +@item (search basic) Classic search functions.
  2273. +@item (string completion) Building blocks for tab completion.
  2274. +@item (string soundex) The SOUNDEX string categorization algorithm.
  2275. +@item (string transform) Beyond SRFI-13.
  2276. +@item (string wrap) A versatile string formatter.
  2277. +@item (term ansi-color) Generate ANSI color escape sequences.
  2278. +@item (unit-test) A JUnit-style unit testing framework.
  2279. +@end itemize")
  2280. ;; The whole is under GPLv3+, but some modules are under laxer
  2281. ;; distribution terms such as LGPL and public domain. See `COPYING' for
  2282. ;; details.
  2283. (license license:gpl3+)))
  2284. (define-public guile2.0-lib
  2285. (package
  2286. (inherit guile-lib)
  2287. (name "guile2.0-lib")
  2288. (native-inputs
  2289. (alist-replace "guile" (list guile-2.0)
  2290. (package-native-inputs guile-lib)))
  2291. (inputs
  2292. (alist-replace "guile" (list guile-2.0)
  2293. (package-inputs guile-lib)))))
  2294. (define-public guile2.2-lib
  2295. (package
  2296. (inherit guile-lib)
  2297. (name "guile2.2-lib")
  2298. (native-inputs
  2299. (alist-replace "guile" (list guile-2.2)
  2300. (package-native-inputs guile-lib)))
  2301. (inputs
  2302. (alist-replace "guile" (list guile-2.2)
  2303. (package-inputs guile-lib)))))
  2304. (define-public guile3.0-lib
  2305. (deprecated-package "guile3.0-lib" guile-lib))
  2306. (define-public guile-minikanren
  2307. (package
  2308. (name "guile-minikanren")
  2309. (version "20150424.e844d85")
  2310. (source (origin
  2311. (method git-fetch)
  2312. (uri (git-reference
  2313. (url "https://github.com/ijp/minikanren")
  2314. (commit "e844d85512f8c055d3f96143ee506007389a25e3")))
  2315. (file-name (string-append name "-" version "-checkout"))
  2316. (sha256
  2317. (base32
  2318. "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6"))))
  2319. (build-system guile-build-system)
  2320. (native-inputs
  2321. `(("guile" ,guile-3.0)))
  2322. (home-page "https://github.com/ijp/minikanren")
  2323. (synopsis "MiniKanren declarative logic system, packaged for Guile")
  2324. (description
  2325. "MiniKanren is a relational programming extension to the Scheme
  2326. programming Language, written as a smaller version of Kanren suitable for
  2327. pedagogical purposes. It is featured in the book, The Reasoned Schemer,
  2328. written by Dan Friedman, William Byrd, and Oleg Kiselyov.
  2329. This is Ian Price's r6rs packaged version of miniKanren, which deviates
  2330. slightly from miniKanren mainline.
  2331. See http://minikanren.org/ for more on miniKanren generally.")
  2332. (license license:expat)))
  2333. (define-public guile2.0-minikanren
  2334. (package
  2335. (inherit guile-minikanren)
  2336. (name "guile2.0-minikanren")
  2337. (native-inputs `(("guile" ,guile-2.0)))))
  2338. (define-public guile2.2-minikanren
  2339. (package
  2340. (inherit guile-minikanren)
  2341. (name "guile2.2-minikanren")
  2342. (native-inputs `(("guile" ,guile-2.2)))))
  2343. (define-public guile3.0-minikanren
  2344. (deprecated-package "guile3.0-minikanren" guile-minikanren))
  2345. (define-public guile-irregex
  2346. (package
  2347. (name "guile-irregex")
  2348. (version "0.9.6")
  2349. (source (origin
  2350. (method url-fetch)
  2351. (uri (string-append
  2352. "http://synthcode.com/scheme/irregex/irregex-"
  2353. version ".tar.gz"))
  2354. (sha256
  2355. (base32
  2356. "1ia3m7dp3lcxa048q0gqbiwwsyvn99baw6xkhb4bhhzn4k7bwyqq"))))
  2357. (build-system guile-build-system)
  2358. (arguments
  2359. '(#:phases (modify-phases %standard-phases
  2360. (add-after 'unpack 'move-files-around
  2361. (lambda _
  2362. ;; Move the relevant source files to src/ and create the
  2363. ;; rx/ directory to match the expected module hierarchy.
  2364. (mkdir-p "src/rx/source")
  2365. (rename-file "irregex-guile.scm"
  2366. "src/rx/irregex.scm")
  2367. (rename-file "irregex.scm"
  2368. "src/rx/source/irregex.scm")
  2369. ;; Not really reachable via guile's packaging system,
  2370. ;; but nice to have around.
  2371. (rename-file "irregex-utils.scm"
  2372. "src/rx/source/irregex-utils.scm")
  2373. #t)))
  2374. #:source-directory "src"))
  2375. (native-inputs
  2376. `(("guile" ,guile-3.0)))
  2377. (home-page "http://synthcode.com/scheme/irregex")
  2378. (synopsis "S-expression based regular expressions")
  2379. (description
  2380. "Irregex is an s-expression based alternative to your classic
  2381. string-based regular expressions. It implements SRFI 115 and is deeply
  2382. inspired by the SCSH regular expression system.")
  2383. (license license:bsd-3)))
  2384. (define-public guile2.0-irregex
  2385. (package
  2386. (inherit guile-irregex)
  2387. (name "guile2.0-irregex")
  2388. (native-inputs `(("guile" ,guile-2.0)))))
  2389. (define-public guile2.2-irregex
  2390. (package
  2391. (inherit guile-irregex)
  2392. (name "guile2.2-irregex")
  2393. (native-inputs `(("guile" ,guile-2.2)))))
  2394. (define-public guile3.0-irregex
  2395. (deprecated-package "guile3.0-irregex" guile-irregex))
  2396. (define-public haunt
  2397. (package
  2398. (name "haunt")
  2399. (version "0.2.5")
  2400. (source (origin
  2401. (method url-fetch)
  2402. (uri (string-append "https://files.dthompson.us/haunt/haunt-"
  2403. version ".tar.gz"))
  2404. (sha256
  2405. (base32
  2406. "1gy45l6m91b3wpdbpd9bpisp00zl8610zs0a2nwmbjlpd2cbf90k"))))
  2407. (build-system gnu-build-system)
  2408. (arguments
  2409. `(#:modules ((ice-9 match) (ice-9 ftw)
  2410. ,@%gnu-build-system-modules)
  2411. #:tests? #f ; test suite is non-deterministic :(
  2412. #:phases (modify-phases %standard-phases
  2413. (add-after 'install 'wrap-haunt
  2414. (lambda* (#:key inputs outputs #:allow-other-keys)
  2415. ;; Wrap the 'haunt' command to refer to the right
  2416. ;; modules.
  2417. (let* ((out (assoc-ref outputs "out"))
  2418. (bin (string-append out "/bin"))
  2419. (site (string-append
  2420. out "/share/guile/site"))
  2421. (guile-reader (assoc-ref inputs "guile-reader"))
  2422. (deps `(,@(if guile-reader
  2423. (list guile-reader)
  2424. '())
  2425. ,(assoc-ref inputs "guile-commonmark"))))
  2426. (match (scandir site)
  2427. (("." ".." version)
  2428. (let ((modules (string-append site "/" version))
  2429. (compiled-modules (string-append
  2430. out "/lib/guile/" version
  2431. "/site-ccache")))
  2432. (wrap-program (string-append bin "/haunt")
  2433. `("GUILE_LOAD_PATH" ":" prefix
  2434. (,modules
  2435. ,@(map (lambda (dep)
  2436. (string-append dep
  2437. "/share/guile/site/"
  2438. version))
  2439. deps)))
  2440. `("GUILE_LOAD_COMPILED_PATH" ":" prefix
  2441. (,compiled-modules
  2442. ,@(map (lambda (dep)
  2443. (string-append dep "/lib/guile/"
  2444. version
  2445. "/site-ccache"))
  2446. deps))))
  2447. #t)))))))))
  2448. (native-inputs
  2449. `(("pkg-config" ,pkg-config)
  2450. ("texinfo" ,texinfo)))
  2451. (inputs
  2452. ;; Depend on the latest Guile to avoid bytecode compatibility issues when
  2453. ;; using modules built against the latest version.
  2454. `(("guile" ,guile-3.0-latest)))
  2455. (propagated-inputs
  2456. `(("guile-reader" ,guile-reader)
  2457. ("guile-commonmark" ,guile-commonmark)))
  2458. (synopsis "Functional static site generator")
  2459. (description "Haunt is a static site generator written in Guile
  2460. Scheme. Haunt features a functional build system and an extensible
  2461. interface for reading articles in any format.")
  2462. (home-page "https://dthompson.us/projects/haunt.html")
  2463. (license license:gpl3+)))
  2464. (define-public guile2.2-haunt
  2465. (package
  2466. (inherit haunt)
  2467. (name "guile2.2-haunt")
  2468. (inputs `(("guile" ,guile-2.2)))
  2469. (propagated-inputs
  2470. `(("guile-reader" ,guile2.2-reader)
  2471. ("guile-commonmark" ,guile2.2-commonmark)))))
  2472. (define-public guile2.0-haunt
  2473. (package
  2474. (inherit haunt)
  2475. (name "guile2.0-haunt")
  2476. (inputs `(("guile" ,guile-2.0)))))
  2477. (define-public guile3.0-haunt
  2478. (deprecated-package "guile3.0-haunt" haunt))
  2479. (define-public guile-redis
  2480. (package
  2481. (name "guile-redis")
  2482. (version "2.1.1")
  2483. (home-page "https://github.com/aconchillo/guile-redis")
  2484. (source (origin
  2485. (method git-fetch)
  2486. (uri (git-reference
  2487. (url home-page)
  2488. (commit version)))
  2489. (file-name (git-file-name name version))
  2490. (sha256
  2491. (base32
  2492. "0pvk4yadgx64wk81cpisdc7zqhk6ww58xi5fs5fs6s28wb6l5bfj"))))
  2493. (build-system gnu-build-system)
  2494. (arguments
  2495. '(#:make-flags '("GUILE_AUTO_COMPILE=0")))
  2496. (native-inputs
  2497. `(("autoconf" ,autoconf)
  2498. ("automake" ,automake)
  2499. ("pkg-config" ,pkg-config)
  2500. ("guile" ,guile-3.0)))
  2501. (synopsis "Redis client library for Guile")
  2502. (description "Guile-redis provides a Scheme interface to the Redis
  2503. key-value cache and store.")
  2504. (license license:lgpl3+)))
  2505. (define-public guile2.2-redis
  2506. (package
  2507. (inherit guile-redis)
  2508. (name "guile2.2-redis")
  2509. (native-inputs `(("guile" ,guile-2.2)
  2510. ,@(alist-delete "guile"
  2511. (package-native-inputs guile-redis))))))
  2512. (define-public guile2.0-redis
  2513. (package
  2514. (inherit guile-redis)
  2515. (name "guile2.0-redis")
  2516. (arguments
  2517. `(#:phases
  2518. (modify-phases %standard-phases
  2519. (add-after 'unpack 'patch-source
  2520. (lambda _
  2521. ;; put-string is in (rnrs io ports) in guile2.0,
  2522. ;; not in (ice-9 textual-ports)
  2523. (substitute* "redis/utils.scm"
  2524. (("\\(ice-9 textual-ports\\)")
  2525. "(rnrs io ports)"))
  2526. #t)))
  2527. ,@(package-arguments guile-redis)))
  2528. (native-inputs `(("guile" ,guile-2.0)
  2529. ,@(alist-delete "guile"
  2530. (package-native-inputs guile-redis))))))
  2531. (define-public guile-commonmark
  2532. (package
  2533. (name "guile-commonmark")
  2534. (version "0.1.2")
  2535. (source (origin
  2536. (method url-fetch)
  2537. (uri (string-append "https://github.com/OrangeShark/" name
  2538. "/releases/download/v" version
  2539. "/" name "-" version ".tar.gz"))
  2540. (sha256
  2541. (base32
  2542. "17lrsdisa3kckh24q114vfmzdc4wkqa6ccwl4hdlrng5wpn1iman"))
  2543. (modules '((guix build utils)))
  2544. (snippet
  2545. '(begin
  2546. ;; Allow builds with Guile 3.0.
  2547. (substitute* "configure"
  2548. (("2\\.2 2\\.0")
  2549. "3.0 2.2 2.0"))
  2550. #t))))
  2551. (build-system gnu-build-system)
  2552. ;; The tests throw exceptions with Guile 3.0.5, because they evaluate
  2553. ;; (exit ...).
  2554. ;;
  2555. ;; This has been fixed upstream, but there has not been a new release
  2556. ;; containing this change.
  2557. (arguments
  2558. '(#:phases
  2559. (modify-phases %standard-phases
  2560. (add-after 'unpack 'fix-tests-when-building-with-guile-3.0.5
  2561. (lambda _
  2562. (substitute* (find-files "tests" "\\.scm$")
  2563. (("\\(exit.*") ""))
  2564. #t)))))
  2565. (inputs
  2566. `(("guile" ,guile-3.0)))
  2567. (native-inputs
  2568. `(("pkg-config" ,pkg-config)))
  2569. (synopsis "CommonMark parser for Guile")
  2570. (description
  2571. "guile-commonmark is a library for parsing CommonMark, a fully specified
  2572. variant of Markdown. The library is written in Guile Scheme and is designed
  2573. to transform a CommonMark document to SXML. guile-commonmark tries to closely
  2574. follow the @uref{http://commonmark.org/, CommonMark spec}, the main difference
  2575. is no support for parsing block and inline level HTML.")
  2576. (home-page "https://github.com/OrangeShark/guile-commonmark")
  2577. (license license:lgpl3+)))
  2578. (define-public guile2.2-commonmark
  2579. (package
  2580. (inherit guile-commonmark)
  2581. (name "guile2.2-commonmark")
  2582. (inputs `(("guile" ,guile-2.2)))))
  2583. (define-public guile2.0-commonmark
  2584. (package
  2585. (inherit guile-commonmark)
  2586. (name "guile2.0-commonmark")
  2587. (inputs `(("guile" ,guile-2.0)))))
  2588. (define-public guile3.0-commonmark
  2589. (deprecated-package "guile3.0-commonmark" guile-commonmark))
  2590. (define-public mcron
  2591. (package
  2592. (name "mcron")
  2593. (version "1.2.1")
  2594. (source (origin
  2595. (method url-fetch)
  2596. (uri (string-append "mirror://gnu/mcron/mcron-"
  2597. version ".tar.gz"))
  2598. (sha256
  2599. (base32
  2600. "0bkn235g2ia4f7ispr9d55c7bc18282r3qd8ldhh5q2kiin75zi0"))))
  2601. (build-system gnu-build-system)
  2602. (arguments
  2603. '(#:phases (modify-phases %standard-phases
  2604. (add-before 'check 'adjust-tests
  2605. (lambda _
  2606. (substitute* "tests/job-specifier.scm"
  2607. ;; (getpw) fails with "entry not found" in the build
  2608. ;; environment, so pass an argument.
  2609. (("\\(getpw\\)")
  2610. "(getpwnam (getuid))")
  2611. ;; The build environment lacks an entry for root in
  2612. ;; /etc/passwd.
  2613. (("\\(getpw 0\\)")
  2614. "(getpwnam \"nobody\")")
  2615. ;; FIXME: Skip the 4 faulty tests (see above).
  2616. (("\\(test-equal \"next-year\"" all)
  2617. (string-append "(test-skip 4)\n" all)))
  2618. #t)))))
  2619. (native-inputs `(("pkg-config" ,pkg-config)
  2620. ("tzdata" ,tzdata-for-tests)
  2621. ("guile-native" ;for 'guild compile'
  2622. ,@(assoc-ref (package-inputs this-package) "guile"))))
  2623. (inputs `(("guile" ,guile-3.0)))
  2624. (home-page "https://www.gnu.org/software/mcron/")
  2625. (synopsis "Run jobs at scheduled times")
  2626. (description
  2627. "GNU Mcron is a complete replacement for Vixie cron. It is used to run
  2628. tasks on a schedule, such as every hour or every Monday. Mcron is written in
  2629. Guile, so its configuration can be written in Scheme; the original cron
  2630. format is also supported.")
  2631. (license license:gpl3+)))
  2632. (define-public guile2.2-mcron
  2633. (package
  2634. (inherit mcron)
  2635. (name "guile2.2-mcron")
  2636. (inputs `(("guile" ,guile-2.2)))))
  2637. (define-public guile3.0-mcron
  2638. (deprecated-package "guile3.0-mcron" mcron))
  2639. (define-public guile-picture-language
  2640. (let ((commit "a1322bf11945465241ca5b742a70893f24156d12")
  2641. (revision "5"))
  2642. (package
  2643. (name "guile-picture-language")
  2644. (version (git-version "0.0.1" revision commit))
  2645. (source (origin
  2646. (method git-fetch)
  2647. (uri (git-reference
  2648. (url "https://git.elephly.net/software/guile-picture-language.git")
  2649. (commit commit)))
  2650. (file-name (git-file-name name version))
  2651. (sha256
  2652. (base32
  2653. "03i528z92ainccgm28shg4haxiav5x4cyhyi5dggq1rm027vbm99"))))
  2654. (build-system gnu-build-system)
  2655. (inputs
  2656. `(("guile" ,guile-3.0)))
  2657. (propagated-inputs
  2658. `(("guile-cairo" ,guile-cairo)
  2659. ("guile-rsvg" ,guile-rsvg)))
  2660. (native-inputs
  2661. `(("autoconf" ,autoconf)
  2662. ("automake" ,automake)
  2663. ("librsvg" ,librsvg)
  2664. ("pkg-config" ,pkg-config)
  2665. ("texinfo" ,texinfo)))
  2666. (home-page "https://git.elephly.net/software/guile-picture-language.git")
  2667. (synopsis "Picture language for Guile")
  2668. (description
  2669. "This package provides a simple SVG-based picture language for Guile.
  2670. The picture values can directly be displayed in Geiser.")
  2671. ;; (pict base64) is under GPLv3+, the rest is under LGPLv3+
  2672. (license (list license:lgpl3+
  2673. license:gpl3+)))))
  2674. (define-public guile2.2-picture-language
  2675. (package
  2676. (inherit guile-picture-language)
  2677. (name "guile2.2-picture-language")
  2678. (inputs `(("guile" ,guile-2.2)))
  2679. (propagated-inputs
  2680. `(("guile-cairo" ,guile2.2-cairo)
  2681. ("guile-rsvg" ,guile2.2-rsvg)))))
  2682. (define-public guile3.0-picture-language
  2683. (deprecated-package "guile3.0-picture-language"
  2684. guile-picture-language))
  2685. (define-public guile-studio
  2686. (let ((commit "dd0ad42e51feafebda7cc29afe7c8bc7a182a842")
  2687. (revision "1"))
  2688. (package
  2689. (name "guile-studio")
  2690. (version (git-version "0.1.1" revision commit))
  2691. (source (origin
  2692. (method git-fetch)
  2693. (uri (git-reference
  2694. (url "https://git.elephly.net/software/guile-studio.git")
  2695. (commit commit)))
  2696. (file-name (git-file-name name version))
  2697. (sha256
  2698. (base32
  2699. "1cpqilly8dqmai1qsgjxy99zs34sfz95zwxhzx979wryqb69vi0q"))))
  2700. (build-system gnu-build-system)
  2701. (arguments
  2702. `(#:modules
  2703. ((ice-9 match)
  2704. (srfi srfi-1)
  2705. ,@%gnu-build-system-modules)
  2706. #:tests? #f ; there are none
  2707. #:make-flags
  2708. (list (string-append "PICT_DIR="
  2709. (assoc-ref %build-inputs "guile-picture-language"))
  2710. (string-append "EMACS_DIR="
  2711. (assoc-ref %build-inputs "emacs"))
  2712. (string-append "GUILE_DIR="
  2713. (assoc-ref %build-inputs "guile"))
  2714. (string-join (cons "INPUTS="
  2715. (filter-map
  2716. (lambda (input)
  2717. (match input
  2718. ((label . pkg)
  2719. (and (string-prefix? "emacs" label) pkg))))
  2720. %build-inputs)))
  2721. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  2722. #:phases
  2723. (modify-phases %standard-phases
  2724. (delete 'configure)
  2725. (delete 'install))))
  2726. (inputs
  2727. `(("guile" ,guile-3.0)
  2728. ("guile-picture-language" ,guile-picture-language)
  2729. ("emacs" ,emacs)
  2730. ("emacs-f" ,emacs-f) ; needed by doom-modeline
  2731. ("emacs-memoize" ,emacs-memoize) ; needed by all-the-icons
  2732. ("emacs-all-the-icons" ,emacs-all-the-icons) ; needed by doom-modeline
  2733. ("emacs-all-the-icons-dired" ,emacs-all-the-icons-dired)
  2734. ("emacs-dired-sidebar" ,emacs-dired-sidebar)
  2735. ("emacs-doom-modeline" ,emacs-doom-modeline)
  2736. ("emacs-modus-themes" ,emacs-modus-themes)
  2737. ("emacs-geiser" ,emacs-geiser)
  2738. ("emacs-geiser-guile" ,emacs-geiser-guile)
  2739. ("emacs-company" ,emacs-company)
  2740. ("emacs-ivy" ,emacs-ivy)
  2741. ("emacs-flycheck" ,emacs-flycheck)
  2742. ("emacs-flycheck-guile" ,emacs-flycheck-guile)
  2743. ("emacs-paren-face" ,emacs-paren-face)))
  2744. (native-inputs
  2745. `(("texinfo" ,texinfo)))
  2746. (home-page "https://gnu.org/software/guile")
  2747. (synopsis "IDE for Guile")
  2748. (description
  2749. "This is Emacs with a few settings that make working with Guile easier
  2750. for people new to Emacs. Features include: CUA mode, Geiser, tool bar icons
  2751. to evaluate Guile buffers, support for Guile's very own picture language, code
  2752. completion, a simple mode line, etc.")
  2753. (license license:gpl3+))))
  2754. (define-public guile-stis-parser
  2755. (package
  2756. (name "guile-stis-parser")
  2757. (version "1.2.4.1")
  2758. (source (origin
  2759. (method git-fetch)
  2760. (uri (git-reference
  2761. (url "https://gitlab.com/tampe/stis-parser")
  2762. (commit (string-append "v" version))))
  2763. (file-name (git-file-name name version))
  2764. (sha256
  2765. (base32
  2766. "1fvxdfvc80zqhwzq5x3kxyr6j8p4b51yx85fx1gr3d4gy2ddpx5w"))))
  2767. (build-system gnu-build-system)
  2768. (arguments
  2769. `(#:parallel-build? #f ; not supported
  2770. #:phases
  2771. (modify-phases %standard-phases
  2772. (add-after 'unpack 'chdir
  2773. (lambda _ (chdir "modules") #t))
  2774. (add-after 'chdir 'delete-broken-symlink
  2775. (lambda _
  2776. (delete-file "parser/stis-parser/lang/.#calc.scm")
  2777. #t)))))
  2778. (inputs
  2779. `(("guile" ,guile-3.0)))
  2780. (native-inputs
  2781. `(("autoconf" ,autoconf)
  2782. ("automake" ,automake)
  2783. ("pkg-config" ,pkg-config)))
  2784. (home-page "https://gitlab.com/tampe/stis-parser")
  2785. (synopsis "Parser combinator framework")
  2786. (description
  2787. "This package provides a functional parser combinator library that
  2788. supports backtracking and a small logical framework. The idea is to build up
  2789. chunks that are memoized and there is no clear scanner/parser separation,
  2790. chunks can be expressions as well as simple tokens.")
  2791. (license license:lgpl2.0+)))
  2792. (define-public guile-persist
  2793. (package
  2794. (name "guile-persist")
  2795. (version "1.2.3")
  2796. (source (origin
  2797. (method git-fetch)
  2798. (uri (git-reference
  2799. (url "https://gitlab.com/tampe/guile-persist")
  2800. (commit (string-append "v" version))))
  2801. (file-name (git-file-name name version))
  2802. (sha256
  2803. (base32
  2804. "19f8hqcax4v40858kx2j8fy1cvzc2djj99r0n17dy1xxmwa097qi"))))
  2805. (build-system gnu-build-system)
  2806. (arguments
  2807. `(#:phases
  2808. (modify-phases %standard-phases
  2809. (add-after 'unpack 'patch-prefix
  2810. (lambda* (#:key inputs outputs #:allow-other-keys)
  2811. (substitute* "src/Makefile.am"
  2812. (("/usr/local/lib/guile")
  2813. (string-append (assoc-ref outputs "out") "/lib/guile"))
  2814. (("/usr/local/include/guile")
  2815. (search-input-directory inputs "/include/guile"))
  2816. (("-L/usr/local/lib")
  2817. (string-append "-L" (assoc-ref inputs "guile") "/lib")))
  2818. #t))
  2819. (add-after 'unpack 'patch-library-reference
  2820. (lambda* (#:key outputs #:allow-other-keys)
  2821. (let ((out (assoc-ref outputs "out")))
  2822. (substitute* "persist/persistance.scm"
  2823. (("\"libguile-persist\"")
  2824. (format #f "\"~a/lib/guile/3.0/extensions/libguile-persist\"" out)))
  2825. #t))))))
  2826. (inputs
  2827. `(("guile" ,guile-3.0)))
  2828. (native-inputs
  2829. `(("autoconf" ,autoconf)
  2830. ("automake" ,automake)
  2831. ("libtool" ,libtool)
  2832. ("pkg-config" ,pkg-config)))
  2833. (home-page "https://gitlab.com/tampe/guile-persist")
  2834. (synopsis "Persistence programming framework for Guile")
  2835. (description
  2836. "This is a serialization library for serializing objects like classes
  2837. and objects, closures and structs. This currently does not support
  2838. serializing continuations or delimited continuations.")
  2839. (license license:lgpl2.0+)))
  2840. (define-public python-on-guile
  2841. (package
  2842. (name "python-on-guile")
  2843. (version "1.2.3.5")
  2844. (home-page "https://gitlab.com/python-on-guile/python-on-guile")
  2845. (source (origin
  2846. (method git-fetch)
  2847. (uri (git-reference (url home-page)
  2848. (commit (string-append "v" version))))
  2849. (file-name (git-file-name name version))
  2850. (sha256
  2851. (base32
  2852. "05xrvcj6a4gzq1ybyin270qz8wamgc7w2skyi9iy6hkpgdhxy8vf"))))
  2853. (build-system gnu-build-system)
  2854. (arguments
  2855. `(#:parallel-build? #f ;not supported
  2856. #:make-flags '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
  2857. #:phases
  2858. (modify-phases %standard-phases
  2859. (add-after 'unpack 'chdir
  2860. (lambda _ (chdir "modules") #t))
  2861. (add-after 'chdir 'augment-GUILE_LOAD_PATH
  2862. (lambda _
  2863. ;; TODO: It would be better to patch the Makefile.
  2864. (setenv "GUILE_LOAD_PATH"
  2865. (string-append ".:"
  2866. (getenv "GUILE_LOAD_PATH")))
  2867. #t))
  2868. (add-after 'install 'wrap
  2869. (lambda* (#:key outputs #:allow-other-keys)
  2870. ;; Wrap the 'python' executable so it can find its
  2871. ;; dependencies and own modules.
  2872. (let* ((out (assoc-ref outputs "out"))
  2873. (guile-version ,(version-major+minor
  2874. (package-version guile-3.0)))
  2875. (scm (string-append out "/share/guile/site/"
  2876. guile-version))
  2877. (ccache (string-append out "/lib/guile/" guile-version
  2878. "/site-ccache"))
  2879. (load-path (string-join
  2880. (cons scm
  2881. ;; XXX: cdr because we augment it above.
  2882. (cdr (string-split
  2883. (getenv "GUILE_LOAD_PATH") #\:)))
  2884. ":"))
  2885. (compiled-path (string-append
  2886. ccache ":"
  2887. (getenv "GUILE_LOAD_COMPILED_PATH"))))
  2888. (wrap-program (string-append out "/bin/python")
  2889. `("GUILE_LOAD_PATH" ":" prefix
  2890. (,load-path))
  2891. `("GUILE_LOAD_COMPILED_PATH" ":" prefix
  2892. (,compiled-path)))
  2893. #t))))))
  2894. (inputs
  2895. `(("guile" ,guile-3.0)
  2896. ("guile-persist" ,guile-persist)
  2897. ("guile-readline" ,guile-readline)
  2898. ("guile-stis-parser" ,guile-stis-parser)))
  2899. (native-inputs
  2900. `(("autoconf" ,autoconf)
  2901. ("automake" ,automake)
  2902. ("libtool" ,libtool)
  2903. ("pkg-config" ,pkg-config)))
  2904. (synopsis "Python implementation in Guile")
  2905. (description
  2906. "This package allows you to compile a Guile Python file to any target
  2907. from @code{tree-il}.")
  2908. (license license:lgpl2.0+)))
  2909. (define-public guile-file-names
  2910. (package
  2911. (name "guile-file-names")
  2912. (version "0.3")
  2913. (source (origin
  2914. (method url-fetch)
  2915. (uri (string-append "http://brandon.invergo.net/software/download/"
  2916. "guile-file-names/guile-file-names-"
  2917. version ".tar.gz"))
  2918. (sha256
  2919. (base32
  2920. "01chizdxkhw6aqv629vxka9f5x3534ij7r0jqndawsg2vxm1r9sz"))))
  2921. (build-system gnu-build-system)
  2922. (arguments
  2923. `(#:phases
  2924. (modify-phases %standard-phases
  2925. (add-after 'unpack 'fix-target-directory
  2926. (lambda _
  2927. (substitute* "src/Makefile.in"
  2928. (("guilemoddir = \\$\\(GUILE_SITE\\)")
  2929. "guilemoddir = $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
  2930. #t)))))
  2931. (inputs
  2932. `(("guile" ,guile-2.2)))
  2933. (native-inputs
  2934. `(("pkg-config" ,pkg-config)))
  2935. (home-page "https://gitlab.com/brandoninvergo/guile-file-names")
  2936. (synopsis "Manipulate file names")
  2937. (description
  2938. "The @code{(file-names)} module provides tools for manipulating file
  2939. names. The module was built on the idea that doing anything more than a
  2940. non-trivial modification of a file name string is a pain (making sure all
  2941. slashes are present and accounted for, resolving @code{.} and @code{..}, etc).
  2942. Inevitably, you have to break the string up into chunks and operate on that
  2943. list of components. This module takes care of that for you.")
  2944. (license license:lgpl3+)))
  2945. (define-public guile-gi
  2946. (package
  2947. (name "guile-gi")
  2948. (version "0.3.1")
  2949. (source (origin
  2950. (method url-fetch)
  2951. (uri (string-append "http://lonelycactus.com/tarball/guile_gi-"
  2952. version ".tar.gz"))
  2953. (sha256
  2954. (base32
  2955. "1ljcfyar1nb6h4jskxnnzrcxcsblawc50qqfdn8cax3zqfskmvzj"))))
  2956. (build-system glib-or-gtk-build-system)
  2957. (arguments
  2958. `(#:configure-flags '("--with-gnu-filesystem-hierarchy")
  2959. #:modules ((guix build glib-or-gtk-build-system)
  2960. (guix build utils)
  2961. (ice-9 popen)
  2962. (ice-9 rdelim))
  2963. #:phases
  2964. (modify-phases %standard-phases
  2965. (add-after 'unpack 'patch-references-to-extension
  2966. (lambda* (#:key outputs #:allow-other-keys)
  2967. (let ((effective (read-line
  2968. (open-pipe* OPEN_READ
  2969. "guile" "-c"
  2970. "(display (effective-version))"))))
  2971. (substitute* (find-files "module" ".*\\.scm")
  2972. (("\\(load-extension \"libguile-gi\" \"(.*)\"\\)" m arg)
  2973. (format #f "~s"
  2974. `(load-extension
  2975. (format #f "~alibguile-gi"
  2976. (if (getenv "GUILE_GI_UNINSTALLED")
  2977. ""
  2978. ,(format #f "~a/lib/guile/~a/extensions/"
  2979. (assoc-ref outputs "out")
  2980. effective)))
  2981. ,arg)))))
  2982. (setenv "GUILE_GI_UNINSTALLED" "1")
  2983. #t))
  2984. (add-before 'check 'start-xorg-server
  2985. (lambda* (#:key inputs #:allow-other-keys)
  2986. ;; The init_check test requires a running X server.
  2987. (system (format #f "~a/bin/Xvfb :1 &"
  2988. (assoc-ref inputs "xorg-server")))
  2989. (setenv "DISPLAY" ":1")
  2990. #t)))))
  2991. (native-inputs
  2992. `(("gettext" ,gettext-minimal)
  2993. ("glib:bin" ,glib "bin") ; for glib-compile-resources
  2994. ("libtool" ,libtool)
  2995. ("pkg-config" ,pkg-config)
  2996. ("xorg-server" ,xorg-server)))
  2997. (propagated-inputs
  2998. `(("glib" ,glib)
  2999. ("gobject-introspection" ,gobject-introspection)
  3000. ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)
  3001. ("gtk+" ,gtk+)
  3002. ("guile-lib" ,guile-lib)
  3003. ("webkitgtk" ,webkitgtk)))
  3004. (inputs `(("guile" ,guile-3.0)))
  3005. (home-page "https://github.com/spk121/guile-gi")
  3006. (synopsis "GObject bindings for Guile")
  3007. (description
  3008. "Guile-GI is a library for Guile that allows using GObject-based
  3009. libraries, such as GTK+3. Its README comes with the disclaimer: This is
  3010. pre-alpha code.")
  3011. (license license:gpl3+)))
  3012. (define-public guile2.2-gi
  3013. (package
  3014. (inherit guile-gi)
  3015. (name "guile2.2-gi")
  3016. (inputs
  3017. `(("guile" ,guile-2.2)
  3018. ,@(alist-delete "guile" (package-inputs guile-gi))))))
  3019. (define-public guile3.0-gi
  3020. (deprecated-package "guile3.0-gi" guile-gi))
  3021. (define-public guile-srfi-89
  3022. (package
  3023. (name "guile-srfi-89")
  3024. (version "0.0.1")
  3025. (source
  3026. (origin
  3027. (method git-fetch)
  3028. (uri (git-reference
  3029. (url "https://gitlab.com/mjbecze/guile-srfi-89.git")
  3030. (commit version)))
  3031. (sha256
  3032. (base32
  3033. "1981c0rrzxqx3md9jx8ir7j3m2mzg9m72b33p5jvw36zirbzpl20"))
  3034. (file-name (git-file-name name version))))
  3035. (build-system guile-build-system)
  3036. (native-inputs
  3037. `(("guile" ,guile-3.0)))
  3038. (home-page "https://gitlab.com/mjbecze/guile-srfi-89")
  3039. (synopsis "Hygienic implementation of SRFI-89 for Guile")
  3040. (description
  3041. "This package provides SRFI-89 optional positional and named
  3042. parameters, which define* and lambda* special forms")
  3043. (license license:gpl3+)))
  3044. (define-public guile-srfi-145
  3045. (package
  3046. (name "guile-srfi-145")
  3047. (version "0.0.1")
  3048. (source
  3049. (origin
  3050. (method git-fetch)
  3051. (uri (git-reference
  3052. (url "https://gitlab.com/mjbecze/guile-srfi-145.git")
  3053. (commit version)))
  3054. (sha256
  3055. (base32
  3056. "1gssa8cmcp8640fil9z8dpil8v5l279wlalqjcx3fls5jwv13q1b"))
  3057. (file-name (git-file-name name version))))
  3058. (build-system guile-build-system)
  3059. (native-inputs
  3060. `(("guile" ,guile-3.0)))
  3061. (home-page "https://gitlab.com/mjbecze/guile-srfi-145")
  3062. (synopsis "SRFI-145 port for Guile")
  3063. (description
  3064. "This package provides SRFI-145. This provides the means to
  3065. denote the invalidity of certain code paths in a Scheme program.")
  3066. (license license:gpl3+)))
  3067. (define-public guile-srfi-158
  3068. (package
  3069. (name "guile-srfi-158")
  3070. (version "0.0.1")
  3071. (source
  3072. (origin
  3073. (method git-fetch)
  3074. (uri (git-reference
  3075. (url "https://gitlab.com/mjbecze/guile-srfi-158.git")
  3076. (commit version)))
  3077. (sha256
  3078. (base32
  3079. "0b8hlv1bldbcwkcxi9y8mm6xp5gbgpg7b15bwqxv70iynl9d9a7c"))
  3080. (file-name (git-file-name name version))))
  3081. (build-system gnu-build-system)
  3082. (native-inputs
  3083. `(("autoconf" ,autoconf)
  3084. ("automake" ,automake)
  3085. ("pkg-config" ,pkg-config)))
  3086. (inputs
  3087. `(("guile" ,guile-3.0)))
  3088. (home-page "https://gitlab.com/samplet/guile-srfi-158")
  3089. (synopsis "SRFI 158 (Generators and Accumulators) for Guile")
  3090. (description "This package provides an implementation of SRFI 158
  3091. for Guile. SRFI 158 defines utility procedures that create,
  3092. transform, and consume generators. It also defines procedures that
  3093. return accumulators. It is implemented by wrapping the sample
  3094. implementation in a thin Guile compatibility layer.")
  3095. (license license:gpl3+)))
  3096. (define-public guile-srfi-159
  3097. (let ((commit "1bd98abda2ae4ef8f36761a167903e55c6bda7bb")
  3098. (revision "0"))
  3099. (package
  3100. (name "guile-srfi-159")
  3101. (version (git-version "0" revision commit))
  3102. (home-page "https://bitbucket.org/bjoli/guile-srfi-159")
  3103. (source (origin
  3104. (method hg-fetch)
  3105. (uri (hg-reference (changeset commit)
  3106. (url home-page)))
  3107. (sha256
  3108. (base32
  3109. "1zw6cmcy7xdbfiz3nz9arqnn7l2daidaps6ixkcrc9b6k51fdv3p"))
  3110. (file-name (git-file-name name version))))
  3111. (build-system guile-build-system)
  3112. (arguments
  3113. ;; The *-impl.scm files are actually included from module files; they
  3114. ;; should not be compiled separately, but they must be installed.
  3115. '(#:not-compiled-file-regexp "-impl\\.scm$"))
  3116. (inputs
  3117. `(("guile" ,guile-2.2)))
  3118. (synopsis "Formatting combinators for Guile")
  3119. (description
  3120. "The @code{(srfi-159)} module and its sub-modules implement the
  3121. formatting combinators specified by
  3122. @uref{https://srfi.schemers.org/srfi-159/srfi-159.html, SRFI-159}. These are
  3123. more expressive and flexible than the traditional @code{format} procedure.")
  3124. (license license:bsd-3))))
  3125. (define-public guile-srfi-180
  3126. (let ((commit "9188bf9724c6d320ef804579d222e855b007b193")
  3127. (revision "0"))
  3128. (package
  3129. (name "guile-srfi-180")
  3130. (version (git-version "0" revision commit))
  3131. (source
  3132. (origin
  3133. (method git-fetch)
  3134. (uri (git-reference
  3135. (url "https://github.com/scheme-requests-for-implementation/srfi-180")
  3136. (commit commit)))
  3137. (sha256
  3138. (base32
  3139. "08lf70rsak8mwfij55xc37pg9zg7c87fizmhz7ln46skzj68sl3y"))
  3140. (modules '((guix build utils)))
  3141. (snippet
  3142. '(begin
  3143. (delete-file-recursively "srfi/files")
  3144. (delete-file "srfi/run-r7rs-checks.guile.scm")
  3145. (delete-file "srfi/run-r7rs-checks.scm")
  3146. (delete-file "srfi/check.scm")
  3147. #t))
  3148. (file-name (git-file-name name version))))
  3149. (build-system guile-build-system)
  3150. (arguments
  3151. '(#:not-compiled-file-regexp "body\\.scm$"))
  3152. (native-inputs
  3153. `(("guile" ,guile-3.0)))
  3154. (propagated-inputs
  3155. `(("guile-srfi-145" ,guile-srfi-145)))
  3156. (home-page "https://srfi.schemers.org/srfi-180/")
  3157. (synopsis "JSON parser and printer for Guile")
  3158. (description
  3159. "This library implements a JavaScript Object Notation (JSON) parser and printer.
  3160. It also supports parsing JSON objects that may be bigger than memory with a streaming
  3161. API.")
  3162. (license license:expat))))
  3163. (define-public emacsy
  3164. (package
  3165. (name "emacsy")
  3166. (version "0.4.1")
  3167. (source (origin
  3168. (method url-fetch)
  3169. (uri (string-append "mirror://savannah/emacsy/emacsy-"
  3170. version ".tar.gz"))
  3171. (sha256
  3172. (base32
  3173. "1cpb85dl1nibd34c2x2h7vfmjpkgh353p5b1w20v6cs6gmvgg4np"))
  3174. (modules '((guix build utils)))
  3175. (snippet
  3176. '(begin
  3177. (substitute* "configure"
  3178. ;; Allow builds with Guile 3.0.
  3179. (("2\\.2 2\\.0")
  3180. "3.0 2.2 2.0")
  3181. ;; Freeglut 3.2 provides 'glut.pc', not 'freeglut.pc'.
  3182. (("freeglut >= ")
  3183. "glut >= "))
  3184. (substitute* '("emacsy/emacsy.c"
  3185. "example/hello-emacsy.c")
  3186. (("#include <libguile\\.h>")
  3187. (string-append "#include <stdlib.h>\n"
  3188. "#include <stdio.h>\n"
  3189. "#include <string.h>\n"
  3190. "#include <unistd.h>\n"
  3191. "#include <libguile.h>\n")))))))
  3192. (build-system gnu-build-system)
  3193. (native-inputs
  3194. `(("bzip2" ,bzip2)
  3195. ("guile" ,guile-3.0)
  3196. ("gettext" ,gettext-minimal)
  3197. ("libtool" ,libtool)
  3198. ("perl" ,perl)
  3199. ("pkg-config" ,pkg-config)
  3200. ("texinfo" ,texinfo)
  3201. ("texlive" ,(texlive-updmap.cfg (list texlive-epsf)))))
  3202. (inputs
  3203. `(("dbus-glib" ,dbus-glib)
  3204. ("guile" ,guile-3.0)
  3205. ("guile-lib" ,guile-lib)
  3206. ("guile-readline" ,guile-readline)
  3207. ("freeglut" ,freeglut)
  3208. ("webkitgtk" ,webkitgtk)))
  3209. (propagated-inputs
  3210. `(("glib-networking" ,glib-networking)
  3211. ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)))
  3212. (arguments
  3213. `(#:modules ((guix build gnu-build-system)
  3214. (guix build utils)
  3215. (ice-9 popen)
  3216. (ice-9 rdelim)
  3217. (ice-9 regex)
  3218. (ice-9 ftw)
  3219. (srfi srfi-26))
  3220. #:phases
  3221. (modify-phases %standard-phases
  3222. (add-before 'configure 'setenv
  3223. (lambda _
  3224. (setenv "GUILE_AUTO_COMPILE" "0")
  3225. #t))
  3226. (add-after 'install 'wrap-binaries
  3227. (lambda* (#:key inputs outputs #:allow-other-keys)
  3228. (let* ((out (assoc-ref outputs "out"))
  3229. (effective (read-line
  3230. (open-pipe* OPEN_READ
  3231. "guile" "-c"
  3232. "(display (effective-version))")))
  3233. (deps (map (cut assoc-ref inputs <>)
  3234. '("guile-lib" "guile-readline")))
  3235. (scm-path (map (cut string-append <> "/share/guile/site/"
  3236. effective) `(,out ,@deps)))
  3237. (go-path (map (cut string-append <> "/lib/guile/" effective
  3238. "/site-ccache/") `(,out ,@deps)))
  3239. (examples (filter (cut string-match "emacsy" <>)
  3240. (scandir (string-append out "/bin/"))))
  3241. (progs (map (cut string-append out "/bin/" <>)
  3242. examples)))
  3243. (map (cut wrap-program <>
  3244. `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
  3245. `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path))
  3246. progs)
  3247. #t))))))
  3248. (home-page "https://savannah.nongnu.org/projects/emacsy")
  3249. (synopsis "Embeddable GNU Emacs-like library using Guile")
  3250. (description
  3251. "Emacsy is an embeddable Emacs-like library that uses GNU Guile
  3252. as extension language. Emacsy can give a C program an Emacsy feel with
  3253. keymaps, minibuffer, recordable macros, history, tab completion, major
  3254. and minor modes, etc., and can also be used as a pure Guile library. It
  3255. comes with a simple counter example using FreeGLUT and browser examples
  3256. in C using Gtk+-3 and WebKitGtk.")
  3257. (license license:gpl3+)))
  3258. (define-public emacsy-minimal
  3259. (let ((commit "v0.4.1-37-g5f91ee6"))
  3260. (package
  3261. (inherit emacsy)
  3262. (name "emacsy-minimal")
  3263. (version (string-drop commit 1))
  3264. (source
  3265. (origin
  3266. (method git-fetch)
  3267. (uri (git-reference
  3268. (url "https://git.savannah.gnu.org/git/emacsy.git")
  3269. (commit commit)))
  3270. (file-name (git-file-name name version))
  3271. (sha256
  3272. (base32 "03ym14g9qhjqmryr5z065kynqm8yhmvnbs2djl6vp3i9cmqln8cl"))))
  3273. (build-system gnu-build-system)
  3274. (native-inputs
  3275. `(("autoconf" ,autoconf)
  3276. ("automake" ,automake)
  3277. ("gettext" ,gettext-minimal)
  3278. ("libtool" ,libtool)
  3279. ("makeinfo" ,texinfo)
  3280. ("pkg-config" ,pkg-config)))
  3281. (inputs
  3282. `(("guile" ,guile-2.2)
  3283. ("guile-lib" ,guile2.2-lib)
  3284. ("guile-readline" ,guile2.2-readline)))
  3285. (propagated-inputs '())
  3286. (arguments
  3287. `(#:configure-flags '("--without-examples")
  3288. #:phases
  3289. (modify-phases %standard-phases
  3290. (add-before 'configure 'setenv
  3291. (lambda _
  3292. (setenv "GUILE_AUTO_COMPILE" "0")
  3293. #t))))))))
  3294. (define-public guile-jpeg
  3295. (let ((commit "6a1673578b297c2c1b28e44a76bd5c49e76a5046")
  3296. (revision "0"))
  3297. (package
  3298. (name "guile-jpeg")
  3299. (version (git-version "0.0" revision commit))
  3300. (home-page "https://gitlab.com/wingo/guile-jpeg")
  3301. (source (origin
  3302. (method git-fetch)
  3303. (uri (git-reference (url home-page)
  3304. (commit commit)))
  3305. (sha256
  3306. (base32
  3307. "05z9m408w3h6aqb5k3r3qa7khir0k10rxwvsrzhkcq1hr5vbmr4m"))
  3308. (file-name (git-file-name name version))
  3309. (modules '((guix build utils)))
  3310. (snippet
  3311. '(begin
  3312. ;; Install .go files in the right place.
  3313. (substitute* "Makefile.am"
  3314. (("/ccache") "/site-ccache"))
  3315. #t))))
  3316. (build-system gnu-build-system)
  3317. (native-inputs
  3318. `(("autoconf" ,autoconf)
  3319. ("automake" ,automake)
  3320. ("pkg-config" ,pkg-config)
  3321. ("guile" ,guile-2.2)))
  3322. (synopsis "JPEG file parsing library for Guile")
  3323. (description
  3324. "Guile-JPEG is a Scheme library to parse JPEG image files and to
  3325. perform geometrical transforms on JPEG images.")
  3326. (license license:gpl3+))))
  3327. (define-public nomad
  3328. (package
  3329. (name "nomad")
  3330. (version "0.2.0-alpha-199-g3e7a475")
  3331. (source (origin
  3332. (method git-fetch)
  3333. (uri (git-reference
  3334. (url "https://git.savannah.gnu.org/git/nomad.git/")
  3335. (commit version)))
  3336. (file-name (git-file-name name version))
  3337. (sha256
  3338. (base32
  3339. "0p0ha6prp7pyadp61clbhc6b55023vxzfwy14j2qygb2mkq7fhic"))))
  3340. (build-system gnu-build-system)
  3341. (native-inputs
  3342. `(("autoconf" ,autoconf)
  3343. ("automake" ,automake)
  3344. ("bash" ,bash)
  3345. ("pkg-config" ,pkg-config)
  3346. ("libtool" ,libtool)
  3347. ("guile" ,guile-2.2)
  3348. ("glib:bin" ,glib "bin")
  3349. ("texinfo" ,texinfo)
  3350. ("gettext" ,gettext-minimal)
  3351. ("perl" ,perl)))
  3352. (inputs
  3353. `(;; Guile
  3354. ("guile" ,guile-2.2)
  3355. ("guile-lib" ,guile2.2-lib)
  3356. ("guile-readline" ,guile2.2-readline)
  3357. ("guile-gcrypt" ,guile2.2-gcrypt)
  3358. ("gnutls" ,gnutls)
  3359. ("g-golf" ,g-golf)
  3360. ("shroud" ,shroud)
  3361. ("emacsy" ,emacsy-minimal)
  3362. ;; Gtk
  3363. ("glib" ,glib)
  3364. ("dbus-glib" ,dbus-glib)
  3365. ("glib-networking" ,glib-networking)
  3366. ("gtk+" ,gtk+)
  3367. ("gtk+:bin" ,gtk+ "bin")
  3368. ("webkitgtk" ,webkitgtk)
  3369. ("gtksourceview" ,gtksourceview)
  3370. ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
  3371. ("vte" ,vte)
  3372. ;; Gstreamer
  3373. ("gstreamer" ,gstreamer)
  3374. ("gst-plugins-base" ,gst-plugins-base)
  3375. ("gst-plugins-good" ,gst-plugins-good)
  3376. ("gst-plugins-bad" ,gst-plugins-bad)
  3377. ("gst-plugins-ugly" ,gst-plugins-ugly)
  3378. ;; Util
  3379. ("xorg-server" ,xorg-server)))
  3380. (arguments
  3381. `(#:modules ((guix build gnu-build-system)
  3382. (guix build utils)
  3383. (ice-9 popen)
  3384. (ice-9 rdelim)
  3385. (srfi srfi-26))
  3386. #:phases
  3387. (modify-phases %standard-phases
  3388. (add-before 'check 'start-xorg-server
  3389. (lambda* (#:key inputs #:allow-other-keys)
  3390. ;; The test suite requires a running X server.
  3391. (system (format #f "~a/bin/Xvfb :1 &"
  3392. (assoc-ref inputs "xorg-server")))
  3393. (setenv "DISPLAY" ":1")
  3394. #t))
  3395. (add-after 'install 'wrap-binaries
  3396. (lambda* (#:key inputs outputs #:allow-other-keys)
  3397. (let* ((out (assoc-ref outputs "out"))
  3398. (effective (read-line (open-pipe*
  3399. OPEN_READ
  3400. "guile" "-c"
  3401. "(display (effective-version))")))
  3402. (gst-plugins (map (lambda (i)
  3403. (string-append (assoc-ref inputs i)
  3404. "/lib/gstreamer-1.0"))
  3405. `("gstreamer"
  3406. "gst-plugins-base"
  3407. "gst-plugins-good"
  3408. "gst-plugins-bad"
  3409. "gst-plugins-ugly")))
  3410. (out-append (lambda (. args)
  3411. (apply string-append out args)))
  3412. (gi-path (out-append "/lib/girepository-1.0"))
  3413. (load-path (out-append "/share/guile/site/" effective))
  3414. (comp-path (out-append "/lib/guile/"
  3415. effective "/site-ccache"))
  3416. (ext-path (out-append "/libexec/nomad")))
  3417. (wrap-program (string-append out "/bin/nomad")
  3418. `("GUILE_LOAD_PATH" ":" prefix
  3419. (,load-path
  3420. ,(getenv "GUILE_LOAD_PATH")))
  3421. `("GUILE_LOAD_COMPILED_PATH" ":" prefix
  3422. (,comp-path
  3423. ,(getenv "GUILE_LOAD_COMPILED_PATH")))
  3424. `("GI_TYPELIB_PATH" ":" prefix
  3425. (,gi-path ,(getenv "GI_TYPELIB_PATH")))
  3426. `("GIO_EXTRA_MODULES" ":" prefix
  3427. (,(getenv "GIO_EXTRA_MODULES")))
  3428. `("GST_PLUGIN_SYSTEM_PATH" ":" prefix ,gst-plugins)
  3429. `("NOMAD_WEB_EXTENSION_DIR" ":" prefix (,ext-path)))
  3430. #t))))))
  3431. (home-page "https://savannah.nongnu.org/projects/nomad/")
  3432. (synopsis "Extensible Web Browser in Guile Scheme")
  3433. (description "Nomad is a Emacs-like web browser that consists of a modular
  3434. feature-set, fully programmable in Guile Scheme.")
  3435. (license license:gpl3+)))
  3436. (define-public guile-cv
  3437. (package
  3438. (name "guile-cv")
  3439. (version "0.2.1")
  3440. (source (origin
  3441. (method url-fetch)
  3442. (uri (string-append "mirror://gnu/guile-cv/guile-cv-"
  3443. version ".tar.gz"))
  3444. (sha256
  3445. (base32
  3446. "0qdf0s2h1xj5lbhnc1pfw69i3zg08pqy2y6869b92ydfis8r82j9"))))
  3447. (build-system gnu-build-system)
  3448. (arguments
  3449. `(#:phases
  3450. (modify-phases %standard-phases
  3451. (add-after 'unpack 'prepare-build
  3452. (lambda* (#:key inputs outputs #:allow-other-keys)
  3453. (substitute* "configure"
  3454. (("SITEDIR=\"\\$datadir/guile-cv\"")
  3455. "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"")
  3456. (("SITECCACHEDIR=\"\\$libdir/guile-cv/")
  3457. "SITECCACHEDIR=\"$libdir/"))
  3458. (substitute* "cv/init.scm"
  3459. (("\\(dynamic-link \"libvigra_c\"\\)")
  3460. (string-append "(dynamic-link \""
  3461. (assoc-ref inputs "vigra-c")
  3462. "/lib/libvigra_c\")"))
  3463. (("\\(dynamic-link \"libguile-cv\"\\)")
  3464. (format #f "~s"
  3465. `(dynamic-link
  3466. (format #f "~alibguile-cv"
  3467. (if (getenv "GUILE_CV_UNINSTALLED")
  3468. ""
  3469. ,(format #f "~a/lib/"
  3470. (assoc-ref outputs "out"))))))))
  3471. (setenv "GUILE_CV_UNINSTALLED" "1")
  3472. ;; Only needed to satisfy the configure script.
  3473. (setenv "LD_LIBRARY_PATH"
  3474. (string-append (assoc-ref inputs "vigra-c") "/lib"))
  3475. #t)))))
  3476. (inputs
  3477. `(("vigra" ,vigra)
  3478. ("vigra-c" ,vigra-c)
  3479. ("guile" ,guile-2.2)))
  3480. (native-inputs
  3481. `(("texlive" ,(texlive-updmap.cfg (list texlive-booktabs
  3482. texlive-lm
  3483. texlive-siunitx
  3484. texlive-standalone
  3485. texlive-xcolor
  3486. texlive-fonts-iwona)))
  3487. ("pkg-config" ,pkg-config)))
  3488. (propagated-inputs
  3489. `(("guile-lib" ,guile2.2-lib)))
  3490. (home-page "https://www.gnu.org/software/guile-cv/")
  3491. (synopsis "Computer vision library for Guile")
  3492. (description "Guile-CV is a Computer Vision functional programming library
  3493. for the Guile Scheme language. It is based on Vigra (Vision with Generic
  3494. Algorithms), a C++ image processing and analysis library. Guile-CV contains
  3495. bindings to Vigra C (a C wrapper to most of the Vigra functionality) and is
  3496. enriched with pure Guile Scheme algorithms, all accessible through a nice,
  3497. clean and easy to use high level API.")
  3498. (license license:gpl3+)))
  3499. (define-public guile-ffi-fftw
  3500. (let ((commit "294ad9e7491dcb40026d2fec9be2af05263be1c0")
  3501. (revision "2"))
  3502. (package
  3503. (name "guile-ffi-fftw")
  3504. (version (git-version "0" revision commit))
  3505. (source (origin
  3506. (method git-fetch)
  3507. (uri (git-reference
  3508. (url "https://github.com/lloda/guile-ffi-fftw")
  3509. (commit commit)))
  3510. (file-name (git-file-name "guile-ffi-fftw" version))
  3511. (sha256
  3512. (base32
  3513. "08j40a5p6a8pgvhffmzb5rfdnrav2mksy3gfjkdqy93jfj1z5afg"))))
  3514. (build-system guile-build-system)
  3515. (arguments
  3516. `(#:source-directory "mod"
  3517. #:phases
  3518. (modify-phases %standard-phases
  3519. (add-after 'unpack 'prepare-build
  3520. (lambda* (#:key inputs #:allow-other-keys)
  3521. (substitute* "mod/ffi/fftw.scm"
  3522. (("\\(getenv \"GUILE_FFI_FFTW_LIBFFTW3_PATH\"\\)")
  3523. (format #f "\"~a/lib\"" (assoc-ref inputs "fftw"))))
  3524. #t))
  3525. (add-after 'build 'check
  3526. (lambda _
  3527. (invoke "guile" "-L" "mod"
  3528. "-s" "test/test-ffi-fftw.scm"))))))
  3529. (inputs
  3530. `(("fftw" ,fftw)
  3531. ("guile" ,guile-2.2)))
  3532. (home-page "https://github.com/lloda/guile-ffi-fftw/")
  3533. (synopsis "Access FFTW through Guile's FFI")
  3534. (description "This is a minimal set of Guile FFI bindings for the FFTW
  3535. library's ‘guru interface’. It provides two functions: @code{fftw-dft! rank
  3536. sign in out} and @code{fftw-dft rank sign in}. These bindings being minimal,
  3537. there is no support for computing & reusing plans, or split r/i transforms, or
  3538. anything other than straight complex DFTs.")
  3539. (license license:lgpl3+))))
  3540. (define-public srfi-64-driver
  3541. (package
  3542. (name "srfi-64-driver")
  3543. (version "0.1")
  3544. (source (origin
  3545. (method url-fetch)
  3546. (uri (string-append "https://files.ngyro.com/srfi-64-driver/"
  3547. "srfi-64-driver-" version ".tar.gz"))
  3548. (sha256
  3549. (base32
  3550. "188b6mb7sjjg0a8zldikinglf40ky8mg8rwh5768gjmch6gkk3ph"))))
  3551. (build-system gnu-build-system)
  3552. (arguments
  3553. `(#:tests? #f
  3554. #:phases
  3555. (modify-phases %standard-phases
  3556. (delete 'build))))
  3557. (native-inputs
  3558. `(("pkg-config" ,pkg-config)))
  3559. (inputs
  3560. `(("guile" ,guile-2.2)))
  3561. (home-page "https://ngyro.com/software/srfi-64-driver.html")
  3562. (synopsis "Automake test driver for SRFI 64 test suites")
  3563. (description "This package provides an Automake test driver that can
  3564. run SRFI 64 test suites. It gives Automake insight into the individual
  3565. tests being run, resulting clearer and more specific output.")
  3566. (license license:gpl3+)))
  3567. (define-public guile-semver
  3568. (package
  3569. (name "guile-semver")
  3570. (version "0.1.1")
  3571. (source (origin
  3572. (method url-fetch)
  3573. (uri (string-append "https://files.ngyro.com/guile-semver/"
  3574. "guile-semver-" version ".tar.gz"))
  3575. (sha256
  3576. (base32
  3577. "109p4n39ln44cxvwdccf9kgb96qx54makvd2ir521ssz6wchjyag"))))
  3578. (build-system gnu-build-system)
  3579. (native-inputs
  3580. `(("pkg-config" ,pkg-config)))
  3581. (inputs
  3582. `(("guile" ,guile-3.0)))
  3583. (home-page "https://ngyro.com/software/guile-semver.html")
  3584. (synopsis "Semantic Versioning (SemVer) for Guile")
  3585. (description "This Guile library provides tools for reading,
  3586. comparing, and writing Semantic Versions. It also includes ranges in
  3587. the style of the Node Package Manager (NPM).")
  3588. (license license:gpl3+)))
  3589. (define-public guile3.0-semver
  3590. (deprecated-package "guile3.0-semver" guile-semver))
  3591. (define-public guile2.2-semver
  3592. (package
  3593. (inherit guile-semver)
  3594. (name "guile2.2-semver")
  3595. (inputs
  3596. `(("guile" ,guile-2.2)))))
  3597. (define-public guile-hashing
  3598. (package
  3599. (name "guile-hashing")
  3600. (version "1.2.0")
  3601. (home-page "https://github.com/weinholt/hashing")
  3602. (source (origin
  3603. (method git-fetch)
  3604. (uri (git-reference
  3605. (url home-page)
  3606. (commit (string-append "v" version))))
  3607. (file-name (git-file-name name version))
  3608. (sha256
  3609. (base32
  3610. "1362d3lmpv7slmv1zmr9wy8panq9sjr9787gc2hagd646mpsfpkl"))))
  3611. (build-system guile-build-system)
  3612. (arguments
  3613. `(#:modules ((guix build guile-build-system)
  3614. (guix build utils)
  3615. (srfi srfi-26)
  3616. (ice-9 ftw))
  3617. #:implicit-inputs? #f ;needs nothing but Guile
  3618. #:phases (modify-phases %standard-phases
  3619. (add-before 'build 'move-sls-files
  3620. (lambda _
  3621. ;; Move the source under hashing/ in order to match
  3622. ;; module names, and rename .sls files to .scm.
  3623. (define (target file)
  3624. (string-append "hashing/" file))
  3625. (define (sls->scm sls)
  3626. (string-append (string-drop-right sls 4)
  3627. ".scm"))
  3628. (mkdir "hashing")
  3629. (for-each (lambda (file)
  3630. (rename-file file (sls->scm file)))
  3631. (find-files "." "\\.sls$"))
  3632. (for-each (lambda (file)
  3633. (rename-file file (target file)))
  3634. (scandir "." (cut string-suffix? ".scm" <>)))
  3635. (rename-file "private" "hashing/private")
  3636. #t)))))
  3637. (native-inputs
  3638. `(("guile" ,guile-3.0)))
  3639. (synopsis "Cryprographic hash functions implemented in Scheme")
  3640. (description
  3641. "The @code{(hashing @dots{})} modules implement cryptographic hash
  3642. functions in pure R6RS Scheme: CRC, HMAC, MD5, SHA-1, and SHA-2 (SHA-256,
  3643. SHA-512).")
  3644. (license license:expat)))
  3645. (define-public guile2.2-hashing
  3646. (package
  3647. (inherit guile-hashing)
  3648. (name "guile2.2-hashing")
  3649. (native-inputs
  3650. `(("guile" ,guile-2.2)))))
  3651. (define-public guile3.0-hashing
  3652. (deprecated-package "guile3.0-hashing" guile-hashing))
  3653. (define-public guile-packrat
  3654. (package
  3655. (name "guile-packrat")
  3656. (version "0.1.1")
  3657. (home-page "https://github.com/weinholt/packrat")
  3658. (source (origin
  3659. (method git-fetch)
  3660. (uri (git-reference
  3661. (url home-page)
  3662. (commit (string-append "v" version))))
  3663. (file-name (git-file-name name version))
  3664. (sha256
  3665. (base32
  3666. "1aga17164fkhbgllqc7ni6fk5zl8mkmgkl5zcsy67x7ngpyalbby"))))
  3667. (build-system guile-build-system)
  3668. (arguments
  3669. `(#:implicit-inputs? #f ;needs nothing but Guile
  3670. #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
  3671. #:not-compiled-file-regexp "/extensible\\.scm$"
  3672. #:phases (modify-phases %standard-phases
  3673. (add-before 'build 'no-srfi-23
  3674. (lambda _
  3675. (substitute* "packrat.sls"
  3676. (("\\(srfi :23 error\\)")
  3677. (object->string '(only (guile) error))))
  3678. #t)))))
  3679. (native-inputs
  3680. `(("guile" ,guile-3.0)))
  3681. (synopsis "Packrat parser library in R6RS Scheme")
  3682. (description
  3683. "This is an R6RS Scheme adaptation of the
  3684. @uref{https://bford.info/packrat/, packrat parsing}. Packrat parsing is a
  3685. memoizing, backtracking, recursive-descent parsing technique that runs in time
  3686. and space linear in the size of the input text.")
  3687. (license license:expat)))
  3688. (define-public guile-ac-d-bus
  3689. (package
  3690. (name "guile-ac-d-bus")
  3691. (version "1.0.0-beta.0")
  3692. (home-page "https://gitlab.com/weinholt/ac-d-bus/")
  3693. (source (origin
  3694. (method git-fetch)
  3695. (uri (git-reference
  3696. (url home-page)
  3697. (commit (string-append "v" version))))
  3698. (file-name (git-file-name name version))
  3699. (sha256
  3700. (base32
  3701. "0rl809qimhgz6b0rixakb42r2l4g53jr09a2g0s1hxgab0blz0kb"))))
  3702. (build-system guile-build-system)
  3703. (arguments
  3704. `(#:implicit-inputs? #f ;needs nothing but Guile
  3705. #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
  3706. #:phases (modify-phases %standard-phases
  3707. (add-before 'build 'adjust-for-guile
  3708. (lambda _
  3709. ;; Adjust source file names for Guile.
  3710. (define (guile-sls->sls file)
  3711. (string-append (string-drop-right
  3712. file (string-length ".guile.sls"))
  3713. ".sls"))
  3714. ;; Remove files targeting other implementations:
  3715. ;; *.mosh.sls, etc.
  3716. (for-each delete-file
  3717. (find-files
  3718. "compat"
  3719. (lambda (file stat)
  3720. (not (string-contains file ".guile.")))))
  3721. ;; Rename *.guile.sls to *.sls so the ".guile" bit does
  3722. ;; not appear in .go file names.
  3723. (for-each (lambda (file)
  3724. (rename-file file (guile-sls->sls file)))
  3725. (find-files "compat" "\\.guile\\.sls"))
  3726. ;; Move directories under d-bus/ to match module names.
  3727. (mkdir "d-bus")
  3728. (for-each (lambda (directory)
  3729. (rename-file directory
  3730. (string-append "d-bus/"
  3731. directory)))
  3732. '("compat" "protocol"))
  3733. #t)))))
  3734. (native-inputs
  3735. `(("guile" ,guile-3.0)))
  3736. (propagated-inputs
  3737. `(("guile-packrat" ,guile-packrat)))
  3738. (synopsis "D-Bus protocol implementation in R6RS Scheme")
  3739. (description
  3740. "AC/D-Bus is an implementation of the D-Bus wire protocol. D-Bus is an
  3741. interprocess communication protocol popular on GNU/Linux systems to
  3742. communicate with a variety of services. Originally designed for desktop
  3743. environments, it is now used by programs like VLC media player, BlueZ,
  3744. NetworkManager, Pulseaudio, systemd (including logind and resolved), Polkit,
  3745. gnome-keyring, and many more.")
  3746. (license license:expat)))
  3747. (define-public guile-webutils
  3748. (let ((commit "8541904f761066dc9c27b1153e9a838be9a55299")
  3749. (revision "0"))
  3750. (package
  3751. (name "guile-webutils")
  3752. (version (git-version "0.1" revision commit))
  3753. (source (origin
  3754. (method git-fetch)
  3755. (uri (git-reference
  3756. (url "https://notabug.org/cwebber/guile-webutils.git")
  3757. (commit commit)))
  3758. (file-name (git-file-name name version))
  3759. (sha256
  3760. (base32
  3761. "1s9n3hbxd7lfpdi0x8wr0cfvlsf6g62ird9gbspxdrp5p05rbi64"))
  3762. (modules '((guix build utils)))
  3763. (snippet
  3764. '(begin
  3765. ;; Allow builds with Guile 3.0.
  3766. (substitute* "configure.ac"
  3767. (("2\\.2 2\\.0")
  3768. "3.0 2.2 2.0"))
  3769. #t))))
  3770. (build-system gnu-build-system)
  3771. (native-inputs
  3772. `(("autoconf" ,autoconf)
  3773. ("automake" ,automake)
  3774. ("pkg-config" ,pkg-config)
  3775. ("texinfo" ,texinfo)))
  3776. (inputs
  3777. `(("guile" ,guile-3.0)))
  3778. (propagated-inputs
  3779. `(("guile-irregex" ,guile-irregex)
  3780. ("guile-gcrypt" ,guile-gcrypt)))
  3781. (home-page "https://notabug.org/cwebber/guile-webutils")
  3782. (synopsis "Web application authoring utilities for Guile")
  3783. (description
  3784. "This package provides tooling to write web applications in Guile, such
  3785. as signed sessions, multipart message support, etc.")
  3786. (license license:gpl3+))))
  3787. (define-public guile2.2-webutils
  3788. (package
  3789. (inherit guile-webutils)
  3790. (name "guile2.2-webutils")
  3791. (inputs
  3792. `(("guile" ,guile-2.2)))
  3793. (propagated-inputs
  3794. `(("guile-irregex" ,guile2.2-irregex)
  3795. ("guile-gcrypt" ,guile2.2-gcrypt)))))
  3796. (define-public guile-lens
  3797. (let ((commit "14b15d07255f9d3f55d40a3b750d13c9ee3a154f")
  3798. (revision "0"))
  3799. (package
  3800. (name "guile-lens")
  3801. (version (git-version "0.1" revision commit))
  3802. (source (origin
  3803. (method git-fetch)
  3804. (uri (git-reference
  3805. (url "https://gitlab.com/a-sassmannshausen/guile-lens.git")
  3806. (commit commit)))
  3807. (file-name (git-file-name name version))
  3808. (sha256
  3809. (base32
  3810. "0w8jzqyla56yrgj7acsgd4nspyir6zgp3vgxid4xmwhg9wmf1ida"))))
  3811. (build-system gnu-build-system)
  3812. (arguments
  3813. '(#:phases
  3814. (modify-phases %standard-phases
  3815. (add-after 'unpack 'run-hall
  3816. (lambda _
  3817. (setenv "HOME" "/tmp") ; for ~/.hall
  3818. (invoke "hall" "dist" "-x"))))))
  3819. (native-inputs
  3820. `(("autoconf" ,autoconf)
  3821. ("automake" ,automake)
  3822. ("guile" ,guile-3.0)
  3823. ("guile-hall" ,guile-hall)
  3824. ("pkg-config" ,pkg-config)
  3825. ("texinfo" ,texinfo)))
  3826. (home-page "https://gitlab.com/a-sassmannshausen/guile-lens.git")
  3827. (synopsis "Composable lenses for data structures in Guile")
  3828. (description
  3829. "Guile-Lens is a library implementing lenses in Guile. The library is
  3830. currently a re-implementation of the lentes library for Clojure. Lenses
  3831. provide composable procedures, which can be used to focus, apply functions
  3832. over, or update a value in arbitrary data structures.")
  3833. (license license:gpl3+))))
  3834. (define-public guile2.2-lens
  3835. (package
  3836. (inherit guile-lens)
  3837. (name "guile2.2-lens")
  3838. (native-inputs
  3839. `(("guile" ,guile-2.2)
  3840. ,@(alist-delete "guile" (package-native-inputs guile-lens))))))
  3841. (define-public guile-xapian
  3842. (package
  3843. (name "guile-xapian")
  3844. (version "0.1.0")
  3845. (home-page "https://git.systemreboot.net/guile-xapian")
  3846. (source
  3847. (origin
  3848. (method git-fetch)
  3849. (uri (git-reference (url home-page)
  3850. (commit (string-append "v" version))))
  3851. (file-name (git-file-name name version))
  3852. (sha256
  3853. (base32
  3854. "16k61f1jn3g48jaf3730b9l0izr5j933jzyri73nmcnjd09gm35i"))))
  3855. (build-system gnu-build-system)
  3856. (arguments
  3857. '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
  3858. (inputs
  3859. `(("guile" ,guile-3.0)
  3860. ("xapian" ,xapian)
  3861. ("zlib" ,zlib)))
  3862. (native-inputs
  3863. `(("autoconf" ,autoconf)
  3864. ("autoconf-archive" ,autoconf-archive)
  3865. ("automake" ,automake)
  3866. ("libtool" ,libtool)
  3867. ("pkg-config" ,pkg-config)
  3868. ("swig" ,swig)))
  3869. (synopsis "Guile bindings for Xapian")
  3870. (description "@code{guile-xapian} provides Guile bindings for Xapian, a
  3871. search engine library. Xapian is a highly adaptable toolkit which allows
  3872. developers to easily add advanced indexing and search facilities to their own
  3873. applications. It has built-in support for several families of weighting
  3874. models and also supports a rich set of boolean query operators.")
  3875. (license license:gpl2+)))
  3876. (define-public guile2.2-xapian
  3877. (package
  3878. (inherit guile-xapian)
  3879. (name "guile2.2-xapian")
  3880. (inputs
  3881. `(("guile" ,guile-2.2)
  3882. ,@(alist-delete "guile" (package-inputs guile-xapian))))))
  3883. (define-public guile3.0-xapian
  3884. (deprecated-package "guile3.0-xapian" guile-xapian))
  3885. (define-public guile-torrent
  3886. (package
  3887. (name "guile-torrent")
  3888. (version "0.1.3")
  3889. (source (origin (method git-fetch)
  3890. (uri (git-reference
  3891. (url
  3892. "https://github.com/o-nly/torrent")
  3893. (commit version)))
  3894. (file-name (git-file-name name version))
  3895. (sha256
  3896. (base32
  3897. "1yiagi55ncq1x7s9n7salzywjm4l96y3n7y3s47a9anvz87mrmim"))))
  3898. (build-system gnu-build-system)
  3899. (native-inputs
  3900. `(("autoconf" ,autoconf)
  3901. ("automake" ,automake)
  3902. ("guile" ,guile-2.2)
  3903. ("texinfo" ,texinfo)
  3904. ("perl" ,perl)
  3905. ("pkg-config" ,pkg-config)))
  3906. (propagated-inputs
  3907. `(("guile-gcrypt" ,guile-gcrypt)))
  3908. (home-page "https://github.com/o-nly/torrent")
  3909. (synopsis "Torrent library for GNU Guile")
  3910. (description "This package provides facilities for working with
  3911. @code{.torrent} or metainfo files. Implements a bencode reader and writer
  3912. according to Bitorrent BEP003.")
  3913. (license license:gpl3+)))
  3914. (define-public guile-irc
  3915. (let ((commit "375d3bde9c6ae7ccc9d7cc65817966b6fda8f26a")
  3916. (revision "0"))
  3917. (package
  3918. (name "guile-irc")
  3919. (version (git-version "0.3.0" revision commit))
  3920. (source (origin
  3921. (method git-fetch)
  3922. (uri (git-reference
  3923. (url "https://github.com/rekado/guile-irc")
  3924. (commit commit)))
  3925. (file-name (git-file-name name version))
  3926. (sha256
  3927. (base32
  3928. "113lcckcywrz9060w1c3fnvr8d7crdsjgsv4h47hgmr1slgadl4y"))))
  3929. (build-system gnu-build-system)
  3930. (arguments
  3931. `(#:configure-flags '("--enable-gnutls=yes")))
  3932. (native-inputs
  3933. `(("autoconf" ,autoconf)
  3934. ("automake" ,automake)
  3935. ("texinfo" ,texinfo)))
  3936. (inputs
  3937. `(("gnutls" ,gnutls)
  3938. ("guile" ,guile-3.0)))
  3939. (home-page "https://github.com/rekado/guile-irc")
  3940. (synopsis "IRC library for Guile")
  3941. (description "This package provides a Guile library for @dfn{Internet
  3942. Relay Chat} (IRC).")
  3943. ;; Some file headers incorrectly say LGPLv2+.
  3944. (license license:lgpl2.1+))))
  3945. (define-public guile-websocket
  3946. (let ((commit "d17878f6c12c10a49196bb08f737f36b11e61c31")
  3947. (revision "1"))
  3948. (package
  3949. (name "guile-websocket")
  3950. (version (git-version "0.1" revision commit))
  3951. (source
  3952. (origin
  3953. (method git-fetch)
  3954. (uri (git-reference
  3955. (url "https://git.dthompson.us/guile-websocket.git")
  3956. (commit commit)))
  3957. (file-name (git-file-name name version))
  3958. (sha256
  3959. (base32
  3960. "0kcmhjyb6amm4b9k4ng0r5s38m041mvh5jgmjbz6ichz39k255v7"))))
  3961. (build-system gnu-build-system)
  3962. (arguments
  3963. '(#:make-flags
  3964. '("GUILE_AUTO_COMPILE=0")))
  3965. (native-inputs
  3966. `(("autoconf" ,autoconf)
  3967. ("automake" ,automake)
  3968. ("pkg-config" ,pkg-config)))
  3969. (inputs
  3970. `(("guile" ,guile-3.0)))
  3971. (synopsis "Websocket server/client for Guile")
  3972. (description "Guile-websocket provides an implementation of the
  3973. WebSocket protocol as defined by RFC 6455.")
  3974. (home-page "https://git.dthompson.us/guile-websocket.git")
  3975. (license license:lgpl3+))))
  3976. (define-public guile3.0-websocket
  3977. (deprecated-package "guile3.0-websocket" guile-websocket))
  3978. (define-public guile-rdf
  3979. (package
  3980. (name "guile-rdf")
  3981. (version "1.0")
  3982. (source
  3983. (origin
  3984. (method git-fetch)
  3985. (uri (git-reference
  3986. (url "https://framagit.org/tyreunom/guile-rdf")
  3987. (commit version)))
  3988. (file-name (git-file-name name version))
  3989. (sha256
  3990. (base32
  3991. "0dwn3app1fscbpmpgvjs5jy1y0gwy3j5gdx8br79af6a88zjlnqf"))))
  3992. (build-system gnu-build-system)
  3993. (arguments
  3994. `(#:tests? #f)); tests require network
  3995. (inputs
  3996. `(("guile" ,guile-3.0)))
  3997. (native-inputs
  3998. `(("automake" ,automake)
  3999. ("autoconf" ,autoconf)
  4000. ("pkg-config" ,pkg-config)
  4001. ("texinfo" ,texinfo)))
  4002. (home-page "https://framagit.org/tyreunom/guile-rdf")
  4003. (synopsis "Guile implementation of the RDF abstract and concrete syntaxes")
  4004. (description "Guile RDF is an implementation of the RDF (Resource Description
  4005. Framework) format defined by the W3C for GNU Guile. RDF structures include
  4006. triples (facts with a subject, a predicate and an object), graphs which are
  4007. sets of triples, and datasets, which are collections of graphs.
  4008. RDF specifications include the specification of concrete syntaxes and of
  4009. operations on graphs. This library implements some basic functionalities,
  4010. such as parsing and producing turtle and nquads syntax, as well as
  4011. manipulating graphs and datasets.")
  4012. (license license:gpl3+)))
  4013. (define-public guile-jsonld
  4014. (package
  4015. (name "guile-jsonld")
  4016. (version "1.0.2")
  4017. (source
  4018. (origin
  4019. (method git-fetch)
  4020. (uri (git-reference
  4021. (url "https://framagit.org/tyreunom/guile-jsonld")
  4022. (commit version)))
  4023. (file-name (git-file-name name version))
  4024. (sha256
  4025. (base32
  4026. "1ryyvh71899z2inivqglb8d78zzp1sd0wv9a56kvcmrxf1966z6r"))))
  4027. (build-system gnu-build-system)
  4028. (arguments
  4029. `(#:tests? #f)); require network
  4030. (propagated-inputs
  4031. `(("guile-gnutls" ,gnutls)
  4032. ("guile-json" ,guile-json-4)
  4033. ("guile-rdf" ,guile-rdf)))
  4034. (inputs
  4035. `(("guile" ,guile-3.0)))
  4036. (native-inputs
  4037. `(("automake" ,automake)
  4038. ("autoconf" ,autoconf)
  4039. ("pkg-config" ,pkg-config)
  4040. ("texinfo" ,texinfo)))
  4041. (home-page "https://framagit.org/tyreunom/guile-jsonld")
  4042. (synopsis "Guile implementation of the JsonLD API specification")
  4043. (description "Guile JsonLD is an implementation of the JsonLD (Json for
  4044. Linked Data) API defined by the W3C for GNU Guile. It allows you to express links
  4045. between data, in a way that is very similar to WikiData or RDF for instance.
  4046. An object can have relations (in the form of an IRI) that relates it to one or
  4047. more objects or strings, represented by a Json object or an IRI.")
  4048. (license license:gpl3+)))
  4049. (define-public guile-struct-pack
  4050. (package
  4051. (name "guile-struct-pack")
  4052. (version "1.1.1")
  4053. (source
  4054. (origin
  4055. (method git-fetch)
  4056. (uri (git-reference
  4057. (url "https://github.com/weinholt/struct-pack")
  4058. (commit (string-append "v" version))))
  4059. (file-name (git-file-name name version))
  4060. (sha256
  4061. (base32 "0hd72m821pahjphzyjn26i55542v8makr55xzjll2cycja4wsbc1"))))
  4062. (build-system guile-build-system)
  4063. (arguments
  4064. `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
  4065. #:modules ((guix build guile-build-system)
  4066. (guix build utils)
  4067. (srfi srfi-26)
  4068. (ice-9 ftw))
  4069. #:phases (modify-phases %standard-phases
  4070. (add-before 'build 'move-sls-files
  4071. (lambda _
  4072. ;; Move files under a struct/ directory to reflect the
  4073. ;; module hierarchy.
  4074. (define dst-folder "struct")
  4075. (define (target file)
  4076. (string-append dst-folder "/" file))
  4077. (define files
  4078. (scandir "." (negate (cut member <> '("." "..")))))
  4079. (mkdir dst-folder)
  4080. (for-each (lambda (file)
  4081. (rename-file file (target file)))
  4082. files)
  4083. #t)))))
  4084. (native-inputs
  4085. `(("guile" ,guile-3.0)))
  4086. (home-page "https://github.com/weinholt/struct-pack")
  4087. (synopsis "R6RS library for working with packed byte structures")
  4088. (description
  4089. "This is an R6RS library for working with packed byte structures. It is
  4090. similar to struct in Python or pack and unpack in Perl.")
  4091. (license license:expat)))
  4092. (define-public guile-machine-code
  4093. (package
  4094. (name "guile-machine-code")
  4095. (version "2.1.0")
  4096. (source
  4097. (origin
  4098. (method git-fetch)
  4099. (uri (git-reference
  4100. (url "https://github.com/weinholt/machine-code")
  4101. (commit (string-append "v" version))))
  4102. (file-name (git-file-name name version))
  4103. (sha256
  4104. (base32 "0wzj3caj2jypzyjqfkfqkvr3kkbjabsnhldv9kvnx9w9qnria5yd"))))
  4105. (build-system guile-build-system)
  4106. (arguments
  4107. `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
  4108. #:modules ((guix build guile-build-system)
  4109. (guix build utils)
  4110. (srfi srfi-26)
  4111. (ice-9 ftw))
  4112. #:phases (modify-phases %standard-phases
  4113. (add-before 'build 'move-sls-files
  4114. (lambda _
  4115. ;; Move files under a struct/ directory to reflect the
  4116. ;; module hierarchy.
  4117. (define dst-folder "machine-code")
  4118. (define (target file)
  4119. (string-append dst-folder "/" file))
  4120. (define files
  4121. (scandir "." (negate (cut member <> '("." "..")))))
  4122. (mkdir dst-folder)
  4123. (for-each (lambda (file)
  4124. (rename-file file (target file)))
  4125. files)
  4126. #t)))))
  4127. (native-inputs
  4128. `(("guile" ,guile-3.0)))
  4129. (propagated-inputs
  4130. `(("guile-struct-pack" ,guile-struct-pack)))
  4131. (home-page "https://github.com/weinholt/machine-code")
  4132. (synopsis "Tools that relate to machine code and object formats")
  4133. (description
  4134. "This project is about the development of tools that relate to machine
  4135. code and object formats; for all architectures. Here you'll find libraries
  4136. for working with binary code: assembly, disassembly, instruction tables,
  4137. object formats and related areas.")
  4138. (license license:expat)))
  4139. (define-public guile-laesare
  4140. (package
  4141. (name "guile-laesare")
  4142. (version "1.0.0")
  4143. (source
  4144. (origin
  4145. (method git-fetch)
  4146. (uri (git-reference
  4147. (url "https://github.com/weinholt/laesare")
  4148. (commit (string-append "v" version))))
  4149. (file-name (git-file-name name version))
  4150. (sha256
  4151. (base32 "15q619gzw717r8r1ql23zfdaibpnp9qqs96032vdc3rj74msxc92"))))
  4152. (build-system guile-build-system)
  4153. (arguments
  4154. `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
  4155. #:modules ((guix build guile-build-system)
  4156. (guix build utils)
  4157. (srfi srfi-26)
  4158. (ice-9 ftw))
  4159. #:phases (modify-phases %standard-phases
  4160. (add-before 'build 'move-sls-files
  4161. (lambda _
  4162. ;; Move files under a laesare directory to reflect
  4163. ;; the module hierarchy.
  4164. (define dst-folder "laesare")
  4165. (define (target file)
  4166. (string-append dst-folder "/" file))
  4167. (define files
  4168. (scandir "." (negate (cut member <> '("." "..")))))
  4169. (mkdir dst-folder)
  4170. (for-each (lambda (file)
  4171. (rename-file file (target file)))
  4172. files)
  4173. #t)))))
  4174. (native-inputs
  4175. `(("guile" ,guile-3.0)))
  4176. (home-page "https://github.com/weinholt/laesare")
  4177. (synopsis "R6RS Scheme library that provides a reader")
  4178. (description
  4179. "This is an R6RS Scheme library that provides a reader with some extra
  4180. features not found in the standard read procedure such as a compatible mode
  4181. with support for other RnRS standards and a tolerant mode that continues on
  4182. errors.")
  4183. (license license:expat)))
  4184. (define-public guile-avahi
  4185. (let ((commit "6d43caf64f672a9694bf6c98bbf7a734f17a51e8")
  4186. (revision "1"))
  4187. (package
  4188. (name "guile-avahi")
  4189. (version (git-version "0.4.0" revision commit))
  4190. (source (origin
  4191. (method git-fetch)
  4192. (uri (git-reference
  4193. (url "git://git.sv.gnu.org/guile-avahi.git")
  4194. (commit commit)))
  4195. (file-name (git-file-name name version))
  4196. (sha256
  4197. (base32
  4198. "0fvrf8x22yvc71180hd3xkhspg9yvadi0pbv8shzlsaxqncwy1m9"))
  4199. (modules '((guix build utils)))))
  4200. (build-system gnu-build-system)
  4201. (arguments
  4202. `(#:modules (((guix build guile-build-system)
  4203. #:select (target-guile-effective-version))
  4204. ,@%gnu-build-system-modules)
  4205. #:imported-modules ((guix build guile-build-system)
  4206. ,@%gnu-build-system-modules)
  4207. #:make-flags
  4208. '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
  4209. ;; Parallel builds fail on powerpc64le-linux.
  4210. ;; See https://lists.nongnu.org/archive/html/guile-avahi-bugs/2021-01/msg00000.html
  4211. #:parallel-build? #f
  4212. #:phases
  4213. (modify-phases %standard-phases
  4214. (add-before 'check 'fix-guile-avahi-file-name
  4215. (lambda* (#:key outputs #:allow-other-keys)
  4216. (with-directory-excursion "src"
  4217. (invoke "make" "install"
  4218. "-j" (number->string
  4219. (parallel-job-count))))
  4220. (let* ((out (assoc-ref outputs "out"))
  4221. (files (find-files "modules" ".scm")))
  4222. (substitute* files
  4223. (("\"guile-avahi-v-0\"")
  4224. (format #f "\"~a/lib/guile/~a/extensions/guile-avahi-v-0\""
  4225. out (target-guile-effective-version))))
  4226. #t))))))
  4227. (inputs
  4228. `(("guile" ,guile-3.0)
  4229. ("avahi" ,avahi)))
  4230. (native-inputs
  4231. `(("autoconf" ,autoconf)
  4232. ("automake" ,automake)
  4233. ("libtool" ,libtool)
  4234. ("pkg-config" ,pkg-config)
  4235. ("texinfo" ,texinfo)))
  4236. (synopsis "Guile bindings to Avahi")
  4237. (description
  4238. "This package provides bindings for Avahi. It allows programmers to
  4239. use functionalities of the Avahi client library from Guile Scheme programs.
  4240. Avahi itself is an implementation of multicast DNS (mDNS) and DNS Service
  4241. Discovery (DNS-SD).")
  4242. (home-page "https://www.nongnu.org/guile-avahi/")
  4243. (license license:lgpl3+))))
  4244. (define-public guile-mkdir-p
  4245. (package
  4246. (name "guile-mkdir-p")
  4247. (version "1.0.1")
  4248. (source
  4249. (origin
  4250. (method git-fetch)
  4251. (uri (git-reference
  4252. (url "https://code.divoplade.fr/mkdir-p.git")
  4253. (commit (string-append "v" version))))
  4254. (sha256
  4255. (base32 "01k20rjcv6p0spmw8ls776aar6bfw0jxw46d2n12w0cb2p79xjv8"))
  4256. (file-name (git-file-name name version))
  4257. (snippet
  4258. `(begin
  4259. (with-output-to-file ".tarball-version"
  4260. (lambda _ (format #t "~a~%" ,version)))
  4261. #t))))
  4262. (build-system gnu-build-system)
  4263. (arguments `())
  4264. (native-inputs
  4265. `(("guile" ,guile-3.0)
  4266. ("texinfo" ,texinfo)
  4267. ("autoconf" ,autoconf)
  4268. ("autoconf-archive" ,autoconf-archive)
  4269. ("automake" ,automake)
  4270. ("pkg-config" ,pkg-config)
  4271. ("gettext" ,gettext-minimal)))
  4272. (inputs `(("guile" ,guile-3.0)))
  4273. (synopsis "Implementation of a recursive @code{mkdir} for Guile")
  4274. (description
  4275. "This package provides within the @code{(mkdir-p)} module the
  4276. @code{mkdir-p} function that tries to create the chain of directories
  4277. recursively. It also provides new versions of @code{open-output-file},
  4278. @code{call-with-output-file} and @code{with-output-to-file} to create the
  4279. directory of its argument if it does not exist.")
  4280. (home-page "https://mkdir-p.divoplade.fr")
  4281. (license license:asl2.0)))
  4282. (define-public guile-jwt
  4283. (package
  4284. (name "guile-jwt")
  4285. (version "0.2.0")
  4286. (source
  4287. (origin
  4288. (method git-fetch)
  4289. (uri (git-reference
  4290. (url "https://github.com/aconchillo/guile-jwt")
  4291. (commit version)))
  4292. (file-name (git-file-name name version))
  4293. (sha256
  4294. (base32
  4295. "1p8sapiv5im18rjnzc8xnw6y7dr661rycf9g10z5ww0dl4rfz3z1"))))
  4296. (build-system gnu-build-system)
  4297. (native-inputs
  4298. `(("autoconf" ,autoconf)
  4299. ("automake" ,automake)
  4300. ("pkg-config" ,pkg-config)))
  4301. (propagated-inputs
  4302. `(("guile-json" ,guile-json-4)))
  4303. (inputs
  4304. `(("guile" ,guile-3.0)))
  4305. (home-page "https://github.com/aconchillo/guile-jwt")
  4306. (synopsis "JSON Web Token library for Guile")
  4307. (description
  4308. "guile-jwt is a JSON Web Token module for Guile. JSON Web Tokens are an
  4309. open, industry standard (RFC 7519) method for representing claims securely
  4310. between two parties. guile-jwt allows you to decode, verify and generate
  4311. JWT. Supported algorithms: HS256, HS384, HS512.")
  4312. (license license:gpl3+)))
  4313. (define-public guile-sodium
  4314. (package
  4315. (name "guile-sodium")
  4316. (version "0.1.0")
  4317. (source
  4318. (origin
  4319. (method git-fetch)
  4320. (uri (git-reference
  4321. (url "https://inqlab.net/git/guile-sodium.git")
  4322. (commit (string-append "v" version))))
  4323. (file-name (git-file-name name version))
  4324. (sha256 (base32 "189jsj87hycs57a54x0b9lifwvhr63nypb9vfxdrq7rwrpcvi5f8"))))
  4325. (build-system gnu-build-system)
  4326. (arguments `())
  4327. (native-inputs
  4328. `(("autoconf" ,autoconf)
  4329. ("automake" ,automake)
  4330. ("pkg-config" ,pkg-config)
  4331. ("texinfo" ,texinfo)))
  4332. (inputs `(("guile" ,guile-3.0)))
  4333. (propagated-inputs `(("libsodium" ,libsodium)))
  4334. (synopsis "Guile bindings to the libsodium cryptographic library")
  4335. (description
  4336. "This package provides Guile bindings to the libsodium cryptographic library
  4337. which provides core cryptographic primitives needed to build higher-level
  4338. tools.")
  4339. (home-page "https://inqlab.net/git/guile-sodium.git")
  4340. (license license:gpl3+)))
  4341. (define-public guile-eris
  4342. (package
  4343. (name "guile-eris")
  4344. (version "0.2.0")
  4345. (source
  4346. (origin
  4347. (method git-fetch)
  4348. (uri (git-reference
  4349. (url "https://inqlab.net/git/eris.git")
  4350. (commit (string-append "v" version))))
  4351. (file-name (git-file-name name version))
  4352. (sha256 (base32 "1ijglmwkdy1l87gj429qfjis0v8b1zlxhbyfhx5za8664h68nqka"))))
  4353. (build-system gnu-build-system)
  4354. (arguments '())
  4355. (native-inputs
  4356. `(("autoconf" ,autoconf)
  4357. ("automake" ,automake)
  4358. ("pkg-config" ,pkg-config)
  4359. ("texinfo" ,texinfo)
  4360. ;; test dependency
  4361. ("guile-srfi-180" ,guile-srfi-180)))
  4362. (inputs `(("guile" ,guile-3.0)))
  4363. (propagated-inputs
  4364. `(("guile-sodium" ,guile-sodium)))
  4365. (synopsis "Guile implementation of the Encoding for Robust Immutable Storage (ERIS)")
  4366. (description
  4367. "Guile-ERIS is the reference implementation of the Encoding for Robust
  4368. Immutable Storage (ERIS). ERIS allows arbitrary content to be encoded into
  4369. uniformly sized, encrypted blocks that can be reassembled using a short
  4370. read-capability.")
  4371. (home-page "https://inqlab.net/git/eris.git")
  4372. (license license:gpl3+)))
  4373. (define-public guile-r6rs-protobuf
  4374. (package
  4375. (name "guile-r6rs-protobuf")
  4376. (version "0.9")
  4377. (source
  4378. (origin
  4379. (method git-fetch)
  4380. (uri (git-reference
  4381. (url "https://gitlab.com/joolean/r6rs-protobuf")
  4382. (commit (string-append "v" version))))
  4383. (file-name (git-file-name name version))
  4384. (sha256
  4385. (base32
  4386. "1xmn7jlr1xiqgd35klq910p1bnil1iwdvqxkjr3zzml3spy8p2aa"))))
  4387. (build-system guile-build-system)
  4388. (arguments
  4389. `(#:compile-flags '("--r6rs")))
  4390. (inputs
  4391. `(("guile" ,guile-3.0)))
  4392. (home-page "https://gitlab.com/joolean/r6rs-protobuf/")
  4393. (synopsis "Scheme implementation of Protocol Buffers")
  4394. (description
  4395. "This project provides a pure Scheme implementation of Protocol Buffers,
  4396. including parsing and code generation.")
  4397. (license license:gpl3+)))
  4398. (define-public guile-shapefile
  4399. (package
  4400. (name "guile-shapefile")
  4401. (version "0.1.2")
  4402. (source
  4403. (origin
  4404. (method git-fetch)
  4405. (uri (git-reference
  4406. (url "https://github.com/HugoNikanor/guile-shapefile")
  4407. (commit (string-append "v" version))))
  4408. (file-name (git-file-name name version))
  4409. (sha256
  4410. (base32
  4411. "1zvrpc8bshw9w0vhdpmhv00j07mzsdyg2f9hfabr83v08zhfi8ml"))))
  4412. (build-system guile-build-system)
  4413. (arguments
  4414. `(#:phases
  4415. (modify-phases %standard-phases
  4416. (add-after 'unpack 'delete-pre-generated-docs
  4417. (lambda _
  4418. (delete-file-recursively "docs")
  4419. #t))
  4420. (add-after 'install 'install-info-documentation
  4421. (lambda* (#:key outputs #:allow-other-keys)
  4422. (let* ((share (string-append (assoc-ref outputs "out") "/share"))
  4423. (doc (string-append share "/doc/" ,name "-" ,version))
  4424. (info (string-append share "/info/"))
  4425. (makeinfo (string-append (assoc-ref %build-inputs "texinfo")
  4426. "/bin/makeinfo")))
  4427. (invoke makeinfo "guile-shapefile.texi" "-o" info)
  4428. #t))))))
  4429. (inputs
  4430. `(("guile" ,guile-3.0)))
  4431. (native-inputs
  4432. `(("texinfo" ,texinfo)))
  4433. (home-page "https://github.com/HugoNikanor/guile-shapefile")
  4434. (synopsis "Parse shapefiles in Guile")
  4435. (description
  4436. "Guile Shapefile is a Guile library for reading shapefiles.")
  4437. (license license:expat)))
  4438. (define-public guile-drmaa
  4439. (package
  4440. (name "guile-drmaa")
  4441. (version "0.1.0")
  4442. (source
  4443. (origin
  4444. (method git-fetch)
  4445. (uri (git-reference
  4446. (url "https://git.elephly.net/software/guile-drmaa.git")
  4447. (commit version)))
  4448. (file-name (git-file-name name version))
  4449. (sha256
  4450. (base32
  4451. "1m2x62n3x5hi5vnsvv2zgqhgpzrfq7r5095fzzjd1aaybi9i9igg"))))
  4452. (build-system gnu-build-system)
  4453. (native-inputs
  4454. `(("autoconf" ,autoconf)
  4455. ("automake" ,automake)
  4456. ("pkg-config" ,pkg-config)
  4457. ("texinfo" ,texinfo)
  4458. ("sed" ,sed)))
  4459. (inputs
  4460. `(("guile" ,guile-3.0)))
  4461. (propagated-inputs
  4462. `(("guile-bytestructures" ,guile-bytestructures)
  4463. ("nyacc" ,nyacc)))
  4464. (home-page "https://git.elephly.net/software/guile-drmaa.git")
  4465. (synopsis "Guile bindings to DRMAA")
  4466. (description "This project provides Guile bindings to the DRMAA library
  4467. version 1. DRMAA is a resource management library implemented by HPC cluster
  4468. schedulers.")
  4469. (license license:gpl3+)))
  4470. (define-public guile-libyaml
  4471. (let ((commit "f5d33a6880e96571d3cb079ed7755ffc156cac46")
  4472. (revision "1"))
  4473. (package
  4474. (name "guile-libyaml")
  4475. (version (git-version "0" revision commit))
  4476. (source
  4477. (origin
  4478. (method git-fetch)
  4479. (uri (git-reference
  4480. (url "https://github.com/mwette/guile-libyaml")
  4481. (commit commit)))
  4482. (file-name (git-file-name name version))
  4483. (sha256
  4484. (base32
  4485. "12x91983fh1j39zy7kbk19acc1rqdh8515ddx1mh7l26j04k9wgq"))))
  4486. (build-system gnu-build-system)
  4487. (arguments
  4488. `(#:modules (((guix build guile-build-system)
  4489. #:prefix guile:)
  4490. ,@%gnu-build-system-modules)
  4491. #:imported-modules ((guix build guile-build-system)
  4492. ,@%gnu-build-system-modules)
  4493. #:tests? #false ; there are none
  4494. #:phases
  4495. (modify-phases %standard-phases
  4496. (delete 'configure)
  4497. (add-after 'unpack 'remove-unused-files
  4498. (lambda* (#:key inputs #:allow-other-keys)
  4499. (for-each delete-file
  4500. '("guix.scm" "demo1.yml" "demo1.scm"
  4501. "yaml/libyaml.scm"
  4502. ;; This file is mismatched with the generated FFI code.
  4503. "yaml/ffi-help-rt.scm"))
  4504. (copy-file (search-input-file
  4505. inputs "/share/guile/site/3.0/system/ffi-help-rt.scm")
  4506. "yaml/ffi-help-rt.scm")
  4507. (substitute* "yaml/ffi-help-rt.scm"
  4508. (("system ffi-help-rt") "yaml ffi-help-rt"))
  4509. #true))
  4510. (add-before 'build 'build-ffi
  4511. (lambda* (#:key inputs #:allow-other-keys)
  4512. (invoke "guild" "compile-ffi"
  4513. "--no-exec" ; allow us to patch the generated file
  4514. "yaml/libyaml.ffi")
  4515. (substitute* "yaml/libyaml.scm"
  4516. (("system ffi-help-rt") "yaml ffi-help-rt")
  4517. (("dynamic-link \"libyaml\"")
  4518. (format #false "dynamic-link \"~a/lib/libyaml\""
  4519. (assoc-ref inputs "libyaml"))))
  4520. #true))
  4521. (replace 'build
  4522. (assoc-ref guile:%standard-phases 'build))
  4523. (delete 'install))))
  4524. (inputs
  4525. `(("guile" ,guile-3.0)
  4526. ("libyaml" ,libyaml)))
  4527. (propagated-inputs
  4528. `(("guile-bytestructures" ,guile-bytestructures)))
  4529. (native-inputs
  4530. `(("nyacc" ,nyacc)))
  4531. (home-page "https://github.com/mwette/guile-libyaml")
  4532. (synopsis "Guile wrapper for libyaml")
  4533. (description
  4534. "This package provides a simple yaml module for Guile using the
  4535. ffi-helper from nyacc.")
  4536. (license license:lgpl3+))))
  4537. (define-public schmutz
  4538. (let ((commit "add24588c59552537b8f1316df99a0cdd62c221e")
  4539. (revision "1"))
  4540. (package
  4541. (name "schmutz")
  4542. (version (git-version "0" revision commit))
  4543. (source (origin
  4544. (method git-fetch)
  4545. (uri (git-reference
  4546. (url "https://github.com/arximboldi/schmutz")
  4547. (commit commit)))
  4548. (file-name (git-file-name name version))
  4549. (sha256
  4550. (base32
  4551. "1z3n61sj62lnn15mandvyrpjzli07rp9r62ypvgg3a8bvh37yc89"))))
  4552. (build-system cmake-build-system)
  4553. (arguments `(#:tests? #f))
  4554. (native-inputs
  4555. `(("pkg-config" ,pkg-config)))
  4556. (inputs
  4557. `(("guile" ,guile-2.2)))
  4558. (home-page "https://github.com/arximboldi/schmutz")
  4559. (synopsis "Bind C++ code to Scheme")
  4560. (description "Schmutz is a header-only library to declare Scheme bindings
  4561. for C++ code using a simple embedded DSL. Think of it as @code{Boost.Python}
  4562. or @code{LuaBind} but for Scheme.")
  4563. (license license:boost1.0))))
  4564. (define-public guile-cbor
  4565. (package
  4566. (name "guile-cbor")
  4567. (version "0.1.0")
  4568. (source
  4569. (origin
  4570. (method git-fetch)
  4571. (uri (git-reference
  4572. (url "https://inqlab.net/git/guile-cbor.git")
  4573. (commit (string-append "v" version))))
  4574. (file-name (git-file-name name version))
  4575. (sha256 (base32 "0bdqg3ifayf7m2j09lqrgdfprbdaa67azf09bcq9b4k71inxfnxl"))))
  4576. (build-system gnu-build-system)
  4577. (arguments `())
  4578. (native-inputs
  4579. `(("autoconf" ,autoconf)
  4580. ("automake" ,automake)
  4581. ("pkg-config" ,pkg-config)
  4582. ("texinfo" ,texinfo)))
  4583. (inputs `(("guile" ,guile-3.0)))
  4584. (synopsis "Guile implementation of CBOR")
  4585. (description
  4586. "The Concise Binary Object Representation (CBOR), as specified by RFC 8949, is
  4587. a binary data serialization format. CBOR is similar to JSON but serializes to
  4588. binary which is smaller and faster to generate and parse. This package provides
  4589. a Guile implementation of CBOR.")
  4590. (home-page "https://inqlab.net/git/guile-cbor.git")
  4591. (license license:gpl3+)))
  4592. (define-public guile-quickcheck
  4593. (package
  4594. (name "guile-quickcheck")
  4595. (version "0.1.0")
  4596. (source (origin
  4597. (method url-fetch)
  4598. (uri (string-append "https://files.ngyro.com/"
  4599. "guile-quickcheck/guile-quickcheck-"
  4600. version ".tar.gz"))
  4601. (sha256
  4602. (base32
  4603. "03mwi1l3354x52nar0zwhcm0x29yai9xjln4p4gbchwvx5dsr6fb"))))
  4604. (build-system gnu-build-system)
  4605. (native-inputs
  4606. `(("pkg-config" ,pkg-config)))
  4607. (inputs
  4608. `(("guile" ,guile-3.0)))
  4609. (home-page "https://ngyro.com/software/guile-quickcheck.html")
  4610. (synopsis "Randomized property-based testing for Guile")
  4611. (description "Guile-Quickcheck is a library for random testing of program
  4612. properties inspired by ghc-quickcheck. You can use it to express properties,
  4613. which functions should satisfy, as Scheme code and then check whether they hold
  4614. in a large number of randomly generated test cases.")
  4615. (license license:gpl3+)))
  4616. (define-public guile-fslib
  4617. (package
  4618. (name "guile-fslib")
  4619. (version "0.2.0")
  4620. (source
  4621. (origin
  4622. (method git-fetch)
  4623. (uri (git-reference
  4624. (url "https://notabug.org/ZelphirKaltstahl/guile-fslib/")
  4625. (commit version)))
  4626. (file-name (git-file-name name version))
  4627. (sha256
  4628. (base32
  4629. "118d84p443w7hrslv8hjyhgws631ia08mggiyklkmk0b9plfdsvz"))))
  4630. (build-system guile-build-system)
  4631. (inputs
  4632. `(("guile" ,guile-3.0)))
  4633. (home-page "https://notabug.org/ZelphirKaltstahl/guile-fslib")
  4634. (synopsis "Helper functions for working with locations in file systems")
  4635. (description
  4636. "This package contains helper functions for working with file system
  4637. locations.")
  4638. (license license:agpl3+)))
  4639. (define-public guile-netlink
  4640. (package
  4641. (name "guile-netlink")
  4642. (version "1.0.1")
  4643. (source
  4644. (origin
  4645. (method git-fetch)
  4646. (uri (git-reference
  4647. (url "https://git.lepiller.eu/git/guile-netlink")
  4648. (commit version)))
  4649. (file-name (git-file-name name version))
  4650. (sha256
  4651. (base32
  4652. "03zmsha2d7whlwb52gna83jdas9bqi18rq3sss7kkicv814qb35g"))))
  4653. (build-system gnu-build-system)
  4654. (arguments
  4655. `(#:tests? #f)); no tests
  4656. (inputs
  4657. `(("guile" ,guile-3.0)))
  4658. (native-inputs
  4659. `(("automake" ,automake)
  4660. ("autoconf" ,autoconf)
  4661. ("pkg-config" ,pkg-config)
  4662. ("texinfo" ,texinfo)))
  4663. (home-page "https://git.lepiller.eu/guile-netlink")
  4664. (synopsis "Netlink protocol implementation for Guile")
  4665. (description "Guile Netlink is a GNU Guile library providing an implementation
  4666. of the netlink protocol.
  4667. It provides a generic library for writing implementations of a netlink
  4668. protocol, a low-level rtnetlink implementation that uses that library and a
  4669. high-level API for network management that uses rtnetlink.")
  4670. (license license:gpl3+)))