admin.scm 193 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839
  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 © 2013 Cyril Roelandt <tipecaml@gmail.com>
  4. ;;; Copyright © 2014, 2015, 2016, 2018, 2019, 2020 Mark H Weaver <mhw@netris.org>
  5. ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2020, 2021 Eric Bavier <bavier@posteo.net>
  6. ;;; Copyright © 2015, 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
  7. ;;; Copyright © 2015 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
  8. ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
  9. ;;; Copyright © 2016, 2017, 2020 Leo Famulari <leo@famulari.name>
  10. ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
  11. ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
  12. ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
  13. ;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at>
  14. ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
  15. ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
  16. ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
  17. ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
  18. ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
  19. ;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
  20. ;;; Copyright © 2017 Christine Lemmer-Webber <cwebber@dustycloud.org>
  21. ;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
  22. ;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
  23. ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
  24. ;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
  25. ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
  26. ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
  27. ;;; Copyright © 2019,2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
  28. ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
  29. ;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
  30. ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
  31. ;;; Copyright © 2019, 2021 Guillaume Le Vaillant <glv@posteo.net>
  32. ;;; Copyright © 2019, 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com>
  33. ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
  34. ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
  35. ;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
  36. ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
  37. ;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
  38. ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
  39. ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
  40. ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
  41. ;;; Copyright © 2021 qblade <qblade@protonmail.com>
  42. ;;; Copyright © 2021 Hyunseok Kim <lasnesne@lagunposprasihopre.org>
  43. ;;; Copyright © 2021 David Larsson <david.larsson@selfhosted.xyz>
  44. ;;; Copyright © 2021 WinterHound <winterhound@yandex.com>
  45. ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
  46. ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
  47. ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
  48. ;;;
  49. ;;; This file is part of GNU Guix.
  50. ;;;
  51. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  52. ;;; under the terms of the GNU General Public License as published by
  53. ;;; the Free Software Foundation; either version 3 of the License, or (at
  54. ;;; your option) any later version.
  55. ;;;
  56. ;;; GNU Guix is distributed in the hope that it will be useful, but
  57. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  58. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  59. ;;; GNU General Public License for more details.
  60. ;;;
  61. ;;; You should have received a copy of the GNU General Public License
  62. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  63. (define-module (gnu packages admin)
  64. #:use-module (guix build-system cmake)
  65. #:use-module (guix build-system emacs)
  66. #:use-module (guix build-system glib-or-gtk)
  67. #:use-module (guix build-system gnu)
  68. #:use-module (guix build-system go)
  69. #:use-module (guix build-system meson)
  70. #:use-module (guix build-system perl)
  71. #:use-module (guix build-system python)
  72. #:use-module (guix build-system ruby)
  73. #:use-module (guix build-system trivial)
  74. #:use-module (guix download)
  75. #:use-module (guix git-download)
  76. #:use-module ((guix licenses) #:prefix license:)
  77. #:use-module (guix packages)
  78. #:use-module (guix utils)
  79. #:use-module (gnu packages)
  80. #:use-module (gnu packages algebra)
  81. #:use-module (gnu packages autogen)
  82. #:use-module (gnu packages autotools)
  83. #:use-module (gnu packages base)
  84. #:use-module (gnu packages bash)
  85. #:use-module (gnu packages bison)
  86. #:use-module (gnu packages boost)
  87. #:use-module (gnu packages c)
  88. #:use-module (gnu packages check)
  89. #:use-module (gnu packages compression)
  90. #:use-module (gnu packages cross-base)
  91. #:use-module (gnu packages crypto)
  92. #:use-module (gnu packages cryptsetup)
  93. #:use-module (gnu packages cyrus-sasl)
  94. #:use-module (gnu packages dns)
  95. #:use-module (gnu packages elf)
  96. #:use-module (gnu packages file)
  97. #:use-module (gnu packages flex)
  98. #:use-module (gnu packages gawk)
  99. #:use-module (gnu packages gettext)
  100. #:use-module (gnu packages gl)
  101. #:use-module (gnu packages glib)
  102. #:use-module (gnu packages gnome)
  103. #:use-module (gnu packages gnupg)
  104. #:use-module (gnu packages golang)
  105. #:use-module (gnu packages groff)
  106. #:use-module (gnu packages gtk)
  107. #:use-module (gnu packages guile)
  108. #:use-module (gnu packages hurd)
  109. #:use-module (gnu packages image)
  110. #:use-module (gnu packages imagemagick)
  111. #:use-module (gnu packages inkscape)
  112. #:use-module (gnu packages kerberos)
  113. #:use-module (gnu packages libbsd)
  114. #:use-module (gnu packages libftdi)
  115. #:use-module (gnu packages libunwind)
  116. #:use-module (gnu packages libusb)
  117. #:use-module (gnu packages linux)
  118. #:use-module (gnu packages lua)
  119. #:use-module (gnu packages mail)
  120. #:use-module (gnu packages man)
  121. #:use-module (gnu packages mcrypt)
  122. #:use-module (gnu packages mpi)
  123. #:use-module (gnu packages ncurses)
  124. #:use-module (gnu packages openldap)
  125. #:use-module (gnu packages patchutils)
  126. #:use-module (gnu packages pciutils)
  127. #:use-module (gnu packages pcre)
  128. #:use-module (gnu packages perl)
  129. #:use-module (gnu packages perl-check)
  130. #:use-module (gnu packages pkg-config)
  131. #:use-module (gnu packages popt)
  132. #:use-module (gnu packages python)
  133. #:use-module (gnu packages python-crypto)
  134. #:use-module (gnu packages python-web)
  135. #:use-module (gnu packages python-xyz)
  136. #:use-module (gnu packages qt)
  137. #:use-module (gnu packages readline)
  138. #:use-module (gnu packages ruby)
  139. #:use-module (gnu packages selinux)
  140. #:use-module (gnu packages serialization)
  141. #:use-module (gnu packages ssh)
  142. #:use-module (gnu packages sphinx)
  143. #:use-module (gnu packages tcl)
  144. #:use-module (gnu packages terminals)
  145. #:use-module (gnu packages texinfo)
  146. #:use-module (gnu packages time)
  147. #:use-module (gnu packages tls)
  148. #:use-module (gnu packages version-control)
  149. #:use-module (gnu packages web)
  150. #:use-module (gnu packages xdisorg)
  151. #:use-module (gnu packages xml)
  152. #:use-module (gnu packages xorg))
  153. ;; This package uses su instead of sudo (because of SpaceFM).
  154. (define-public ktsuss
  155. (package
  156. (name "ktsuss")
  157. (version "2.1")
  158. (source
  159. (origin
  160. (method git-fetch)
  161. (uri
  162. (git-reference
  163. (url "https://github.com/nomius/ktsuss")
  164. (commit version)))
  165. (sha256
  166. (base32 "0q9931f9hp47v1n8scli4bdg2rkjpf5jf8v7jj2gdn83aia1r2hz"))
  167. (file-name (git-file-name name version))))
  168. (build-system glib-or-gtk-build-system)
  169. (arguments
  170. `(#:phases
  171. (modify-phases %standard-phases
  172. (add-after 'unpack 'patch-file-names
  173. (lambda _
  174. (substitute* "configure.ac"
  175. (("supath=`which su 2>/dev/null`")
  176. "supath=/run/setuid-programs/su"))
  177. #t)))))
  178. (native-inputs
  179. `(("autoconf" ,autoconf)
  180. ("automake" ,automake)
  181. ("libtool" ,libtool)
  182. ("pkg-config" ,pkg-config)))
  183. (inputs
  184. `(("glib" ,glib)
  185. ("gtk+" ,gtk+-2)))
  186. (synopsis "Graphical front end for @command{su}")
  187. (description
  188. "Ktsuss stands for ``Keep the @command{su} simple, stupid''.
  189. It is a graphical version of @command{su} written in C and GTK+ 2, with
  190. simplicity in mind.")
  191. (home-page "https://github.com/nomius/ktsuss")
  192. (license license:bsd-3)))
  193. (define-public aide
  194. (package
  195. (name "aide")
  196. (version "0.16.2")
  197. (source
  198. (origin
  199. (method url-fetch)
  200. (uri (string-append "https://github.com/aide/aide/releases/download/v"
  201. version "/aide-" version ".tar.gz"))
  202. (sha256
  203. (base32 "15xp47sz7kk1ciffw3f5xw2jg2mb2lqrbr3q6p4bkbz5dap9iy8p"))))
  204. (build-system gnu-build-system)
  205. (native-inputs
  206. `(("bison" ,bison)
  207. ("flex" ,flex)))
  208. (inputs
  209. `(("libgcrypt" ,libgcrypt)
  210. ("libgpg-error" ,libgpg-error)
  211. ("libmhash" ,libmhash)
  212. ("pcre:static" ,pcre "static")
  213. ("pcre" ,pcre)
  214. ("zlib:static" ,zlib "static")
  215. ("zlib" ,zlib)))
  216. (synopsis "File and directory integrity checker")
  217. (description
  218. "AIDE (Advanced Intrusion Detection Environment) is a file and directory
  219. integrity checker. It creates a database from the regular expression rules
  220. that it finds from its configuration files. Once this database is initialized
  221. it can be used to verify the integrity of the files. It has several message
  222. digest algorithms that are used to check the integrity of files. All of the
  223. usual file attributes can be checked for inconsistencies.")
  224. (home-page "https://aide.github.io/")
  225. (license license:gpl2+)))
  226. (define-public progress
  227. (package
  228. (name "progress")
  229. (version "0.16")
  230. (source
  231. (origin
  232. (method git-fetch)
  233. (uri (git-reference
  234. (url "https://github.com/Xfennec/progress")
  235. (commit (string-append "v" version))))
  236. (sha256
  237. (base32 "0gf10j9zd8spain94b5kigknwbdqajiy6fjsa5hhwsc1biz34hcj"))
  238. (file-name (git-file-name name version))))
  239. (build-system gnu-build-system)
  240. (native-inputs
  241. `(("pkg-config" ,pkg-config)
  242. ("which" ,which)))
  243. (inputs
  244. `(("ncurses" ,ncurses)))
  245. (arguments
  246. `(#:tests? #f ; no test suite
  247. #:make-flags
  248. (let ((target ,(%current-target-system)))
  249. (list ,(string-append "CC=" (cc-for-target))
  250. (string-append "PKG_CONFIG="
  251. (if target
  252. (string-append target "-pkg-config")
  253. "pkg-config"))
  254. (string-append "PREFIX=" (assoc-ref %outputs "out"))))
  255. #:phases
  256. (modify-phases %standard-phases
  257. (delete 'configure)))) ; no configure script
  258. (home-page "https://github.com/Xfennec/progress")
  259. (synopsis "Program to view the progress of the coreutils commands")
  260. (description "A program that looks for coreutils basic commands (cp, mv,
  261. dd, tar, gzip/gunzip, cat, etc.) currently running on your system and displays
  262. the percentage of copied data. It can also show estimated time and throughput,
  263. and provides a \"top-like\" mode (monitoring).")
  264. (license license:gpl3+)))
  265. (define-public shepherd
  266. (package
  267. (name "shepherd")
  268. (version "0.8.1")
  269. (source (origin
  270. (method url-fetch)
  271. (uri (string-append "mirror://gnu/shepherd/shepherd-"
  272. version ".tar.gz"))
  273. (sha256
  274. (base32
  275. "0x9zr0x3xvk4qkb6jnda451d5iyrl06cz1bjzjsm0lxvjj3fabyk"))
  276. (modules '((guix build utils)))
  277. (snippet
  278. '(begin
  279. ;; Build with -O1 to work around <https://bugs.gnu.org/48368>.
  280. (substitute* "Makefile.in"
  281. (("compile --target")
  282. "compile -O1 --target"))))))
  283. (build-system gnu-build-system)
  284. (arguments
  285. '(#:configure-flags '("--localstatedir=/var")
  286. #:make-flags '("GUILE_AUTO_COMPILE=0")))
  287. (native-inputs
  288. `(("pkg-config" ,pkg-config)
  289. ;; This is the Guile we use as a cross-compiler...
  290. ("guile" ,guile-3.0)))
  291. (inputs
  292. ;; ... and this is the one that appears in shebangs when cross-compiling.
  293. `(("guile" ,guile-3.0)
  294. ;; The 'shepherd' command uses Readline when used interactively. It's
  295. ;; an unusual use case though, so we don't propagate it.
  296. ("guile-readline" ,guile-readline)))
  297. (synopsis "System service manager")
  298. (description
  299. "The GNU Shepherd is a daemon-managing daemon, meaning that it supervises
  300. the execution of system services, replacing similar functionality found in
  301. typical init systems. It provides dependency-handling through a convenient
  302. interface and is based on GNU Guile.")
  303. (license license:gpl3+)
  304. (home-page "https://www.gnu.org/software/shepherd/")))
  305. (define-public guile2.2-shepherd
  306. (package
  307. (inherit shepherd)
  308. (name "guile2.2-shepherd")
  309. (native-inputs
  310. `(("pkg-config" ,pkg-config)
  311. ("guile" ,guile-2.2)))
  312. (inputs
  313. `(("guile" ,guile-2.2)
  314. ("guile2.2-readline" ,guile2.2-readline)))))
  315. (define-public guile3.0-shepherd
  316. (deprecated-package "guile3.0-shepherd" shepherd))
  317. (define-public guile2.0-shepherd
  318. (package
  319. (inherit shepherd)
  320. (name "guile2.0-shepherd")
  321. (native-inputs
  322. `(("help2man" ,help2man)
  323. ("pkg-config" ,pkg-config)
  324. ("guile" ,guile-2.0)))
  325. (inputs
  326. `(("guile" ,guile-2.0)))
  327. (arguments
  328. `(#:phases
  329. (modify-phases %standard-phases
  330. (add-after 'unpack 'patch-source
  331. (lambda _
  332. ;; (ice-9 threads) isn't available in guile-2.0
  333. (substitute* "modules/shepherd.scm"
  334. ((".*\\(ice-9 threads\\).*") ""))
  335. #t)))
  336. ,@(package-arguments shepherd)))))
  337. (define-public cfm
  338. (package
  339. (name "cfm")
  340. (version "0.6.6")
  341. (source
  342. (origin
  343. (method git-fetch)
  344. (uri (git-reference
  345. (url "https://github.com/WillEccles/cfm")
  346. (commit (string-append "v" version))))
  347. (file-name (git-file-name name version))
  348. (sha256
  349. (base32 "14gapia902f29wa4dlrrj8jcwcff9bfvyhjccw9ddy2gxx2g8wmr"))))
  350. (build-system gnu-build-system)
  351. (arguments
  352. `(#:tests? #f ; no test suite
  353. #:make-flags
  354. (list (string-append "CC=" ,(cc-for-target))
  355. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  356. #:phases
  357. (modify-phases %standard-phases
  358. ;; Keeping xdg-open optional avoids a size increase of 293%.
  359. (delete 'configure)))) ; no configure script
  360. (home-page "https://eccles.dev/cfm/")
  361. (synopsis
  362. "Simple terminal file manager with @command{vi}-inspired key bindings")
  363. (description
  364. "The Cactus File Manager (@command{cfm}) helps you manage your files
  365. visually from a text terminal. It aims to be simple and fast, with key bindings
  366. inspired by @command{vi}.")
  367. (license license:mpl2.0)))
  368. (define-public cloud-utils
  369. (package
  370. (name "cloud-utils")
  371. (version "0.32")
  372. (source
  373. (origin
  374. (method url-fetch)
  375. (uri (string-append
  376. "https://launchpad.net/cloud-utils/trunk/"
  377. version "/+download/cloud-utils-" version ".tar.gz"))
  378. (sha256
  379. (base32
  380. "0xxdi55lzw7j91zfajw7jhd2ilsqj2dy04i9brlk8j3pvb5ma8hk"))))
  381. (build-system gnu-build-system)
  382. (arguments
  383. '(#:make-flags
  384. (let ((out (assoc-ref %outputs "out")))
  385. (list (string-append "BINDIR=" out "/bin")
  386. (string-append "MANDIR=" out "/share/man/man1")
  387. (string-append "DOCDIR=" out "/share/doc")))
  388. #:phases
  389. (modify-phases %standard-phases
  390. (delete 'configure)
  391. (delete 'check)
  392. (add-after 'install 'wrap
  393. (lambda* (#:key outputs inputs #:allow-other-keys)
  394. (let ((growpart (string-append (assoc-ref outputs "out")
  395. "/bin/growpart")))
  396. (wrap-program growpart
  397. `("PATH" ":" prefix (,(dirname (which "sfdisk"))
  398. ,(dirname (which "readlink"))))))
  399. #t)))))
  400. (inputs
  401. `(("python" ,python)
  402. ("util-linux" ,util-linux))) ; contains sfdisk for growpart
  403. (home-page "https://launchpad.net/cloud-utils")
  404. (synopsis "Set of utilities for cloud computing environments")
  405. (description
  406. "This package contains a set of utilities for cloud computing
  407. environments:
  408. @itemize @bullet
  409. @item @command{cloud-localds} Create a disk for cloud-init to utilize nocloud
  410. @item @command{cloud-publish-image} Wrapper for cloud image publishing
  411. @item @command{cloud-publish-tarball} Wrapper for publishing cloud tarballs
  412. @item @command{cloud-publish-ubuntu} Import a Ubuntu cloud image
  413. @item @command{ec2metadata} Query and display @acronym{EC2,Amazon Elastic
  414. Compute Cloud} metadata
  415. @item @command{growpart} Grow a partition to fill the device
  416. @item @command{mount-image-callback} Mount a file and run a command
  417. @item @command{resize-part-image} Resize a partition image to a new size
  418. @item @command{ubuntu-cloudimg-query} Get the latest Ubuntu
  419. @acronym{AMI,Amazon Machine Image}
  420. @item @command{ubuntu-ec2-run} Run a @acronym{EC2,Amazon Elastic Compute
  421. Cloud} instance using Ubuntu
  422. @item @command{vcs-run} Obtain a repository, and run a command
  423. @item @command{write-mime-multipart} Handle multipart
  424. @acronym{MIME,Multipurpose Internet Mail Extensions} messages
  425. @end itemize")
  426. (license license:gpl3)))
  427. (define-public daemontools
  428. (package
  429. (name "daemontools")
  430. (version "0.76")
  431. (source (origin
  432. (method url-fetch)
  433. (uri (string-append
  434. "https://cr.yp.to/daemontools/"
  435. "daemontools-" version ".tar.gz"))
  436. (sha256
  437. (base32
  438. "07scvw88faxkscxi91031pjkpccql6wspk4yrlnsbrrb5c0kamd5"))))
  439. (build-system gnu-build-system)
  440. (arguments
  441. `(#:tests? #f ;; No tests as far as I can tell.
  442. #:phases
  443. (modify-phases %standard-phases
  444. (add-after 'unpack 'chdir
  445. (lambda _
  446. (chdir ,(string-append "daemontools-" version))
  447. #t))
  448. (delete 'configure)
  449. (add-before 'build 'patch
  450. (lambda _
  451. (substitute* "src/error.h"
  452. (("extern int errno;")
  453. "#include <errno.h>"))
  454. #t))
  455. (replace 'build
  456. (lambda _
  457. (invoke "package/compile")))
  458. (replace 'install
  459. (lambda* (#:key outputs #:allow-other-keys)
  460. (let* ((out (assoc-ref outputs "out"))
  461. (bin (string-append out "/bin")))
  462. (for-each (lambda (file)
  463. (install-file file bin))
  464. (find-files "command")))
  465. #t)))))
  466. (synopsis "Tools for managing UNIX style services")
  467. (description
  468. "@code{daemontools} is a collection of tools for managing UNIX
  469. services.")
  470. (license license:public-domain)
  471. (home-page "https://cr.yp.to/daemontools.html")))
  472. (define-public daemonize
  473. (package
  474. (name "daemonize")
  475. (version "1.7.8")
  476. (source
  477. (origin
  478. (method git-fetch)
  479. (uri (git-reference
  480. (url "https://github.com/bmc/daemonize")
  481. (commit (string-append "release-" version))))
  482. (file-name (git-file-name name version))
  483. (sha256
  484. (base32 "0w4g0iyssyw7dd0061881z8s5czcl01mz6v00znax57zfxjqpvnm"))))
  485. (build-system gnu-build-system)
  486. (arguments '(#:tests? #f)) ; No tests available.
  487. (home-page "http://software.clapper.org/daemonize/")
  488. (synopsis "Command line utility to run a program as a daemon")
  489. (description
  490. "daemonize runs a command as a Unix daemon. It will close all open file
  491. descriptors, change working directory of the process to the root filesystem,
  492. reset its umask, run in the background, ignore I/O signals, handle
  493. @code{SIGCLD}, etc. Most programs that are designed to be run as daemons do
  494. that work for themselves. However, you’ll occasionally run across one that
  495. does not. When you must run a daemon program that does not properly make
  496. itself into a true Unix daemon, you can use daemonize to force it to run as a
  497. true daemon.")
  498. (license license:bsd-3)))
  499. (define-public dfc
  500. (package
  501. (name "dfc")
  502. (version "3.1.1")
  503. (source
  504. (origin
  505. (method url-fetch)
  506. (uri (string-append
  507. "https://projects.gw-computing.net/attachments/download/615/dfc-"
  508. version ".tar.gz"))
  509. (sha256
  510. (base32
  511. "0m1fd7l85ckb7bq4c5c3g257bkjglm8gq7x42pkmpp87fkknc94n"))))
  512. (build-system cmake-build-system)
  513. (arguments '(#:tests? #f)) ; There are no tests.
  514. (native-inputs `(("gettext" ,gettext-minimal)))
  515. (home-page "https://projects.gw-computing.net/projects/dfc")
  516. (synopsis "Display file system space usage using graphs and colors")
  517. (description
  518. "dfc (df color) is a modern version of df. It uses colors, draws pretty
  519. graphs and can export its output to different formats.")
  520. (license license:bsd-3)))
  521. (define-public facter
  522. (package
  523. (name "facter")
  524. (version "4.0.52")
  525. (source (origin
  526. (method git-fetch)
  527. (uri (git-reference
  528. (url "https://github.com/puppetlabs/facter")
  529. (commit version)))
  530. (file-name (git-file-name name version))
  531. (sha256
  532. (base32
  533. "05j4q87sak1f1isj7ngzr59h3j3xskfwjjwfv0xd7lhwcaxg3a3c"))))
  534. (build-system ruby-build-system)
  535. (arguments
  536. `(#:phases
  537. (modify-phases %standard-phases
  538. (add-after 'unpack 'delete-facter-ng-gemspec
  539. (lambda _
  540. ;; XXX: ruby-build-system incorrectly finds
  541. ;; facter-ng.gemspec from this directory and tries to
  542. ;; build that instead of the proper facter.gemspec.
  543. ;; Just delete it as a workaround, as it appears to
  544. ;; only exist for backwards-compatibility after the
  545. ;; facter-ng->facter rename.
  546. (delete-file "agent/facter-ng.gemspec")
  547. #t))
  548. (add-after 'unpack 'embed-absolute-references
  549. ;; Refer to absolute executable file names to avoid propagation.
  550. (lambda* (#:key inputs #:allow-other-keys)
  551. (substitute* (find-files "lib/facter/resolvers" "\\.rb$")
  552. (("execute\\('(which |)([^ ']+)" _ _ name)
  553. (string-append "execute('" (or (which name)
  554. name))))
  555. #t))
  556. (delete 'check)
  557. (add-after 'wrap 'check
  558. (lambda* (#:key tests? outputs #:allow-other-keys)
  559. ;; XXX: The test suite wants to run Bundler and
  560. ;; complains that the gemspec is invalid. For now
  561. ;; just make sure that we can run the wrapped
  562. ;; executable directly.
  563. (if tests?
  564. (invoke (string-append (assoc-ref outputs "out")
  565. "/bin/facter")
  566. ;; Many facts depend on /sys, /etc/os-release,
  567. ;; etc, so we only run a small sample.
  568. "facterversion" "architecture"
  569. "kernel" "kernelversion")
  570. (format #t "tests disabled~%"))
  571. #t)))))
  572. (inputs
  573. `(("ruby-hocon" ,ruby-hocon)
  574. ("ruby-sys-filesystem" ,ruby-sys-filesystem)
  575. ("ruby-thor" ,ruby-thor)
  576. ;; For ‘embed-absolute-references’.
  577. ("dmidecode" ,dmidecode)
  578. ("inetutils" ,inetutils) ; for ‘hostname’
  579. ("iproute" ,iproute)
  580. ("pciutils" ,pciutils)
  581. ("util-linux" ,util-linux)))
  582. (synopsis "Collect and display system facts")
  583. (description
  584. "Facter is a tool that gathers basic facts about nodes (systems) such
  585. as hardware details, network settings, OS type and version, and more. These
  586. facts can be collected on the command line with the @command{facter} command
  587. or via the @code{facter} Ruby library.")
  588. (home-page "https://github.com/puppetlabs/facter-ng")
  589. (license license:expat)))
  590. (define-public ttyload
  591. (let ((revision "1")
  592. (commit "f9495372801ce4b4dad98ad854203e694c31c1eb"))
  593. (package
  594. (name "ttyload")
  595. (version (git-version "0.5.3" revision commit))
  596. (source
  597. (origin
  598. (method git-fetch)
  599. (uri (git-reference
  600. (url "https://github.com/lindes/ttyload")
  601. (commit commit)))
  602. (file-name (git-file-name name version))
  603. (sha256
  604. (base32 "0ldb7a13b9v876c6cbrs78pkizj64drnqx95z5shfbwgpwfhr4im"))))
  605. (build-system gnu-build-system)
  606. (arguments
  607. `(#:tests? #f ; no tests
  608. #:make-flags
  609. (list (string-append "CC=" ,(cc-for-target)))
  610. #:phases
  611. (modify-phases %standard-phases
  612. (delete 'configure)
  613. (replace 'install
  614. (lambda* (#:key outputs #:allow-other-keys)
  615. (let* ((out (assoc-ref outputs "out"))
  616. (bin (string-append out "/bin")))
  617. (install-file "ttyload" bin)))))))
  618. (home-page "https://www.daveltd.com/src/util/ttyload/")
  619. (synopsis "Console based color-coded graphs of CPU load average")
  620. (description
  621. "Show graphs for 1 minute, 5 minute, 15 minute load averages on the
  622. console.")
  623. ;; This package uses a modified version of the "ISC License".
  624. (license (license:non-copyleft "file://LICENSE")))))
  625. (define-public htop
  626. (package
  627. (name "htop")
  628. (version "3.1.1")
  629. (source
  630. (origin
  631. (method git-fetch)
  632. (uri (git-reference
  633. (url "https://github.com/htop-dev/htop")
  634. (commit version)))
  635. (sha256
  636. (base32 "19xnqnavpxbyix2gp1p3lbhlaawx0gdklx3aq4x4ylrxml2nwyi6"))
  637. (file-name (git-file-name name version))))
  638. (build-system gnu-build-system)
  639. (inputs
  640. `(("ncurses" ,ncurses)))
  641. (native-inputs
  642. `(("autoconf" ,autoconf)
  643. ("automake" ,automake)
  644. ("python" ,python-minimal-wrapper))) ; for scripts/MakeHeader.py
  645. (home-page "https://htop.dev")
  646. (synopsis "Interactive process viewer")
  647. (description
  648. "This is htop, an interactive process viewer. It is a text-mode
  649. application (for console or X terminals) and requires ncurses.")
  650. (license license:gpl2)))
  651. (define-public bashtop
  652. (package
  653. (name "bashtop")
  654. (version "0.9.25")
  655. (source (origin
  656. (method git-fetch)
  657. (uri (git-reference
  658. (url "https://github.com/aristocratos/bashtop")
  659. (commit (string-append "v" version))))
  660. (file-name (git-file-name name version))
  661. (sha256
  662. (base32
  663. "07nlr6vmyb7yihaxj1fp424lmhwkdjl6mls92v90f6gsvikpa13v"))))
  664. (build-system gnu-build-system)
  665. (arguments
  666. '(#:make-flags (list (string-append "PREFIX=" %output))
  667. #:tests? #f ; bats test fails with loading load.bash
  668. #:phases (modify-phases %standard-phases (delete 'configure))))
  669. (home-page "https://github.com/aristocratos/bashtop")
  670. (synopsis "Linux/OSX/FreeBSD resource monitor")
  671. (description "Resource monitor that shows usage and stats for processor,
  672. memory, disks, network and processes.")
  673. (license license:asl2.0)))
  674. (define-public bpytop
  675. (package
  676. (name "bpytop")
  677. (version "1.0.67")
  678. (source
  679. (origin
  680. (method url-fetch)
  681. (uri (pypi-uri "bpytop" version))
  682. (sha256
  683. (base32 "1fwmiwvs8ax9az3hbp1p79x6m3wq73pn3vkbhcg9jvps4wv8wcwb"))))
  684. (build-system python-build-system)
  685. (inputs
  686. `(("python-psutil" ,python-psutil)))
  687. (arguments
  688. `(#:phases
  689. (modify-phases %standard-phases
  690. (add-after 'install 'install-themes
  691. (lambda* (#:key outputs #:allow-other-keys)
  692. (let ((themes (string-append (assoc-ref outputs "out")
  693. "/lib/python"
  694. ,(version-major+minor
  695. (package-version python))
  696. "/site-packages/bpytop-themes")))
  697. (mkdir-p themes)
  698. (copy-recursively "themes" themes)))))))
  699. (home-page
  700. "https://github.com/aristocratos/bpytop")
  701. (synopsis "Resource monitor")
  702. (description "Resource monitor that shows usage and stats for processor,
  703. memory, disks, network and processes. It's a Python port and continuation of
  704. @command{bashtop}.")
  705. (license license:asl2.0)))
  706. (define-public pies
  707. (package
  708. (name "pies")
  709. (version "1.6")
  710. (source
  711. (origin
  712. (method url-fetch)
  713. (uri (string-append "mirror://gnu/pies/pies-"
  714. version ".tar.bz2"))
  715. (sha256
  716. (base32
  717. "0ad5bg1czwmr4qw33aszxzc6ll99a9lfs32lyfb1wl5x9s1cc7az"))))
  718. (build-system gnu-build-system)
  719. (arguments
  720. '(#:phases (modify-phases %standard-phases
  721. (add-before 'build 'patch-/bin/sh
  722. (lambda* (#:key inputs #:allow-other-keys)
  723. ;; Use the right shell when executing user-provided
  724. ;; shell commands.
  725. (let ((bash (assoc-ref inputs "bash")))
  726. (substitute* '("src/progman.c" "src/comp.c")
  727. (("\"/bin/sh\"")
  728. (string-append "\"" bash "/bin/sh\"")))
  729. #t))))))
  730. (home-page "https://www.gnu.org.ua/software/pies/")
  731. (synopsis "Program invocation and execution supervisor")
  732. (description
  733. "GNU pies is a program that supervises the invocation and execution of
  734. other programs. It reads the list of programs to be started from its
  735. configuration file, executes them, and then monitors their status,
  736. re-executing them as necessary.")
  737. (license license:gpl3+)))
  738. (define-public inetutils
  739. (package
  740. (name "inetutils")
  741. (version "2.0")
  742. (source (origin
  743. (method url-fetch)
  744. (uri (string-append "mirror://gnu/inetutils/inetutils-"
  745. version ".tar.gz"))
  746. (sha256
  747. (base32
  748. "0j1nb69bhg29cm4xkqqjh2ln1zqcj2lnpm92v638lpwrs11dypxl"))))
  749. (build-system gnu-build-system)
  750. (arguments
  751. `(#:configure-flags '("--localstatedir=/var"
  752. ;; Make sure 'PATH_PROCNET_DEV' gets defined when
  753. ;; cross-compiling (by default it does not.)
  754. ,@(if (%current-target-system)
  755. '("--with-path-procnet-dev=/proc/net/dev")
  756. '())
  757. ,@(if (hurd-target?)
  758. '("--disable-rcp"
  759. "--disable-rexec"
  760. "--disable-rexecd"
  761. "--disable-rlogin"
  762. "--disable-rlogind"
  763. "--disable-rsh"
  764. "--disable-rshd"
  765. "--disable-uucpd"
  766. "--disable-whois")
  767. '()))
  768. ;; Make sure that canonical "coreutils" package is not referred.
  769. #:make-flags
  770. (list (string-append "CPPFLAGS=-DPATHDEF_CP=\\\""
  771. (assoc-ref %build-inputs "coreutils*")
  772. "/bin/cp\\\""))
  773. ;; On some systems, 'libls.sh' may fail with an error such as:
  774. ;; "Failed to tell switch -a apart from -A".
  775. #:parallel-tests? #f))
  776. (inputs `(("coreutils*" ,coreutils)
  777. ("shadow" ,shadow) ;for login (used in telnetd and rlogind)
  778. ("ncurses" ,ncurses)
  779. ("readline" ,readline))) ;for 'ftp'
  780. (native-inputs (if (member (%current-system)
  781. (package-supported-systems net-tools))
  782. `(("netstat" ,net-tools)) ;for tests
  783. '()))
  784. (home-page "https://www.gnu.org/software/inetutils/")
  785. (synopsis "Basic networking utilities")
  786. (description
  787. "Inetutils is a collection of common network programs, such as an ftp
  788. client and server, a telnet client and server, an rsh client and server, and
  789. hostname.")
  790. (license license:gpl3+)))
  791. (define-public shadow
  792. (package
  793. (name "shadow")
  794. (version "4.8.1")
  795. (source (origin
  796. (method url-fetch)
  797. (uri (string-append
  798. "https://github.com/shadow-maint/shadow/releases/"
  799. "download/" version "/shadow-" version ".tar.xz"))
  800. (patches (search-patches "shadow-hurd-pctrl.patch"))
  801. (sha256
  802. (base32
  803. "0qmfq50sdhz6xilgxvinblll8j2iqfl7hwk45bq744y4plq4dbd3"))))
  804. (build-system gnu-build-system)
  805. (arguments
  806. `(;; Assume System V `setpgrp (void)', which is the default on GNU
  807. ;; variants (`AC_FUNC_SETPGRP' is not cross-compilation capable.)
  808. #:configure-flags
  809. '(,@(if (hurd-target?)
  810. '()
  811. '("--with-libpam"))
  812. "ac_cv_func_setpgrp_void=yes")
  813. #:phases
  814. (modify-phases %standard-phases
  815. ,@(if (%current-target-system)
  816. '((add-before 'configure 'set-runtime-shell
  817. (lambda* (#:key inputs #:allow-other-keys)
  818. (let ((shell (string-append
  819. (assoc-ref inputs "bash")
  820. "/bin/bash")))
  821. (setenv "RUNTIME_SHELL" shell)
  822. (substitute* "configure.ac"
  823. (("\\$SHELL")
  824. "$RUNTIME_SHELL"))))))
  825. '())
  826. (add-before 'build 'set-nscd-file-name
  827. (lambda* (#:key inputs #:allow-other-keys)
  828. ;; Use the right file name for nscd.
  829. (let ((libc (assoc-ref inputs
  830. ,(if (%current-target-system)
  831. "cross-libc"
  832. "libc"))))
  833. (substitute* "lib/nscd.c"
  834. (("/usr/sbin/nscd")
  835. (string-append libc "/sbin/nscd")))
  836. #t)))
  837. (add-after 'install 'remove-groups
  838. (lambda* (#:key outputs #:allow-other-keys)
  839. ;; Remove `groups', which is already provided by Coreutils.
  840. (let* ((out (assoc-ref outputs "out"))
  841. (bin (string-append out "/bin"))
  842. (man (string-append out "/share/man")))
  843. (delete-file (string-append bin "/groups"))
  844. (for-each delete-file (find-files man "^groups\\."))
  845. #t))))))
  846. (inputs
  847. `(,@(if (hurd-target?)
  848. '()
  849. `(("linux-pam" ,linux-pam)))
  850. ,@(if (%current-target-system)
  851. `(("bash" ,bash-minimal))
  852. '())))
  853. (home-page "https://github.com/shadow-maint/shadow")
  854. (synopsis "Authentication-related tools such as passwd, su, and login")
  855. (description
  856. "Shadow provides a number of authentication-related tools, including:
  857. login, passwd, su, groupadd, and useradd.")
  858. ;; The `vipw' program is GPLv2+.
  859. ;; libmisc/salt.c is public domain.
  860. (license license:bsd-3)))
  861. (define-public mingetty
  862. (package
  863. (name "mingetty")
  864. (version "1.08")
  865. (source (origin
  866. (method url-fetch)
  867. (uri (string-append "mirror://sourceforge/mingetty/mingetty/"
  868. version "/mingetty-" version ".tar.gz"))
  869. (sha256
  870. (base32
  871. "05yxrp44ky2kg6qknk1ih0kvwkgbn9fbz77r3vci7agslh5wjm8g"))))
  872. (build-system gnu-build-system)
  873. (arguments
  874. `(#:phases
  875. (modify-phases %standard-phases
  876. (replace 'configure
  877. (lambda* (#:key inputs outputs target #:allow-other-keys)
  878. (let* ((out (assoc-ref outputs "out"))
  879. (man8 (string-append out "/share/man/man8"))
  880. (sbin (string-append out "/sbin"))
  881. (shadow (assoc-ref inputs "shadow"))
  882. (login (string-append shadow "/bin/login")))
  883. (substitute* "Makefile"
  884. ,@(if (%current-target-system)
  885. '((("CC=.*$")
  886. (string-append "CC=" target "-gcc\n")))
  887. '())
  888. (("^SBINDIR.*")
  889. (string-append "SBINDIR = " out
  890. "/sbin\n"))
  891. (("^MANDIR.*")
  892. (string-append "MANDIR = " out
  893. "/share/man/man8\n")))
  894. ;; Pick the right 'login' by default.
  895. (substitute* "mingetty.c"
  896. (("\"/bin/login\"")
  897. (string-append "\"" login "\"")))
  898. (mkdir-p sbin)
  899. (mkdir-p man8))
  900. #t)))
  901. #:tests? #f)) ; no tests
  902. (inputs `(("shadow" ,shadow)))
  903. (home-page "https://sourceforge.net/projects/mingetty")
  904. (synopsis "Getty for the text console")
  905. (description
  906. "Small console getty that is started on the Linux text console,
  907. asks for a login name and then transfers over to @code{login}. It is extended
  908. to allow automatic login and starting any app.")
  909. (license license:gpl2+)))
  910. (define-public net-base
  911. (package
  912. (name "net-base")
  913. (version "5.3")
  914. (source (origin
  915. (method url-fetch)
  916. (uri (string-append
  917. "mirror://debian/pool/main/n/netbase/netbase_"
  918. version ".tar.xz"))
  919. (sha256
  920. (base32
  921. "12xqjwg3p4rzmmh2iib6sigm9l29y3dgk74mmnw64k84jnbwdxl1"))))
  922. (build-system trivial-build-system)
  923. (arguments
  924. `(#:modules ((guix build utils))
  925. ;; This package consists solely of architecture-independent
  926. ;; tables. Cross-compilation is pointless! Make sure we'll
  927. ;; always get the same derivation.
  928. #:target #f
  929. #:allowed-references ()
  930. #:builder (begin
  931. (use-modules (guix build utils)
  932. (srfi srfi-26))
  933. (let* ((source (assoc-ref %build-inputs "source"))
  934. (tar (assoc-ref %build-inputs "tar"))
  935. (xz (assoc-ref %build-inputs "xz"))
  936. (output (assoc-ref %outputs "out"))
  937. (etc (string-append output "/etc")))
  938. (setenv "PATH" (string-append xz "/bin"))
  939. (invoke (string-append tar "/bin/tar") "xvf"
  940. source)
  941. (chdir ,(string-append "netbase-" version))
  942. (mkdir-p etc)
  943. (for-each copy-file
  944. '("etc-services" "etc-protocols" "etc-rpc")
  945. (map (cut string-append etc "/" <>)
  946. '("services" "protocols" "rpc")))
  947. #t))))
  948. (native-inputs `(("tar" ,tar)
  949. ("xz" ,xz)))
  950. (synopsis "IANA protocol, port, and RPC number assignments")
  951. (description
  952. "This package provides the /etc/services, /etc/protocols, and /etc/rpc
  953. files, which contain information about the IANA-assigned port, protocol, and
  954. ONC RPC numbers.")
  955. (home-page "https://packages.debian.org/sid/netbase")
  956. (license license:gpl2)))
  957. (define-public netcat
  958. (package
  959. (name "netcat")
  960. (version "0.7.1")
  961. (source (origin
  962. (method url-fetch)
  963. (uri (string-append "mirror://sourceforge/netcat/netcat/" version
  964. "/netcat-" version ".tar.bz2"))
  965. (sha256
  966. (base32
  967. "1frjcdkhkpzk0f84hx6hmw5l0ynpmji8vcbaxg8h5k2svyxz0nmm"))))
  968. (build-system gnu-build-system)
  969. (arguments
  970. `(#:configure-flags
  971. ;; By default, man and info pages are put in PREFIX/{man,info},
  972. ;; but we want them in PREFIX/share/{man,info}.
  973. (let ((out (assoc-ref %outputs "out")))
  974. (list (string-append "--mandir=" out "/share/man")
  975. (string-append "--infodir=" out "/share/info")))))
  976. (home-page "http://netcat.sourceforge.net")
  977. (synopsis "Read and write data over TCP/IP")
  978. (description
  979. "Netcat is a featured networking utility which reads and writes data
  980. across network connections, using the TCP/IP protocol. It is designed to be a
  981. reliable \"back-end\" tool that can be used directly or easily driven by other
  982. programs and scripts. At the same time, it is a feature-rich network debugging
  983. and exploration tool, since it can create almost any kind of connection you
  984. would need and has several interesting built-in capabilities.")
  985. (license license:gpl2+)))
  986. (define-public netcat-openbsd
  987. (package
  988. (name "netcat-openbsd")
  989. (version "1.217-2")
  990. (source (origin
  991. (method git-fetch)
  992. (uri (git-reference
  993. (url "https://salsa.debian.org/debian/netcat-openbsd.git")
  994. (commit (string-append "debian/" version))))
  995. (file-name (git-file-name name version))
  996. (sha256
  997. (base32
  998. "19sr52ix14w344pv13ppb0c1wyg5dxhic1fw2q0s3qfmx57b9hhp"))))
  999. (build-system gnu-build-system)
  1000. (arguments
  1001. `(#:tests? #f ; no test suite
  1002. #:make-flags
  1003. (list (string-append "CC=" ,(cc-for-target)))
  1004. #:phases
  1005. (modify-phases %standard-phases
  1006. (delete 'configure)
  1007. (add-before 'build 'patch
  1008. (lambda _
  1009. (setenv "QUILT_PATCHES" "debian/patches")
  1010. (invoke "quilt" "push" "-a")
  1011. #t))
  1012. (replace 'install
  1013. (lambda* (#:key outputs #:allow-other-keys)
  1014. (let* ((out (assoc-ref outputs "out"))
  1015. (bin (string-append out "/bin"))
  1016. (man (string-append out "/share/man/man1"))
  1017. (doc (string-append out "/share/doc/netcat-openbsd-" ,version))
  1018. (examples (string-append doc "/examples")))
  1019. (install-file "nc" bin)
  1020. (install-file "nc.1" man)
  1021. (install-file "debian/copyright" doc)
  1022. (copy-recursively "debian/examples" examples)
  1023. #t))))))
  1024. (inputs `(("libbsd" ,libbsd)))
  1025. (native-inputs `(("pkg-config" ,pkg-config)
  1026. ("quilt" ,quilt)))
  1027. (home-page "https://packages.debian.org/sid/netcat-openbsd")
  1028. (synopsis "Read and write data over TCP/IP")
  1029. (description
  1030. "Netcat is a simple Unix utility which reads and writes data across
  1031. network connections using TCP or UDP protocol. It is designed to be a reliable
  1032. \"back-end\" tool that can be used directly or easily driven by other programs
  1033. and scripts. At the same time it is a feature-rich network debugging and
  1034. exploration tool, since it can create almost any kind of connection you would
  1035. need and has several interesting built-in capabilities.
  1036. This package contains the OpenBSD rewrite of netcat, including support for
  1037. IPv6, proxies, and Unix sockets.")
  1038. (license (list license:bsd-3
  1039. license:bsd-2)))) ; atomicio.*, socks.c
  1040. (define-public sipcalc
  1041. (package
  1042. (name "sipcalc")
  1043. (version "1.1.6")
  1044. (source
  1045. (origin
  1046. (method url-fetch)
  1047. (uri (string-append "http://www.routemeister.net/projects"
  1048. "/sipcalc/files/sipcalc" "-" version ".tar.gz"))
  1049. (sha256
  1050. (base32
  1051. "0mv3wndj4z2bsshh2k8d5sy3j8wxzgf8mzmmkvj1k8gpcz37dm6g"))))
  1052. (build-system gnu-build-system)
  1053. (home-page "https://www.routemeister.net/projects/sipcalc/")
  1054. (synopsis "Command-line IP subnet calculator")
  1055. (description
  1056. "Sipcalc is an advanced command-line IP subnet calculator. It can take
  1057. multiple forms of input (IPv4/IPv6/interface/hostname) and output a multitude
  1058. of information about a given subnet.
  1059. Features include:
  1060. @itemize @bullet
  1061. @item IPv4
  1062. @itemize
  1063. @item Retrieving of address information from interfaces.
  1064. @item Classfull and CIDR output.
  1065. @item Multiple address and netmask input and output formats (dotted quad, hex,
  1066. number of bits).
  1067. @item Output of broadcast address, network class, Cisco wildcard,
  1068. hosts/range, network range.
  1069. @item The ability to split a network based on a smaller netmask, now also with
  1070. recursive runs on the generated subnets. (also IPv6)
  1071. @end itemize
  1072. @item IPv6
  1073. @itemize
  1074. @item Compressed and expanded input and output addresses.
  1075. @item Standard IPv6 network output.
  1076. @item v4 in v6 output.
  1077. @item Reverse DNS address generation.
  1078. @end itemize
  1079. @end itemize\n")
  1080. (license license:bsd-3)))
  1081. (define-public prips
  1082. (package
  1083. (name "prips")
  1084. (version "1.1.1")
  1085. (source
  1086. (origin
  1087. (method url-fetch)
  1088. (uri (string-append "https://devel.ringlet.net/files/sys/"
  1089. name "/" name "-" version ".tar.xz"))
  1090. (sha256
  1091. (base32 "1a33vbl4w603mk6mm5r3vhk87fy3dfk5wdpch0yd3ncbkg3fmvqn"))))
  1092. (build-system gnu-build-system)
  1093. (arguments
  1094. `(#:make-flags (list (string-append "CC=" ,(cc-for-target)))
  1095. #:test-target "test"
  1096. #:phases (modify-phases %standard-phases
  1097. (delete 'configure)
  1098. (replace 'install
  1099. (lambda* (#:key outputs #:allow-other-keys)
  1100. (let ((out (assoc-ref outputs "out")))
  1101. (install-file "prips"
  1102. (string-append out "/bin"))))))))
  1103. (native-inputs `(("perl-test-harness" ,perl-test-harness)))
  1104. (synopsis "Tool that prints the IP addresses in a given range")
  1105. (description "Prips can be used to print all of the IP addresses in
  1106. a given range. This allows the enhancement of tools only work
  1107. on one host at a time (e.g. whois).")
  1108. (home-page "https://devel.ringlet.net/sysutils/prips/")
  1109. (license license:gpl2+)))
  1110. (define-public alive
  1111. (package
  1112. (name "alive")
  1113. (version "2.0.3")
  1114. (source (origin
  1115. (method url-fetch)
  1116. (uri (string-append "mirror://gnu/alive/alive-"
  1117. version ".tar.xz"))
  1118. (sha256
  1119. (base32
  1120. "053hfp7s66lnilm1ii4jrjmy44wpa2cwwh6f0sl8cyz0mm813x4b"))))
  1121. (build-system gnu-build-system)
  1122. (arguments '(#:configure-flags '("alive_cv_nice_ping=yes")))
  1123. (inputs `(("guile" ,guile-2.0)
  1124. ("inetutils" ,inetutils)))
  1125. (home-page "https://www.gnu.org/software/alive/")
  1126. (synopsis "Autologin and keep-alive daemon")
  1127. (description
  1128. "GNU Alive sends periodic pings to a server, generally to keep a
  1129. connection alive.")
  1130. (license license:gpl3+)))
  1131. (define-public isc-dhcp
  1132. (let* ((bind-major-version "9")
  1133. (bind-minor-version "11")
  1134. (bind-patch-version "32")
  1135. (bind-release-type "") ; for patch release, use "-P"
  1136. (bind-release-version "") ; for patch release, e.g. "6"
  1137. (bind-version (string-append bind-major-version
  1138. "."
  1139. bind-minor-version
  1140. "."
  1141. bind-patch-version
  1142. bind-release-type
  1143. bind-release-version)))
  1144. (package
  1145. (name "isc-dhcp")
  1146. (version "4.4.2-P1")
  1147. (source (origin
  1148. (method url-fetch)
  1149. (uri (string-append "https://ftp.isc.org/isc/dhcp/"
  1150. version "/dhcp-" version ".tar.gz"))
  1151. (patches (search-patches "isc-dhcp-gcc-compat.patch"))
  1152. (sha256
  1153. (base32
  1154. "06jsr0cg5rsmyibshrpcb9za0qgwvqccashdma7mlm1rflrh8pmh"))))
  1155. (build-system gnu-build-system)
  1156. (arguments
  1157. `(#:parallel-build? #f
  1158. #:configure-flags '("--with-randomdev=/dev/random")
  1159. #:phases
  1160. (modify-phases %standard-phases
  1161. (add-after 'unpack 'replace-bundled-bind
  1162. (lambda* (#:key inputs native-inputs #:allow-other-keys)
  1163. (delete-file "bind/bind.tar.gz")
  1164. (copy-file (assoc-ref inputs "bind-source-tarball")
  1165. "bind/bind.tar.gz")
  1166. (chmod "bind/bind.tar.gz" #o644)
  1167. (substitute* "bind/version.tmp"
  1168. (("^MAJORVER=.*")
  1169. (format #f "MAJORVER=~a\n" ,bind-major-version))
  1170. (("^MINORVER=.*")
  1171. (format #f "MINORVER=~a\n" ,bind-minor-version))
  1172. (("^PATCHVER=.*")
  1173. (format #f "PATCHVER=~a\n" ,bind-patch-version))
  1174. (("^RELEASETYPE=.*")
  1175. (format #f "RELEASETYPE=~a\n" ,bind-release-type))
  1176. (("^RELEASEVER=.*")
  1177. (format #f "RELEASEVER=~a\n" ,bind-release-version)))
  1178. #t))
  1179. ,@(if (%current-target-system)
  1180. '((add-before 'configure 'fix-bind-cross-compilation
  1181. (lambda _
  1182. (substitute* "configure"
  1183. (("--host=\\$host")
  1184. "--host=$host_alias"))
  1185. ;; BIND needs a native compiler because the DHCP
  1186. ;; build system uses the built 'gen' executable.
  1187. (setenv "BUILD_CC" "gcc")
  1188. #t)))
  1189. '())
  1190. (add-after 'configure 'post-configure
  1191. (lambda* (#:key outputs #:allow-other-keys)
  1192. ;; Point to the right client script, which will be
  1193. ;; installed in a later phase.
  1194. (substitute* "includes/dhcpd.h"
  1195. (("#define[[:blank:]]+_PATH_DHCLIENT_SCRIPT.*")
  1196. (let ((out (assoc-ref outputs "out")))
  1197. (string-append "#define _PATH_DHCLIENT_SCRIPT \""
  1198. out "/libexec/dhclient-script"
  1199. "\"\n"))))
  1200. ;; During the 'build' phase, 'bind.tar.gz' is extracted, so
  1201. ;; we must patch shebangs in there and make sure the right
  1202. ;; shell is used.
  1203. (with-directory-excursion "bind"
  1204. (substitute* "Makefile"
  1205. (("\\./configure ")
  1206. (let ((sh (which "sh")))
  1207. (string-append "./configure CONFIG_SHELL="
  1208. sh " SHELL=" sh " "))))
  1209. (let ((bind-directory (string-append "bind-" ,bind-version)))
  1210. (invoke "tar" "xf" "bind.tar.gz")
  1211. (for-each patch-shebang
  1212. (find-files bind-directory ".*"))
  1213. (substitute* (string-append bind-directory "/configure")
  1214. (("/usr/bin/file")
  1215. (which "file")))
  1216. (invoke "tar" "cf" "bind.tar.gz"
  1217. bind-directory
  1218. ;; avoid non-determinism in the archive
  1219. "--sort=name"
  1220. "--mtime=@0"
  1221. "--owner=root:0"
  1222. "--group=root:0")))))
  1223. (add-after 'install 'post-install
  1224. ;; TODO(core-updates): native-inputs isn't required anymore.
  1225. (lambda* (#:key ,@(if (%current-target-system)
  1226. '(native-inputs)
  1227. '())
  1228. inputs outputs #:allow-other-keys)
  1229. ;; Install the dhclient script for GNU/Linux and make sure
  1230. ;; if finds all the programs it needs.
  1231. (let* ((out (assoc-ref outputs "out"))
  1232. (libexec (string-append out "/libexec"))
  1233. (coreutils (assoc-ref inputs "coreutils*"))
  1234. (inetutils (assoc-ref inputs "inetutils"))
  1235. (net-tools (assoc-ref inputs "net-tools"))
  1236. (sed (assoc-ref inputs "sed*")))
  1237. (substitute* "client/scripts/linux"
  1238. (("/sbin/ip")
  1239. (search-input-file inputs "/sbin/ip")))
  1240. (mkdir-p libexec)
  1241. (copy-file "client/scripts/linux"
  1242. (string-append libexec "/dhclient-script"))
  1243. (wrap-program
  1244. (string-append libexec "/dhclient-script")
  1245. `("PATH" ":" prefix
  1246. ,(map (lambda (dir)
  1247. (string-append dir "/bin:"
  1248. dir "/sbin"))
  1249. (list inetutils net-tools coreutils sed))))
  1250. ;; TODO(core-updates): should not be required anymore,
  1251. ;; once <https://issues.guix.gnu.org/49290> has been merged.
  1252. ,@(if (%current-target-system)
  1253. '((for-each
  1254. (lambda (file)
  1255. (substitute* file
  1256. (((assoc-ref native-inputs "bash"))
  1257. (assoc-ref inputs "bash"))))
  1258. (list (string-append libexec
  1259. "/dhclient-script")
  1260. (string-append libexec
  1261. "/.dhclient-script-real"))))
  1262. '())
  1263. #t))))))
  1264. (native-inputs
  1265. `(("perl" ,perl)
  1266. ("file" ,file)))
  1267. (inputs `(("inetutils" ,inetutils)
  1268. ;; TODO(core-updates): simply make this unconditional
  1269. ,@(if (%current-target-system)
  1270. ;; for wrap-program
  1271. `(("bash" ,(canonical-package bash-minimal)))
  1272. '())
  1273. ,@(if (hurd-target?) '()
  1274. `(("net-tools" ,net-tools)
  1275. ("iproute" ,iproute)))
  1276. ;; isc-dhcp bundles a copy of BIND, which has proved vulnerable
  1277. ;; in the past. Use a BIND-VERSION of our choosing instead.
  1278. ("bind-source-tarball"
  1279. ,(origin
  1280. (method url-fetch)
  1281. (uri (string-append "https://ftp.isc.org/isc/bind9/"
  1282. bind-version
  1283. "/bind-" bind-version ".tar.gz"))
  1284. (sha256
  1285. (base32
  1286. "0hhkb4d14hvly2751cxl2s2xyim3bri8qaisgkcm456xfi5wpy6b"))))
  1287. ("coreutils*" ,coreutils)
  1288. ("sed*" ,sed)))
  1289. (home-page "https://www.isc.org/dhcp/")
  1290. (synopsis "Dynamic Host Configuration Protocol (DHCP) tools")
  1291. (description
  1292. "ISC's Dynamic Host Configuration Protocol (DHCP) distribution provides a
  1293. reference implementation of all aspects of DHCP, through a suite of DHCP
  1294. tools: server, client, and relay agent.")
  1295. (license license:mpl2.0)
  1296. (properties '((cpe-name . "dhcp"))))))
  1297. (define-public radvd
  1298. (package
  1299. (name "radvd")
  1300. (version "2.19")
  1301. (source
  1302. (origin
  1303. (method git-fetch)
  1304. (uri (git-reference
  1305. (url "https://github.com/radvd-project/radvd")
  1306. (commit (string-append "v" version))))
  1307. (file-name (git-file-name name version))
  1308. (sha256
  1309. (base32 "1df827m3vkjq2bcs5y9wg2cygvpdwl8ppl446qqhyym584gz54nl"))))
  1310. (build-system gnu-build-system)
  1311. (native-inputs
  1312. `(("autoconf" ,autoconf)
  1313. ("automake" ,automake)
  1314. ("bison" ,bison)
  1315. ("check" ,check)
  1316. ("flex" ,flex)
  1317. ("pkg-config" ,pkg-config)))
  1318. (arguments
  1319. `(#:configure-flags '("--with-check")))
  1320. (home-page "https://radvd.litech.org/")
  1321. (synopsis "IPv6 Router Advertisement Daemon")
  1322. (description
  1323. "The Router Advertisement Daemon (radvd) is run on systems acting as IPv6
  1324. routers. It sends Router Advertisement messages specified by RFC 2461
  1325. periodically and when requested by a node sending a Router Solicitation
  1326. message. These messages are required for IPv6 stateless autoconfiguration.")
  1327. (license (license:non-copyleft "file://COPYRIGHT"))))
  1328. (define-public libpcap
  1329. (package
  1330. (name "libpcap")
  1331. (version "1.10.1")
  1332. (source (origin
  1333. (method url-fetch)
  1334. (uri (string-append "https://www.tcpdump.org/release/libpcap-"
  1335. version ".tar.gz"))
  1336. (sha256
  1337. (base32
  1338. "1m5x26vlbymp90k1qh0w3nj2nxzyvfrmfmwpj17k81dgri55ya7d"))))
  1339. (build-system gnu-build-system)
  1340. (native-inputs
  1341. `(("bison" ,bison)
  1342. ("flex" ,flex)))
  1343. (arguments
  1344. ;; There are some tests in testprogs/, but no automated test suite.
  1345. `(#:tests? #f
  1346. #:phases
  1347. (modify-phases %standard-phases
  1348. (add-after 'unpack 'omit-static-library
  1349. ;; Neither build nor install libpcap.a.
  1350. (lambda _
  1351. (substitute* "Makefile.in"
  1352. ((" libpcap\\.a") "")
  1353. ((" install-archive ") " ")))))))
  1354. (home-page "https://www.tcpdump.org")
  1355. (synopsis "Network packet capture library")
  1356. (description
  1357. "libpcap is an interface for user-level packet capture. It provides a
  1358. portable framework for low-level network monitoring. Applications include
  1359. network statistics collection, security monitoring, network debugging, etc.")
  1360. (license (list license:bsd-4 ; fad-*.c and several other source files
  1361. license:bsd-3 ; pcap/, sockutils.* & others
  1362. license:bsd-2)))) ; the rest
  1363. (define-public tcpdump
  1364. (package
  1365. (name "tcpdump")
  1366. (version "4.99.1")
  1367. (source (origin
  1368. (method url-fetch)
  1369. (uri (string-append "https://www.tcpdump.org/release/tcpdump-"
  1370. version ".tar.gz"))
  1371. (sha256
  1372. (base32
  1373. "1ghfs5gifzrk3813zf9zalfbjs70wg6llz6q31k180r7zf2nkcvr"))))
  1374. (build-system gnu-build-system)
  1375. (inputs `(("libpcap" ,libpcap)
  1376. ("openssl" ,openssl)))
  1377. (native-inputs `(("perl" ,perl))) ; for tests
  1378. (home-page "https://www.tcpdump.org/")
  1379. (synopsis "Network packet analyzer")
  1380. (description
  1381. "Tcpdump is a command-line tool to analyze network traffic passing
  1382. through the network interface controller.")
  1383. (license license:bsd-3)))
  1384. (define-public jnettop
  1385. (package
  1386. (name "jnettop")
  1387. (version "0.13.0")
  1388. (source (origin
  1389. (method url-fetch)
  1390. (uri
  1391. (string-append "https://web.archive.org/web/20161221100811/"
  1392. "http://jnettop.kubs.info/dist/jnettop-"
  1393. version ".tar.gz"))
  1394. (sha256
  1395. (base32
  1396. "1855np7c4b0bqzhf1l1dyzxb90fpnvrirdisajhci5am6als31z9"))))
  1397. (build-system gnu-build-system)
  1398. (native-inputs
  1399. `(("pkg-config" ,pkg-config)))
  1400. (inputs
  1401. `(("glib" ,glib)
  1402. ("ncurses" ,ncurses)
  1403. ("libpcap" ,libpcap)))
  1404. (home-page
  1405. "https://web.archive.org/web/20160703195221/http://jnettop.kubs.info/wiki/")
  1406. (synopsis "Visualize network traffic by bandwidth use")
  1407. (description
  1408. "Jnettop is a traffic visualiser, which captures traffic going
  1409. through the host it is running from and displays streams sorted
  1410. by bandwidth they use.")
  1411. (license license:gpl2+)))
  1412. (define-public clusterssh
  1413. (package
  1414. (name "clusterssh")
  1415. (version "4.13.2")
  1416. (source (origin
  1417. (method url-fetch)
  1418. (uri (string-append "mirror://sourceforge/clusterssh/"
  1419. "2.%20ClusterSSH%20Series%204/"
  1420. "App-ClusterSSH-v" version ".tar.gz"))
  1421. (sha256
  1422. (base32
  1423. "0rmk2p3f2wz1h092anidjclh212rv3gxyk0c641qk3frlrjnw6mp"))))
  1424. (build-system perl-build-system)
  1425. (arguments
  1426. `(#:phases
  1427. (modify-phases %standard-phases
  1428. (add-after 'unpack 'refer-to-inputs
  1429. (lambda* (#:key inputs #:allow-other-keys)
  1430. (substitute* (list "lib/App/ClusterSSH/Config.pm"
  1431. "t/15config.t")
  1432. (("xterm")
  1433. (which "xterm")))
  1434. #t))
  1435. (add-before 'check 'delete-failing-tests
  1436. (lambda _
  1437. ;; This checks whether all code is nicely formatted. The above
  1438. ;; ‘refer-to-inputs’ phase breaks this pedantry, so disable it.
  1439. (delete-file "t/perltidy.t")
  1440. ;; Update the manifest so t/manifest.t happily passes.
  1441. (substitute* "MANIFEST"
  1442. (("t/perltidy.t\n") ""))
  1443. #t))
  1444. (add-after 'install 'augment-library-path
  1445. (lambda* (#:key inputs outputs #:allow-other-keys)
  1446. (let* ((out (assoc-ref outputs "out"))
  1447. (bin (string-append out "/bin")))
  1448. (with-directory-excursion bin
  1449. (for-each
  1450. (lambda (program)
  1451. (wrap-program program
  1452. `("PERL5LIB" ":" prefix
  1453. ,(map (lambda (file-name)
  1454. (string-append file-name
  1455. "/lib/perl5/site_perl"))
  1456. (cons out
  1457. (map (lambda (input)
  1458. (assoc-ref inputs input))
  1459. ;; These may be propagated and hence
  1460. ;; not explicitly listed as inputs.
  1461. (list "perl-class-data-inheritable"
  1462. "perl-devel-stacktrace"
  1463. "perl-exception-class"
  1464. "perl-tk"
  1465. "perl-try-tiny"
  1466. "perl-x11-protocol"
  1467. "perl-x11-protocol-other")))))))
  1468. (find-files "." ".*")))
  1469. #t))))))
  1470. (native-inputs
  1471. `(("perl-cpan-changes" ,perl-cpan-changes)
  1472. ("perl-file-slurp" ,perl-file-slurp)
  1473. ("perl-file-which" ,perl-file-which)
  1474. ("perl-module-build" ,perl-module-build)
  1475. ("perl-readonly" ,perl-readonly)
  1476. ("perl-test-differences" ,perl-test-differences)
  1477. ("perl-test-distmanifest" ,perl-test-distmanifest)
  1478. ("perl-test-perltidy" ,perl-test-perltidy)
  1479. ("perl-test-pod" ,perl-test-pod)
  1480. ("perl-test-pod-coverage" ,perl-test-pod-coverage)
  1481. ("perl-test-trap" ,perl-test-trap)
  1482. ("perltidy" ,perltidy)))
  1483. (inputs
  1484. `(("perl-exception-class" ,perl-exception-class)
  1485. ("perl-sort-naturally" ,perl-sort-naturally)
  1486. ("perl-tk" ,perl-tk)
  1487. ("perl-try-tiny" ,perl-try-tiny)
  1488. ("perl-x11-protocol" ,perl-x11-protocol)
  1489. ("perl-x11-protocol-other" ,perl-x11-protocol-other)
  1490. ("xterm" ,xterm)))
  1491. ;; The clusterssh.sourceforge.net address requires login to view
  1492. (home-page "https://sourceforge.net/projects/clusterssh/")
  1493. (synopsis "Secure concurrent multi-server terminal control")
  1494. (description
  1495. "ClusterSSH controls a number of xterm windows via a single graphical
  1496. console window to allow commands to be interactively run on multiple servers
  1497. over ssh connections.")
  1498. (license license:gpl2+)))
  1499. (define-public rename
  1500. (package
  1501. (name "rename")
  1502. (version "1.10")
  1503. (source (origin
  1504. (method url-fetch)
  1505. (uri (string-append
  1506. "mirror://cpan/authors/id/R/RM/RMBARKER/File-Rename-"
  1507. version ".tar.gz"))
  1508. (sha256
  1509. (base32
  1510. "137m8s06r4n038ivlr5r1d9a7q9l7shmwpvnyx053r9ndhvbnkh5"))))
  1511. (build-system perl-build-system)
  1512. (arguments
  1513. `(#:phases
  1514. (modify-phases %standard-phases
  1515. (add-after 'install 'find-itself
  1516. ;; Fix run-time 'Can't locate File/Rename.pm in @INC' failure.
  1517. (lambda* (#:key outputs #:allow-other-keys)
  1518. (let* ((out (assoc-ref outputs "out"))
  1519. (bin (string-append out "/bin")))
  1520. (with-directory-excursion bin
  1521. (for-each
  1522. (lambda (program)
  1523. (wrap-program program
  1524. `("PERL5LIB" ":" prefix
  1525. (,(string-append out "/lib/perl5/site_perl")))))
  1526. (find-files "." ".*")))
  1527. #t))))))
  1528. (native-inputs
  1529. `(("perl-module-build" ,perl-module-build)
  1530. ("perl-test-pod" ,perl-test-pod)
  1531. ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
  1532. (home-page "https://metacpan.org/pod/distribution/File-Rename/rename.PL")
  1533. (synopsis "Perl extension for renaming multiple files")
  1534. (description
  1535. "This package provides a Perl interface (@code{Perl::Rename}) as well
  1536. as a command-line utility (@command{rename}) that can rename multiple files
  1537. at once based on a Perl regular expression.")
  1538. (license license:perl-license)))
  1539. (define-public rottlog
  1540. (package
  1541. (name "rottlog")
  1542. (version "0.72.2")
  1543. (source (origin
  1544. (method url-fetch)
  1545. (uri (string-append "mirror://gnu/rottlog/rottlog-"
  1546. version ".tar.gz"))
  1547. (sha256
  1548. (base32
  1549. "0751mb9l2f0jrk3vj6q8ilanifd121dliwk0c34g8k0dlzsv3kd7"))
  1550. (modules '((guix build utils)))
  1551. (snippet
  1552. '(begin
  1553. (substitute* "Makefile.in"
  1554. (("-o \\$\\{LOG_OWN\\} -g \\$\\{LOG_GROUP\\}")
  1555. ;; Don't try to chown root.
  1556. "")
  1557. (("mkdir -p \\$\\(ROTT_STATDIR\\)")
  1558. ;; Don't attempt to create /var/lib/rottlog.
  1559. "true"))
  1560. #t))))
  1561. (build-system gnu-build-system)
  1562. (arguments
  1563. `(#:configure-flags (list "ROTT_ETCDIR=/etc/rottlog" ;rc file location
  1564. "--localstatedir=/var")
  1565. ;; Install example config files in OUT/etc.
  1566. #:make-flags (list (string-append "ROTT_ETCDIR="
  1567. (assoc-ref %outputs "out")
  1568. "/etc"))
  1569. #:phases (modify-phases %standard-phases
  1570. (add-after 'unpack 'patch-paths
  1571. (lambda* (#:key inputs #:allow-other-keys)
  1572. (substitute* "rc/rc"
  1573. (("/usr/sbin/sendmail")
  1574. (search-input-file inputs "/bin/mail")))
  1575. #t))
  1576. (add-after 'unpack 'fix-configure
  1577. (lambda* (#:key inputs native-inputs #:allow-other-keys)
  1578. ;; Replace outdated config.sub and config.guess:
  1579. (for-each (lambda (file)
  1580. (install-file
  1581. (string-append
  1582. (assoc-ref
  1583. (or native-inputs inputs) "automake")
  1584. "/share/automake-"
  1585. ,(version-major+minor
  1586. (package-version automake))
  1587. "/" file) "."))
  1588. '("config.sub" "config.guess"))
  1589. #t))
  1590. (add-after 'build 'set-packdir
  1591. (lambda _
  1592. ;; Set a default location for archived logs.
  1593. (substitute* "rc/rc"
  1594. (("packdir=\"\"")
  1595. "packdir=\"/var/log\""))
  1596. #t))
  1597. (add-before 'install 'tweak-rc-weekly
  1598. (lambda* (#:key inputs #:allow-other-keys)
  1599. (substitute* "rc/weekly"
  1600. (("/bin/kill")
  1601. (string-append (assoc-ref inputs "coreutils*")
  1602. "/bin/kill"))
  1603. (("syslogd\\.pid")
  1604. ;; The file is called 'syslog.pid' (no 'd').
  1605. "syslog.pid"))
  1606. #t))
  1607. (add-after 'install 'install-info
  1608. (lambda _
  1609. (invoke "make" "install-info"))))))
  1610. (native-inputs `(("texinfo" ,texinfo)
  1611. ("automake" ,automake)
  1612. ("util-linux" ,util-linux))) ; for 'cal'
  1613. (inputs `(("coreutils*" ,coreutils)
  1614. ("mailutils" ,mailutils)))
  1615. (home-page "https://www.gnu.org/software/rottlog/")
  1616. (synopsis "Log rotation and management")
  1617. (description
  1618. "GNU Rot[t]log is a program for managing log files. It is used to
  1619. automatically rotate out log files when they have reached a given size or
  1620. according to a given schedule. It can also be used to automatically compress
  1621. and archive such logs. Rot[t]log will mail reports of its activity to the
  1622. system administrator.")
  1623. (license license:gpl3+)))
  1624. (define-public sudo
  1625. (package
  1626. (name "sudo")
  1627. (version "1.9.8p2")
  1628. (source (origin
  1629. (method url-fetch)
  1630. (uri
  1631. (list (string-append "https://www.sudo.ws/sudo/dist/sudo-"
  1632. version ".tar.gz")
  1633. (string-append "ftp://ftp.sudo.ws/pub/sudo/OLD/sudo-"
  1634. version ".tar.gz")))
  1635. (sha256
  1636. (base32
  1637. "0b8gd15l2g22w4fhhz0gzmq5c8370klanmy2c1p3px6yly6qnfwy"))
  1638. (modules '((guix build utils)))
  1639. (snippet
  1640. '(begin
  1641. (delete-file-recursively "lib/zlib")))))
  1642. (build-system gnu-build-system)
  1643. (outputs (list "out"))
  1644. (arguments
  1645. `(#:configure-flags
  1646. (list (string-append "--docdir=" (assoc-ref %outputs "out")
  1647. "/share/doc/" ,name "-" ,version)
  1648. "--with-logpath=/var/log/sudo.log"
  1649. "--with-rundir=/var/run/sudo" ; must be cleaned up at boot time
  1650. "--with-vardir=/var/db/sudo"
  1651. "--with-iologdir=/var/log/sudo-io"
  1652. ;; 'visudo.c' expects _PATH_MV to be defined, but glibc doesn't
  1653. ;; provide it.
  1654. (string-append "CPPFLAGS=-D_PATH_MV='\""
  1655. (assoc-ref %build-inputs "coreutils")
  1656. "/bin/mv\"'"))
  1657. ;; Avoid non-determinism; see <http://bugs.gnu.org/21918>.
  1658. #:parallel-build? #f
  1659. #:phases
  1660. (modify-phases %standard-phases
  1661. (add-before 'configure 'pre-configure
  1662. (lambda _
  1663. (substitute* "src/sudo_usage.h.in"
  1664. ;; Do not capture 'configure' arguments since we would
  1665. ;; unduly retain references, and also because the
  1666. ;; CPPFLAGS above would close the string literal
  1667. ;; prematurely.
  1668. (("@CONFIGURE_ARGS@") "\"\""))
  1669. (substitute* (find-files "." "Makefile\\.in")
  1670. ;; Allow installation as non-root.
  1671. (("-o [[:graph:]]+ -g [[:graph:]]+")
  1672. "")
  1673. ;; Don't try to create /etc/sudoers.
  1674. (("^install: (.*)install-sudoers(.*)" _ before after)
  1675. (string-append "install: " before after "\n"))
  1676. ;; Don't try to create /run/sudo.
  1677. (("\\$\\(DESTDIR\\)\\$\\(rundir\\)")
  1678. "$(TMPDIR)/dummy")
  1679. ;; Install example sudo{,_logsrvd}.conf to the right place.
  1680. (("\\$\\(DESTDIR\\)\\$\\(sysconfdir\\)")
  1681. "$(DESTDIR)/$(docdir)/examples")
  1682. ;; Don't try to create /var/db/sudo.
  1683. (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
  1684. "$(TMPDIR)/dummy"))
  1685. ;; ‘Checking existing [/etc/]sudoers file for syntax errors’ is
  1686. ;; not the task of the build system, and fails.
  1687. (substitute* "plugins/sudoers/Makefile.in"
  1688. (("^pre-install:" match)
  1689. (string-append match "\ndisabled-" match))))))
  1690. ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
  1691. ;; the chroot's /etc/passwd doesn't have it. Turn off the tests.
  1692. #:tests? #f))
  1693. (native-inputs
  1694. `(("groff" ,groff)))
  1695. (inputs
  1696. `(("coreutils" ,coreutils)
  1697. ,@(if (hurd-target?)
  1698. '()
  1699. `(("linux-pam" ,linux-pam)))
  1700. ("zlib" ,zlib)))
  1701. (home-page "https://www.sudo.ws/")
  1702. (synopsis "Run commands as root")
  1703. (description
  1704. "Sudo (su \"do\") allows a system administrator to delegate authority to
  1705. give certain users (or groups of users) the ability to run some (or all)
  1706. commands as root or another user while providing an audit trail of the
  1707. commands and their arguments.")
  1708. ;; See <http://www.sudo.ws/sudo/license.html>.
  1709. (license license:x11)))
  1710. (define-public opendoas
  1711. (package
  1712. (name "opendoas")
  1713. (version "6.8.1")
  1714. (source (origin
  1715. (method git-fetch)
  1716. (uri (git-reference
  1717. (url "https://github.com/Duncaen/OpenDoas")
  1718. (commit (string-append "v" version))))
  1719. (file-name (git-file-name name version))
  1720. (sha256
  1721. (base32
  1722. "0gfcssm21vdfg6kcrcc7hz1h4jmhy2zv29rfqyrrj3a6r9b5ah8p"))))
  1723. (build-system gnu-build-system)
  1724. (arguments
  1725. `(#:phases
  1726. (modify-phases %standard-phases
  1727. (add-before 'configure 'pre-configure
  1728. (lambda* (#:key outputs #:allow-other-keys)
  1729. (substitute* "GNUmakefile"
  1730. (("^\tchown.*$") ""))
  1731. ;; OpenDoas look for binaries in safepath when a rule specify a
  1732. ;; relative command, such as “permit keepenv :wheel cmd guix”.
  1733. (substitute* "doas.c"
  1734. (("safepath =" match)
  1735. (string-append match " \""
  1736. "/run/setuid-programs:"
  1737. "/run/current-system/profile/bin:"
  1738. "/run/current-system/profile/sbin:"
  1739. "\" ")))
  1740. #t))
  1741. (replace 'configure
  1742. ;; The configure script doesn't accept most of the default flags.
  1743. (lambda* (#:key configure-flags #:allow-other-keys)
  1744. ;; The configure script can be told which compiler to use only
  1745. ;; through environment variables.
  1746. (setenv "CC" ,(cc-for-target))
  1747. (apply invoke "./configure" configure-flags))))
  1748. #:configure-flags
  1749. (list (string-append "--prefix=" (assoc-ref %outputs "out"))
  1750. "--with-timestamp")
  1751. ;; Compiler choice is not carried over from the configure script.
  1752. #:make-flags
  1753. (list (string-append "CC=" ,(cc-for-target)))
  1754. #:tests? #f)) ; no test suite
  1755. (native-inputs
  1756. `(("bison" ,bison)))
  1757. (home-page "https://github.com/Duncaen/OpenDoas")
  1758. (synopsis "Portable version of OpenBSD's doas command")
  1759. (description "Doas is a minimal replacement for the venerable sudo. It was
  1760. initially written by Ted Unangst of the OpenBSD project to provide 95% of the
  1761. features of sudo with a fraction of the codebase.")
  1762. (license (list license:bsd-3 ; libbsd/*
  1763. license:isc)))) ; everything else
  1764. (define-public wpa-supplicant-minimal
  1765. (package
  1766. (name "wpa-supplicant-minimal")
  1767. (version "2.9")
  1768. (source (origin
  1769. (method url-fetch)
  1770. (uri (string-append
  1771. "https://w1.fi/releases/wpa_supplicant-"
  1772. version ".tar.gz"))
  1773. (sha256
  1774. (base32
  1775. "05qzak1mssnxcgdrafifxh9w86a4ha69qabkg4bsigk499xyxggw"))
  1776. (modules '((guix build utils)))
  1777. (snippet
  1778. '(begin
  1779. (substitute* "wpa_supplicant/defconfig"
  1780. ;; Disable D-Bus to save ~14MiB on the closure size.
  1781. (("^CONFIG_CTRL_IFACE_DBUS" line _)
  1782. (string-append "#" line)))
  1783. #t))
  1784. (patches
  1785. (search-patches "wpa-supplicant-CVE-2021-27803.patch"
  1786. "wpa-supplicant-CVE-2021-30004.patch"))))
  1787. (build-system gnu-build-system)
  1788. (arguments
  1789. `(#:phases
  1790. (modify-phases %standard-phases
  1791. (replace 'configure
  1792. (lambda _
  1793. (chdir "wpa_supplicant")
  1794. (copy-file "defconfig" ".config")
  1795. (let ((port (open-file ".config" "al")))
  1796. (display "
  1797. CONFIG_DEBUG_SYSLOG=y
  1798. CONFIG_TLS=openssl
  1799. CONFIG_DRIVER_NL80211=y
  1800. CFLAGS += $(shell pkg-config libnl-3.0 --cflags)
  1801. CONFIG_LIBNL32=y
  1802. CONFIG_READLINE=y\n" port)
  1803. (close-port port))
  1804. ;; Make sure we have a pkg-config when cross compiling
  1805. (substitute* '(".config"
  1806. "Android.mk"
  1807. "Makefile"
  1808. "dbus/Makefile")
  1809. (("pkg-config")
  1810. (or (which "pkg-config")
  1811. (which (string-append ,(%current-target-system)
  1812. "-pkg-config")))))
  1813. #t))
  1814. (add-after 'install 'install-documentation
  1815. (lambda* (#:key outputs #:allow-other-keys)
  1816. (let* ((out (assoc-ref outputs "out"))
  1817. (doc (string-append out "/share/doc/wpa-supplicant"))
  1818. (man (string-append out "/share/man"))
  1819. (man5 (string-append man "/man5"))
  1820. (man8 (string-append man "/man8")))
  1821. (define (copy-man-page target)
  1822. (lambda (file)
  1823. (install-file file target)))
  1824. (mkdir-p man5) (mkdir man8)
  1825. (for-each (copy-man-page man5)
  1826. (find-files "doc/docbook" "\\.5"))
  1827. (for-each (copy-man-page man8)
  1828. (find-files "doc/docbook" "\\.8"))
  1829. ;; wpa_supplicant.conf(5) does not explain all configuration
  1830. ;; options but refers to the example config file, so install it
  1831. ;; along with READMEs.
  1832. (for-each (lambda (file)
  1833. (install-file file doc))
  1834. '("README" "README-DPP" "README-HS20"
  1835. "README-P2P" "README-WPS"
  1836. "wpa_supplicant.conf"))
  1837. #t))))
  1838. #:make-flags (list (string-append "CC=" ,(cc-for-target))
  1839. (string-append "BINDIR=" (assoc-ref %outputs "out")
  1840. "/sbin")
  1841. (string-append "LIBDIR=" (assoc-ref %outputs "out")
  1842. "/lib"))
  1843. #:tests? #f))
  1844. (inputs
  1845. `(("readline" ,readline)
  1846. ("libnl" ,libnl)
  1847. ("openssl" ,openssl)))
  1848. (native-inputs
  1849. `(("pkg-config" ,pkg-config)))
  1850. (home-page "https://w1.fi/wpa_supplicant/")
  1851. (synopsis "Connecting to WPA and WPA2-protected wireless networks")
  1852. (description
  1853. "wpa_supplicant is a WPA Supplicant with support for WPA and WPA2 (IEEE
  1854. 802.11i / RSN). Supplicant is the IEEE 802.1X/WPA component that is used in
  1855. the client stations. It implements key negotiation with a WPA Authenticator
  1856. and it controls the roaming and IEEE 802.11 authentication/association of the
  1857. WLAN driver.
  1858. This package provides the @code{wpa_supplicant} daemon and the @code{wpa_cli}
  1859. command.")
  1860. ;; In practice, this is linked against Readline, which makes it GPLv3+.
  1861. (license license:bsd-3)
  1862. (properties `((cpe-name . "wpa_supplicant")))))
  1863. (define-public wpa-supplicant
  1864. (package (inherit wpa-supplicant-minimal)
  1865. (name "wpa-supplicant")
  1866. (inputs `(("dbus" ,dbus)
  1867. ,@(package-inputs wpa-supplicant-minimal)))
  1868. (arguments
  1869. (substitute-keyword-arguments (package-arguments wpa-supplicant-minimal)
  1870. ((#:phases phases)
  1871. `(modify-phases ,phases
  1872. (add-after 'configure 'configure-for-dbus
  1873. (lambda _
  1874. (let ((port (open-file ".config" "al")))
  1875. (display "
  1876. CONFIG_CTRL_IFACE_DBUS_NEW=y
  1877. CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port)
  1878. (close-port port))
  1879. #t))
  1880. (add-after 'install-documentation 'install-dbus-conf
  1881. (lambda* (#:key outputs #:allow-other-keys)
  1882. (let* ((out (assoc-ref outputs "out"))
  1883. (dir (string-append out "/etc/dbus-1/system.d")))
  1884. (mkdir-p dir)
  1885. (copy-file "dbus/dbus-wpa_supplicant.conf"
  1886. (string-append dir "/wpa_supplicant.conf")))
  1887. #t))))))))
  1888. (define-public wpa-supplicant-gui
  1889. (package
  1890. (inherit wpa-supplicant)
  1891. (name "wpa-supplicant-gui")
  1892. (inputs `(("qtbase" ,qtbase-5)
  1893. ("qtsvg" ,qtsvg)
  1894. ,@(package-inputs wpa-supplicant)))
  1895. (native-inputs
  1896. ;; For icons.
  1897. `(("imagemagick" ,imagemagick)
  1898. ("inkscape" ,inkscape)
  1899. ,@(package-native-inputs wpa-supplicant)))
  1900. (arguments
  1901. `(#:phases (modify-phases %standard-phases
  1902. (add-after 'unpack 'chdir
  1903. (lambda _
  1904. (chdir "wpa_supplicant/wpa_gui-qt4")
  1905. #t))
  1906. (delete 'configure)
  1907. (replace 'build
  1908. (lambda _
  1909. (invoke "qmake" "wpa_gui.pro")
  1910. (invoke "make" "-j" (number->string (parallel-job-count)))
  1911. (invoke "make" "-C" "icons")))
  1912. (replace 'install
  1913. (lambda* (#:key inputs outputs #:allow-other-keys)
  1914. (let ((out (assoc-ref outputs "out"))
  1915. (qt '("qtbase" "qtsvg")))
  1916. (install-file "wpa_gui" (string-append out "/bin"))
  1917. (install-file "wpa_gui.desktop"
  1918. (string-append out "/share/applications"))
  1919. (copy-recursively "icons/hicolor"
  1920. (string-append out "/share/icons/hicolor"))
  1921. (wrap-program (string-append out "/bin/wpa_gui")
  1922. `("QT_PLUGIN_PATH" ":" prefix
  1923. ,(map (lambda (label)
  1924. (string-append (assoc-ref inputs label)
  1925. "/lib/qt5/plugins/"))
  1926. qt)))
  1927. #t))))))
  1928. (synopsis "Graphical user interface for WPA supplicant")))
  1929. (define-public hostapd
  1930. (package
  1931. (name "hostapd")
  1932. (version "2.9")
  1933. (source (origin
  1934. (method url-fetch)
  1935. (uri (string-append "https://w1.fi/releases/hostapd-" version
  1936. ".tar.gz"))
  1937. (sha256
  1938. (base32
  1939. "1mrbvg4v7vm7mknf0n29mf88k3s4a4qj6r4d51wq8hmjj1m7s7c8"))
  1940. (patches
  1941. (search-patches "wpa-supplicant-CVE-2021-27803.patch"
  1942. "wpa-supplicant-CVE-2021-30004.patch"))))
  1943. (build-system gnu-build-system)
  1944. (arguments
  1945. `(#:phases
  1946. (modify-phases %standard-phases
  1947. (replace 'configure
  1948. (lambda _
  1949. ;; This is mostly copied from 'wpa-supplicant' above.
  1950. (chdir "hostapd")
  1951. (copy-file "defconfig" ".config")
  1952. (let ((port (open-file ".config" "al")))
  1953. (display "
  1954. CONFIG_LIBNL32=y
  1955. CONFIG_IEEE80211R=y
  1956. CONFIG_IEEE80211N=y
  1957. CONFIG_IEEE80211AC=y\n" port)
  1958. (close-port port))
  1959. #t))
  1960. (add-after 'unpack 'patch-pkg-config
  1961. (lambda _
  1962. (substitute* "src/drivers/drivers.mak"
  1963. (("pkg-config")
  1964. (or (which "pkg-config")
  1965. (string-append ,(%current-target-system)
  1966. "-pkg-config"))))
  1967. #t))
  1968. (add-after 'install 'install-man-pages
  1969. (lambda* (#:key outputs #:allow-other-keys)
  1970. (let* ((out (assoc-ref outputs "out"))
  1971. (man (string-append out "/share/man"))
  1972. (man1 (string-append man "/man1"))
  1973. (man8 (string-append man "/man8")))
  1974. (define (copy-man-page target)
  1975. (lambda (file)
  1976. (install-file file target)))
  1977. (for-each (copy-man-page man1)
  1978. (find-files "." "\\.1"))
  1979. (for-each (copy-man-page man8)
  1980. (find-files "." "\\.8"))
  1981. #t))))
  1982. #:make-flags (list (string-append "CC=" ,(cc-for-target))
  1983. (string-append "BINDIR=" (assoc-ref %outputs "out")
  1984. "/sbin")
  1985. (string-append "LIBDIR=" (assoc-ref %outputs "out")
  1986. "/lib"))
  1987. #:tests? #f))
  1988. (native-inputs `(("pkg-config" ,pkg-config)))
  1989. ;; There's an optional dependency on SQLite.
  1990. (inputs `(("openssl" ,openssl)
  1991. ("libnl" ,libnl)))
  1992. (home-page "https://w1.fi/hostapd/")
  1993. (synopsis "Daemon for Wi-Fi access points and authentication servers")
  1994. (description
  1995. "hostapd is a user-space daemon for WiFi access points and authentication
  1996. servers. It implements IEEE 802.11 access point management, IEEE
  1997. 802.1X/WPA/WPA2/EAP Authenticators, RADIUS client, EAP server, and RADIUS
  1998. authentication server.")
  1999. ;; Same license as wpa_supplicant.
  2000. (license license:bsd-3)))
  2001. (define-public wakelan
  2002. (package
  2003. (name "wakelan")
  2004. (version "1.1")
  2005. (source (origin
  2006. (method url-fetch)
  2007. (uri (string-append
  2008. "ftp://ftp.gwdg.de/pub/linux/metalab/system/network/misc/wakelan-"
  2009. version ".tar.gz"))
  2010. (sha256
  2011. (base32
  2012. "0vydqpf44146ir6k87gmqaq6xy66xhc1gkr3nsd7jj3nhy7ypx9x"))))
  2013. (build-system gnu-build-system)
  2014. (arguments
  2015. '(#:phases
  2016. (modify-phases %standard-phases
  2017. (replace 'configure
  2018. (lambda* (#:key outputs #:allow-other-keys)
  2019. (let ((out (assoc-ref outputs "out")))
  2020. (mkdir-p (string-append out "/bin"))
  2021. (mkdir-p (string-append out "/share/man/man1"))
  2022. ;; It's an old configure script that doesn't understand
  2023. ;; the extra options we pass.
  2024. (setenv "CONFIG_SHELL" (which "bash"))
  2025. (invoke "./configure"
  2026. (string-append "--prefix=" out)
  2027. (string-append "--mandir=" out
  2028. "/share/man"))))))
  2029. #:tests? #f))
  2030. (home-page "https://www.kernel.org") ; really, no home page
  2031. (synopsis "Send a wake-on-LAN packet")
  2032. (description
  2033. "WakeLan broadcasts a properly formatted UDP packet across the local area
  2034. network, which causes enabled computers to power on.")
  2035. (license license:gpl2+)))
  2036. (define-public dmidecode
  2037. (package
  2038. (name "dmidecode")
  2039. (version "3.3")
  2040. (source
  2041. (origin
  2042. (method url-fetch)
  2043. (uri (string-append "mirror://savannah/dmidecode/dmidecode-"
  2044. version ".tar.xz"))
  2045. (sha256
  2046. (base32 "0m8lzg9rf1qssasiix672bxk5qwms90561g8hfkkhk31h2kkgiw2"))))
  2047. (build-system gnu-build-system)
  2048. (arguments
  2049. `(#:tests? #f ; no 'check' target
  2050. #:make-flags
  2051. (list (string-append "CC=" ,(cc-for-target))
  2052. (string-append "prefix="
  2053. (assoc-ref %outputs "out")))
  2054. #:phases
  2055. (modify-phases %standard-phases
  2056. (delete 'configure)))) ; no configure script
  2057. (home-page "https://www.nongnu.org/dmidecode/")
  2058. (synopsis "Read hardware information from the BIOS")
  2059. (description
  2060. "Dmidecode reports information about your system's hardware as described
  2061. in your system BIOS according to the SMBIOS/DMI standard. This typically
  2062. includes system manufacturer, model name, serial number, BIOS version, asset
  2063. tag as well as a lot of other details of varying level of interest and
  2064. reliability depending on the manufacturer. This will often include usage
  2065. status for the CPU sockets, expansion slots (e.g. AGP, PCI, ISA) and memory
  2066. module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
  2067. (license license:gpl2+)))
  2068. (define-public acpica
  2069. (package
  2070. (name "acpica")
  2071. (version "20210930")
  2072. (source (origin
  2073. (method url-fetch)
  2074. (uri (string-append
  2075. "https://acpica.org/sites/acpica/files/acpica-unix2-"
  2076. version ".tar.gz"))
  2077. (sha256
  2078. (base32
  2079. "06wsrl1118sl9z76p9sh53zvzv5hpm82qks896d8slx5dgnzrrll"))))
  2080. (build-system gnu-build-system)
  2081. (native-inputs `(("flex" ,flex)
  2082. ("bison" ,bison)))
  2083. (arguments
  2084. `(#:make-flags (list (string-append "PREFIX=" %output)
  2085. (string-append "CC=" ,(cc-for-target))
  2086. "HOST=_LINUX"
  2087. "OPT_CFLAGS=-Wall -fno-strict-aliasing")
  2088. #:tests? #f ; no 'check' target
  2089. #:phases (modify-phases %standard-phases (delete 'configure))))
  2090. (home-page "https://acpica.org/")
  2091. (synopsis "Tools for the development and debugging of ACPI tables")
  2092. (description
  2093. "The @acronym{ACPICA, ACPI Component Architecture} project provides an
  2094. OS-independent reference implementation of the @acronym{ACPI, Advanced
  2095. Configuration and Power Interface} specification. ACPICA code contains those
  2096. portions of ACPI meant to be directly integrated into the host OS as a
  2097. kernel-resident subsystem, and a small set of tools to assist in developing and
  2098. debugging ACPI tables.
  2099. This package contains only the user-space tools needed for ACPI table
  2100. development, not the kernel implementation of ACPI.")
  2101. (license license:gpl2))) ; dual GPLv2/ACPICA Licence
  2102. (define-public s-tui
  2103. (package
  2104. (name "s-tui")
  2105. (version "1.1.1")
  2106. (source
  2107. (origin
  2108. (method url-fetch)
  2109. (uri (pypi-uri "s-tui" version))
  2110. (sha256
  2111. (base32 "1clk59wf6v1lq33h4x5qwxvz5ng9mfkp1s6ynxa58w2raq8dbmy5"))))
  2112. (build-system python-build-system)
  2113. (inputs
  2114. `(("python-psutil" ,python-psutil)
  2115. ("python-urwid" ,python-urwid)))
  2116. (home-page "https://github.com/amanusk/s-tui")
  2117. (synopsis "Interactive terminal stress test and monitoring tool")
  2118. (description
  2119. "The Stress Terminal UI displays graphs of the CPU frequency,
  2120. utilization, temperature and power.")
  2121. (license license:gpl2+)))
  2122. (define-public stress
  2123. (package
  2124. (name "stress")
  2125. (version "1.0.5")
  2126. (source (origin
  2127. (method url-fetch)
  2128. (uri (string-append "mirror://debian/pool/main/s/stress/stress_"
  2129. version ".orig.tar.gz"))
  2130. (sha256
  2131. (base32
  2132. "09shpd85g8dvpiw0mnwykss676g0s7lbi8ab37xjinb5lfff960p"))))
  2133. (build-system gnu-build-system)
  2134. (native-inputs
  2135. `(("autoconf" ,autoconf)
  2136. ("automake" ,automake)))
  2137. (home-page "https://packages.debian.org/sid/stress")
  2138. (synopsis "Impose load on and stress test a computer system")
  2139. (description
  2140. "Stress is a tool that imposes a configurable amount of CPU, memory, I/O,
  2141. or disk stress on a POSIX-compliant operating system and reports any errors it
  2142. detects.
  2143. Stress is not a benchmark. It is a tool used by system administrators to
  2144. evaluate how well their systems will scale, by kernel programmers to evaluate
  2145. perceived performance characteristics, and by systems programmers to expose
  2146. the classes of bugs which only or more frequently manifest themselves when the
  2147. system is under heavy load.")
  2148. (license license:gpl2+)))
  2149. (define-public detox
  2150. (package
  2151. (name "detox")
  2152. (version "1.4.5")
  2153. (source (origin
  2154. (method git-fetch)
  2155. (uri (git-reference
  2156. (url "https://github.com/dharple/detox")
  2157. (commit (string-append "v" version))))
  2158. (file-name (git-file-name name version))
  2159. (sha256
  2160. (base32
  2161. "116bgpbkh3c96h6vq0880rmnpb5kbnnlvvkpsrcib6928bj8lfvi"))))
  2162. (build-system gnu-build-system)
  2163. (native-inputs
  2164. `(("autoconf" ,autoconf)
  2165. ("automake" ,automake)
  2166. ("flex" ,flex)))
  2167. (arguments
  2168. `(#:phases (modify-phases %standard-phases
  2169. (add-after 'unpack 'delete-configure
  2170. ;; The "configure" script is present, but otherwise the
  2171. ;; project is not bootstrapped: missing install-sh and
  2172. ;; Makefile.in, so delete it so the bootstrap phase will
  2173. ;; take over.
  2174. (lambda _ (delete-file "configure") #t))
  2175. (replace 'check
  2176. (lambda _
  2177. (invoke "./tests/test.sh" "src/detox"))))))
  2178. (home-page "https://github.com/dharple/detox")
  2179. (synopsis "Clean up file names")
  2180. (description
  2181. "Detox is a program that renames files to make them easier to work with
  2182. under Unix and related operating systems. Spaces and various other unsafe
  2183. characters (such as \"$\") get replaced with \"_\". ISO 8859-1 (Latin-1)
  2184. characters can be replaced as well, as can UTF-8 characters.")
  2185. (license license:bsd-3)))
  2186. (define-public testdisk
  2187. (package
  2188. (name "testdisk")
  2189. (version "7.1")
  2190. (source (origin
  2191. (method url-fetch)
  2192. (uri (string-append "https://www.cgsecurity.org/testdisk-"
  2193. version ".tar.bz2"))
  2194. (sha256
  2195. (base32
  2196. "1zlh44w67py416hkvw6nrfmjickc2d43v51vcli5p374d5sw84ql"))))
  2197. (build-system gnu-build-system)
  2198. (inputs
  2199. `(("ntfs-3g" ,ntfs-3g)
  2200. ("util-linux" ,util-linux "lib")
  2201. ("openssl" ,openssl)
  2202. ;; FIXME: add reiserfs.
  2203. ("zlib" ,zlib)
  2204. ("e2fsprogs" ,e2fsprogs)
  2205. ("libjpeg" ,libjpeg-turbo)
  2206. ("ncurses" ,ncurses)))
  2207. (home-page "https://www.cgsecurity.org/wiki/TestDisk")
  2208. (synopsis "Data recovery tool")
  2209. (description
  2210. "TestDisk is a program for data recovery, primarily designed to help
  2211. recover lost partitions and/or make non-booting disks bootable again.")
  2212. (license license:gpl2+)))
  2213. (define-public tree
  2214. (package
  2215. (name "tree")
  2216. (version "1.8.0")
  2217. (source (origin
  2218. (method url-fetch)
  2219. (uri (string-append
  2220. "http://mama.indstate.edu/users/ice/tree/src/tree-"
  2221. version ".tgz"))
  2222. (sha256
  2223. (base32 "1hmpz6k0mr6salv0nprvm1g0rdjva1kx03bdf1scw8a38d5mspbi"))))
  2224. (build-system gnu-build-system)
  2225. (arguments
  2226. '(#:phases (modify-phases %standard-phases (delete 'configure))
  2227. #:tests? #f ; no check target
  2228. #:make-flags (let ((out (assoc-ref %outputs "out")))
  2229. (list (string-append "prefix=" out)))))
  2230. (synopsis "Recursively list the contents of a directory")
  2231. (description
  2232. "Tree is a recursive directory listing command that produces a depth
  2233. indented listing of files, which is colorized ala dircolors if the LS_COLORS
  2234. environment variable is set and output is to tty.")
  2235. (home-page "http://mama.indstate.edu/users/ice/tree/")
  2236. (license license:gpl2+)))
  2237. (define-public lr
  2238. (package
  2239. (name "lr")
  2240. (version "1.5.1")
  2241. (source
  2242. (origin
  2243. (method git-fetch)
  2244. (uri (git-reference
  2245. (url "https://git.vuxu.org/lr/")
  2246. (commit (string-append "v" version))))
  2247. (file-name (git-file-name name version))
  2248. (sha256
  2249. (base32 "1wv2acm4r5y5gg6f64v2hiwpg1f3lnr4fy1a9zssw77fmdc7ys3j"))))
  2250. (build-system gnu-build-system)
  2251. (arguments
  2252. `(#:tests? #f
  2253. #:make-flags (list (string-append "CC=" ,(cc-for-target))
  2254. (string-append "PREFIX=" %output))
  2255. #:phases (modify-phases %standard-phases
  2256. (delete 'configure))))
  2257. (synopsis "Tool to generate customized file listings")
  2258. (description
  2259. "lr is a tool for generating file listings, which includes the best
  2260. features of ls(1), find(1), stat(1) and du(1).")
  2261. (home-page "https://git.vuxu.org/lr/about")
  2262. (license license:expat)))
  2263. (define-public direvent
  2264. (package
  2265. (name "direvent")
  2266. (version "5.2")
  2267. (source (origin
  2268. (method url-fetch)
  2269. (uri (string-append "mirror://gnu/direvent/direvent-"
  2270. version ".tar.gz"))
  2271. (sha256
  2272. (base32
  2273. "0m9vi01b1km0cpknflyzsjnknbava0s1n6393b2bpjwyvb6j5613"))
  2274. (modules '((guix build utils)))
  2275. (snippet '(begin
  2276. (substitute* "tests/testsuite"
  2277. (("#![[:blank:]]?/bin/sh")
  2278. "#!$SHELL"))
  2279. #t))))
  2280. (build-system gnu-build-system)
  2281. (arguments
  2282. '(#:phases
  2283. (modify-phases %standard-phases
  2284. (add-before 'build 'patch-/bin/sh
  2285. (lambda* (#:key inputs #:allow-other-keys)
  2286. ;; Use the right shell when executing the watcher and
  2287. ;; user-provided shell commands.
  2288. (let ((bash (assoc-ref inputs "bash")))
  2289. (substitute* '("src/direvent.c" "src/progman.c")
  2290. (("\"/bin/sh\"")
  2291. (string-append "\"" bash "/bin/sh\"")))
  2292. ;; Adjust the 'shell.at' test accordingly.
  2293. (substitute* "tests/testsuite"
  2294. (("SHELL=/bin/sh")
  2295. (string-append "SHELL=" bash "/bin/sh")))
  2296. #t))))))
  2297. (home-page "https://www.gnu.org.ua/software/direvent/")
  2298. (synopsis "Daemon to monitor directories for events such as file removal")
  2299. (description
  2300. "A daemon that monitors directories for events, such as creating,
  2301. deleting or modifying files. It can monitor different sets of directories for
  2302. different events. When an event is detected, direvent calls a specified
  2303. external program with information about the event, such as the location
  2304. within the file system where it occurred. Thus, \"direvent\" provides an
  2305. easy way to react immediately if given files undergo changes, for example, to
  2306. track changes in important system configuration files.")
  2307. (license license:gpl3+)))
  2308. (define-public libcap-ng
  2309. (package
  2310. (name "libcap-ng")
  2311. (version "0.8.2")
  2312. (source (origin
  2313. (method url-fetch)
  2314. (uri (string-append
  2315. "https://people.redhat.com/sgrubb/libcap-ng/libcap-ng-"
  2316. version ".tar.gz"))
  2317. (sha256
  2318. (base32
  2319. "1sasp1n154aqy9fz0knlb966svm7xg1zjhg1vr4q839bgjvq7h2j"))))
  2320. (build-system gnu-build-system)
  2321. (arguments
  2322. `(#:configure-flags
  2323. (list "--without-python")))
  2324. (home-page "https://people.redhat.com/sgrubb/libcap-ng/")
  2325. (synopsis "Library for more easily working with POSIX capabilities")
  2326. (description
  2327. "The libcap-ng library is intended to make programming with POSIX
  2328. capabilities easier than the traditional libcap library. It includes
  2329. utilities that can analyse all currently running applications and print out
  2330. any capabilities and whether or not it has an open ended bounding set. The
  2331. included utilities are designed to let admins and developers spot apps from
  2332. various ways that may be running with too much privilege.")
  2333. ;; The library is lgpl2.1+, but also ships some utils which are gpl2+.
  2334. (license (list license:lgpl2.1+ license:gpl2+))))
  2335. (define-public smartmontools
  2336. (package
  2337. (name "smartmontools")
  2338. (version "7.2")
  2339. (source (origin
  2340. (method url-fetch)
  2341. (uri (string-append
  2342. "mirror://sourceforge/smartmontools/smartmontools/"
  2343. version "/smartmontools-" version ".tar.gz"))
  2344. (sha256
  2345. (base32
  2346. "1mlc25sd5rgj5xmzcllci47inmfdw7cp185fday6hc9rwqkqmnaw"))))
  2347. (build-system gnu-build-system)
  2348. (inputs `(("libcap-ng" ,libcap-ng)))
  2349. (home-page "https://www.smartmontools.org/")
  2350. (synopsis "S.M.A.R.T. harddisk control and monitoring tools")
  2351. (description
  2352. "The smartmontools package contains utility programs to control and
  2353. monitor storage systems using the Self-Monitoring, Analysis and Reporting
  2354. Technology System (@dfn{S.M.A.R.T.}) built into most modern ATA and SCSI hard
  2355. disks. In many cases, these utilities will provide advanced warning of disk
  2356. degradation and failure.")
  2357. (license license:gpl2+)))
  2358. (define-public fdupes
  2359. (package
  2360. (name "fdupes")
  2361. (version "2.1.2")
  2362. (source
  2363. (origin
  2364. (method url-fetch)
  2365. (uri (string-append "https://github.com/adrianlopezroche/fdupes/"
  2366. "releases/download/v" version "/"
  2367. "fdupes-" version ".tar.gz"))
  2368. (sha256
  2369. (base32 "1g9p50xhi2sp0hqxml4w2k0kq9jv988q2yxm347z5349dlxvap6d"))))
  2370. (build-system gnu-build-system)
  2371. (inputs
  2372. `(("ncurses" ,ncurses)
  2373. ("pcre2" ,pcre2)))
  2374. (home-page "https://github.com/adrianlopezroche/fdupes")
  2375. (synopsis "Identify duplicate files")
  2376. (description
  2377. "fdupes is a program for identifying duplicate files residing within
  2378. specified directories.")
  2379. (license license:expat)))
  2380. (define-public graphios
  2381. (package
  2382. (name "graphios")
  2383. (version "2.0.3")
  2384. (source
  2385. (origin
  2386. (method url-fetch)
  2387. (uri (pypi-uri "graphios" version))
  2388. (sha256
  2389. (base32
  2390. "1h87hvc315wg6lklbf4l7csd3n5pgljwrfli1p3nasdi0izgn66i"))))
  2391. (build-system python-build-system)
  2392. (arguments
  2393. ;; Be warned: Building with Python 3 succeeds, but the build process
  2394. ;; throws a syntax error that is ignored.
  2395. `(#:python ,python-2
  2396. #:phases
  2397. (modify-phases %standard-phases
  2398. (add-before 'build 'fix-setup.py
  2399. (lambda* (#:key outputs #:allow-other-keys)
  2400. ;; Fix hardcoded, unprefixed file names.
  2401. (let ((out (assoc-ref outputs "out")))
  2402. (substitute* '("setup.py")
  2403. (("/etc") (string-append out "/etc"))
  2404. (("/usr") out)
  2405. (("distro_ver = .*") "distro_ver = ''"))
  2406. #t))))))
  2407. (home-page "https://github.com/shawn-sterling/graphios")
  2408. (synopsis "Emit Nagios metrics to Graphite, Statsd, and Librato")
  2409. (description
  2410. "Graphios is a script to emit nagios perfdata to various upstream metrics
  2411. processing and time-series systems. It's currently compatible with Graphite,
  2412. Statsd, Librato and InfluxDB. Graphios can emit Nagios metrics to any number
  2413. of supported upstream metrics systems simultaneously.")
  2414. (license license:gpl2+)))
  2415. (define-public ansible-core
  2416. (package
  2417. (name "ansible-core")
  2418. (version "2.11.4")
  2419. (source
  2420. (origin
  2421. (method url-fetch)
  2422. (uri (pypi-uri "ansible-core" version))
  2423. (sha256
  2424. (base32
  2425. "0jgahcv2pyc5ky0wir55a1h9q9d6rgqj60rqmvlpbj76vz1agsi2"))))
  2426. (build-system python-build-system)
  2427. (arguments
  2428. `(#:modules ((guix build python-build-system)
  2429. (guix build utils)
  2430. (ice-9 ftw))
  2431. #:phases
  2432. (modify-phases %standard-phases
  2433. ;; Several ansible commands (ansible-config, ansible-console, etc.)
  2434. ;; are just symlinks to a single ansible executable. The ansible
  2435. ;; executable behaves differently based on the value of sys.argv[0].
  2436. ;; This does not work well with our wrap phase, and therefore the
  2437. ;; following two phases are required as a workaround.
  2438. (add-after 'unpack 'hide-wrapping
  2439. (lambda _
  2440. ;; Overwrite sys.argv[0] to hide the wrapper script from it.
  2441. (substitute* "bin/ansible"
  2442. (("import traceback" all)
  2443. (string-append all "
  2444. import re
  2445. sys.argv[0] = re.sub(r'\\.([^/]*)-real$', r'\\1', sys.argv[0])
  2446. ")))))
  2447. (add-after 'install 'replace-symlinks
  2448. (lambda* (#:key outputs #:allow-other-keys)
  2449. ;; Replace symlinks with duplicate copies of the ansible
  2450. ;; executable so that sys.argv[0] has the correct value.
  2451. (define bin (string-append (assoc-ref outputs "out") "/bin"))
  2452. (with-directory-excursion bin
  2453. (for-each
  2454. (lambda (ansible-symlink)
  2455. (delete-file ansible-symlink)
  2456. (copy-file "ansible" ansible-symlink))
  2457. (scandir "." (lambda (x)
  2458. (and (eq? 'symlink (stat:type (lstat x)))
  2459. (string-prefix? "ansible-" x)
  2460. (string=? "ansible" (readlink x)))))))))
  2461. (add-after 'unpack 'preserve-pythonpath
  2462. (lambda _
  2463. (substitute* "test/lib/ansible_test/_internal/ansible_util.py"
  2464. (("PYTHONPATH=get_ansible_python_path\\(args\\)" all)
  2465. (string-append all "+ ':' + os.environ['PYTHONPATH']")))))
  2466. (add-after 'unpack 'patch-paths
  2467. (lambda* (#:key inputs outputs #:allow-other-keys)
  2468. (substitute* "lib/ansible/module_utils/compat/selinux.py"
  2469. (("libselinux.so.1" name)
  2470. (string-append (assoc-ref inputs "libselinux")
  2471. "/lib/" name)))
  2472. (substitute* "test/units/modules/test_async_wrapper.py"
  2473. (("/usr/bin/python")
  2474. (which "python")))))
  2475. (replace 'check
  2476. ;; The environment for the test suite can be tricky to get right.
  2477. ;; The environment used for Ansible's CI defined in the following
  2478. ;; Dockerfile can be used as a reference:
  2479. ;; https://raw.githubusercontent.com/ansible/
  2480. ;; default-test-container/master/Dockerfile.
  2481. (lambda* (#:key inputs outputs tests? #:allow-other-keys)
  2482. (when tests?
  2483. ;; Otherwise Ansible fails to create its config directory.
  2484. (setenv "HOME" "/tmp")
  2485. (setenv "PATH" (string-append (getenv "PATH") ":"
  2486. (assoc-ref outputs "out") "/bin"))
  2487. (add-installed-pythonpath inputs outputs)
  2488. ;; This test module messes up with sys.path and causes many
  2489. ;; test failures.
  2490. (delete-file "test/units/_vendor/test_vendor.py")
  2491. ;; The test fails when run in the container, for reasons
  2492. ;; unknown.
  2493. (delete-file "test/units/utils/test_display.py")
  2494. ;; This test fail for reasons unknown.
  2495. (delete-file "test/units/cli/test_adhoc.py")
  2496. ;; The test suite needs to be run with 'ansible-test', which
  2497. ;; does some extra environment setup. Taken from
  2498. ;; https://raw.githubusercontent.com/ansible/ansible/\
  2499. ;; devel/test/utils/shippable/shippable.sh.
  2500. (invoke "ansible-test" "units" "-v")))))))
  2501. (native-inputs
  2502. `(("openssh" ,openssh)
  2503. ("openssl" ,openssl)
  2504. ("python-mock" ,python-mock)
  2505. ("python-pycrypto" ,python-pycrypto)
  2506. ("python-pytest" ,python-pytest)
  2507. ("python-pytest-forked" ,python-pytest-forked)
  2508. ("python-pytest-mock" ,python-pytest-mock)
  2509. ("python-pytest-xdist" ,python-pytest-xdist)
  2510. ("python-pytz" ,python-pytz)))
  2511. (inputs ;optional dependencies captured in wrap scripts
  2512. `(("libselinux" ,libselinux)
  2513. ("python-paramiko" ,python-paramiko)
  2514. ("python-passlib" ,python-passlib)
  2515. ("python-pexpect" ,python-pexpect)
  2516. ("sshpass" ,sshpass)))
  2517. (propagated-inputs ;core dependencies listed in egg-info/requires.txt
  2518. `(("python-cryptography" ,python-cryptography)
  2519. ("python-jinja2" ,python-jinja2)
  2520. ("python-pyyaml" ,python-pyyaml)
  2521. ("python-packaging" ,python-packaging) ;for version number parsing
  2522. ("python-resolvelib" ,python-resolvelib-0.5)))
  2523. (home-page "https://www.ansible.com/")
  2524. (synopsis "Radically simple IT automation")
  2525. (description "Ansible aims to be a radically simple IT automation system.
  2526. It handles configuration management, application deployment, cloud
  2527. provisioning, ad-hoc task execution, network automation, and multi-node
  2528. orchestration. Ansible facilitates complex changes like zero-downtime rolling
  2529. updates with load balancers. This package is the core of Ansible, which
  2530. provides the following commands:
  2531. @itemize
  2532. @item ansible
  2533. @item ansible-config
  2534. @item ansible-connection
  2535. @item ansible-console
  2536. @item ansible-doc
  2537. @item ansible-galaxy
  2538. @item ansible-inventory
  2539. @item ansible-playbook
  2540. @item ansible-pull
  2541. @item ansible-test
  2542. @item ansible-vault
  2543. @end itemize")
  2544. (license license:gpl3+)))
  2545. (define-public ansible
  2546. (package
  2547. (name "ansible")
  2548. (version "4.4.0")
  2549. (source
  2550. (origin
  2551. (method url-fetch)
  2552. (uri (pypi-uri "ansible" version))
  2553. (sha256
  2554. (base32 "031n22j0lsmh69x6i6gkva81j68b4yzh1pbg3q2h4bknl85q46ag"))))
  2555. (build-system python-build-system)
  2556. (propagated-inputs
  2557. `(("ansible-core" ,ansible-core)))
  2558. ;; The Ansible collections are found by ansible-core via PYTHONPATH; the
  2559. ;; following search path ensures that they are found even when Python is
  2560. ;; not present in the profile.
  2561. (native-search-paths
  2562. ;; XXX: Attempting to use (package-native-search-paths python)
  2563. ;; here would cause an error about python being an unbound
  2564. ;; variable in the tests/cpan.scm test.
  2565. (list (search-path-specification
  2566. (variable "PYTHONPATH")
  2567. (files (list "lib/python3.8/site-packages")))))
  2568. (home-page "https://www.ansible.com/")
  2569. (synopsis "Radically simple IT automation")
  2570. (description "Ansible aims to be a radically simple IT automation system.
  2571. It handles configuration management, application deployment, cloud
  2572. provisioning, ad-hoc task execution, network automation, and multi-node
  2573. orchestration. Ansible facilitates complex changes like zero-downtime rolling
  2574. updates with load balancers. This package provides a curated set of
  2575. community-maintained Ansible collections, which contain playbooks, roles,
  2576. modules and plugins that extend Ansible.")
  2577. (license license:gpl3+)))
  2578. (define-public debops
  2579. (package
  2580. (name "debops")
  2581. (version "1.1.0")
  2582. (source
  2583. (origin
  2584. (method git-fetch)
  2585. (uri (git-reference
  2586. (url "https://github.com/debops/debops")
  2587. (commit (string-append "v" version))))
  2588. (file-name (git-file-name name version))
  2589. (sha256
  2590. (base32 "052b2dykdn35pdpn9s4prawl6nl6yzih8nyf54hpvhpisvjrm1v5"))
  2591. (patches
  2592. (search-patches "debops-constants-for-external-program-names.patch"
  2593. "debops-debops-defaults-fall-back-to-less.patch"))))
  2594. (build-system python-build-system)
  2595. (native-inputs
  2596. `(("git" ,git)))
  2597. (inputs
  2598. `(("ansible" ,ansible)
  2599. ("encfs" ,encfs)
  2600. ("fuse" ,fuse)
  2601. ("util-linux" ,util-linux) ;; for umount
  2602. ("findutils" ,findutils)
  2603. ("gnupg" ,gnupg)
  2604. ("which" ,which)))
  2605. (propagated-inputs
  2606. `(("python-future" ,python-future)
  2607. ("python-distro" ,python-distro)))
  2608. (arguments
  2609. `(#:tests? #f
  2610. #:phases
  2611. (modify-phases %standard-phases
  2612. (add-after 'unpack 'nuke-debops-update
  2613. (lambda _
  2614. (chmod "bin/debops-update" #o755) ; FIXME work-around git-fetch issue
  2615. (with-output-to-file "bin/debops-update"
  2616. (lambda ()
  2617. (format #t "#!/bin/sh
  2618. echo 'debops is installed via guix. guix-update is useless in this case.
  2619. Please use `guix package -u debops` instead.'")))
  2620. #t))
  2621. ;; patch shebangs only in actuall scripts, not in files included in
  2622. ;; roles (which are to be delivered to the targte systems)
  2623. (delete `patch-generated-file-shebangs)
  2624. (replace 'patch-source-shebangs
  2625. (lambda _
  2626. (for-each patch-shebang
  2627. (find-files "bin"
  2628. (lambda (file stat)
  2629. ;; Filter out symlinks.
  2630. (eq? 'regular (stat:type stat)))
  2631. #:stat lstat))))
  2632. (add-after 'unpack 'fix-paths
  2633. (lambda _
  2634. (define (substitute-program-names file)
  2635. ;; e.g. ANSIBLE_PLAYBOOK = '/gnu/store/…/bin/ansible-playbook'
  2636. (for-each
  2637. (lambda (name)
  2638. (let ((varname (string-upcase
  2639. (string-map
  2640. (lambda (c) (if (char=? c #\-) #\_ c))
  2641. name))))
  2642. (substitute* file
  2643. (((string-append "^(" varname " = )'.*'") line prefix)
  2644. (string-append prefix "'" (which name) "'")))))
  2645. '("ansible-playbook" "encfs" "find" "fusermount"
  2646. "umount" "gpg" "ansible" "which")))
  2647. (for-each substitute-program-names
  2648. '("bin/debops"
  2649. "bin/debops-padlock"
  2650. "bin/debops-task"
  2651. "debops/__init__.py"
  2652. "debops/cmds/__init__.py"))
  2653. #t)))))
  2654. (home-page "https://www.debops.org/")
  2655. (synopsis "Collection of general-purpose Ansible roles")
  2656. (description "The Ansible roles provided by that can be used to manage
  2657. Debian or Ubuntu hosts. In addition, a default set of Ansible playbooks can
  2658. be used to apply the provided roles in a controlled way, using Ansible
  2659. inventory groups.
  2660. The roles are written with a high customization in mind, which can be done
  2661. using Ansible inventory. This way the role and playbook code can be shared
  2662. between multiple environments, with different configuration in to each one.
  2663. Services can be managed on a single host, or spread between multiple hosts.
  2664. DebOps provides support for different SQL and NoSQL databases, web servers,
  2665. programming languages and specialized applications useful in a data center
  2666. environment or in a cluster. The project can also be used to deploy
  2667. virtualization environments using KVM/libvirt, Docker or LXC technologies to
  2668. manage virtual machines and/or containers.")
  2669. (license license:gpl3+)))
  2670. (define-public emacs-ansible-doc
  2671. (let ((commit "86083a7bb2ed0468ca64e52076b06441a2f8e9e0"))
  2672. (package
  2673. (name "emacs-ansible-doc")
  2674. (version (git-version "0.4" "1" commit))
  2675. (source
  2676. (origin
  2677. (method git-fetch)
  2678. (uri (git-reference
  2679. (url "https://github.com/lunaryorn/ansible-doc.el")
  2680. (commit commit)))
  2681. (file-name (git-file-name name version))
  2682. (sha256
  2683. (base32
  2684. "0lap404ch74w99n3xip176jr42b38xhyzkfnkyqg0g3wk2cd3aq8"))))
  2685. (build-system emacs-build-system)
  2686. ;; Unmaintained by upstream.
  2687. (home-page "https://github.com/lunaryorn/ansible-doc.el")
  2688. (synopsis "Ansible documentation for Emacs")
  2689. (description
  2690. "This package provides an Ansible documentation for GNU Emacs.
  2691. @code{ansible-doc} allows you to view the documentation of an Ansible
  2692. module and @code{ansible-doc-mode} minor mode adds documentation
  2693. lookup to YAML Mode. You could enable the mode with @code{(add-hook
  2694. 'yaml-mode-hook #'ansible-doc-mode)}.")
  2695. (license license:gpl3+))))
  2696. (define-public cpulimit
  2697. (package
  2698. (name "cpulimit")
  2699. (version "0.2")
  2700. (source
  2701. (origin
  2702. (method git-fetch)
  2703. (uri (git-reference
  2704. (url "https://github.com/opsengine/cpulimit")
  2705. (commit (string-append "v" version))))
  2706. (file-name (git-file-name name version))
  2707. (sha256
  2708. (base32 "1dz045yhcsw1rdamzpz4bk8mw888in7fyqk1q1b3m1yk4pd1ahkh"))))
  2709. (build-system gnu-build-system)
  2710. (arguments
  2711. `(#:phases (modify-phases %standard-phases
  2712. (delete 'configure)
  2713. (replace 'build
  2714. (lambda* (#:key make-flags #:allow-other-keys)
  2715. (apply invoke "make" "-Csrc" make-flags)))
  2716. (replace 'check
  2717. (lambda* (#:key tests? make-flags #:allow-other-keys)
  2718. (when tests?
  2719. (apply invoke "make" "-Ctests" make-flags))
  2720. #t))
  2721. (replace 'install
  2722. (lambda* (#:key outputs #:allow-other-keys)
  2723. (let* ((out (assoc-ref outputs "out"))
  2724. (bin (string-append out "/bin")))
  2725. (install-file "src/cpulimit" bin))
  2726. #t)))
  2727. #:make-flags (list (string-append "CC=" ,(cc-for-target)))))
  2728. (home-page "https://github.com/opsengine/cpulimit")
  2729. (synopsis "Limit CPU usage")
  2730. (description
  2731. "Cpulimit limits the CPU usage of a process. It does not change the nice
  2732. value or other scheduling priority settings, but the real CPU usage, and is
  2733. able to adapt itself dynamically to the overall system load. Children
  2734. processes and threads of the specified process may optionally share the same
  2735. limits.")
  2736. (license license:gpl2+)))
  2737. (define-public autojump
  2738. (package
  2739. (name "autojump")
  2740. (version "22.5.3")
  2741. (source
  2742. (origin
  2743. (method git-fetch)
  2744. (uri (git-reference
  2745. (url "https://github.com/wting/autojump")
  2746. (commit (string-append "release-v" version))))
  2747. (file-name (git-file-name name version))
  2748. (sha256
  2749. (base32 "1rgpsh70manr2dydna9da4x7p8ahii7dgdgwir5fka340n1wrcws"))))
  2750. (build-system gnu-build-system)
  2751. (native-inputs ; for tests
  2752. `(("python-mock" ,python-mock)
  2753. ("python-pytest" ,python-pytest)))
  2754. (inputs
  2755. `(("python" ,python-wrapper)))
  2756. (arguments
  2757. `(#:phases
  2758. (modify-phases %standard-phases
  2759. (add-after 'unpack 'make-git-checkout-writable
  2760. ;; ‘install.py’ modifies files before installing them.
  2761. (lambda _
  2762. (for-each make-file-writable (find-files "."))
  2763. #t))
  2764. (delete 'configure)
  2765. (delete 'build)
  2766. (replace 'check
  2767. (lambda _
  2768. (invoke "python" "tests/unit/autojump_utils_test.py")))
  2769. (replace 'install
  2770. (lambda* (#:key outputs #:allow-other-keys)
  2771. (setenv "SHELL" (which "bash"))
  2772. (invoke "python" "install.py"
  2773. (string-append "--destdir="
  2774. (assoc-ref outputs "out"))))))))
  2775. (home-page "https://github.com/wting/autojump")
  2776. (synopsis "Shell extension for file system navigation")
  2777. (description
  2778. "Autojump provides a faster way to navigate your file system, with a \"cd
  2779. command that learns\". It works by maintaining a database of the directories
  2780. you use the most from the command line and allows you to \"jump\" to
  2781. frequently used directories by typing only a small pattern.")
  2782. (license license:gpl3+)))
  2783. (define-public fasd
  2784. (package
  2785. (name "fasd")
  2786. (version "1.0.1")
  2787. (source (origin
  2788. (method git-fetch)
  2789. (uri (git-reference
  2790. (url "https://github.com/clvv/fasd")
  2791. (commit version)))
  2792. (file-name (git-file-name name version))
  2793. (sha256
  2794. (base32
  2795. "1awi71jdv3mhjrmar2d4z1i90kn7apd7aq1w31sh6w4yibz9kiyj"))))
  2796. (build-system gnu-build-system)
  2797. (arguments
  2798. `(#:phases (modify-phases %standard-phases
  2799. (delete 'configure)) ;no configuration
  2800. #:tests? #f ;no tests
  2801. #:make-flags (list (string-append "PREFIX=" %output))))
  2802. (home-page "https://github.com/clvv/fasd")
  2803. (synopsis "Quick access to files and directories for shells")
  2804. (description
  2805. "Fasd (pronounced similar to \"fast\") is a command-line productivity
  2806. booster. Fasd offers quick access to files and directories for POSIX shells.
  2807. It is inspired by tools like autojump, z, and v. Fasd keeps track of files
  2808. and directories you have accessed so that you can quickly reference them in
  2809. the command line.")
  2810. (license license:x11)))
  2811. (define-public iftop
  2812. (package
  2813. (name "iftop")
  2814. (version "1.0pre4")
  2815. (source (origin
  2816. (method url-fetch)
  2817. (uri (string-append "http://www.ex-parrot.com/~pdw/iftop/download"
  2818. "/iftop-" version ".tar.gz"))
  2819. (sha256
  2820. (base32
  2821. "15sgkdyijb7vbxpxjavh5qm5nvyii3fqcg9mzvw7fx8s6zmfwczp"))))
  2822. (build-system gnu-build-system)
  2823. (inputs
  2824. `(("libpcap" ,libpcap)
  2825. ("ncurses" ,ncurses)))
  2826. (synopsis "Monitor network usage")
  2827. (description "Iftop does for network usage what @command{top} does
  2828. for CPU usage. It listens to network traffic on a named interface and
  2829. displays a table of current bandwidth usage by pairs of hosts.")
  2830. (home-page "http://www.ex-parrot.com/~pdw/iftop/")
  2831. (license license:gpl2+)))
  2832. (define-public munge
  2833. (package
  2834. (name "munge")
  2835. (version "0.5.14")
  2836. (source (origin
  2837. (method url-fetch)
  2838. (uri (string-append "https://github.com/dun/munge/releases/"
  2839. "download/munge-" version "/munge-"
  2840. version ".tar.xz"))
  2841. (sha256
  2842. (base32
  2843. "0h06sghb4rqvv1ywyd6mzsmbcgh712v6ygrff0gzm440y4ca41k6"))
  2844. (modules '((guix build utils)))
  2845. (snippet
  2846. '(begin
  2847. ;; Don't insist on write access to /var.
  2848. (substitute* "src/etc/Makefile.in"
  2849. (("\\$\\(INSTALL\\)(.*)localstatedir" _ middle)
  2850. (string-append "-$(INSTALL)" middle "localstatedir"))
  2851. (("\\$\\(MKDIR_P\\) .*(local|run)statedir.*")
  2852. ""))
  2853. #t))))
  2854. (inputs
  2855. `(("openssl" ,openssl)
  2856. ("libgcrypt" ,libgcrypt)))
  2857. (build-system gnu-build-system)
  2858. (arguments
  2859. '(#:configure-flags
  2860. (list "--localstatedir=/var"
  2861. (string-append "--with-pkgconfigdir="
  2862. (assoc-ref %outputs "out") "/lib/pkgconfig"))
  2863. #:phases
  2864. (modify-phases %standard-phases
  2865. ;; XXX Many test series fail. Some might be fixable, others do no-no
  2866. ;; things like invoking ‘sudo’.
  2867. (add-after 'unpack 'skip-failing-tests
  2868. (lambda _
  2869. (for-each (lambda (test)
  2870. (substitute* "t/Makefile.in"
  2871. (((string-append test "\\.t ")) "")))
  2872. (list "0100-munged-lock"
  2873. "0010-basic"
  2874. "0011-munged-cmdline"
  2875. "0012-munge-cmdline"
  2876. "0013-unmunge-cmdline"
  2877. "0101-munged-security-socket"
  2878. "0102-munged-security-keyfile"
  2879. "0103-munged-security-logfile"
  2880. "0110-munged-origin-addr"))
  2881. #t)))))
  2882. (home-page "https://dun.github.io/munge/")
  2883. (synopsis "Cluster computing authentication service")
  2884. (description
  2885. "Munge is an authentication service for creating and validating
  2886. credentials. It allows a process to authenticate the UID and GID of another
  2887. local or remote process within a group of hosts having common users and
  2888. groups. These hosts form a security realm that is defined by a shared
  2889. cryptographic key. Clients within this security realm can create and validate
  2890. credentials without the use of root privileges, reserved ports, or
  2891. platform-specific methods.")
  2892. (license license:gpl3+)))
  2893. (define-public audit
  2894. (package
  2895. (name "audit")
  2896. (home-page "https://people.redhat.com/sgrubb/audit/")
  2897. (version "3.0.4")
  2898. (source (origin
  2899. (method url-fetch)
  2900. (uri (string-append home-page "audit-" version ".tar.gz"))
  2901. (sha256
  2902. (base32
  2903. "1xlcvc2g7qrbnin5pw0bacalva5ldjw97yi6nr17g0yjp4jyhnlc"))))
  2904. (build-system gnu-build-system)
  2905. (arguments
  2906. `(#:configure-flags (list "--with-python=no"
  2907. "--disable-static")))
  2908. (inputs
  2909. `(("openldap" ,openldap)
  2910. ("gnutls" ,gnutls)
  2911. ("sasl" ,cyrus-sasl)))
  2912. (synopsis "User-space component to the Linux auditing system")
  2913. (description
  2914. "auditd is the user-space component to the Linux auditing system, which
  2915. allows logging of system calls made by user-land processes. It's responsible
  2916. for writing audit records to the disk. Viewing the logs is done with the
  2917. @code{ausearch} or @code{aureport} utilities. Configuring the audit rules is
  2918. done with the @code{auditctl} utility.")
  2919. (license license:gpl2+)))
  2920. (define-public nmap
  2921. (package
  2922. (name "nmap")
  2923. (version "7.92")
  2924. (source (origin
  2925. (method url-fetch)
  2926. (uri (string-append "https://nmap.org/dist/nmap-" version
  2927. ".tar.bz2"))
  2928. (sha256
  2929. (base32
  2930. "18bifn67kz2wxkbnfwcrin2xrhc6qf4p2bvxfqb2a2vbi8pryix5"))
  2931. (modules '((guix build utils)))
  2932. (snippet
  2933. '(begin
  2934. (for-each delete-file-recursively
  2935. ;; Remove bundled lua, pcap, and pcre libraries.
  2936. ;; FIXME: Remove bundled liblinear once packaged.
  2937. '("liblua"
  2938. "libpcap"
  2939. "libpcre"
  2940. ;; Remove pre-compiled binares.
  2941. "mswin32"))))))
  2942. (build-system gnu-build-system)
  2943. (inputs
  2944. `(("openssl" ,openssl)
  2945. ("libpcap" ,libpcap)
  2946. ("pcre" ,pcre)
  2947. ("lua" ,lua)
  2948. ("zlib" ,zlib) ;for NSE compression support
  2949. ;; For 'ndiff'.
  2950. ("python" ,python-2)))
  2951. ;; TODO Add zenmap output.
  2952. (outputs '("out" "ndiff"))
  2953. (arguments
  2954. `(#:configure-flags '("--without-zenmap")
  2955. #:phases
  2956. (modify-phases %standard-phases
  2957. (add-after 'configure 'patch-Makefile
  2958. (lambda _
  2959. (substitute* "Makefile"
  2960. ;; Do not attempt to build lua.
  2961. (("build-dnet build-lua") "build-dnet"))))
  2962. (replace 'install
  2963. (lambda* (#:key outputs #:allow-other-keys)
  2964. (define (make out . args)
  2965. (apply invoke "make"
  2966. (string-append "prefix=" out)
  2967. args))
  2968. (define (python-path dir)
  2969. (string-append dir "/lib/python"
  2970. ,(version-major+minor
  2971. (package-version python))
  2972. "/site-packages"))
  2973. (let ((out (assoc-ref outputs "out"))
  2974. (ndiff (assoc-ref outputs "ndiff")))
  2975. (for-each mkdir-p (list out ndiff))
  2976. (make out
  2977. "install-nmap"
  2978. "install-nse"
  2979. "install-ncat"
  2980. "install-nping")
  2981. (make ndiff "install-ndiff")
  2982. (wrap-program (string-append ndiff "/bin/ndiff")
  2983. `("GUIX_PYTHONPATH" prefix
  2984. (,(python-path ndiff)))))))
  2985. ;; These are the tests that do not require network access.
  2986. (replace 'check
  2987. (lambda _ (invoke "make"
  2988. "check-nse"
  2989. "check-ndiff"
  2990. "check-dns"))))
  2991. ;; Nmap can't cope with out-of-source building.
  2992. #:out-of-source? #f))
  2993. (home-page "https://nmap.org/")
  2994. (synopsis "Network discovery and security auditing tool")
  2995. (description
  2996. "Nmap (\"Network Mapper\") is a network discovery and security auditing
  2997. tool. It is also useful for tasks such as network inventory, managing service
  2998. upgrade schedules, and monitoring host or service uptime. It also provides an
  2999. advanced netcat implementation (ncat), a utility for comparing scan
  3000. results (ndiff), and a packet generation and response analysis tool (nping).")
  3001. ;; See <https://github.com/nmap/nmap/issues/2199#issuecomment-894812634>.
  3002. ;; This package uses nmap's bundled versions of libdnet and liblinear, which
  3003. ;; both use a 3-clause BSD license.
  3004. (license (list license:nmap license:bsd-3))))
  3005. (define-public dstat
  3006. (package
  3007. (name "dstat")
  3008. (version "0.7.4")
  3009. (source
  3010. (origin
  3011. (method git-fetch)
  3012. (uri (git-reference
  3013. (url "https://github.com/dstat-real/dstat")
  3014. (commit (string-append "v" version))))
  3015. (file-name (git-file-name "dstat" version))
  3016. (sha256
  3017. (base32 "1qnmkhqmjd1m3if05jj29dvr5hn6kayq9bkkkh881w472c0zhp8v"))
  3018. (patches (search-patches "dstat-fix-crash-when-specifying-delay.patch"
  3019. "dstat-skip-devices-without-io.patch"))))
  3020. (build-system gnu-build-system)
  3021. (arguments
  3022. `(#:tests? #f ; no make check
  3023. #:make-flags
  3024. (list (string-append "prefix=" (assoc-ref %outputs "out")))
  3025. #:phases
  3026. (modify-phases %standard-phases
  3027. (add-after 'unpack 'fix-python3-DeprecationWarning
  3028. (lambda _
  3029. (substitute* "dstat"
  3030. (("collections") "collections.abc"))
  3031. #t))
  3032. (delete 'configure) ; no configure script
  3033. (add-after 'install 'wrap
  3034. (lambda* (#:key outputs #:allow-other-keys)
  3035. (let ((out (assoc-ref outputs "out")))
  3036. (wrap-program (string-append out "/bin/dstat")
  3037. `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))))
  3038. #t))))))
  3039. (inputs
  3040. `(("python" ,python-wrapper)
  3041. ("python-six" ,python-six)))
  3042. (synopsis "Versatile resource statistics tool")
  3043. (description "Dstat is a versatile replacement for @command{vmstat},
  3044. @command{iostat}, @command{netstat}, and @command{ifstat}. Dstat overcomes
  3045. some of their limitations and adds some extra features, more counters and
  3046. flexibility. Dstat is handy for monitoring systems during performance tuning
  3047. tests, benchmarks or troubleshooting.
  3048. Dstat allows you to view all of your system resources in real-time, you can,
  3049. e.g., compare disk utilization in combination with interrupts from your IDE
  3050. controller, or compare the network bandwidth numbers directly with the disk
  3051. throughput (in the same interval).")
  3052. (home-page "http://dag.wiee.rs/home-made/dstat/")
  3053. (license license:gpl2+)))
  3054. (define-public thefuck
  3055. (package
  3056. (name "thefuck")
  3057. (version "3.30")
  3058. (source
  3059. (origin
  3060. (method git-fetch)
  3061. (uri (git-reference
  3062. (url "https://github.com/nvbn/thefuck")
  3063. (commit version)))
  3064. (file-name (git-file-name name version))
  3065. (sha256
  3066. (base32 "0fnf78956pwhb9cgv1jmgypnkma5xzflkivfrkfiadbgin848yfg"))
  3067. (patches (search-patches "thefuck-test-environ.patch"))))
  3068. (build-system python-build-system)
  3069. (arguments
  3070. '(#:phases
  3071. (modify-phases %standard-phases
  3072. (delete 'check)
  3073. (add-after 'install 'check
  3074. (lambda* (#:key inputs outputs #:allow-other-keys)
  3075. ;; Tests look for installed package
  3076. (add-installed-pythonpath inputs outputs)
  3077. ;; Some tests need write access to $HOME.
  3078. (setenv "HOME" "/tmp")
  3079. (invoke "py.test" "-v")
  3080. #t)))))
  3081. (propagated-inputs
  3082. `(("python-colorama" ,python-colorama)
  3083. ("python-decorator" ,python-decorator)
  3084. ("python-psutil" ,python-psutil)
  3085. ("python-pyte" ,python-pyte)
  3086. ("python-six" ,python-six)))
  3087. (native-inputs
  3088. `(("go" ,go)
  3089. ("python-mock" ,python-mock)
  3090. ("python-pytest" ,python-pytest)
  3091. ("python-pytest-mock" ,python-pytest-mock)))
  3092. (home-page "https://github.com/nvbn/thefuck")
  3093. (synopsis "Correct mistyped console command")
  3094. (description
  3095. "The Fuck tries to match a rule for a previous, mistyped command, creates
  3096. a new command using the matched rule, and runs it.")
  3097. (license license:x11)))
  3098. (define-public di
  3099. (package
  3100. (name "di")
  3101. (version "4.50")
  3102. (source
  3103. (origin
  3104. (method url-fetch)
  3105. (uri (string-append "mirror://sourceforge/diskinfo-di/di-" version ".tar.gz"))
  3106. (sha256
  3107. (base32 "0aj9ldkvmj8fmrk685vd2gagz0q8lwsn2nfbx6r6mza94mn8pw42"))))
  3108. (build-system gnu-build-system)
  3109. (arguments
  3110. `(#:tests? #f ; obscure test failures
  3111. #:phases
  3112. (modify-phases %standard-phases
  3113. (delete 'configure) ; no configure script
  3114. (add-before 'build 'setup-environment
  3115. (lambda* (#:key outputs #:allow-other-keys)
  3116. (setenv "CC" ,(cc-for-target))
  3117. (setenv "prefix" (assoc-ref outputs "out"))
  3118. #t)))
  3119. #:make-flags (list "--environment-overrides")))
  3120. (home-page "https://gentoo.com/di/")
  3121. (synopsis "Advanced df like disk information utility")
  3122. (description
  3123. "@code{di} is a disk information utility, displaying everything that your
  3124. @code{df} command does and more. It features the ability to display your disk
  3125. usage in whatever format you prefer. It is designed to be highly portable and
  3126. produce uniform output across heterogeneous networks.")
  3127. (license license:zlib)))
  3128. (define-public cbatticon
  3129. (package
  3130. (name "cbatticon")
  3131. (version "1.6.10")
  3132. (source
  3133. (origin
  3134. (method git-fetch)
  3135. (uri (git-reference
  3136. (url "https://github.com/valr/cbatticon")
  3137. (commit version)))
  3138. (sha256
  3139. (base32 "0ivm2dzhsa9ir25ry418r2qg2llby9j7a6m3arbvq5c3kaj8m9jr"))
  3140. (file-name (git-file-name name version))))
  3141. (build-system gnu-build-system)
  3142. (arguments
  3143. `(#:tests? #f ; no tests
  3144. #:make-flags
  3145. (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  3146. ,(string-append "CC=" (cc-for-target)))
  3147. #:phases
  3148. (modify-phases %standard-phases
  3149. (delete 'configure)))) ; no configure script
  3150. (inputs
  3151. `(("gtk+" ,gtk+)
  3152. ("gettext" ,gettext-minimal)
  3153. ("libnotify" ,libnotify)))
  3154. (native-inputs
  3155. `(("pkg-config" ,pkg-config)))
  3156. (synopsis "Lightweight battery icon for the system tray")
  3157. (description "cbatticon is a lightweight battery icon that displays
  3158. the status of your battery in the system tray.")
  3159. (home-page "https://github.com/valr/cbatticon")
  3160. (license license:gpl2+)))
  3161. (define-public interrobang
  3162. (let ((revision "1")
  3163. (commit "896543735e1c99144765fdbd7b6e6b5afbd8b881"))
  3164. (package
  3165. (name "interrobang")
  3166. (version (git-version "0.0.0" revision commit))
  3167. (source
  3168. (origin
  3169. (method git-fetch)
  3170. (uri (git-reference
  3171. (url "https://github.com/TrilbyWhite/interrobang")
  3172. (commit commit)))
  3173. (file-name (git-file-name name version))
  3174. (sha256
  3175. (base32 "1n13m70p1hfba5dy3i8hfclbr6k9q3d9dai3dg4jvhdhmxcpjzdf"))))
  3176. (build-system gnu-build-system)
  3177. (arguments
  3178. `(#:tests? #f ; no tests
  3179. #:phases
  3180. (modify-phases %standard-phases
  3181. (delete 'configure)) ; no configure script
  3182. #:make-flags (list (string-append "PREFIX="
  3183. (assoc-ref %outputs "out")))))
  3184. (inputs
  3185. `(("libx11" ,libx11)))
  3186. (native-inputs
  3187. `(("pkg-config" ,pkg-config)))
  3188. (synopsis "Scriptable launcher menu")
  3189. (description "Interrobang is a scriptable launcher menu with a customizable
  3190. shortcut syntax and completion options.")
  3191. (home-page "https://github.com/TrilbyWhite/interrobang")
  3192. (license license:gpl3+))))
  3193. (define-public pam-krb5
  3194. (package
  3195. (name "pam-krb5")
  3196. (version "4.8")
  3197. (source (origin
  3198. (method url-fetch)
  3199. (uri
  3200. (list (string-append
  3201. "https://archives.eyrie.org/software/kerberos/"
  3202. "pam-krb5-" version ".tar.xz")
  3203. (string-append
  3204. "https://archives.eyrie.org/software/ARCHIVE/"
  3205. "pam-krb5/pam-krb5-" version ".tar.xz")))
  3206. (patches (search-patches "pam-krb5-CVE-2020-10595.patch"))
  3207. (sha256
  3208. (base32
  3209. "1qjp8i1s9bz7g6kiqrkzzkxn5pfspa4sy53b6z40fqmdf9przdfb"))))
  3210. (build-system gnu-build-system)
  3211. (arguments
  3212. `(#:phases
  3213. (modify-phases %standard-phases
  3214. (add-before 'configure 'disable-tests
  3215. (lambda _
  3216. ;; The build container seems to interfere with some tests.
  3217. (substitute* "tests/TESTS"
  3218. (("module/basic\n") ""))
  3219. (substitute* "tests/TESTS"
  3220. (("pam-util/vector\n") ""))
  3221. #t)))))
  3222. (inputs
  3223. `(("linux-pam" ,linux-pam)
  3224. ("mit-krb5" ,mit-krb5)))
  3225. (native-inputs
  3226. `(("perl" ,perl)
  3227. ("perl-test-pod" ,perl-test-pod))) ; required for tests
  3228. (synopsis "Kerberos PAM module")
  3229. (description
  3230. "Pam-krb5 is a Kerberos PAM module for either MIT Kerberos or Heimdal.
  3231. It supports ticket refreshing by screen savers, configurable
  3232. authorization handling, authentication of non-local accounts for network
  3233. services, password changing, and password expiration, as well as all the
  3234. standard expected PAM features. It works correctly with OpenSSH, even
  3235. with @code{ChallengeResponseAuthentication} and @code{PrivilegeSeparation}
  3236. enabled, and supports extensive configuration either by PAM options or in
  3237. krb5.conf or both. PKINIT is supported with recent versions of both MIT
  3238. Kerberos and Heimdal and FAST is supported with recent MIT Kerberos.")
  3239. (home-page "https://www.eyrie.org/~eagle/software/pam-krb5/")
  3240. ;; Dual licenced under a homebrew non-copyleft OR GPL (any version)
  3241. ;; However, the tarball does not contain a copy of the GPL, so unless
  3242. ;; we put one in, we cannot distribute it under GPL without violating
  3243. ;; clause requiring us to give all recipients a copy.
  3244. (license license:gpl1+)))
  3245. (define (sunxi-tools-source version)
  3246. (origin
  3247. (method git-fetch)
  3248. (uri (git-reference
  3249. (url "https://github.com/linux-sunxi/sunxi-tools")
  3250. (commit (string-append "v" version))))
  3251. (sha256
  3252. (base32 "04f3jqg8ww4jxsf9c6ddcdgy2xbhkyp0b3l5f1hvvbv94p81rjxd"))
  3253. (patches
  3254. (search-patches "sunxi-tools-remove-sys-io.patch"))
  3255. (modules '((guix build utils)))
  3256. (snippet
  3257. ;; Remove binaries contained in the tarball which are only for the
  3258. ;; target and can be regenerated anyway.
  3259. '(begin
  3260. (delete-file-recursively "bin")
  3261. #t))
  3262. (file-name (git-file-name "sunxi-tools" version))))
  3263. (define sunxi-target-tools
  3264. (package
  3265. (name "sunxi-target-tools")
  3266. (version "1.4.2")
  3267. (build-system gnu-build-system)
  3268. (source
  3269. (sunxi-tools-source version))
  3270. (arguments
  3271. `(#:system "armhf-linux"
  3272. #:tests? #f
  3273. #:make-flags (list (string-append "PREFIX="
  3274. (assoc-ref %outputs "out"))
  3275. (string-append "CROSS_COMPILE=")
  3276. "CC=gcc")
  3277. #:phases
  3278. (modify-phases %standard-phases
  3279. (delete 'configure)
  3280. (replace 'build
  3281. (lambda* (#:key make-flags #:allow-other-keys)
  3282. (apply invoke "make" "target-tools" make-flags)))
  3283. (replace 'install
  3284. (lambda* (#:key make-flags #:allow-other-keys)
  3285. (apply invoke "make" "install-target-tools"
  3286. make-flags))))))
  3287. (home-page "https://github.com/linux-sunxi/sunxi-tools")
  3288. (synopsis "Hardware management tools for Allwinner computers")
  3289. (description "This package contains tools for Allwinner devices:
  3290. @enumerate
  3291. @item @command{sunxi-meminfo}: Prints memory bus settings.
  3292. @end enumerate")
  3293. (license license:gpl2+)))
  3294. (define-public sunxi-tools
  3295. (package
  3296. (name "sunxi-tools")
  3297. (version "1.4.2")
  3298. (source
  3299. (sunxi-tools-source version))
  3300. (native-inputs
  3301. `(("sunxi-target-tools" ,sunxi-target-tools)
  3302. ("pkg-config" ,pkg-config)))
  3303. (inputs
  3304. `(("libusb" ,libusb)))
  3305. (build-system gnu-build-system)
  3306. (arguments
  3307. `(#:tests? #f ; no tests exist
  3308. #:make-flags (list (string-append "PREFIX="
  3309. (assoc-ref %outputs "out"))
  3310. (string-append "CROSS_COMPILE=disabled")
  3311. "CC=gcc")
  3312. #:phases
  3313. (modify-phases %standard-phases
  3314. (delete 'configure)
  3315. (replace 'build
  3316. (lambda* (#:key make-flags #:allow-other-keys)
  3317. (apply invoke "make" "tools" "misc" make-flags)))
  3318. (replace 'install
  3319. (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
  3320. ;; Those tools have been built for armhf but are part of the
  3321. ;; installation in the upstream package. So do the same
  3322. ;; here.
  3323. (copy-recursively (assoc-ref inputs "sunxi-target-tools")
  3324. (assoc-ref outputs "out"))
  3325. (apply invoke "make" "install-tools" "install-misc"
  3326. make-flags))))))
  3327. (home-page "https://github.com/linux-sunxi/sunxi-tools")
  3328. (synopsis "Hardware management tools for Allwinner computers")
  3329. (description "This package contains tools for Allwinner devices:
  3330. @enumerate
  3331. @item @command{sunxi-fexc}, @command{bin2fex}, @command{fex2bin}: Compile
  3332. a textual description of a board (.fex) to a binary representation (.bin).
  3333. @item @command{sunxi-fel}: Puts an Allwinner device into FEL mode which
  3334. makes it register as a special USB device (rather than USB host).
  3335. You can then connect it to another computer and flash it from there.
  3336. @item @command{sunxi-nand-part}: Partitions NAND flash.
  3337. @item @command{sunxi-bootinfo}: Reads out boot0 and boot1 (Allwinner
  3338. bootloader) parameters.
  3339. @item @command{sunxi-pio}: Sets GPIO parameters and oscillates a GPIO
  3340. in order to be able to find it.
  3341. @item @command{sunxi-meminfo}: Prints memory bus settings.
  3342. @item @command{sunxi-nand-image-builder}: Prepares raw NAND images.
  3343. @end enumerate")
  3344. (license license:gpl2+)))
  3345. (define-public sedsed
  3346. (package
  3347. (name "sedsed")
  3348. (version "1.1")
  3349. (source
  3350. (origin
  3351. (method git-fetch)
  3352. (uri (git-reference
  3353. (url "https://github.com/aureliojargas/sedsed")
  3354. (commit (string-append "v" version))))
  3355. (file-name (git-file-name name version))
  3356. (sha256
  3357. (base32 "05cl35mwljdb9ynbbsfa8zx6ig8r0xncbg2cir9vwn5manndjj18"))))
  3358. (build-system python-build-system)
  3359. (arguments
  3360. `(#:tests? #f ; no tests
  3361. #:phases
  3362. (modify-phases %standard-phases
  3363. (add-after 'unpack 'patch-sed-in
  3364. (lambda _
  3365. (substitute* "sedsed.py"
  3366. (("sedbin = 'sed'")
  3367. (string-append "sedbin = '" (which "sed") "'")))
  3368. #t))
  3369. (delete 'build)
  3370. (replace 'install
  3371. (lambda* (#:key outputs #:allow-other-keys)
  3372. (let* ((out (assoc-ref outputs "out"))
  3373. (bin (string-append out "/bin")))
  3374. ;; Just one file to copy around
  3375. (install-file "sedsed.py" bin)
  3376. #t)))
  3377. (add-after 'wrap 'symlink
  3378. ;; Create 'sedsed' symlink to "sedsed.py".
  3379. (lambda* (#:key outputs #:allow-other-keys)
  3380. (let* ((out (assoc-ref outputs "out"))
  3381. (bin (string-append out "/bin"))
  3382. (sed (string-append bin "/sedsed"))
  3383. (sedpy (string-append bin "/sedsed.py")))
  3384. (symlink sedpy sed)
  3385. #t))))))
  3386. (home-page "https://aurelio.net/projects/sedsed")
  3387. (synopsis "Sed sed scripts")
  3388. (description
  3389. "@code{sedsed} can debug, indent, tokenize and HTMLize your @command{sed}
  3390. script.
  3391. In debug mode, it reads your script and adds extra commands to it. When
  3392. executed you can see the data flow between the commands, revealing all the
  3393. magic sed performs on its internal buffers.
  3394. In indent mode, your script is reformatted with standard spacing.
  3395. In tokenize mode, you can see the elements of every command you use.
  3396. In HTMLize mode, your script is converted to a beautiful colored HTML file,
  3397. with all the commands and parameters identified for your viewing pleasure.
  3398. With sedsed you can master any sed script. No more secrets, no more hidden
  3399. buffers.")
  3400. (license license:expat)))
  3401. (define-public igt-gpu-tools
  3402. (package
  3403. (name "igt-gpu-tools")
  3404. (version "1.26")
  3405. (source
  3406. (origin
  3407. (method git-fetch)
  3408. (uri (git-reference
  3409. (url "https://gitlab.freedesktop.org/drm/igt-gpu-tools.git")
  3410. (commit (string-append "igt-gpu-tools-" version))))
  3411. (file-name (git-file-name name version))
  3412. (sha256
  3413. (base32 "0m124pqv7zna25jnvk566c4kk628jr0w8mgnp8mr5xqz9cprgczm"))))
  3414. (build-system meson-build-system)
  3415. (arguments
  3416. `(#:tests? #f)) ; many of the tests try to load kernel modules
  3417. (inputs
  3418. `(("cairo" ,cairo)
  3419. ("elfutils" ,elfutils) ; libdw
  3420. ("eudev" ,eudev)
  3421. ("kmod" ,kmod)
  3422. ("libdrm" ,libdrm)
  3423. ("libpciaccess" ,libpciaccess)
  3424. ("libunwind" ,libunwind)
  3425. ("procps" ,procps)))
  3426. (native-inputs
  3427. `(("bison" ,bison)
  3428. ("flex" ,flex)
  3429. ("pkg-config" ,pkg-config)))
  3430. (home-page "https://gitlab.freedesktop.org/drm/igt-gpu-tools")
  3431. (synopsis "Tools for development and testing of the Intel DRM driver")
  3432. (description "IGT GPU Tools is a collection of tools for development and
  3433. testing of the Intel DRM driver. There are many macro-level test suites that
  3434. get used against the driver, including xtest, rendercheck, piglit, and
  3435. oglconform, but failures from those can be difficult to track down to kernel
  3436. changes, and many require complicated build procedures or specific testing
  3437. environments to get useful results. Therefore, IGT GPU Tools includes
  3438. low-level tools and tests specifically for development and testing of the
  3439. Intel DRM Driver.")
  3440. (supported-systems '("i686-linux" "x86_64-linux"))
  3441. (license license:expat)))
  3442. (define-public neofetch
  3443. (package
  3444. (name "neofetch")
  3445. (version "7.1.0")
  3446. (source (origin
  3447. (method git-fetch)
  3448. (uri (git-reference
  3449. (url "https://github.com/dylanaraps/neofetch")
  3450. (commit version)))
  3451. (file-name (git-file-name name version))
  3452. (sha256
  3453. (base32
  3454. "0i7wpisipwzk0j62pzaigbiq42y1mn4sbraz4my2jlz6ahwf00kv"))))
  3455. (build-system gnu-build-system)
  3456. (arguments
  3457. `(#:tests? #f ; there are no tests
  3458. #:make-flags
  3459. (list (string-append "PREFIX=" %output))
  3460. #:phases
  3461. (modify-phases %standard-phases
  3462. (delete 'configure)))) ; no configure script
  3463. (home-page "https://github.com/dylanaraps/neofetch")
  3464. (synopsis "System information script")
  3465. (description "Neofetch is a command-line system information tool written in
  3466. Bash. Neofetch displays information about your system next to an image, your OS
  3467. logo, or any ASCII file of your choice. The main purpose of Neofetch is to be
  3468. used in screenshots to show other users what operating system or distribution
  3469. you are running, what theme or icon set you are using, etc.")
  3470. (license license:expat)))
  3471. (define-public screenfetch
  3472. (package
  3473. (name "screenfetch")
  3474. (version "3.9.1")
  3475. (source (origin
  3476. (method git-fetch)
  3477. (uri (git-reference
  3478. (url "https://github.com/KittyKatt/screenFetch")
  3479. (commit (string-append "v" version))))
  3480. (file-name (git-file-name name version))
  3481. (sha256
  3482. (base32
  3483. "04l8aqr474pb115nagn9f6y48jw92n1qfszgw7dbhgl4mpn95lcr"))))
  3484. (build-system trivial-build-system)
  3485. (arguments
  3486. `(#:modules ((guix build utils))
  3487. #:builder
  3488. (begin
  3489. (use-modules (guix build utils))
  3490. (let ((source (assoc-ref %build-inputs "source"))
  3491. (out (assoc-ref %outputs "out")))
  3492. (mkdir-p (string-append out "/bin/"))
  3493. (copy-file (string-append source "/screenfetch-dev")
  3494. (string-append out "/bin/screenfetch"))
  3495. (install-file (string-append source "/screenfetch.1")
  3496. (string-append out "/man/man1/"))
  3497. (install-file (string-append source "/COPYING")
  3498. (string-append out "/share/doc/" ,name "-" ,version))
  3499. (substitute* (string-append out "/bin/screenfetch")
  3500. (("/usr/bin/env bash")
  3501. (search-input-file %build-inputs "/bin/bash")))
  3502. (wrap-program
  3503. (string-append out "/bin/screenfetch")
  3504. `("PATH" ":" prefix
  3505. (,(string-append (assoc-ref %build-inputs "bc") "/bin:"
  3506. (assoc-ref %build-inputs "scrot") "/bin:"
  3507. (assoc-ref %build-inputs "xdpyinfo") "/bin"
  3508. (assoc-ref %build-inputs "xprop") "/bin"))))
  3509. (substitute* (string-append out "/bin/screenfetch")
  3510. (("#!#f")
  3511. (string-append "#!"
  3512. (search-input-file %build-inputs
  3513. "/bin/bash"))))))))
  3514. (inputs
  3515. `(("bash" ,bash)
  3516. ("bc" ,bc)
  3517. ("scrot" ,scrot)
  3518. ("xdpyinfo" ,xdpyinfo)
  3519. ("xprop" ,xprop)))
  3520. (home-page "https://github.com/KittyKatt/screenFetch")
  3521. (synopsis "System information script")
  3522. (description "Bash screenshot information tool which can be used to
  3523. generate those nifty terminal theme information and ASCII distribution logos in
  3524. everyone's screenshots nowadays.")
  3525. (license license:gpl3)))
  3526. (define-public ufetch
  3527. (let ((commit "98b622023e03fe24dbc137e9a68104dfe1fbd04a")
  3528. (revision "1"))
  3529. (package
  3530. (name "ufetch")
  3531. (version (git-version "0.2" revision commit))
  3532. (source (origin
  3533. (method git-fetch)
  3534. (uri (git-reference
  3535. (url "https://gitlab.com/jschx/ufetch.git")
  3536. (commit commit)))
  3537. (file-name (git-file-name name version))
  3538. (sha256
  3539. (base32
  3540. "09c4zmikza16xpydinnqbi3hmcibfrrn10wij7j0j1wv1pj2sl2l"))))
  3541. (build-system trivial-build-system)
  3542. (inputs
  3543. `(("bash" ,bash)
  3544. ("tput" ,ncurses)))
  3545. (arguments
  3546. `(#:modules ((guix build utils))
  3547. #:builder
  3548. (begin
  3549. (use-modules (guix build utils))
  3550. (let* ((source (assoc-ref %build-inputs "source"))
  3551. (output (assoc-ref %outputs "out"))
  3552. (bindir (string-append output "/bin"))
  3553. (docdir (string-append output "/share/doc/ufetch-" ,version))
  3554. (tput (search-input-file %build-inputs "/bin/tput")))
  3555. (install-file (string-append source "/LICENSE") docdir)
  3556. (setenv "PATH" (string-append (assoc-ref %build-inputs "bash") "/bin"))
  3557. (mkdir-p bindir)
  3558. (for-each (lambda (src)
  3559. (let ((dst (string-append bindir "/" (basename src))))
  3560. (copy-file src dst)
  3561. (patch-shebang dst)
  3562. (substitute* dst (("tput") tput))))
  3563. (find-files source "ufetch-[[:alpha:]]*$"))
  3564. ;; Note: the `ufetch` we create below will only work if run under
  3565. ;; the Guix System. I.e. a user trying to run `ufetch` on a
  3566. ;; foreign distro will not get great results. The `screenfetch`
  3567. ;; program does actual runtime detection of the operating system,
  3568. ;; and would be a better choice in such a situation.
  3569. (symlink "ufetch-guix" (string-append bindir "/ufetch"))))))
  3570. (home-page "https://gitlab.com/jschx/ufetch")
  3571. (synopsis "Tiny system info")
  3572. (description "This package provides a tiny system info utility.")
  3573. (license license:isc))))
  3574. (define-public pfetch
  3575. (let ((commit "e18a0959ab98b963744755ec4687e59dc11db3c5")
  3576. (revision "0"))
  3577. (package
  3578. (name "pfetch")
  3579. (version (git-version "0.7.0" revision commit))
  3580. (source (origin
  3581. (method git-fetch)
  3582. (uri (git-reference
  3583. (url "https://github.com/dylanaraps/pfetch")
  3584. (commit commit)))
  3585. (file-name (git-file-name name version))
  3586. (sha256
  3587. (base32
  3588. "1md40av6i3xvvwig5jzhy4kf3s5sgxxk35r0vcyrjd8qyndk927l"))))
  3589. (build-system trivial-build-system)
  3590. (inputs `(("bash" ,bash)))
  3591. (arguments
  3592. `(#:modules ((guix build utils))
  3593. #:builder
  3594. (begin
  3595. (use-modules (guix build utils))
  3596. (let* ((source (lambda (f)
  3597. (string-append (assoc-ref %build-inputs "source") "/" f)))
  3598. (output (assoc-ref %outputs "out"))
  3599. (docdir (string-append output "/share/doc/pfetch-" ,version)))
  3600. (install-file (source "LICENSE.md") docdir)
  3601. (install-file (source "README.md") docdir)
  3602. (install-file (source "pfetch") (string-append output "/bin"))
  3603. (patch-shebang
  3604. (string-append output "/bin/pfetch")
  3605. (list (string-append (assoc-ref %build-inputs "bash") "/bin")))
  3606. #t))))
  3607. (home-page "https://github.com/dylanaraps/pfetch")
  3608. (synopsis "System information tool")
  3609. (description "This package provides a simple, configurable system
  3610. information tool.")
  3611. (license license:expat))))
  3612. (define-public nnn
  3613. (package
  3614. (name "nnn")
  3615. (version "4.1.1")
  3616. (source
  3617. (origin
  3618. (method url-fetch)
  3619. (uri (string-append "https://github.com/jarun/nnn/releases/download/v"
  3620. version "/nnn-v" version ".tar.gz"))
  3621. (sha256
  3622. (base32 "1fnf35s3b2nfp18s712n5vhg6idx4rfgwdfv74nc2933v9l2dq7h"))))
  3623. (build-system gnu-build-system)
  3624. (inputs
  3625. `(("ncurses" ,ncurses)
  3626. ("readline" ,readline)))
  3627. (native-inputs
  3628. `(("pkg-config" ,pkg-config)))
  3629. (arguments
  3630. `(#:tests? #f ; no tests
  3631. #:phases
  3632. (modify-phases %standard-phases
  3633. (delete 'configure)) ; no configure script
  3634. #:make-flags
  3635. (list
  3636. (string-append "PREFIX="
  3637. (assoc-ref %outputs "out"))
  3638. (string-append "CC=" ,(cc-for-target))
  3639. (string-append "PKG_CONFIG=" ,(pkg-config-for-target)))))
  3640. (home-page "https://github.com/jarun/nnn")
  3641. (synopsis "Terminal file browser")
  3642. (description
  3643. "@command{nnn} is a fork of @command{noice}, a fast and minimal text
  3644. terminal file browser with keyboard shortcuts for navigation, opening files and
  3645. running tasks. There is no configuration file and MIME associations are
  3646. hard-coded.")
  3647. (license license:bsd-2)))
  3648. (define-public thermald
  3649. (package
  3650. (name "thermald")
  3651. (version "2.4.6")
  3652. (source
  3653. (origin
  3654. (method git-fetch)
  3655. (uri (git-reference
  3656. (url "https://github.com/intel/thermal_daemon")
  3657. (commit (string-append "v" version))))
  3658. (file-name (git-file-name name version))
  3659. (sha256
  3660. (base32 "1lgaky8cmxbi17zpymy2v9wgknx1g92bq50j6kfpsm8qgb7djjb6"))))
  3661. (build-system gnu-build-system)
  3662. (arguments
  3663. `(#:configure-flags
  3664. (let ((out (assoc-ref %outputs "out")))
  3665. (list (string-append "--with-dbus-sys-dir="
  3666. out "/etc/dbus-1/system.d")
  3667. "--localstatedir=/var"))
  3668. #:make-flags
  3669. (list "V=1") ; log build commands
  3670. #:phases
  3671. (modify-phases %standard-phases
  3672. (add-before 'bootstrap 'no-early-./configure
  3673. (lambda _
  3674. (setenv "NO_CONFIGURE" "yet"))))))
  3675. (native-inputs
  3676. `(("autoconf" ,autoconf)
  3677. ("autoconf-archive" ,autoconf-archive)
  3678. ("automake" ,automake)
  3679. ("glib" ,glib "bin") ; for glib-genmarshal, etc.
  3680. ("gtk-doc" ,gtk-doc)
  3681. ("pkg-config" ,pkg-config)))
  3682. (inputs
  3683. `(("dbus-glib" ,dbus-glib)
  3684. ("libevdev" ,libevdev)
  3685. ("libxml2" ,libxml2)
  3686. ("upower" ,upower)
  3687. ("xz" ,xz)))
  3688. (home-page "https://01.org/linux-thermal-daemon/")
  3689. (synopsis "CPU scaling for thermal management")
  3690. (description "The Linux Thermal Daemon helps monitor and control temperature
  3691. on systems running the Linux kernel.")
  3692. ;; arm and aarch64 don't have cpuid.h.
  3693. (supported-systems '("i686-linux" "x86_64-linux"))
  3694. (license license:gpl2)))
  3695. (define-public masscan
  3696. (package
  3697. (name "masscan")
  3698. (version "1.0.5")
  3699. (source
  3700. (origin
  3701. (method git-fetch)
  3702. (uri (git-reference
  3703. (url "https://github.com/robertdavidgraham/masscan")
  3704. (commit version)))
  3705. (file-name (git-file-name name version))
  3706. (sha256
  3707. (base32 "0q0c7bsf0pbl8napry1qyg0gl4pd8wn872h4mz9b56dx4rx90vqg"))))
  3708. (build-system gnu-build-system)
  3709. (inputs
  3710. `(("libpcap" ,libpcap)))
  3711. (arguments
  3712. `(#:test-target "regress"
  3713. #:make-flags
  3714. (list (string-append "CC=" ,(cc-for-target))
  3715. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  3716. #:phases
  3717. (modify-phases %standard-phases
  3718. (delete 'configure) ; no ./configure script
  3719. (add-after 'unpack 'patch-path
  3720. (lambda* (#:key outputs inputs #:allow-other-keys)
  3721. (let* ((out (assoc-ref outputs "out"))
  3722. (pcap (assoc-ref inputs "libpcap")))
  3723. (substitute* "src/rawsock-pcap.c"
  3724. (("libpcap.so") (string-append pcap "/lib/libpcap.so")))
  3725. #t))))))
  3726. (synopsis "TCP port scanner")
  3727. (description "MASSCAN is an asynchronous TCP port scanner. It can detect
  3728. open ports, and also complete the TCP connection and interact with the remote
  3729. application, collecting the information received.")
  3730. (home-page "https://github.com/robertdavidgraham/masscan")
  3731. ;; 'src/siphash24.c' is the SipHash reference implementation, which
  3732. ;; bears a CC0 Public Domain Dedication.
  3733. (license license:agpl3+)))
  3734. (define-public hungrycat
  3735. (package
  3736. (name "hungrycat")
  3737. (version "0.4.1")
  3738. (source (origin
  3739. (method url-fetch)
  3740. (uri (string-append "https://github.com/jwilk/hungrycat/"
  3741. "releases/download/" version "/"
  3742. "hungrycat-" version ".tar.gz"))
  3743. (sha256
  3744. (base32
  3745. "03fc1zsrf99lvxa7b4ps6pbi43304wbxh1f6ci4q0vkal370yfwh"))))
  3746. (build-system gnu-build-system)
  3747. (native-inputs
  3748. ;; For tests.
  3749. `(("python" ,python-wrapper)
  3750. ("python-nose" ,python-nose)))
  3751. (arguments
  3752. `(#:test-target "test"))
  3753. (synopsis "A single tool that combines @command{cat} & @command{rm}")
  3754. (description
  3755. "hungrycat prints the contents of a file to standard output, while
  3756. simultaneously freeing the disk space it occupied. It is useful if you need
  3757. to process a large file, don't have enough space to store both the input and
  3758. output files, and don't need the input file afterwards.
  3759. While similar in principle to running @command{cat} immediately followed by
  3760. @command{rm}, @command{hungrycat} actually frees blocks as soon as they are
  3761. printed instead of after the entire file has been read, which is often too
  3762. late.")
  3763. (home-page "https://jwilk.net/software/hungrycat")
  3764. (license license:expat)))
  3765. (define-public launchmon
  3766. (package
  3767. (name "launchmon")
  3768. (version "1.0.2")
  3769. (source (origin
  3770. (method url-fetch)
  3771. (uri (string-append
  3772. "https://github.com/LLNL/LaunchMON/releases/download/v"
  3773. version "/launchmon-v" version ".tar.gz"))
  3774. (sha256
  3775. (base32
  3776. "0fm3nd9mydm9v2bf7bh01dbgrfnpwkapxa3dsvy3x1z0rz61qc0x"))
  3777. (modules '((guix build utils)))
  3778. (snippet
  3779. '(begin
  3780. ;; Fix build failure with GCC 7 due to a conversion error.
  3781. ;; Remove for versions > 1.0.2.
  3782. (substitute* "launchmon/src/linux/lmon_api/lmon_coloc_spawner.cxx"
  3783. ((" lmonpl = '\\\\0'")
  3784. " *lmonpl = '\\0'"))
  3785. #t))))
  3786. (build-system gnu-build-system)
  3787. (inputs
  3788. `(("mpi" ,openmpi)
  3789. ("munge" ,munge)
  3790. ("boost" ,boost)
  3791. ("libelf" ,libelf)
  3792. ("libgcrypt" ,libgcrypt)
  3793. ("libgpg-error" ,libgpg-error)))
  3794. (synopsis "Infrastructue for large scale tool daemon launching")
  3795. (description
  3796. "LaunchMON is a software infrastructure that enables HPC run-time
  3797. tools to co-locate tool daemons with a parallel job. Its API allows a
  3798. tool to identify all the remote processes of a job and to scalably
  3799. launch daemons into the relevant nodes.")
  3800. (home-page "https://github.com/LLNL/LaunchMON")
  3801. (supported-systems '("i686-linux" "x86_64-linux"))
  3802. (license license:lgpl2.1)))
  3803. (define-public spindle
  3804. (package
  3805. (name "spindle")
  3806. (version "0.10")
  3807. (source (origin
  3808. ;; We use git checkout to avoid github auto-generated tarballs
  3809. (method git-fetch)
  3810. (uri (git-reference
  3811. (url "https://github.com/hpc/Spindle")
  3812. (commit (string-append "v" version))))
  3813. (file-name (git-file-name name version))
  3814. (sha256
  3815. (base32
  3816. "15n3ay0qq81r5v7fif61q1vdjcq44pp2nynkh3fvbzc9fj3c39wd"))))
  3817. (build-system gnu-build-system)
  3818. (arguments '(#:configure-flags '("--enable-sec-launchmon"
  3819. "--enable-sec-munge"
  3820. "--enable-sec-none")))
  3821. (inputs
  3822. `(("mpi" ,openmpi)
  3823. ("munge" ,munge)
  3824. ("launchmon" ,launchmon)
  3825. ("libgcrypt" ,libgcrypt)))
  3826. (synopsis "Scalable library loading in HPC environments")
  3827. (description
  3828. "Spindle is a tool for improving the performance of dynamic library and
  3829. Python loading in HPC environments.")
  3830. (home-page "https://github.com/hpc/Spindle")
  3831. ;; This package supports x86_64 and PowerPC64
  3832. (supported-systems '("x86_64-linux"))
  3833. (license license:lgpl2.1)))
  3834. (define-public inxi-minimal
  3835. (let ((real-name "inxi"))
  3836. (package
  3837. (name "inxi-minimal")
  3838. (version "3.3.07-1")
  3839. (source
  3840. (origin
  3841. (method git-fetch)
  3842. (uri (git-reference
  3843. (url "https://github.com/smxi/inxi")
  3844. (commit version)))
  3845. (file-name (git-file-name real-name version))
  3846. (sha256
  3847. (base32 "1amf1sry7g99khp9ac8f3m4jfa8rn1jjxvrcg0j9wvv65px7zj0i"))))
  3848. (build-system trivial-build-system)
  3849. (inputs
  3850. `(("bash" ,bash-minimal)
  3851. ("perl" ,perl)
  3852. ("procps" ,procps)))
  3853. (native-inputs
  3854. `(("gzip" ,gzip)))
  3855. (arguments
  3856. `(#:modules ((guix build utils))
  3857. #:builder
  3858. (begin
  3859. (use-modules (guix build utils)
  3860. (ice-9 match)
  3861. (srfi srfi-26))
  3862. (setenv "PATH" (string-append
  3863. (assoc-ref %build-inputs "bash") "/bin" ":"
  3864. (assoc-ref %build-inputs "gzip") "/bin" ":"
  3865. (assoc-ref %build-inputs "perl") "/bin" ":"))
  3866. (copy-recursively (assoc-ref %build-inputs "source")
  3867. ,(string-append real-name "-" version))
  3868. (with-directory-excursion ,(string-append real-name "-" version)
  3869. (with-fluids ((%default-port-encoding #f))
  3870. (substitute* "inxi" (("/usr/bin/env perl") (which "perl"))))
  3871. (let ((bin (string-append %output "/bin")))
  3872. (install-file "inxi" bin)
  3873. (wrap-program (string-append bin "/inxi")
  3874. `("PATH" ":" =
  3875. ("$PATH"
  3876. ,@(map (lambda (input)
  3877. (match input
  3878. ((name . store)
  3879. (let ((store-append
  3880. (cut string-append store <>)))
  3881. (cond
  3882. ((member name '("util-linux"))
  3883. (string-append (store-append "/bin") ":"
  3884. (store-append "/sbin")))
  3885. ((member name '("dmidecode" "iproute2"))
  3886. (store-append "/sbin"))
  3887. (else (store-append "/bin")))))))
  3888. %build-inputs)))
  3889. `("PERL5LIB" ":" =
  3890. ,(delete
  3891. ""
  3892. (map (match-lambda
  3893. (((? (cut string-prefix? "perl-" <>) name) . dir)
  3894. (string-append dir "/lib/perl5/site_perl"))
  3895. (_ ""))
  3896. %build-inputs)))))
  3897. (invoke "gzip" "inxi.1")
  3898. (install-file "inxi.1.gz"
  3899. (string-append %output "/share/man/man1")))
  3900. #t)))
  3901. (home-page "https://smxi.org/docs/inxi.htm")
  3902. (synopsis "Full-featured system information script")
  3903. (description "Inxi is a system information script that can display
  3904. various things about your hardware and software to users in an IRC chatroom or
  3905. support forum. It runs with the @code{/exec} command in most IRC clients.")
  3906. (license license:gpl3+))))
  3907. (define-public inxi
  3908. (package
  3909. (inherit inxi-minimal)
  3910. (name "inxi")
  3911. (inputs
  3912. `(("dmidecode" ,dmidecode)
  3913. ("file" ,file)
  3914. ("bind:utils" ,isc-bind "utils") ; dig
  3915. ("gzip" ,gzip)
  3916. ("iproute2" ,iproute) ; ip
  3917. ("kmod" ,kmod) ; modinfo
  3918. ("lm-sensors" ,lm-sensors)
  3919. ("mesa-utils" ,mesa-utils)
  3920. ("pciutils" ,pciutils)
  3921. ("tar" ,tar)
  3922. ("tree" ,tree)
  3923. ("util-linux" ,util-linux) ; lsblk
  3924. ("usbutils" ,usbutils) ; lsusb
  3925. ("wmctrl" ,wmctrl)
  3926. ("xdpyinfo" ,xdpyinfo)
  3927. ("xprop" ,xprop)
  3928. ("xrandr" ,xrandr)
  3929. ("coreutils" ,coreutils) ; uptime
  3930. ("inetutils" ,inetutils) ; ifconfig
  3931. ("perl-cpanel-json-xs" ,perl-cpanel-json-xs)
  3932. ("perl-http-tiny" ,perl-http-tiny)
  3933. ("perl-io-socket-ssl" ,perl-io-socket-ssl)
  3934. ("perl-json-xs" ,perl-json-xs)
  3935. ("perl-time-hires" ,perl-time-hires)
  3936. ("lvm2" ,lvm2) ; lvs
  3937. ("mdadm" ,mdadm)
  3938. ;; TODO: Add more inputs:
  3939. ;; ipmi-sensors
  3940. ;; hddtemp
  3941. ;; perl-xml-dumper
  3942. ;; ipmitool
  3943. ,@(package-inputs inxi-minimal)))))
  3944. (define-public pscircle
  3945. (package
  3946. (name "pscircle")
  3947. (version "1.3.1")
  3948. (source
  3949. (origin
  3950. (method git-fetch)
  3951. (uri (git-reference
  3952. (url "https://gitlab.com/mildlyparallel/pscircle.git")
  3953. (commit (string-append "v" version))))
  3954. (file-name (git-file-name name version))
  3955. (sha256
  3956. (base32 "1sm99423hh90kr4wdjqi9sdrrpk65j2vz2hzj65zcxfxyr6khjci"))))
  3957. (build-system meson-build-system)
  3958. (native-inputs
  3959. `(("pkg-config" ,pkg-config)))
  3960. (inputs
  3961. `(("cairo" ,cairo)
  3962. ("libpng" ,libpng)
  3963. ("libx11" ,libx11)))
  3964. (home-page "https://gitlab.com/mildlyparallel/pscircle")
  3965. (synopsis "Visualize Linux processes in a form of radial tree")
  3966. (description
  3967. "@code{pscircle} visualizes Linux processes in the form of a radial tree.")
  3968. (license license:gpl2+)))
  3969. (define-public python-pyudev
  3970. (package
  3971. (name "python-pyudev")
  3972. (version "0.22.0")
  3973. (source
  3974. (origin
  3975. (method url-fetch)
  3976. (uri (pypi-uri "pyudev" version))
  3977. (sha256
  3978. (base32
  3979. "0xmj6l08iih2js9skjqpv4w7y0dhxyg91zmrs6v5aa65gbmipfv9"))))
  3980. (build-system python-build-system)
  3981. (arguments
  3982. `(#:tests? #f ; Tests require /sys
  3983. #:phases
  3984. (modify-phases %standard-phases
  3985. (add-after 'unpack 'patch-ctypes-udev
  3986. (lambda* (#:key inputs outputs #:allow-other-keys)
  3987. (let ((eudev (assoc-ref inputs "eudev")))
  3988. (substitute* "src/pyudev/core.py"
  3989. (("'udev'")
  3990. (string-append "'" eudev "/lib/libudev.so'")))
  3991. (substitute* "src/pyudev/_ctypeslib/utils.py"
  3992. ;; Use absolute paths instead of keys.
  3993. (("= find_library") "= "))
  3994. #t))))))
  3995. (inputs
  3996. `(("eudev" ,eudev)))
  3997. (propagated-inputs
  3998. `(("python-six" ,python-six)))
  3999. (native-inputs
  4000. `(("python-docutils" ,python-docutils)
  4001. ("python-hypothesis" ,python-hypothesis)
  4002. ("python-mock" ,python-mock)
  4003. ("python-pytest" ,python-pytest)
  4004. ("python-sphinx" ,python-sphinx)))
  4005. (home-page "https://pyudev.readthedocs.io/")
  4006. (synopsis "Python udev binding")
  4007. (description "This package provides @code{udev} bindings for Python.")
  4008. (license license:lgpl2.1)))
  4009. (define-public vmtouch
  4010. (package
  4011. (name "vmtouch")
  4012. (version "1.3.1")
  4013. (source
  4014. (origin
  4015. (method git-fetch)
  4016. (uri (git-reference
  4017. (url "https://github.com/hoytech/vmtouch/")
  4018. (commit (string-append "v" version))))
  4019. (file-name (git-file-name name version))
  4020. (sha256
  4021. (base32 "08da6apzfkfjwasn4dxrlfxqfx7arl28apdzac5nvm0fhvws0dxk"))))
  4022. (build-system gnu-build-system)
  4023. (native-inputs
  4024. `(("perl" ,perl)))
  4025. (arguments
  4026. `(#:tests? #f ; no tests
  4027. #:make-flags
  4028. (list
  4029. (string-append "CC=" ,(cc-for-target))
  4030. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  4031. #:phases
  4032. (modify-phases %standard-phases
  4033. (delete 'configure))))
  4034. (home-page "https://github.com/hoytech/vmtouch/")
  4035. (synopsis "Portable file system cache diagnostics and control")
  4036. (description
  4037. "vmtouch is a tool for learning about and controlling the file system
  4038. cache of unix and unix-like systems.")
  4039. (license license:bsd-3)))
  4040. (define-public solaar
  4041. (package
  4042. (name "solaar")
  4043. (version "1.0.6")
  4044. (source (origin
  4045. (method git-fetch)
  4046. (uri (git-reference
  4047. (url "https://github.com/pwr-Solaar/Solaar")
  4048. (commit version)))
  4049. (file-name (git-file-name name version))
  4050. (sha256
  4051. (base32
  4052. "04zclzfc31l2fj5shcsngnmcvcmmhnc567l3wb9yfhs8k39k9kb2"))))
  4053. (build-system python-build-system)
  4054. (arguments
  4055. `(#:phases
  4056. (modify-phases %standard-phases
  4057. (add-before 'build 'setenv-PATH
  4058. (lambda _
  4059. (setenv "PYTHONPATH" "lib"))))))
  4060. (propagated-inputs
  4061. `(("python-pygobject" ,python-pygobject)
  4062. ("python-pyudev" ,python-pyudev)
  4063. ;; For GUI.
  4064. ("python-pyyaml" ,python-pyyaml)
  4065. ("python-psutil" ,python-psutil)
  4066. ("python-xlib" ,python-xlib)
  4067. ("gtk+" ,gtk+)
  4068. ("python-pygobject" ,python-pygobject)))
  4069. (home-page "https://pwr-solaar.github.io/Solaar/")
  4070. (synopsis "Linux devices manager for the Logitech Unifying Receiver")
  4071. (description "This package provides tools to manage clients of the
  4072. Logitech Unifying Receiver.")
  4073. (license license:gpl2)))
  4074. (define-public lynis
  4075. (package
  4076. (name "lynis")
  4077. ;; Also update the ‘lynis-sdk’ input to the commit matching this release.
  4078. (version "3.0.6")
  4079. (source
  4080. (origin
  4081. (method git-fetch)
  4082. (uri (git-reference
  4083. (url "https://github.com/CISOfy/lynis")
  4084. (commit version)))
  4085. (file-name (git-file-name name version))
  4086. (sha256
  4087. (base32 "1a1n8alcq6zil1rwk9940cg3x2nz3igcxfad99505pdh7ccz9324"))
  4088. (modules '((guix build utils)))
  4089. (snippet
  4090. '(begin
  4091. ;; Remove proprietary plugins. As of now, all plugins supplied with
  4092. ;; lynis are proprietary. In the future, if free plugins are
  4093. ;; provided, whitelist them from deletion.
  4094. (for-each delete-file (find-files "plugins"))))))
  4095. (build-system gnu-build-system)
  4096. (native-inputs
  4097. `(;; For tests
  4098. ("lynis-sdk"
  4099. ,(origin
  4100. (method git-fetch)
  4101. (uri (git-reference
  4102. (url "https://github.com/CISOfy/lynis-sdk")
  4103. (commit "1c4e5f60a03e29a1525ca9ec17c793461058253d")))
  4104. (file-name (git-file-name "lynis-sdk" version))
  4105. (sha256
  4106. (base32 "060k8k1q4c7nvrv3cwscxq8md2v75q3nrwwim1hgfw20divw3npy"))))))
  4107. (arguments
  4108. `(#:phases
  4109. (modify-phases %standard-phases
  4110. (replace 'configure
  4111. (lambda* (#:key inputs outputs #:allow-other-keys)
  4112. (substitute* "lynis"
  4113. (("/usr/share/lynis")
  4114. (string-append (assoc-ref outputs "out") "/share/lynis")))
  4115. (substitute* "include/functions"
  4116. (("/usr/local/etc/lynis")
  4117. (string-append (assoc-ref outputs "out") "/etc/lynis")))))
  4118. (delete 'build)
  4119. (replace 'install
  4120. (lambda* (#:key outputs #:allow-other-keys)
  4121. (let ((out (assoc-ref outputs "out")))
  4122. (install-file "lynis" (string-append out "/bin/"))
  4123. (install-file "default.prf" (string-append out "/etc/lynis"))
  4124. (for-each
  4125. (lambda (dir)
  4126. (copy-recursively dir (string-append out "/share/lynis/" dir)))
  4127. (list "db" "include" "plugins"))
  4128. (install-file "lynis.8" (string-append out "/share/man/man8")))))
  4129. (replace 'check
  4130. (lambda* (#:key inputs #:allow-other-keys)
  4131. (copy-recursively (assoc-ref inputs "lynis-sdk") "../lynis-sdk")
  4132. (setenv "LANG" "en_US.UTF-8")
  4133. (let ((lynis-dir (getcwd)))
  4134. (with-directory-excursion "../lynis-sdk"
  4135. (substitute* "config"
  4136. (("\\.\\./lynis") lynis-dir))
  4137. (substitute* "unit-tests/tests-language-translations.sh"
  4138. (("\\.\\./lynis") lynis-dir))
  4139. (invoke "sh" "lynis-devkit" "run" "unit-tests"))))))))
  4140. (home-page "https://cisofy.com/lynis/")
  4141. (synopsis "Security auditing tool")
  4142. (description "Lynis is a security auditing tool. It performs an in-depth
  4143. security scan and runs on the system itself. The primary goal is to test
  4144. security defenses and provide tips for further system hardening. It will also
  4145. scan for general system information, vulnerable software packages, and
  4146. possible configuration issues.")
  4147. (license license:gpl3+)))
  4148. (define-public ngrep
  4149. (package
  4150. (name "ngrep")
  4151. (version "1.47")
  4152. (source
  4153. (origin
  4154. (method git-fetch)
  4155. (uri (git-reference
  4156. (url "https://github.com/jpr5/ngrep/")
  4157. (commit (string-append "V" (string-replace-substring version "." "_")))))
  4158. (file-name (git-file-name name version))
  4159. (sha256
  4160. (base32
  4161. "1x2fyd7wdqlj1r76ilal06cl2wmbz0ws6i3ys204sbjh1cj6dcl7"))))
  4162. (build-system gnu-build-system)
  4163. (inputs
  4164. `(("libpcap" ,libpcap)))
  4165. (arguments
  4166. `(#:tests? #f ;; No tests.
  4167. #:configure-flags (list (string-append "--with-pcap-includes="
  4168. (assoc-ref %build-inputs "libpcap")
  4169. "/include/pcap"))))
  4170. (home-page "https://github.com/jpr5/ngrep/")
  4171. (synopsis "Grep-like utility to search for network packets on an interface")
  4172. (description "@command{ngrep} is like GNU grep applied to the network
  4173. layer. It's a PCAP-based tool that allows you to specify an extended regular
  4174. or hexadecimal expression to match against data payloads of packets. It
  4175. understands many kinds of protocols, including IPv4/6, TCP, UDP, ICMPv4/6,
  4176. IGMP and Raw, across a wide variety of interface types, and understands BPF
  4177. filter logic in the same fashion as more common packet sniffing tools, such as
  4178. tcpdump and snoop.")
  4179. (license license:bsd-3)))
  4180. (define-public pam-mount
  4181. (package
  4182. (name "pam-mount")
  4183. (version "2.18")
  4184. (source
  4185. (origin
  4186. (method url-fetch)
  4187. (uri (string-append "mirror://sourceforge/pam-mount/pam_mount/"
  4188. "pam_mount-" version ".tar.xz"))
  4189. (sha256
  4190. (base32 "0832nh2qf9pisgwnbgx6hkylx5d7i416l19y3ly4ifv7k1p7mxqa"))))
  4191. (build-system gnu-build-system)
  4192. (native-inputs
  4193. `(("perl" ,perl)
  4194. ("pkg-config" ,pkg-config)))
  4195. (inputs
  4196. `(("cryptsetup" ,cryptsetup)
  4197. ("libhx" ,libhx)
  4198. ("libxml2" ,libxml2)
  4199. ("linux-pam" ,linux-pam)
  4200. ("lvm2" ,lvm2)
  4201. ("openssl" ,openssl)
  4202. ("pcre2" ,pcre2)
  4203. ("libmount" ,util-linux "lib")
  4204. ("util-linux" ,util-linux)))
  4205. (arguments
  4206. `(#:configure-flags
  4207. (list (string-append "--with-slibdir=" %output "/lib")
  4208. (string-append "--with-ssbindir=" %output "/sbin"))
  4209. #:phases
  4210. (modify-phases %standard-phases
  4211. (add-after 'unpack 'fix-program-paths
  4212. (lambda* (#:key inputs outputs #:allow-other-keys)
  4213. (let ((util-linux (assoc-ref inputs "util-linux"))
  4214. (out (assoc-ref outputs "out")))
  4215. (substitute* "src/mtcrypt.c"
  4216. (("\"mount\";")
  4217. (string-append "\"" util-linux "/bin/mount\";"))
  4218. (("\"umount\";")
  4219. (string-append "\"" util-linux "/bin/umount\";"))
  4220. (("\"fsck\",")
  4221. (string-append "\"" util-linux "/sbin/fsck\",")))
  4222. (substitute* "src/rdconf1.c"
  4223. (("\"mount\", \"")
  4224. (string-append "\"" util-linux "/bin/mount\", \""))
  4225. (("\"umount\", \"")
  4226. (string-append "\"" util-linux "/bin/umount\", \""))
  4227. (("\"fsck\", \"")
  4228. (string-append "\"" util-linux "/sbin/fsck\", \""))
  4229. (("\"pmvarrun\", \"")
  4230. (string-append "\"" out "/sbin/pmvarrun\", \""))))
  4231. #t)))))
  4232. (home-page "http://pam-mount.sourceforge.net")
  4233. (synopsis "PAM module to mount volumes for a user session")
  4234. (description
  4235. "Pam-mount is a PAM module that can mount volumes when a user logs in.
  4236. It supports mounting local filesystems of any kind the normal mount utility
  4237. supports. It can also mount encrypted LUKS volumes using the password
  4238. supplied by the user when logging in.")
  4239. (license (list license:gpl2+ license:lgpl2.1+))))
  4240. (define-public jc
  4241. (package
  4242. (name "jc")
  4243. (version "1.13.4")
  4244. (source
  4245. (origin
  4246. ;; The PyPI tarball lacks the test suite.
  4247. (method git-fetch)
  4248. (uri (git-reference
  4249. (url "https://github.com/kellyjonbrazil/jc")
  4250. (commit (string-append "v" version))))
  4251. (file-name (git-file-name name version))
  4252. (sha256
  4253. (base32 "0rwvyyrdnw43pixp8h51rncq2inc9pbbj1j2191y5si00pjw34zr"))))
  4254. (build-system python-build-system)
  4255. (propagated-inputs
  4256. `(("python-pygments" ,python-pygments)
  4257. ("python-ruamel.yaml" ,python-ruamel.yaml)
  4258. ("python-xmltodict" ,python-xmltodict)))
  4259. (home-page "https://github.com/kellyjonbrazil/jc")
  4260. (synopsis "Convert the output of command-line tools to JSON")
  4261. (description "@code{jc} JSONifies the output of many CLI tools and
  4262. file-types for easier parsing in scripts.")
  4263. (license license:expat)))
  4264. (define-public jtbl
  4265. (package
  4266. (name "jtbl")
  4267. (version "1.1.7")
  4268. (source (origin
  4269. (method git-fetch)
  4270. (uri (git-reference
  4271. (url "https://github.com/kellyjonbrazil/jtbl")
  4272. (commit (string-append "v" version))))
  4273. (file-name (git-file-name name version))
  4274. (sha256
  4275. (base32
  4276. "19i21fqz2m40cds9pb17brjxkczqagmx2f7mfb0xdvbygaply5wz"))))
  4277. (build-system python-build-system)
  4278. (inputs
  4279. `(("python-tabulate" ,python-tabulate)))
  4280. (home-page "https://github.com/kellyjonbrazil/jtbl")
  4281. (synopsis "Command-line tool to print JSON data as a table in the terminal")
  4282. (description "@code{jtbl} accepts piped JSON data from stdin and outputs a
  4283. text table representation to stdout.")
  4284. (license license:expat)))
  4285. (define-public hosts
  4286. (package
  4287. (name "hosts")
  4288. (version "3.6.3")
  4289. (source (origin
  4290. (method git-fetch)
  4291. (uri (git-reference
  4292. (url "https://github.com/xwmx/hosts")
  4293. (commit version)))
  4294. (file-name (git-file-name name version))
  4295. (sha256
  4296. (base32
  4297. "1ni4z89kxzgwm26hhx908g04f2h0fypy7lgfa0rvsz8d0wslgcsn"))))
  4298. (build-system trivial-build-system)
  4299. (inputs
  4300. `(("bats" ,bats) ;for test
  4301. ("awk" ,gawk)
  4302. ("bash" ,bash)
  4303. ("coreutils" ,coreutils)
  4304. ("diffutils" ,diffutils)
  4305. ("grep" ,grep)
  4306. ("ncurses" ,ncurses) ;tput
  4307. ("sed" ,sed)))
  4308. (arguments
  4309. `(#:modules ((guix build utils))
  4310. #:builder
  4311. (begin
  4312. (use-modules (guix build utils))
  4313. ;; copy source
  4314. (copy-recursively (assoc-ref %build-inputs "source") ".")
  4315. ;; patch-shebang phase
  4316. (setenv "PATH"
  4317. (string-append (assoc-ref %build-inputs "bash") "/bin"
  4318. ":" (assoc-ref %build-inputs "awk") "/bin"
  4319. ":" (assoc-ref %build-inputs "coreutils") "/bin"
  4320. ":" (assoc-ref %build-inputs "diffutils") "/bin"
  4321. ":" (assoc-ref %build-inputs "grep") "/bin"
  4322. ":" (assoc-ref %build-inputs "ncurses") "/bin"
  4323. ":" (assoc-ref %build-inputs "sed") "/bin"
  4324. ":" "/run/setuid-programs"
  4325. ":" (getenv "PATH")))
  4326. (substitute* "hosts"
  4327. (("#!/usr/bin/env bash")
  4328. (string-append "#!" (which "bash")
  4329. "\nPATH=" (getenv "PATH"))))
  4330. ;; check phase
  4331. (setenv "TERM" "linux") ;set to tty for test
  4332. (invoke (search-input-file %build-inputs "/bin/bats")
  4333. "test")
  4334. ;; install phase
  4335. (install-file "hosts" (string-append %output "/bin"))
  4336. (let ((bash-completion
  4337. (string-append %output "/etc/bash_completion.d")))
  4338. (mkdir-p bash-completion)
  4339. (copy-file "etc/hosts-completion.bash"
  4340. (string-append bash-completion "/hosts")))
  4341. (let ((zsh-completion
  4342. (string-append %output "/share/zsh/site-functions")))
  4343. (mkdir-p zsh-completion)
  4344. (copy-file "etc/hosts-completion.zsh"
  4345. (string-append zsh-completion "/_hosts")))
  4346. (let ((doc (string-append %output "/share/doc/" ,name "-" ,version)))
  4347. (mkdir-p doc)
  4348. (install-file "LICENSE" doc)
  4349. (install-file "README.md" doc))
  4350. #t)))
  4351. (home-page "https://github.com/xwmx/hosts/")
  4352. (synopsis "Script for editing a foreign distro's @file{/etc/hosts} file")
  4353. (description "Hosts is a command line program for managing
  4354. @file{/etc/hosts} entries. On Guix System, @file{/etc/hosts} is managed from
  4355. the system configuration; hosts only works when using the Guix package manager
  4356. on a foreign distro. @command{hosts} works with existing hosts files and
  4357. entries, providing commands to add, remove, comment, and search.")
  4358. (license license:expat)))
  4359. (define-public nmrpflash
  4360. (package
  4361. (name "nmrpflash")
  4362. (version "0.9.15")
  4363. (source
  4364. (origin
  4365. (method git-fetch)
  4366. (uri
  4367. (git-reference
  4368. (url "https://github.com/jclehner/nmrpflash")
  4369. (commit (string-append "v" version))))
  4370. (sha256
  4371. (base32 "0ssfls1sfh8w748qsnkfgndlpw395100x2yynzbk5jd56scxvp20"))
  4372. (file-name (git-file-name name version))))
  4373. (build-system gnu-build-system)
  4374. (native-inputs
  4375. `(("pkg-config" ,pkg-config)))
  4376. (inputs
  4377. `(("libnl" ,libnl)
  4378. ("libpcap" ,libpcap)))
  4379. (arguments
  4380. `(#:tests? #f ; None exist
  4381. #:make-flags
  4382. (list (string-append "CC=" ,(cc-for-target))
  4383. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  4384. #:phases
  4385. (modify-phases %standard-phases
  4386. (delete 'configure)
  4387. (add-before 'install 'prepare-install
  4388. (lambda* (#:key outputs #:allow-other-keys)
  4389. (mkdir-p (string-append (assoc-ref outputs "out") "/bin"))
  4390. #t)))))
  4391. (home-page "https://github.com/jclehner/nmrpflash")
  4392. (synopsis "Netgear unbrick utility")
  4393. (description "This package provides a utility to flash a new firmware
  4394. image to a Netgear device. It has been tested on Netgear EX2700, EX6120,
  4395. EX6150v2, DNG3700v2, R6100, R6220, R7000, D7000, WNR3500, R6400, R6800,
  4396. R8000, R8500, WNDR3800, but is likely to be compatible with many other
  4397. Netgear devices.")
  4398. (license license:gpl3+)))
  4399. (define-public atop
  4400. (package
  4401. (name "atop")
  4402. (version "2.6.0")
  4403. (source (origin
  4404. (method url-fetch)
  4405. (uri (string-append "https://www.atoptool.nl/download/atop-"
  4406. version ".tar.gz"))
  4407. (sha256
  4408. (base32
  4409. "0wlg0n0h9vwpjp2dcb623jvvqck422jrjpq9mbpzg4hnawxcmhly"))))
  4410. (build-system gnu-build-system)
  4411. (arguments
  4412. `(#:tests? #f ; no test suite
  4413. #:make-flags
  4414. (list (string-append "CC=" ,(cc-for-target))
  4415. ;; The installer requires a choice between systemd or SysV.
  4416. "systemdinstall"
  4417. (string-append "DESTDIR=" (assoc-ref %outputs "out"))
  4418. (string-append "BINPATH=/bin")
  4419. (string-append "SBINPATH=/sbin")
  4420. (string-append "SYSDPATH=/etc/systemd/system")
  4421. (string-append "PMPATHD=/etc/systemd/system-sleep")
  4422. (string-append "MAN1PATH=/share/man/man1")
  4423. (string-append "MAN5PATH=/share/man/man5")
  4424. (string-append "MAN8PATH=/share/man/man8")
  4425. ;; Or else it tries to create /var/log/atop...
  4426. (string-append "LOGPATH="))
  4427. #:phases
  4428. (modify-phases %standard-phases
  4429. (delete 'configure) ; No ./configure script
  4430. (add-before 'build 'patch-build
  4431. (lambda* (#:key outputs #:allow-other-keys)
  4432. (substitute* "Makefile"
  4433. ;; We don't need to chown things in the build environment.
  4434. (("chown.*$") "")
  4435. ;; We can't toggle the setuid bit in the build environment.
  4436. (("chmod 04711") "chmod 0711")
  4437. ;; Otherwise, it creates a blank configuration file as a "default".
  4438. (("touch.*DEFPATH)/atop") "")
  4439. (("chmod.*DEFPATH)/atop") ""))
  4440. #t)))))
  4441. (inputs
  4442. `(("ncurses" ,ncurses)
  4443. ("python" ,python-wrapper) ; for `atopgpud`
  4444. ("zlib" ,zlib)))
  4445. (home-page "https://www.atoptool.nl/")
  4446. (synopsis "Linux performance monitoring console")
  4447. (description "Atop is an ASCII full-screen performance monitor for Linux
  4448. that is capable of reporting the activity of all processes (even processes have
  4449. finished during the monitoring interval), daily logging of system and process
  4450. activity for long-term analysis, highlighting overloaded system resources by
  4451. using colors, etc. At regular intervals, it shows system-level activity related
  4452. to the CPU, memory, swap, disks (including LVM) and network layers, and for
  4453. every process (and thread) it shows e.g. the CPU utilization, memory growth,
  4454. disk utilization, priority, username, state, and exit code.")
  4455. (license license:gpl2+)))
  4456. ;; TODO: Unvendor u-root (pkg: forth, golang, testutil).
  4457. (define fiano
  4458. (package
  4459. (name "fiano")
  4460. (version "5.0.0")
  4461. (source (origin
  4462. (method git-fetch)
  4463. (uri (git-reference
  4464. (url "https://github.com/linuxboot/fiano.git")
  4465. (commit (string-append "v" version))))
  4466. (file-name (string-append name "-" version "-checkout"))
  4467. (sha256
  4468. (base32
  4469. "03ihdwwhb7g6bihx141cn0924sjs5ps6q3ps58pk1cg0g0srrr9h"))
  4470. (modules '((guix build utils)))
  4471. (snippet
  4472. '(begin
  4473. (delete-file-recursively "vendor/golang.org")
  4474. (delete-file-recursively "vendor/github.com")
  4475. #t))))
  4476. (build-system go-build-system)
  4477. (arguments
  4478. `(#:import-path "github.com/linuxboot/fiano"
  4479. #:unpack-path "github.com/linuxboot/fiano"))
  4480. (native-inputs
  4481. `())
  4482. (inputs
  4483. `(("go-golang-org-x-text" ,go-golang-org-x-text)
  4484. ("go-github.com-ulikunitz-xz" ,go-github.com-ulikunitz-xz)))
  4485. (synopsis "UEFI image editor")
  4486. (description "This package provides a command-line UEFI image editor.")
  4487. (home-page "https://github.com/linuxboot/fiano")
  4488. (license license:bsd-3)))
  4489. (define-public fiano-utk
  4490. (package
  4491. (inherit fiano)
  4492. (name "fiano-utk")
  4493. (arguments
  4494. `(#:import-path "github.com/linuxboot/fiano/cmds/utk"
  4495. #:unpack-path "github.com/linuxboot/fiano"))))
  4496. (define-public fiano-fmap
  4497. (package
  4498. (inherit fiano)
  4499. (name "fiano-fmap")
  4500. (arguments
  4501. `(#:import-path "github.com/linuxboot/fiano/cmds/fmap"
  4502. #:unpack-path "github.com/linuxboot/fiano"))))
  4503. (define-public novena-eeprom
  4504. (package
  4505. (name "novena-eeprom")
  4506. (version "2.3")
  4507. (source (origin
  4508. (method git-fetch)
  4509. (uri (git-reference
  4510. (url "https://github.com/xobs/novena-eeprom.git")
  4511. (commit (string-append "v" version))))
  4512. (file-name (string-append name "-" version "-checkout"))
  4513. (sha256
  4514. (base32
  4515. "00pd71mg0g20v0820ggp3ghf9nyj5s4wavaz9mkmrmsr91hcnf7i"))))
  4516. (build-system gnu-build-system)
  4517. (arguments
  4518. `(#:tests? #f ; No tests exist
  4519. #:make-flags
  4520. (list (string-append "CC=" ,(cc-for-target)))
  4521. #:phases
  4522. (modify-phases %standard-phases
  4523. (delete 'configure)
  4524. (replace 'install
  4525. (lambda* (#:key outputs #:allow-other-keys)
  4526. (let* ((out (assoc-ref outputs "out"))
  4527. (out-bin (string-append out "/bin"))
  4528. (out-share-man (string-append out "/share/man/man8")))
  4529. (install-file "novena-eeprom" out-bin)
  4530. (install-file "novena-eeprom.8" out-share-man)))))))
  4531. (inputs
  4532. `(("i2c-tools" ,i2c-tools)))
  4533. (synopsis "Novena EEPROM editor")
  4534. (description "This package provides an editor for the Novena EEPROM.
  4535. Novena boards contain a device-dependent descriptive EEPROM that defines
  4536. various parameters such as serial number, MAC address, and featureset.
  4537. This program allows you to view and manipulate this EEPROM list.")
  4538. (home-page "https://github.com/xobs/novena-eeprom/")
  4539. (supported-systems '("armhf-linux"))
  4540. (license license:bsd-3)))
  4541. (define-public lrzsz
  4542. (package
  4543. (name "lrzsz")
  4544. (version "0.12.20")
  4545. (source (origin
  4546. (method url-fetch)
  4547. (uri (string-append "https://www.ohse.de/uwe/releases/lrzsz-"
  4548. version ".tar.gz"))
  4549. (sha256
  4550. (base32
  4551. "1wcgfa9fsigf1gri74gq0pa7pyajk12m4z69x7ci9c6x9fqkd2y2"))))
  4552. (build-system gnu-build-system)
  4553. (arguments
  4554. `(#:phases
  4555. (modify-phases %standard-phases
  4556. (replace 'configure
  4557. (lambda* (#:key outputs #:allow-other-keys)
  4558. (setenv "CONFIG_SHELL" (which "bash"))
  4559. (invoke "./configure"
  4560. (string-append "--prefix="
  4561. (assoc-ref outputs "out"))))))))
  4562. (synopsis "Implementation of XMODEM/YMODEM/ZMODEM transfer protocols")
  4563. (description "This package provides programs that transfer files using
  4564. the XMODEM/YMODEM/ZMODEM file transfer protocols.")
  4565. (home-page "https://ohse.de/uwe/software/lrzsz.html")
  4566. (license license:gpl2+)))
  4567. (define-public nq
  4568. (package
  4569. (name "nq")
  4570. (version "0.4")
  4571. (source
  4572. (origin
  4573. (method git-fetch)
  4574. (uri (git-reference
  4575. (url "https://github.com/leahneukirchen/nq")
  4576. (commit (string-append "v" version))))
  4577. (file-name (git-file-name name version))
  4578. (sha256
  4579. (base32 "0sdamjzvmf6cxhjmd1rjvn7zm6k10fp5n6vabyxd3yl30cgrxw2i"))))
  4580. (build-system gnu-build-system)
  4581. (native-inputs
  4582. `(("perl" ,perl)))
  4583. (arguments
  4584. `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
  4585. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  4586. #:phases
  4587. (modify-phases %standard-phases
  4588. (delete 'configure))))
  4589. (synopsis "Unix command line queue utility")
  4590. (description
  4591. "@code{nq} can create very lightweight job queue systems which require no
  4592. setup, maintenance, supervision, or any long-running processes.")
  4593. (home-page "https://github.com/leahneukirchen/nq")
  4594. (license license:public-domain)))
  4595. (define-public lsofgraph
  4596. (let ((commit "1d414bdc727c00a8c6cbfffc3c43128c60d6f0de")
  4597. (revision "1"))
  4598. (package
  4599. (name "lsofgraph")
  4600. (version (git-version "0.0.1" revision commit)) ;no upstream release
  4601. (source (origin
  4602. (method git-fetch)
  4603. (uri (git-reference
  4604. (url "https://github.com/zevv/lsofgraph")
  4605. (commit commit)))
  4606. (file-name (git-file-name name version))
  4607. (sha256
  4608. (base32
  4609. "058x04yp6bc77hbl3qchqm7pa8f9vqfl9jryr88m8pzl7kvpif54"))))
  4610. (build-system trivial-build-system)
  4611. (inputs
  4612. `(("lua" ,lua)))
  4613. (arguments
  4614. `(#:modules ((guix build utils))
  4615. #:builder
  4616. (begin
  4617. (use-modules (guix build utils))
  4618. ;; copy source
  4619. (copy-recursively (assoc-ref %build-inputs "source") ".")
  4620. ;; patch-shebang phase
  4621. (setenv "PATH"
  4622. (string-append (assoc-ref %build-inputs "lua") "/bin"
  4623. ":" (getenv "PATH")))
  4624. (substitute* "lsofgraph"
  4625. (("#!/usr/bin/env lua")
  4626. (string-append "#!" (which "lua"))))
  4627. ;; install phase
  4628. (install-file "lsofgraph" (string-append %output "/bin"))
  4629. (let ((doc (string-append
  4630. %output "/share/doc/" ,name "-" ,version)))
  4631. (mkdir-p doc)
  4632. (install-file "LICENSE" doc)
  4633. (install-file "README.md" doc))
  4634. #t)))
  4635. (home-page "https://github.com/zevv/lsofgraph")
  4636. (synopsis "Convert @code{lsof} output to @code{graphviz}")
  4637. (description "Utility to convert @code{lsof} output to a graph showing
  4638. FIFO and UNIX interprocess communication.")
  4639. (license license:bsd-2))))
  4640. (define-public runitor
  4641. (package
  4642. (name "runitor")
  4643. (version "0.8.0")
  4644. (source
  4645. (origin
  4646. (method git-fetch)
  4647. (uri (git-reference
  4648. (url "https://github.com/bdd/runitor")
  4649. (commit (string-append "v" version))))
  4650. (file-name (git-file-name name version))
  4651. (sha256
  4652. (base32 "0vjfbyrbp5ywgzdz9j3x0qgjvnq7nw7193x8v9yy6k2cih1zsacn"))))
  4653. (build-system go-build-system)
  4654. (arguments
  4655. `(#:unpack-path "bdd.fi/x/runitor"
  4656. #:go ,go-1.17
  4657. #:build-flags '(,(string-append "-ldflags=-X main.Version=" version))
  4658. #:import-path "bdd.fi/x/runitor/cmd/runitor"
  4659. #:install-source? #f))
  4660. (home-page "https://github.com/bdd/runitor")
  4661. (synopsis "Command runner with healthchecks.io integration")
  4662. (description
  4663. "Runitor runs the supplied command, captures its output, and based on its
  4664. exit code reports successful or failed execution to
  4665. @url{https://healthchecks.io,https://healthchecks.io} or your private instance.")
  4666. (license license:bsd-0)))