admin.scm 192 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816
  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.0.5")
  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 "10lp6cbfvigzp6pq5nwj3s3l4vs7cv92krz2r08nwrz8vl6rqdzp"))
  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.8")
  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. "1rlln9nb3lvg4qlkp0c9qxjflx36rf16mflg0sps2kl0k7lmswzi"))
  1638. (modules '((guix build utils)))
  1639. (snippet
  1640. '(begin
  1641. (delete-file-recursively "lib/zlib")
  1642. #t))))
  1643. (build-system gnu-build-system)
  1644. (outputs (list "out"))
  1645. (arguments
  1646. `(#:configure-flags
  1647. (list (string-append "--docdir=" (assoc-ref %outputs "out")
  1648. "/share/doc/" ,name "-" ,version)
  1649. "--with-logpath=/var/log/sudo.log"
  1650. "--with-rundir=/var/run/sudo" ; must be cleaned up at boot time
  1651. "--with-vardir=/var/db/sudo"
  1652. "--with-iologdir=/var/log/sudo-io"
  1653. ;; 'visudo.c' expects _PATH_MV to be defined, but glibc doesn't
  1654. ;; provide it.
  1655. (string-append "CPPFLAGS=-D_PATH_MV='\""
  1656. (assoc-ref %build-inputs "coreutils")
  1657. "/bin/mv\"'"))
  1658. ;; Avoid non-determinism; see <http://bugs.gnu.org/21918>.
  1659. #:parallel-build? #f
  1660. #:phases
  1661. (modify-phases %standard-phases
  1662. (add-before 'configure 'pre-configure
  1663. (lambda _
  1664. (substitute* "src/sudo_usage.h.in"
  1665. ;; Do not capture 'configure' arguments since we would
  1666. ;; unduly retain references, and also because the
  1667. ;; CPPFLAGS above would close the string literal
  1668. ;; prematurely.
  1669. (("@CONFIGURE_ARGS@") "\"\""))
  1670. (substitute* (find-files "." "Makefile\\.in")
  1671. ;; Allow installation as non-root.
  1672. (("-o [[:graph:]]+ -g [[:graph:]]+")
  1673. "")
  1674. ;; Don't try to create /etc/sudoers.
  1675. (("^install: (.*)install-sudoers(.*)" _ before after)
  1676. (string-append "install: " before after "\n"))
  1677. ;; Don't try to create /run/sudo.
  1678. (("\\$\\(DESTDIR\\)\\$\\(rundir\\)")
  1679. "$(TMPDIR)/dummy")
  1680. ;; Install example sudo{,_logsrvd}.conf to the right place.
  1681. (("\\$\\(DESTDIR\\)\\$\\(sysconfdir\\)")
  1682. "$(DESTDIR)/$(docdir)/examples")
  1683. ;; Don't try to create /var/db/sudo.
  1684. (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
  1685. "$(TMPDIR)/dummy"))
  1686. ;; ‘Checking existing [/etc/]sudoers file for syntax errors’ is
  1687. ;; not the task of the build system, and fails.
  1688. (substitute* "plugins/sudoers/Makefile.in"
  1689. (("^pre-install:" match)
  1690. (string-append match "\ndisabled-" match)))
  1691. #t)))
  1692. ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
  1693. ;; the chroot's /etc/passwd doesn't have it. Turn off the tests.
  1694. #:tests? #f))
  1695. (native-inputs
  1696. `(("groff" ,groff)))
  1697. (inputs
  1698. `(("coreutils" ,coreutils)
  1699. ,@(if (hurd-target?)
  1700. '()
  1701. `(("linux-pam" ,linux-pam)))
  1702. ("zlib" ,zlib)))
  1703. (home-page "https://www.sudo.ws/")
  1704. (synopsis "Run commands as root")
  1705. (description
  1706. "Sudo (su \"do\") allows a system administrator to delegate authority to
  1707. give certain users (or groups of users) the ability to run some (or all)
  1708. commands as root or another user while providing an audit trail of the
  1709. commands and their arguments.")
  1710. ;; See <http://www.sudo.ws/sudo/license.html>.
  1711. (license license:x11)))
  1712. (define-public opendoas
  1713. (package
  1714. (name "opendoas")
  1715. (version "6.8.1")
  1716. (source (origin
  1717. (method git-fetch)
  1718. (uri (git-reference
  1719. (url "https://github.com/Duncaen/OpenDoas")
  1720. (commit (string-append "v" version))))
  1721. (file-name (git-file-name name version))
  1722. (sha256
  1723. (base32
  1724. "0gfcssm21vdfg6kcrcc7hz1h4jmhy2zv29rfqyrrj3a6r9b5ah8p"))))
  1725. (build-system gnu-build-system)
  1726. (arguments
  1727. `(#:phases
  1728. (modify-phases %standard-phases
  1729. (add-before 'configure 'pre-configure
  1730. (lambda* (#:key outputs #:allow-other-keys)
  1731. (substitute* "GNUmakefile"
  1732. (("^\tchown.*$") ""))
  1733. ;; OpenDoas look for binaries in safepath when a rule specify a
  1734. ;; relative command, such as “permit keepenv :wheel cmd guix”.
  1735. (substitute* "doas.c"
  1736. (("safepath =" match)
  1737. (string-append match " \""
  1738. "/run/setuid-programs:"
  1739. "/run/current-system/profile/bin:"
  1740. "/run/current-system/profile/sbin:"
  1741. "\" ")))
  1742. #t))
  1743. (replace 'configure
  1744. ;; The configure script doesn't accept most of the default flags.
  1745. (lambda* (#:key configure-flags #:allow-other-keys)
  1746. ;; The configure script can be told which compiler to use only
  1747. ;; through environment variables.
  1748. (setenv "CC" ,(cc-for-target))
  1749. (apply invoke "./configure" configure-flags))))
  1750. #:configure-flags
  1751. (list (string-append "--prefix=" (assoc-ref %outputs "out"))
  1752. "--with-timestamp")
  1753. ;; Compiler choice is not carried over from the configure script.
  1754. #:make-flags
  1755. (list (string-append "CC=" ,(cc-for-target)))
  1756. #:tests? #f)) ; no test suite
  1757. (native-inputs
  1758. `(("bison" ,bison)))
  1759. (home-page "https://github.com/Duncaen/OpenDoas")
  1760. (synopsis "Portable version of OpenBSD's doas command")
  1761. (description "Doas is a minimal replacement for the venerable sudo. It was
  1762. initially written by Ted Unangst of the OpenBSD project to provide 95% of the
  1763. features of sudo with a fraction of the codebase.")
  1764. (license (list license:bsd-3 ; libbsd/*
  1765. license:isc)))) ; everything else
  1766. (define-public wpa-supplicant-minimal
  1767. (package
  1768. (name "wpa-supplicant-minimal")
  1769. (version "2.9")
  1770. (source (origin
  1771. (method url-fetch)
  1772. (uri (string-append
  1773. "https://w1.fi/releases/wpa_supplicant-"
  1774. version ".tar.gz"))
  1775. (sha256
  1776. (base32
  1777. "05qzak1mssnxcgdrafifxh9w86a4ha69qabkg4bsigk499xyxggw"))
  1778. (modules '((guix build utils)))
  1779. (snippet
  1780. '(begin
  1781. (substitute* "wpa_supplicant/defconfig"
  1782. ;; Disable D-Bus to save ~14MiB on the closure size.
  1783. (("^CONFIG_CTRL_IFACE_DBUS" line _)
  1784. (string-append "#" line)))
  1785. #t))
  1786. (patches
  1787. (search-patches "wpa-supplicant-CVE-2021-27803.patch"
  1788. "wpa-supplicant-CVE-2021-30004.patch"))))
  1789. (build-system gnu-build-system)
  1790. (arguments
  1791. `(#:phases
  1792. (modify-phases %standard-phases
  1793. (replace 'configure
  1794. (lambda _
  1795. (chdir "wpa_supplicant")
  1796. (copy-file "defconfig" ".config")
  1797. (let ((port (open-file ".config" "al")))
  1798. (display "
  1799. CONFIG_DEBUG_SYSLOG=y
  1800. CONFIG_TLS=openssl
  1801. CONFIG_DRIVER_NL80211=y
  1802. CFLAGS += $(shell pkg-config libnl-3.0 --cflags)
  1803. CONFIG_LIBNL32=y
  1804. CONFIG_READLINE=y\n" port)
  1805. (close-port port))
  1806. ;; Make sure we have a pkg-config when cross compiling
  1807. (substitute* '(".config"
  1808. "Android.mk"
  1809. "Makefile"
  1810. "dbus/Makefile")
  1811. (("pkg-config")
  1812. (or (which "pkg-config")
  1813. (which (string-append ,(%current-target-system)
  1814. "-pkg-config")))))
  1815. #t))
  1816. (add-after 'install 'install-documentation
  1817. (lambda* (#:key outputs #:allow-other-keys)
  1818. (let* ((out (assoc-ref outputs "out"))
  1819. (doc (string-append out "/share/doc/wpa-supplicant"))
  1820. (man (string-append out "/share/man"))
  1821. (man5 (string-append man "/man5"))
  1822. (man8 (string-append man "/man8")))
  1823. (define (copy-man-page target)
  1824. (lambda (file)
  1825. (install-file file target)))
  1826. (mkdir-p man5) (mkdir man8)
  1827. (for-each (copy-man-page man5)
  1828. (find-files "doc/docbook" "\\.5"))
  1829. (for-each (copy-man-page man8)
  1830. (find-files "doc/docbook" "\\.8"))
  1831. ;; wpa_supplicant.conf(5) does not explain all configuration
  1832. ;; options but refers to the example config file, so install it
  1833. ;; along with READMEs.
  1834. (for-each (lambda (file)
  1835. (install-file file doc))
  1836. '("README" "README-DPP" "README-HS20"
  1837. "README-P2P" "README-WPS"
  1838. "wpa_supplicant.conf"))
  1839. #t))))
  1840. #:make-flags (list (string-append "CC=" ,(cc-for-target))
  1841. (string-append "BINDIR=" (assoc-ref %outputs "out")
  1842. "/sbin")
  1843. (string-append "LIBDIR=" (assoc-ref %outputs "out")
  1844. "/lib"))
  1845. #:tests? #f))
  1846. (inputs
  1847. `(("readline" ,readline)
  1848. ("libnl" ,libnl)
  1849. ("openssl" ,openssl)))
  1850. (native-inputs
  1851. `(("pkg-config" ,pkg-config)))
  1852. (home-page "https://w1.fi/wpa_supplicant/")
  1853. (synopsis "Connecting to WPA and WPA2-protected wireless networks")
  1854. (description
  1855. "wpa_supplicant is a WPA Supplicant with support for WPA and WPA2 (IEEE
  1856. 802.11i / RSN). Supplicant is the IEEE 802.1X/WPA component that is used in
  1857. the client stations. It implements key negotiation with a WPA Authenticator
  1858. and it controls the roaming and IEEE 802.11 authentication/association of the
  1859. WLAN driver.
  1860. This package provides the @code{wpa_supplicant} daemon and the @code{wpa_cli}
  1861. command.")
  1862. ;; In practice, this is linked against Readline, which makes it GPLv3+.
  1863. (license license:bsd-3)
  1864. (properties `((cpe-name . "wpa_supplicant")))))
  1865. (define-public wpa-supplicant
  1866. (package (inherit wpa-supplicant-minimal)
  1867. (name "wpa-supplicant")
  1868. (inputs `(("dbus" ,dbus)
  1869. ,@(package-inputs wpa-supplicant-minimal)))
  1870. (arguments
  1871. (substitute-keyword-arguments (package-arguments wpa-supplicant-minimal)
  1872. ((#:phases phases)
  1873. `(modify-phases ,phases
  1874. (add-after 'configure 'configure-for-dbus
  1875. (lambda _
  1876. (let ((port (open-file ".config" "al")))
  1877. (display "
  1878. CONFIG_CTRL_IFACE_DBUS_NEW=y
  1879. CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port)
  1880. (close-port port))
  1881. #t))
  1882. (add-after 'install-documentation 'install-dbus-conf
  1883. (lambda* (#:key outputs #:allow-other-keys)
  1884. (let* ((out (assoc-ref outputs "out"))
  1885. (dir (string-append out "/etc/dbus-1/system.d")))
  1886. (mkdir-p dir)
  1887. (copy-file "dbus/dbus-wpa_supplicant.conf"
  1888. (string-append dir "/wpa_supplicant.conf")))
  1889. #t))))))))
  1890. (define-public wpa-supplicant-gui
  1891. (package
  1892. (inherit wpa-supplicant)
  1893. (name "wpa-supplicant-gui")
  1894. (inputs `(("qtbase" ,qtbase-5)
  1895. ("qtsvg" ,qtsvg)
  1896. ,@(package-inputs wpa-supplicant)))
  1897. (native-inputs
  1898. ;; For icons.
  1899. `(("imagemagick" ,imagemagick)
  1900. ("inkscape" ,inkscape)
  1901. ,@(package-native-inputs wpa-supplicant)))
  1902. (arguments
  1903. `(#:phases (modify-phases %standard-phases
  1904. (add-after 'unpack 'chdir
  1905. (lambda _
  1906. (chdir "wpa_supplicant/wpa_gui-qt4")
  1907. #t))
  1908. (delete 'configure)
  1909. (replace 'build
  1910. (lambda _
  1911. (invoke "qmake" "wpa_gui.pro")
  1912. (invoke "make" "-j" (number->string (parallel-job-count)))
  1913. (invoke "make" "-C" "icons")))
  1914. (replace 'install
  1915. (lambda* (#:key inputs outputs #:allow-other-keys)
  1916. (let ((out (assoc-ref outputs "out"))
  1917. (qt '("qtbase" "qtsvg")))
  1918. (install-file "wpa_gui" (string-append out "/bin"))
  1919. (install-file "wpa_gui.desktop"
  1920. (string-append out "/share/applications"))
  1921. (copy-recursively "icons/hicolor"
  1922. (string-append out "/share/icons/hicolor"))
  1923. (wrap-program (string-append out "/bin/wpa_gui")
  1924. `("QT_PLUGIN_PATH" ":" prefix
  1925. ,(map (lambda (label)
  1926. (string-append (assoc-ref inputs label)
  1927. "/lib/qt5/plugins/"))
  1928. qt)))
  1929. #t))))))
  1930. (synopsis "Graphical user interface for WPA supplicant")))
  1931. (define-public hostapd
  1932. (package
  1933. (name "hostapd")
  1934. (version "2.9")
  1935. (source (origin
  1936. (method url-fetch)
  1937. (uri (string-append "https://w1.fi/releases/hostapd-" version
  1938. ".tar.gz"))
  1939. (sha256
  1940. (base32
  1941. "1mrbvg4v7vm7mknf0n29mf88k3s4a4qj6r4d51wq8hmjj1m7s7c8"))
  1942. (patches
  1943. (search-patches "wpa-supplicant-CVE-2021-27803.patch"
  1944. "wpa-supplicant-CVE-2021-30004.patch"))))
  1945. (build-system gnu-build-system)
  1946. (arguments
  1947. `(#:phases
  1948. (modify-phases %standard-phases
  1949. (replace 'configure
  1950. (lambda _
  1951. ;; This is mostly copied from 'wpa-supplicant' above.
  1952. (chdir "hostapd")
  1953. (copy-file "defconfig" ".config")
  1954. (let ((port (open-file ".config" "al")))
  1955. (display "
  1956. CONFIG_LIBNL32=y
  1957. CONFIG_IEEE80211R=y
  1958. CONFIG_IEEE80211N=y
  1959. CONFIG_IEEE80211AC=y\n" port)
  1960. (close-port port))
  1961. #t))
  1962. (add-after 'unpack 'patch-pkg-config
  1963. (lambda _
  1964. (substitute* "src/drivers/drivers.mak"
  1965. (("pkg-config")
  1966. (or (which "pkg-config")
  1967. (string-append ,(%current-target-system)
  1968. "-pkg-config"))))
  1969. #t))
  1970. (add-after 'install 'install-man-pages
  1971. (lambda* (#:key outputs #:allow-other-keys)
  1972. (let* ((out (assoc-ref outputs "out"))
  1973. (man (string-append out "/share/man"))
  1974. (man1 (string-append man "/man1"))
  1975. (man8 (string-append man "/man8")))
  1976. (define (copy-man-page target)
  1977. (lambda (file)
  1978. (install-file file target)))
  1979. (for-each (copy-man-page man1)
  1980. (find-files "." "\\.1"))
  1981. (for-each (copy-man-page man8)
  1982. (find-files "." "\\.8"))
  1983. #t))))
  1984. #:make-flags (list (string-append "CC=" ,(cc-for-target))
  1985. (string-append "BINDIR=" (assoc-ref %outputs "out")
  1986. "/sbin")
  1987. (string-append "LIBDIR=" (assoc-ref %outputs "out")
  1988. "/lib"))
  1989. #:tests? #f))
  1990. (native-inputs `(("pkg-config" ,pkg-config)))
  1991. ;; There's an optional dependency on SQLite.
  1992. (inputs `(("openssl" ,openssl)
  1993. ("libnl" ,libnl)))
  1994. (home-page "https://w1.fi/hostapd/")
  1995. (synopsis "Daemon for Wi-Fi access points and authentication servers")
  1996. (description
  1997. "hostapd is a user-space daemon for WiFi access points and authentication
  1998. servers. It implements IEEE 802.11 access point management, IEEE
  1999. 802.1X/WPA/WPA2/EAP Authenticators, RADIUS client, EAP server, and RADIUS
  2000. authentication server.")
  2001. ;; Same license as wpa_supplicant.
  2002. (license license:bsd-3)))
  2003. (define-public wakelan
  2004. (package
  2005. (name "wakelan")
  2006. (version "1.1")
  2007. (source (origin
  2008. (method url-fetch)
  2009. (uri (string-append
  2010. "ftp://ftp.gwdg.de/pub/linux/metalab/system/network/misc/wakelan-"
  2011. version ".tar.gz"))
  2012. (sha256
  2013. (base32
  2014. "0vydqpf44146ir6k87gmqaq6xy66xhc1gkr3nsd7jj3nhy7ypx9x"))))
  2015. (build-system gnu-build-system)
  2016. (arguments
  2017. '(#:phases
  2018. (modify-phases %standard-phases
  2019. (replace 'configure
  2020. (lambda* (#:key outputs #:allow-other-keys)
  2021. (let ((out (assoc-ref outputs "out")))
  2022. (mkdir-p (string-append out "/bin"))
  2023. (mkdir-p (string-append out "/share/man/man1"))
  2024. ;; It's an old configure script that doesn't understand
  2025. ;; the extra options we pass.
  2026. (setenv "CONFIG_SHELL" (which "bash"))
  2027. (invoke "./configure"
  2028. (string-append "--prefix=" out)
  2029. (string-append "--mandir=" out
  2030. "/share/man"))))))
  2031. #:tests? #f))
  2032. (home-page "https://www.kernel.org") ; really, no home page
  2033. (synopsis "Send a wake-on-LAN packet")
  2034. (description
  2035. "WakeLan broadcasts a properly formatted UDP packet across the local area
  2036. network, which causes enabled computers to power on.")
  2037. (license license:gpl2+)))
  2038. (define-public dmidecode
  2039. (package
  2040. (name "dmidecode")
  2041. (version "3.3")
  2042. (source
  2043. (origin
  2044. (method url-fetch)
  2045. (uri (string-append "mirror://savannah/dmidecode/dmidecode-"
  2046. version ".tar.xz"))
  2047. (sha256
  2048. (base32 "0m8lzg9rf1qssasiix672bxk5qwms90561g8hfkkhk31h2kkgiw2"))))
  2049. (build-system gnu-build-system)
  2050. (arguments
  2051. `(#:tests? #f ; no 'check' target
  2052. #:make-flags
  2053. (list (string-append "CC=" ,(cc-for-target))
  2054. (string-append "prefix="
  2055. (assoc-ref %outputs "out")))
  2056. #:phases
  2057. (modify-phases %standard-phases
  2058. (delete 'configure)))) ; no configure script
  2059. (home-page "https://www.nongnu.org/dmidecode/")
  2060. (synopsis "Read hardware information from the BIOS")
  2061. (description
  2062. "Dmidecode reports information about your system's hardware as described
  2063. in your system BIOS according to the SMBIOS/DMI standard. This typically
  2064. includes system manufacturer, model name, serial number, BIOS version, asset
  2065. tag as well as a lot of other details of varying level of interest and
  2066. reliability depending on the manufacturer. This will often include usage
  2067. status for the CPU sockets, expansion slots (e.g. AGP, PCI, ISA) and memory
  2068. module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
  2069. (license license:gpl2+)))
  2070. (define-public acpica
  2071. (package
  2072. (name "acpica")
  2073. (version "20210730")
  2074. (source (origin
  2075. (method url-fetch)
  2076. (uri (string-append
  2077. "https://acpica.org/sites/acpica/files/acpica-unix-"
  2078. version ".tar.gz"))
  2079. (sha256
  2080. (base32
  2081. "1pmm977nyl3bs71ipzcl4dh30qm8x9wm2p2ml0m62rl62kai832a"))))
  2082. (build-system gnu-build-system)
  2083. (native-inputs `(("flex" ,flex)
  2084. ("bison" ,bison)))
  2085. (arguments
  2086. `(#:make-flags (list (string-append "PREFIX=" %output)
  2087. (string-append "CC=" ,(cc-for-target))
  2088. "HOST=_LINUX"
  2089. "OPT_CFLAGS=-Wall -fno-strict-aliasing")
  2090. #:tests? #f ; no 'check' target
  2091. #:phases (modify-phases %standard-phases (delete 'configure))))
  2092. (home-page "https://acpica.org/")
  2093. (synopsis "Tools for the development and debugging of ACPI tables")
  2094. (description
  2095. "The @acronym{ACPICA, ACPI Component Architecture} project provides an
  2096. OS-independent reference implementation of the @acronym{ACPI, Advanced
  2097. Configuration and Power Interface} specification. ACPICA code contains those
  2098. portions of ACPI meant to be directly integrated into the host OS as a
  2099. kernel-resident subsystem, and a small set of tools to assist in developing and
  2100. debugging ACPI tables.
  2101. This package contains only the user-space tools needed for ACPI table
  2102. development, not the kernel implementation of ACPI.")
  2103. (license license:gpl2))) ; dual GPLv2/ACPICA Licence
  2104. (define-public s-tui
  2105. (package
  2106. (name "s-tui")
  2107. (version "1.1.1")
  2108. (source
  2109. (origin
  2110. (method url-fetch)
  2111. (uri (pypi-uri "s-tui" version))
  2112. (sha256
  2113. (base32 "1clk59wf6v1lq33h4x5qwxvz5ng9mfkp1s6ynxa58w2raq8dbmy5"))))
  2114. (build-system python-build-system)
  2115. (inputs
  2116. `(("python-psutil" ,python-psutil)
  2117. ("python-urwid" ,python-urwid)))
  2118. (home-page "https://github.com/amanusk/s-tui")
  2119. (synopsis "Interactive terminal stress test and monitoring tool")
  2120. (description
  2121. "The Stress Terminal UI displays graphs of the CPU frequency,
  2122. utilization, temperature and power.")
  2123. (license license:gpl2+)))
  2124. (define-public stress
  2125. (package
  2126. (name "stress")
  2127. (version "1.0.4")
  2128. (source (origin
  2129. (method url-fetch)
  2130. (uri (string-append "mirror://debian/pool/main/s/stress/stress_"
  2131. version ".orig.tar.gz"))
  2132. (sha256
  2133. (base32
  2134. "0nw210jajk38m3y7h8s130ps2qsbz7j75wab07hi2r3hlz14yzh5"))))
  2135. (build-system gnu-build-system)
  2136. (home-page "https://packages.debian.org/sid/stress")
  2137. (synopsis "Impose load on and stress test a computer system")
  2138. (description
  2139. "Stress is a tool that imposes a configurable amount of CPU, memory, I/O,
  2140. or disk stress on a POSIX-compliant operating system and reports any errors it
  2141. detects.
  2142. Stress is not a benchmark. It is a tool used by system administrators to
  2143. evaluate how well their systems will scale, by kernel programmers to evaluate
  2144. perceived performance characteristics, and by systems programmers to expose
  2145. the classes of bugs which only or more frequently manifest themselves when the
  2146. system is under heavy load.")
  2147. (license license:gpl2+)))
  2148. (define-public detox
  2149. (package
  2150. (name "detox")
  2151. (version "1.4.2")
  2152. (source (origin
  2153. (method git-fetch)
  2154. (uri (git-reference
  2155. (url "https://github.com/dharple/detox")
  2156. (commit (string-append "v" version))))
  2157. (file-name (git-file-name name version))
  2158. (sha256
  2159. (base32
  2160. "0q16dvjbry573j4ayh9dwskdh1dxx8dk4rj94w6f2dcv4ww37is1"))))
  2161. (build-system gnu-build-system)
  2162. (native-inputs
  2163. `(("autoconf" ,autoconf)
  2164. ("automake" ,automake)
  2165. ("flex" ,flex)))
  2166. (arguments
  2167. `(#:phases (modify-phases %standard-phases
  2168. (add-after 'unpack 'delete-configure
  2169. ;; The "configure" script is present, but otherwise the
  2170. ;; project is not bootstrapped: missing install-sh and
  2171. ;; Makefile.in, so delete it so the bootstrap phase will
  2172. ;; take over.
  2173. (lambda _ (delete-file "configure") #t))
  2174. (replace 'check
  2175. (lambda _
  2176. (invoke "./tests/test.sh" "src/detox"))))))
  2177. (home-page "https://github.com/dharple/detox")
  2178. (synopsis "Clean up file names")
  2179. (description
  2180. "Detox is a program that renames files to make them easier to work with
  2181. under Unix and related operating systems. Spaces and various other unsafe
  2182. characters (such as \"$\") get replaced with \"_\". ISO 8859-1 (Latin-1)
  2183. characters can be replaced as well, as can UTF-8 characters.")
  2184. (license license:bsd-3)))
  2185. (define-public testdisk
  2186. (package
  2187. (name "testdisk")
  2188. (version "7.1")
  2189. (source (origin
  2190. (method url-fetch)
  2191. (uri (string-append "https://www.cgsecurity.org/testdisk-"
  2192. version ".tar.bz2"))
  2193. (sha256
  2194. (base32
  2195. "1zlh44w67py416hkvw6nrfmjickc2d43v51vcli5p374d5sw84ql"))))
  2196. (build-system gnu-build-system)
  2197. (inputs
  2198. `(("ntfs-3g" ,ntfs-3g)
  2199. ("util-linux" ,util-linux "lib")
  2200. ("openssl" ,openssl)
  2201. ;; FIXME: add reiserfs.
  2202. ("zlib" ,zlib)
  2203. ("e2fsprogs" ,e2fsprogs)
  2204. ("libjpeg" ,libjpeg-turbo)
  2205. ("ncurses" ,ncurses)))
  2206. (home-page "https://www.cgsecurity.org/wiki/TestDisk")
  2207. (synopsis "Data recovery tool")
  2208. (description
  2209. "TestDisk is a program for data recovery, primarily designed to help
  2210. recover lost partitions and/or make non-booting disks bootable again.")
  2211. (license license:gpl2+)))
  2212. (define-public tree
  2213. (package
  2214. (name "tree")
  2215. (version "1.8.0")
  2216. (source (origin
  2217. (method url-fetch)
  2218. (uri (string-append
  2219. "http://mama.indstate.edu/users/ice/tree/src/tree-"
  2220. version ".tgz"))
  2221. (sha256
  2222. (base32 "1hmpz6k0mr6salv0nprvm1g0rdjva1kx03bdf1scw8a38d5mspbi"))))
  2223. (build-system gnu-build-system)
  2224. (arguments
  2225. '(#:phases (modify-phases %standard-phases (delete 'configure))
  2226. #:tests? #f ; no check target
  2227. #:make-flags (let ((out (assoc-ref %outputs "out")))
  2228. (list (string-append "prefix=" out)))))
  2229. (synopsis "Recursively list the contents of a directory")
  2230. (description
  2231. "Tree is a recursive directory listing command that produces a depth
  2232. indented listing of files, which is colorized ala dircolors if the LS_COLORS
  2233. environment variable is set and output is to tty.")
  2234. (home-page "http://mama.indstate.edu/users/ice/tree/")
  2235. (license license:gpl2+)))
  2236. (define-public lr
  2237. (package
  2238. (name "lr")
  2239. (version "1.5.1")
  2240. (source
  2241. (origin
  2242. (method git-fetch)
  2243. (uri (git-reference
  2244. (url "https://git.vuxu.org/lr/")
  2245. (commit (string-append "v" version))))
  2246. (file-name (git-file-name name version))
  2247. (sha256
  2248. (base32 "1wv2acm4r5y5gg6f64v2hiwpg1f3lnr4fy1a9zssw77fmdc7ys3j"))))
  2249. (build-system gnu-build-system)
  2250. (arguments
  2251. `(#:tests? #f
  2252. #:make-flags (list (string-append "CC=" ,(cc-for-target))
  2253. (string-append "PREFIX=" %output))
  2254. #:phases (modify-phases %standard-phases
  2255. (delete 'configure))))
  2256. (synopsis "Tool to generate customized file listings")
  2257. (description
  2258. "lr is a tool for generating file listings, which includes the best
  2259. features of ls(1), find(1), stat(1) and du(1).")
  2260. (home-page "https://git.vuxu.org/lr/about")
  2261. (license license:expat)))
  2262. (define-public direvent
  2263. (package
  2264. (name "direvent")
  2265. (version "5.2")
  2266. (source (origin
  2267. (method url-fetch)
  2268. (uri (string-append "mirror://gnu/direvent/direvent-"
  2269. version ".tar.gz"))
  2270. (sha256
  2271. (base32
  2272. "0m9vi01b1km0cpknflyzsjnknbava0s1n6393b2bpjwyvb6j5613"))
  2273. (modules '((guix build utils)))
  2274. (snippet '(begin
  2275. (substitute* "tests/testsuite"
  2276. (("#![[:blank:]]?/bin/sh")
  2277. "#!$SHELL"))
  2278. #t))))
  2279. (build-system gnu-build-system)
  2280. (arguments
  2281. '(#:phases
  2282. (modify-phases %standard-phases
  2283. (add-before 'build 'patch-/bin/sh
  2284. (lambda* (#:key inputs #:allow-other-keys)
  2285. ;; Use the right shell when executing the watcher and
  2286. ;; user-provided shell commands.
  2287. (let ((bash (assoc-ref inputs "bash")))
  2288. (substitute* '("src/direvent.c" "src/progman.c")
  2289. (("\"/bin/sh\"")
  2290. (string-append "\"" bash "/bin/sh\"")))
  2291. ;; Adjust the 'shell.at' test accordingly.
  2292. (substitute* "tests/testsuite"
  2293. (("SHELL=/bin/sh")
  2294. (string-append "SHELL=" bash "/bin/sh")))
  2295. #t))))))
  2296. (home-page "https://www.gnu.org.ua/software/direvent/")
  2297. (synopsis "Daemon to monitor directories for events such as file removal")
  2298. (description
  2299. "A daemon that monitors directories for events, such as creating,
  2300. deleting or modifying files. It can monitor different sets of directories for
  2301. different events. When an event is detected, direvent calls a specified
  2302. external program with information about the event, such as the location
  2303. within the file system where it occurred. Thus, \"direvent\" provides an
  2304. easy way to react immediately if given files undergo changes, for example, to
  2305. track changes in important system configuration files.")
  2306. (license license:gpl3+)))
  2307. (define-public libcap-ng
  2308. (package
  2309. (name "libcap-ng")
  2310. (version "0.8.2")
  2311. (source (origin
  2312. (method url-fetch)
  2313. (uri (string-append
  2314. "https://people.redhat.com/sgrubb/libcap-ng/libcap-ng-"
  2315. version ".tar.gz"))
  2316. (sha256
  2317. (base32
  2318. "1sasp1n154aqy9fz0knlb966svm7xg1zjhg1vr4q839bgjvq7h2j"))))
  2319. (build-system gnu-build-system)
  2320. (arguments
  2321. `(#:configure-flags
  2322. (list "--without-python")))
  2323. (home-page "https://people.redhat.com/sgrubb/libcap-ng/")
  2324. (synopsis "Library for more easily working with POSIX capabilities")
  2325. (description
  2326. "The libcap-ng library is intended to make programming with POSIX
  2327. capabilities easier than the traditional libcap library. It includes
  2328. utilities that can analyse all currently running applications and print out
  2329. any capabilities and whether or not it has an open ended bounding set. The
  2330. included utilities are designed to let admins and developers spot apps from
  2331. various ways that may be running with too much privilege.")
  2332. ;; The library is lgpl2.1+, but also ships some utils which are gpl2+.
  2333. (license (list license:lgpl2.1+ license:gpl2+))))
  2334. (define-public smartmontools
  2335. (package
  2336. (name "smartmontools")
  2337. (version "7.2")
  2338. (source (origin
  2339. (method url-fetch)
  2340. (uri (string-append
  2341. "mirror://sourceforge/smartmontools/smartmontools/"
  2342. version "/smartmontools-" version ".tar.gz"))
  2343. (sha256
  2344. (base32
  2345. "1mlc25sd5rgj5xmzcllci47inmfdw7cp185fday6hc9rwqkqmnaw"))))
  2346. (build-system gnu-build-system)
  2347. (inputs `(("libcap-ng" ,libcap-ng)))
  2348. (home-page "https://www.smartmontools.org/")
  2349. (synopsis "S.M.A.R.T. harddisk control and monitoring tools")
  2350. (description
  2351. "The smartmontools package contains utility programs to control and
  2352. monitor storage systems using the Self-Monitoring, Analysis and Reporting
  2353. Technology System (@dfn{S.M.A.R.T.}) built into most modern ATA and SCSI hard
  2354. disks. In many cases, these utilities will provide advanced warning of disk
  2355. degradation and failure.")
  2356. (license license:gpl2+)))
  2357. (define-public fdupes
  2358. (package
  2359. (name "fdupes")
  2360. (version "2.1.2")
  2361. (source
  2362. (origin
  2363. (method url-fetch)
  2364. (uri (string-append "https://github.com/adrianlopezroche/fdupes/"
  2365. "releases/download/v" version "/"
  2366. "fdupes-" version ".tar.gz"))
  2367. (sha256
  2368. (base32 "1g9p50xhi2sp0hqxml4w2k0kq9jv988q2yxm347z5349dlxvap6d"))))
  2369. (build-system gnu-build-system)
  2370. (inputs
  2371. `(("ncurses" ,ncurses)
  2372. ("pcre2" ,pcre2)))
  2373. (home-page "https://github.com/adrianlopezroche/fdupes")
  2374. (synopsis "Identify duplicate files")
  2375. (description
  2376. "fdupes is a program for identifying duplicate files residing within
  2377. specified directories.")
  2378. (license license:expat)))
  2379. (define-public graphios
  2380. (package
  2381. (name "graphios")
  2382. (version "2.0.3")
  2383. (source
  2384. (origin
  2385. (method url-fetch)
  2386. (uri (pypi-uri "graphios" version))
  2387. (sha256
  2388. (base32
  2389. "1h87hvc315wg6lklbf4l7csd3n5pgljwrfli1p3nasdi0izgn66i"))))
  2390. (build-system python-build-system)
  2391. (arguments
  2392. ;; Be warned: Building with Python 3 succeeds, but the build process
  2393. ;; throws a syntax error that is ignored.
  2394. `(#:python ,python-2
  2395. #:phases
  2396. (modify-phases %standard-phases
  2397. (add-before 'build 'fix-setup.py
  2398. (lambda* (#:key outputs #:allow-other-keys)
  2399. ;; Fix hardcoded, unprefixed file names.
  2400. (let ((out (assoc-ref outputs "out")))
  2401. (substitute* '("setup.py")
  2402. (("/etc") (string-append out "/etc"))
  2403. (("/usr") out)
  2404. (("distro_ver = .*") "distro_ver = ''"))
  2405. #t))))))
  2406. (home-page "https://github.com/shawn-sterling/graphios")
  2407. (synopsis "Emit Nagios metrics to Graphite, Statsd, and Librato")
  2408. (description
  2409. "Graphios is a script to emit nagios perfdata to various upstream metrics
  2410. processing and time-series systems. It's currently compatible with Graphite,
  2411. Statsd, Librato and InfluxDB. Graphios can emit Nagios metrics to any number
  2412. of supported upstream metrics systems simultaneously.")
  2413. (license license:gpl2+)))
  2414. (define-public ansible-core
  2415. (package
  2416. (name "ansible-core")
  2417. (version "2.11.4")
  2418. (source
  2419. (origin
  2420. (method url-fetch)
  2421. (uri (pypi-uri "ansible-core" version))
  2422. (sha256
  2423. (base32
  2424. "0jgahcv2pyc5ky0wir55a1h9q9d6rgqj60rqmvlpbj76vz1agsi2"))))
  2425. (build-system python-build-system)
  2426. (arguments
  2427. `(#:modules ((guix build python-build-system)
  2428. (guix build utils)
  2429. (ice-9 ftw))
  2430. #:phases
  2431. (modify-phases %standard-phases
  2432. ;; Several ansible commands (ansible-config, ansible-console, etc.)
  2433. ;; are just symlinks to a single ansible executable. The ansible
  2434. ;; executable behaves differently based on the value of sys.argv[0].
  2435. ;; This does not work well with our wrap phase, and therefore the
  2436. ;; following two phases are required as a workaround.
  2437. (add-after 'unpack 'hide-wrapping
  2438. (lambda _
  2439. ;; Overwrite sys.argv[0] to hide the wrapper script from it.
  2440. (substitute* "bin/ansible"
  2441. (("import traceback" all)
  2442. (string-append all "
  2443. import re
  2444. sys.argv[0] = re.sub(r'\\.([^/]*)-real$', r'\\1', sys.argv[0])
  2445. ")))))
  2446. (add-after 'install 'replace-symlinks
  2447. (lambda* (#:key outputs #:allow-other-keys)
  2448. ;; Replace symlinks with duplicate copies of the ansible
  2449. ;; executable so that sys.argv[0] has the correct value.
  2450. (define bin (string-append (assoc-ref outputs "out") "/bin"))
  2451. (with-directory-excursion bin
  2452. (for-each
  2453. (lambda (ansible-symlink)
  2454. (delete-file ansible-symlink)
  2455. (copy-file "ansible" ansible-symlink))
  2456. (scandir "." (lambda (x)
  2457. (and (eq? 'symlink (stat:type (lstat x)))
  2458. (string-prefix? "ansible-" x)
  2459. (string=? "ansible" (readlink x)))))))))
  2460. (add-after 'unpack 'preserve-pythonpath
  2461. (lambda _
  2462. (substitute* "test/lib/ansible_test/_internal/ansible_util.py"
  2463. (("PYTHONPATH=get_ansible_python_path\\(args\\)" all)
  2464. (string-append all "+ ':' + os.environ['PYTHONPATH']")))))
  2465. (add-after 'unpack 'patch-paths
  2466. (lambda* (#:key inputs outputs #:allow-other-keys)
  2467. (substitute* "lib/ansible/module_utils/compat/selinux.py"
  2468. (("libselinux.so.1" name)
  2469. (string-append (assoc-ref inputs "libselinux")
  2470. "/lib/" name)))
  2471. (substitute* "test/units/modules/test_async_wrapper.py"
  2472. (("/usr/bin/python")
  2473. (which "python")))))
  2474. (replace 'check
  2475. ;; The environment for the test suite can be tricky to get right.
  2476. ;; The environment used for Ansible's CI defined in the following
  2477. ;; Dockerfile can be used as a reference:
  2478. ;; https://raw.githubusercontent.com/ansible/
  2479. ;; default-test-container/master/Dockerfile.
  2480. (lambda* (#:key inputs outputs tests? #:allow-other-keys)
  2481. (when tests?
  2482. ;; Otherwise Ansible fails to create its config directory.
  2483. (setenv "HOME" "/tmp")
  2484. (setenv "PATH" (string-append (getenv "PATH") ":"
  2485. (assoc-ref outputs "out") "/bin"))
  2486. (add-installed-pythonpath inputs outputs)
  2487. ;; This test module messes up with sys.path and causes many
  2488. ;; test failures.
  2489. (delete-file "test/units/_vendor/test_vendor.py")
  2490. ;; The test fails when run in the container, for reasons
  2491. ;; unknown.
  2492. (delete-file "test/units/utils/test_display.py")
  2493. ;; This test fail for reasons unknown.
  2494. (delete-file "test/units/cli/test_adhoc.py")
  2495. ;; The test suite needs to be run with 'ansible-test', which
  2496. ;; does some extra environment setup. Taken from
  2497. ;; https://raw.githubusercontent.com/ansible/ansible/\
  2498. ;; devel/test/utils/shippable/shippable.sh.
  2499. (invoke "ansible-test" "units" "-v")))))))
  2500. (native-inputs
  2501. `(("openssh" ,openssh)
  2502. ("openssl" ,openssl)
  2503. ("python-mock" ,python-mock)
  2504. ("python-pycrypto" ,python-pycrypto)
  2505. ("python-pytest" ,python-pytest)
  2506. ("python-pytest-forked" ,python-pytest-forked)
  2507. ("python-pytest-mock" ,python-pytest-mock)
  2508. ("python-pytest-xdist" ,python-pytest-xdist)
  2509. ("python-pytz" ,python-pytz)))
  2510. (inputs ;optional dependencies captured in wrap scripts
  2511. `(("libselinux" ,libselinux)
  2512. ("python-paramiko" ,python-paramiko)
  2513. ("python-passlib" ,python-passlib)
  2514. ("python-pexpect" ,python-pexpect)
  2515. ("sshpass" ,sshpass)))
  2516. (propagated-inputs ;core dependencies listed in egg-info/requires.txt
  2517. `(("python-cryptography" ,python-cryptography)
  2518. ("python-jinja2" ,python-jinja2)
  2519. ("python-pyyaml" ,python-pyyaml)
  2520. ("python-packaging" ,python-packaging) ;for version number parsing
  2521. ("python-resolvelib" ,python-resolvelib-0.5)))
  2522. (home-page "https://www.ansible.com/")
  2523. (synopsis "Radically simple IT automation")
  2524. (description "Ansible aims to be a radically simple IT automation system.
  2525. It handles configuration management, application deployment, cloud
  2526. provisioning, ad-hoc task execution, network automation, and multi-node
  2527. orchestration. Ansible facilitates complex changes like zero-downtime rolling
  2528. updates with load balancers. This package is the core of Ansible, which
  2529. provides the following commands:
  2530. @itemize
  2531. @item ansible
  2532. @item ansible-config
  2533. @item ansible-connection
  2534. @item ansible-console
  2535. @item ansible-doc
  2536. @item ansible-galaxy
  2537. @item ansible-inventory
  2538. @item ansible-playbook
  2539. @item ansible-pull
  2540. @item ansible-test
  2541. @item ansible-vault
  2542. @end itemize")
  2543. (license license:gpl3+)))
  2544. (define-public ansible
  2545. (package
  2546. (name "ansible")
  2547. (version "4.4.0")
  2548. (source
  2549. (origin
  2550. (method url-fetch)
  2551. (uri (pypi-uri "ansible" version))
  2552. (sha256
  2553. (base32 "031n22j0lsmh69x6i6gkva81j68b4yzh1pbg3q2h4bknl85q46ag"))))
  2554. (build-system python-build-system)
  2555. (propagated-inputs
  2556. `(("ansible-core" ,ansible-core)))
  2557. ;; The Ansible collections are found by ansible-core via PYTHONPATH; the
  2558. ;; following search path ensures that they are found even when Python is
  2559. ;; not present in the profile.
  2560. (native-search-paths
  2561. ;; XXX: Attempting to use (package-native-search-paths python)
  2562. ;; here would cause an error about python being an unbound
  2563. ;; variable in the tests/cpan.scm test.
  2564. (list (search-path-specification
  2565. (variable "PYTHONPATH")
  2566. (files (list "lib/python3.8/site-packages")))))
  2567. (home-page "https://www.ansible.com/")
  2568. (synopsis "Radically simple IT automation")
  2569. (description "Ansible aims to be a radically simple IT automation system.
  2570. It handles configuration management, application deployment, cloud
  2571. provisioning, ad-hoc task execution, network automation, and multi-node
  2572. orchestration. Ansible facilitates complex changes like zero-downtime rolling
  2573. updates with load balancers. This package provides a curated set of
  2574. community-maintained Ansible collections, which contain playbooks, roles,
  2575. modules and plugins that extend Ansible.")
  2576. (license license:gpl3+)))
  2577. (define-public debops
  2578. (package
  2579. (name "debops")
  2580. (version "1.1.0")
  2581. (source
  2582. (origin
  2583. (method git-fetch)
  2584. (uri (git-reference
  2585. (url "https://github.com/debops/debops")
  2586. (commit (string-append "v" version))))
  2587. (file-name (git-file-name name version))
  2588. (sha256
  2589. (base32 "052b2dykdn35pdpn9s4prawl6nl6yzih8nyf54hpvhpisvjrm1v5"))
  2590. (patches
  2591. (search-patches "debops-constants-for-external-program-names.patch"
  2592. "debops-debops-defaults-fall-back-to-less.patch"))))
  2593. (build-system python-build-system)
  2594. (native-inputs
  2595. `(("git" ,git)))
  2596. (inputs
  2597. `(("ansible" ,ansible)
  2598. ("encfs" ,encfs)
  2599. ("fuse" ,fuse)
  2600. ("util-linux" ,util-linux) ;; for umount
  2601. ("findutils" ,findutils)
  2602. ("gnupg" ,gnupg)
  2603. ("which" ,which)))
  2604. (propagated-inputs
  2605. `(("python-future" ,python-future)
  2606. ("python-distro" ,python-distro)))
  2607. (arguments
  2608. `(#:tests? #f
  2609. #:phases
  2610. (modify-phases %standard-phases
  2611. (add-after 'unpack 'nuke-debops-update
  2612. (lambda _
  2613. (chmod "bin/debops-update" #o755) ; FIXME work-around git-fetch issue
  2614. (with-output-to-file "bin/debops-update"
  2615. (lambda ()
  2616. (format #t "#!/bin/sh
  2617. echo 'debops is installed via guix. guix-update is useless in this case.
  2618. Please use `guix package -u debops` instead.'")))
  2619. #t))
  2620. ;; patch shebangs only in actuall scripts, not in files included in
  2621. ;; roles (which are to be delivered to the targte systems)
  2622. (delete `patch-generated-file-shebangs)
  2623. (replace 'patch-source-shebangs
  2624. (lambda _
  2625. (for-each patch-shebang
  2626. (find-files "bin"
  2627. (lambda (file stat)
  2628. ;; Filter out symlinks.
  2629. (eq? 'regular (stat:type stat)))
  2630. #:stat lstat))))
  2631. (add-after 'unpack 'fix-paths
  2632. (lambda _
  2633. (define (substitute-program-names file)
  2634. ;; e.g. ANSIBLE_PLAYBOOK = '/gnu/store/…/bin/ansible-playbook'
  2635. (for-each
  2636. (lambda (name)
  2637. (let ((varname (string-upcase
  2638. (string-map
  2639. (lambda (c) (if (char=? c #\-) #\_ c))
  2640. name))))
  2641. (substitute* file
  2642. (((string-append "^(" varname " = )'.*'") line prefix)
  2643. (string-append prefix "'" (which name) "'")))))
  2644. '("ansible-playbook" "encfs" "find" "fusermount"
  2645. "umount" "gpg" "ansible" "which")))
  2646. (for-each substitute-program-names
  2647. '("bin/debops"
  2648. "bin/debops-padlock"
  2649. "bin/debops-task"
  2650. "debops/__init__.py"
  2651. "debops/cmds/__init__.py"))
  2652. #t)))))
  2653. (home-page "https://www.debops.org/")
  2654. (synopsis "Collection of general-purpose Ansible roles")
  2655. (description "The Ansible roles provided by that can be used to manage
  2656. Debian or Ubuntu hosts. In addition, a default set of Ansible playbooks can
  2657. be used to apply the provided roles in a controlled way, using Ansible
  2658. inventory groups.
  2659. The roles are written with a high customization in mind, which can be done
  2660. using Ansible inventory. This way the role and playbook code can be shared
  2661. between multiple environments, with different configuration in to each one.
  2662. Services can be managed on a single host, or spread between multiple hosts.
  2663. DebOps provides support for different SQL and NoSQL databases, web servers,
  2664. programming languages and specialized applications useful in a data center
  2665. environment or in a cluster. The project can also be used to deploy
  2666. virtualization environments using KVM/libvirt, Docker or LXC technologies to
  2667. manage virtual machines and/or containers.")
  2668. (license license:gpl3+)))
  2669. (define-public emacs-ansible-doc
  2670. (let ((commit "86083a7bb2ed0468ca64e52076b06441a2f8e9e0"))
  2671. (package
  2672. (name "emacs-ansible-doc")
  2673. (version (git-version "0.4" "1" commit))
  2674. (source
  2675. (origin
  2676. (method git-fetch)
  2677. (uri (git-reference
  2678. (url "https://github.com/lunaryorn/ansible-doc.el")
  2679. (commit commit)))
  2680. (file-name (git-file-name name version))
  2681. (sha256
  2682. (base32
  2683. "0lap404ch74w99n3xip176jr42b38xhyzkfnkyqg0g3wk2cd3aq8"))))
  2684. (build-system emacs-build-system)
  2685. ;; Unmaintained by upstream.
  2686. (home-page "https://github.com/lunaryorn/ansible-doc.el")
  2687. (synopsis "Ansible documentation for Emacs")
  2688. (description
  2689. "This package provides an Ansible documentation for GNU Emacs.
  2690. @code{ansible-doc} allows you to view the documentation of an Ansible
  2691. module and @code{ansible-doc-mode} minor mode adds documentation
  2692. lookup to YAML Mode. You could enable the mode with @code{(add-hook
  2693. 'yaml-mode-hook #'ansible-doc-mode)}.")
  2694. (license license:gpl3+))))
  2695. (define-public cpulimit
  2696. (package
  2697. (name "cpulimit")
  2698. (version "0.2")
  2699. (source
  2700. (origin
  2701. (method git-fetch)
  2702. (uri (git-reference
  2703. (url "https://github.com/opsengine/cpulimit")
  2704. (commit (string-append "v" version))))
  2705. (file-name (git-file-name name version))
  2706. (sha256
  2707. (base32 "1dz045yhcsw1rdamzpz4bk8mw888in7fyqk1q1b3m1yk4pd1ahkh"))))
  2708. (build-system gnu-build-system)
  2709. (arguments
  2710. `(#:phases (modify-phases %standard-phases
  2711. (delete 'configure)
  2712. (replace 'build
  2713. (lambda* (#:key make-flags #:allow-other-keys)
  2714. (apply invoke "make" "-Csrc" make-flags)))
  2715. (replace 'check
  2716. (lambda* (#:key tests? make-flags #:allow-other-keys)
  2717. (when tests?
  2718. (apply invoke "make" "-Ctests" make-flags))
  2719. #t))
  2720. (replace 'install
  2721. (lambda* (#:key outputs #:allow-other-keys)
  2722. (let* ((out (assoc-ref outputs "out"))
  2723. (bin (string-append out "/bin")))
  2724. (install-file "src/cpulimit" bin))
  2725. #t)))
  2726. #:make-flags (list (string-append "CC=" ,(cc-for-target)))))
  2727. (home-page "https://github.com/opsengine/cpulimit")
  2728. (synopsis "Limit CPU usage")
  2729. (description
  2730. "Cpulimit limits the CPU usage of a process. It does not change the nice
  2731. value or other scheduling priority settings, but the real CPU usage, and is
  2732. able to adapt itself dynamically to the overall system load. Children
  2733. processes and threads of the specified process may optionally share the same
  2734. limits.")
  2735. (license license:gpl2+)))
  2736. (define-public autojump
  2737. (package
  2738. (name "autojump")
  2739. (version "22.5.3")
  2740. (source
  2741. (origin
  2742. (method git-fetch)
  2743. (uri (git-reference
  2744. (url "https://github.com/wting/autojump")
  2745. (commit (string-append "release-v" version))))
  2746. (file-name (git-file-name name version))
  2747. (sha256
  2748. (base32 "1rgpsh70manr2dydna9da4x7p8ahii7dgdgwir5fka340n1wrcws"))))
  2749. (build-system gnu-build-system)
  2750. (native-inputs ; for tests
  2751. `(("python-mock" ,python-mock)
  2752. ("python-pytest" ,python-pytest)))
  2753. (inputs
  2754. `(("python" ,python-wrapper)))
  2755. (arguments
  2756. `(#:phases
  2757. (modify-phases %standard-phases
  2758. (add-after 'unpack 'make-git-checkout-writable
  2759. ;; ‘install.py’ modifies files before installing them.
  2760. (lambda _
  2761. (for-each make-file-writable (find-files "."))
  2762. #t))
  2763. (delete 'configure)
  2764. (delete 'build)
  2765. (replace 'check
  2766. (lambda _
  2767. (invoke "python" "tests/unit/autojump_utils_test.py")))
  2768. (replace 'install
  2769. (lambda* (#:key outputs #:allow-other-keys)
  2770. (setenv "SHELL" (which "bash"))
  2771. (invoke "python" "install.py"
  2772. (string-append "--destdir="
  2773. (assoc-ref outputs "out"))))))))
  2774. (home-page "https://github.com/wting/autojump")
  2775. (synopsis "Shell extension for file system navigation")
  2776. (description
  2777. "Autojump provides a faster way to navigate your file system, with a \"cd
  2778. command that learns\". It works by maintaining a database of the directories
  2779. you use the most from the command line and allows you to \"jump\" to
  2780. frequently used directories by typing only a small pattern.")
  2781. (license license:gpl3+)))
  2782. (define-public fasd
  2783. (package
  2784. (name "fasd")
  2785. (version "1.0.1")
  2786. (source (origin
  2787. (method git-fetch)
  2788. (uri (git-reference
  2789. (url "https://github.com/clvv/fasd")
  2790. (commit version)))
  2791. (file-name (git-file-name name version))
  2792. (sha256
  2793. (base32
  2794. "1awi71jdv3mhjrmar2d4z1i90kn7apd7aq1w31sh6w4yibz9kiyj"))))
  2795. (build-system gnu-build-system)
  2796. (arguments
  2797. `(#:phases (modify-phases %standard-phases
  2798. (delete 'configure)) ;no configuration
  2799. #:tests? #f ;no tests
  2800. #:make-flags (list (string-append "PREFIX=" %output))))
  2801. (home-page "https://github.com/clvv/fasd")
  2802. (synopsis "Quick access to files and directories for shells")
  2803. (description
  2804. "Fasd (pronounced similar to \"fast\") is a command-line productivity
  2805. booster. Fasd offers quick access to files and directories for POSIX shells.
  2806. It is inspired by tools like autojump, z, and v. Fasd keeps track of files
  2807. and directories you have accessed so that you can quickly reference them in
  2808. the command line.")
  2809. (license license:x11)))
  2810. (define-public iftop
  2811. (package
  2812. (name "iftop")
  2813. (version "1.0pre4")
  2814. (source (origin
  2815. (method url-fetch)
  2816. (uri (string-append "http://www.ex-parrot.com/~pdw/iftop/download"
  2817. "/iftop-" version ".tar.gz"))
  2818. (sha256
  2819. (base32
  2820. "15sgkdyijb7vbxpxjavh5qm5nvyii3fqcg9mzvw7fx8s6zmfwczp"))))
  2821. (build-system gnu-build-system)
  2822. (inputs
  2823. `(("libpcap" ,libpcap)
  2824. ("ncurses" ,ncurses)))
  2825. (synopsis "Monitor network usage")
  2826. (description "Iftop does for network usage what @command{top} does
  2827. for CPU usage. It listens to network traffic on a named interface and
  2828. displays a table of current bandwidth usage by pairs of hosts.")
  2829. (home-page "http://www.ex-parrot.com/~pdw/iftop/")
  2830. (license license:gpl2+)))
  2831. (define-public munge
  2832. (package
  2833. (name "munge")
  2834. (version "0.5.14")
  2835. (source (origin
  2836. (method url-fetch)
  2837. (uri (string-append "https://github.com/dun/munge/releases/"
  2838. "download/munge-" version "/munge-"
  2839. version ".tar.xz"))
  2840. (sha256
  2841. (base32
  2842. "0h06sghb4rqvv1ywyd6mzsmbcgh712v6ygrff0gzm440y4ca41k6"))
  2843. (modules '((guix build utils)))
  2844. (snippet
  2845. '(begin
  2846. ;; Don't insist on write access to /var.
  2847. (substitute* "src/etc/Makefile.in"
  2848. (("\\$\\(INSTALL\\)(.*)localstatedir" _ middle)
  2849. (string-append "-$(INSTALL)" middle "localstatedir"))
  2850. (("\\$\\(MKDIR_P\\) .*(local|run)statedir.*")
  2851. ""))
  2852. #t))))
  2853. (inputs
  2854. `(("openssl" ,openssl)
  2855. ("libgcrypt" ,libgcrypt)))
  2856. (build-system gnu-build-system)
  2857. (arguments
  2858. '(#:configure-flags
  2859. (list "--localstatedir=/var"
  2860. (string-append "--with-pkgconfigdir="
  2861. (assoc-ref %outputs "out") "/lib/pkgconfig"))
  2862. #:phases
  2863. (modify-phases %standard-phases
  2864. ;; XXX Many test series fail. Some might be fixable, others do no-no
  2865. ;; things like invoking ‘sudo’.
  2866. (add-after 'unpack 'skip-failing-tests
  2867. (lambda _
  2868. (for-each (lambda (test)
  2869. (substitute* "t/Makefile.in"
  2870. (((string-append test "\\.t ")) "")))
  2871. (list "0100-munged-lock"
  2872. "0010-basic"
  2873. "0011-munged-cmdline"
  2874. "0012-munge-cmdline"
  2875. "0013-unmunge-cmdline"
  2876. "0101-munged-security-socket"
  2877. "0102-munged-security-keyfile"
  2878. "0103-munged-security-logfile"
  2879. "0110-munged-origin-addr"))
  2880. #t)))))
  2881. (home-page "https://dun.github.io/munge/")
  2882. (synopsis "Cluster computing authentication service")
  2883. (description
  2884. "Munge is an authentication service for creating and validating
  2885. credentials. It allows a process to authenticate the UID and GID of another
  2886. local or remote process within a group of hosts having common users and
  2887. groups. These hosts form a security realm that is defined by a shared
  2888. cryptographic key. Clients within this security realm can create and validate
  2889. credentials without the use of root privileges, reserved ports, or
  2890. platform-specific methods.")
  2891. (license license:gpl3+)))
  2892. (define-public audit
  2893. (package
  2894. (name "audit")
  2895. (home-page "https://people.redhat.com/sgrubb/audit/")
  2896. (version "3.0.4")
  2897. (source (origin
  2898. (method url-fetch)
  2899. (uri (string-append home-page "audit-" version ".tar.gz"))
  2900. (sha256
  2901. (base32
  2902. "1xlcvc2g7qrbnin5pw0bacalva5ldjw97yi6nr17g0yjp4jyhnlc"))))
  2903. (build-system gnu-build-system)
  2904. (arguments
  2905. `(#:configure-flags (list "--with-python=no"
  2906. "--disable-static")))
  2907. (inputs
  2908. `(("openldap" ,openldap)
  2909. ("gnutls" ,gnutls)
  2910. ("sasl" ,cyrus-sasl)))
  2911. (synopsis "User-space component to the Linux auditing system")
  2912. (description
  2913. "auditd is the user-space component to the Linux auditing system, which
  2914. allows logging of system calls made by user-land processes. It's responsible
  2915. for writing audit records to the disk. Viewing the logs is done with the
  2916. @code{ausearch} or @code{aureport} utilities. Configuring the audit rules is
  2917. done with the @code{auditctl} utility.")
  2918. (license license:gpl2+)))
  2919. (define-public nmap
  2920. (package
  2921. (name "nmap")
  2922. (version "7.91")
  2923. (source (origin
  2924. (method url-fetch)
  2925. (uri (string-append "https://nmap.org/dist/nmap-" version
  2926. ".tar.bz2"))
  2927. (sha256
  2928. (base32
  2929. "001kb5xadqswyw966k2lqi6jr6zz605jpp9w4kmm272if184pk0q"))
  2930. (modules '((guix build utils)))
  2931. (snippet
  2932. '(begin
  2933. (for-each delete-file-recursively
  2934. ;; Remove bundled lua, pcap, and pcre libraries.
  2935. ;; FIXME: Remove bundled liblinear once packaged.
  2936. '("liblua"
  2937. "libpcap"
  2938. "libpcre"
  2939. ;; Remove pre-compiled binares.
  2940. "mswin32"))
  2941. #t))))
  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. #t))
  2963. (replace 'install
  2964. (lambda* (#:key outputs #:allow-other-keys)
  2965. (define (make out . args)
  2966. (apply invoke "make"
  2967. (string-append "prefix=" out)
  2968. args))
  2969. (define (python-path dir)
  2970. (string-append dir "/lib/python"
  2971. ,(version-major+minor
  2972. (package-version python))
  2973. "/site-packages"))
  2974. (let ((out (assoc-ref outputs "out"))
  2975. (ndiff (assoc-ref outputs "ndiff")))
  2976. (for-each mkdir-p (list out ndiff))
  2977. (make out
  2978. "install-nmap"
  2979. "install-nse"
  2980. "install-ncat"
  2981. "install-nping")
  2982. (make ndiff "install-ndiff")
  2983. (wrap-program (string-append ndiff "/bin/ndiff")
  2984. `("GUIX_PYTHONPATH" prefix
  2985. (,(python-path ndiff)))))
  2986. #t))
  2987. ;; These are the tests that do not require network access.
  2988. (replace 'check
  2989. (lambda _ (invoke "make"
  2990. "check-nse"
  2991. "check-ndiff"
  2992. "check-dns"))))
  2993. ;; Nmap can't cope with out-of-source building.
  2994. #:out-of-source? #f))
  2995. (home-page "https://nmap.org/")
  2996. (synopsis "Network discovery and security auditing tool")
  2997. (description
  2998. "Nmap (\"Network Mapper\") is a network discovery and security auditing
  2999. tool. It is also useful for tasks such as network inventory, managing service
  3000. upgrade schedules, and monitoring host or service uptime. It also provides an
  3001. advanced netcat implementation (ncat), a utility for comparing scan
  3002. results (ndiff), and a packet generation and response analysis tool (nping).")
  3003. ;; See <https://github.com/nmap/nmap/issues/2199#issuecomment-792048244>.
  3004. ;; This package uses nmap's bundled versions of libdnet and liblinear, which
  3005. ;; both use a 3-clause BSD license.
  3006. (license (list license:nmap license:bsd-3))))
  3007. (define-public dstat
  3008. (package
  3009. (name "dstat")
  3010. (version "0.7.4")
  3011. (source
  3012. (origin
  3013. (method git-fetch)
  3014. (uri (git-reference
  3015. (url "https://github.com/dstat-real/dstat")
  3016. (commit (string-append "v" version))))
  3017. (file-name (git-file-name "dstat" version))
  3018. (sha256
  3019. (base32 "1qnmkhqmjd1m3if05jj29dvr5hn6kayq9bkkkh881w472c0zhp8v"))
  3020. (patches (search-patches "dstat-fix-crash-when-specifying-delay.patch"
  3021. "dstat-skip-devices-without-io.patch"))))
  3022. (build-system gnu-build-system)
  3023. (arguments
  3024. `(#:tests? #f ; no make check
  3025. #:make-flags
  3026. (list (string-append "prefix=" (assoc-ref %outputs "out")))
  3027. #:phases
  3028. (modify-phases %standard-phases
  3029. (add-after 'unpack 'fix-python3-DeprecationWarning
  3030. (lambda _
  3031. (substitute* "dstat"
  3032. (("collections") "collections.abc"))
  3033. #t))
  3034. (delete 'configure) ; no configure script
  3035. (add-after 'install 'wrap
  3036. (lambda* (#:key outputs #:allow-other-keys)
  3037. (let ((out (assoc-ref outputs "out")))
  3038. (wrap-program (string-append out "/bin/dstat")
  3039. `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))))
  3040. #t))))))
  3041. (inputs
  3042. `(("python" ,python-wrapper)
  3043. ("python-six" ,python-six)))
  3044. (synopsis "Versatile resource statistics tool")
  3045. (description "Dstat is a versatile replacement for @command{vmstat},
  3046. @command{iostat}, @command{netstat}, and @command{ifstat}. Dstat overcomes
  3047. some of their limitations and adds some extra features, more counters and
  3048. flexibility. Dstat is handy for monitoring systems during performance tuning
  3049. tests, benchmarks or troubleshooting.
  3050. Dstat allows you to view all of your system resources in real-time, you can,
  3051. e.g., compare disk utilization in combination with interrupts from your IDE
  3052. controller, or compare the network bandwidth numbers directly with the disk
  3053. throughput (in the same interval).")
  3054. (home-page "http://dag.wiee.rs/home-made/dstat/")
  3055. (license license:gpl2+)))
  3056. (define-public thefuck
  3057. (package
  3058. (name "thefuck")
  3059. (version "3.30")
  3060. (source
  3061. (origin
  3062. (method git-fetch)
  3063. (uri (git-reference
  3064. (url "https://github.com/nvbn/thefuck")
  3065. (commit version)))
  3066. (file-name (git-file-name name version))
  3067. (sha256
  3068. (base32 "0fnf78956pwhb9cgv1jmgypnkma5xzflkivfrkfiadbgin848yfg"))
  3069. (patches (search-patches "thefuck-test-environ.patch"))))
  3070. (build-system python-build-system)
  3071. (arguments
  3072. '(#:phases
  3073. (modify-phases %standard-phases
  3074. (delete 'check)
  3075. (add-after 'install 'check
  3076. (lambda* (#:key inputs outputs #:allow-other-keys)
  3077. ;; Tests look for installed package
  3078. (add-installed-pythonpath inputs outputs)
  3079. ;; Some tests need write access to $HOME.
  3080. (setenv "HOME" "/tmp")
  3081. (invoke "py.test" "-v")
  3082. #t)))))
  3083. (propagated-inputs
  3084. `(("python-colorama" ,python-colorama)
  3085. ("python-decorator" ,python-decorator)
  3086. ("python-psutil" ,python-psutil)
  3087. ("python-pyte" ,python-pyte)
  3088. ("python-six" ,python-six)))
  3089. (native-inputs
  3090. `(("go" ,go)
  3091. ("python-mock" ,python-mock)
  3092. ("python-pytest" ,python-pytest)
  3093. ("python-pytest-mock" ,python-pytest-mock)))
  3094. (home-page "https://github.com/nvbn/thefuck")
  3095. (synopsis "Correct mistyped console command")
  3096. (description
  3097. "The Fuck tries to match a rule for a previous, mistyped command, creates
  3098. a new command using the matched rule, and runs it.")
  3099. (license license:x11)))
  3100. (define-public di
  3101. (package
  3102. (name "di")
  3103. (version "4.50")
  3104. (source
  3105. (origin
  3106. (method url-fetch)
  3107. (uri (string-append "mirror://sourceforge/diskinfo-di/di-" version ".tar.gz"))
  3108. (sha256
  3109. (base32 "0aj9ldkvmj8fmrk685vd2gagz0q8lwsn2nfbx6r6mza94mn8pw42"))))
  3110. (build-system gnu-build-system)
  3111. (arguments
  3112. `(#:tests? #f ; obscure test failures
  3113. #:phases
  3114. (modify-phases %standard-phases
  3115. (delete 'configure) ; no configure script
  3116. (add-before 'build 'setup-environment
  3117. (lambda* (#:key outputs #:allow-other-keys)
  3118. (setenv "CC" ,(cc-for-target))
  3119. (setenv "prefix" (assoc-ref outputs "out"))
  3120. #t)))
  3121. #:make-flags (list "--environment-overrides")))
  3122. (home-page "https://gentoo.com/di/")
  3123. (synopsis "Advanced df like disk information utility")
  3124. (description
  3125. "@code{di} is a disk information utility, displaying everything that your
  3126. @code{df} command does and more. It features the ability to display your disk
  3127. usage in whatever format you prefer. It is designed to be highly portable and
  3128. produce uniform output across heterogeneous networks.")
  3129. (license license:zlib)))
  3130. (define-public cbatticon
  3131. (package
  3132. (name "cbatticon")
  3133. (version "1.6.10")
  3134. (source
  3135. (origin
  3136. (method git-fetch)
  3137. (uri (git-reference
  3138. (url "https://github.com/valr/cbatticon")
  3139. (commit version)))
  3140. (sha256
  3141. (base32 "0ivm2dzhsa9ir25ry418r2qg2llby9j7a6m3arbvq5c3kaj8m9jr"))
  3142. (file-name (git-file-name name version))))
  3143. (build-system gnu-build-system)
  3144. (arguments
  3145. `(#:tests? #f ; no tests
  3146. #:make-flags
  3147. (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  3148. ,(string-append "CC=" (cc-for-target)))
  3149. #:phases
  3150. (modify-phases %standard-phases
  3151. (delete 'configure)))) ; no configure script
  3152. (inputs
  3153. `(("gtk+" ,gtk+)
  3154. ("gettext" ,gettext-minimal)
  3155. ("libnotify" ,libnotify)))
  3156. (native-inputs
  3157. `(("pkg-config" ,pkg-config)))
  3158. (synopsis "Lightweight battery icon for the system tray")
  3159. (description "cbatticon is a lightweight battery icon that displays
  3160. the status of your battery in the system tray.")
  3161. (home-page "https://github.com/valr/cbatticon")
  3162. (license license:gpl2+)))
  3163. (define-public interrobang
  3164. (let ((revision "1")
  3165. (commit "896543735e1c99144765fdbd7b6e6b5afbd8b881"))
  3166. (package
  3167. (name "interrobang")
  3168. (version (git-version "0.0.0" revision commit))
  3169. (source
  3170. (origin
  3171. (method git-fetch)
  3172. (uri (git-reference
  3173. (url "https://github.com/TrilbyWhite/interrobang")
  3174. (commit commit)))
  3175. (file-name (git-file-name name version))
  3176. (sha256
  3177. (base32 "1n13m70p1hfba5dy3i8hfclbr6k9q3d9dai3dg4jvhdhmxcpjzdf"))))
  3178. (build-system gnu-build-system)
  3179. (arguments
  3180. `(#:tests? #f ; no tests
  3181. #:phases
  3182. (modify-phases %standard-phases
  3183. (delete 'configure)) ; no configure script
  3184. #:make-flags (list (string-append "PREFIX="
  3185. (assoc-ref %outputs "out")))))
  3186. (inputs
  3187. `(("libx11" ,libx11)))
  3188. (native-inputs
  3189. `(("pkg-config" ,pkg-config)))
  3190. (synopsis "Scriptable launcher menu")
  3191. (description "Interrobang is a scriptable launcher menu with a customizable
  3192. shortcut syntax and completion options.")
  3193. (home-page "https://github.com/TrilbyWhite/interrobang")
  3194. (license license:gpl3+))))
  3195. (define-public pam-krb5
  3196. (package
  3197. (name "pam-krb5")
  3198. (version "4.8")
  3199. (source (origin
  3200. (method url-fetch)
  3201. (uri
  3202. (list (string-append
  3203. "https://archives.eyrie.org/software/kerberos/"
  3204. "pam-krb5-" version ".tar.xz")
  3205. (string-append
  3206. "https://archives.eyrie.org/software/ARCHIVE/"
  3207. "pam-krb5/pam-krb5-" version ".tar.xz")))
  3208. (patches (search-patches "pam-krb5-CVE-2020-10595.patch"))
  3209. (sha256
  3210. (base32
  3211. "1qjp8i1s9bz7g6kiqrkzzkxn5pfspa4sy53b6z40fqmdf9przdfb"))))
  3212. (build-system gnu-build-system)
  3213. (arguments
  3214. `(#:phases
  3215. (modify-phases %standard-phases
  3216. (add-before 'configure 'disable-tests
  3217. (lambda _
  3218. ;; The build container seems to interfere with some tests.
  3219. (substitute* "tests/TESTS"
  3220. (("module/basic\n") ""))
  3221. (substitute* "tests/TESTS"
  3222. (("pam-util/vector\n") ""))
  3223. #t)))))
  3224. (inputs
  3225. `(("linux-pam" ,linux-pam)
  3226. ("mit-krb5" ,mit-krb5)))
  3227. (native-inputs
  3228. `(("perl" ,perl)
  3229. ("perl-test-pod" ,perl-test-pod))) ; required for tests
  3230. (synopsis "Kerberos PAM module")
  3231. (description
  3232. "Pam-krb5 is a Kerberos PAM module for either MIT Kerberos or Heimdal.
  3233. It supports ticket refreshing by screen savers, configurable
  3234. authorization handling, authentication of non-local accounts for network
  3235. services, password changing, and password expiration, as well as all the
  3236. standard expected PAM features. It works correctly with OpenSSH, even
  3237. with @code{ChallengeResponseAuthentication} and @code{PrivilegeSeparation}
  3238. enabled, and supports extensive configuration either by PAM options or in
  3239. krb5.conf or both. PKINIT is supported with recent versions of both MIT
  3240. Kerberos and Heimdal and FAST is supported with recent MIT Kerberos.")
  3241. (home-page "https://www.eyrie.org/~eagle/software/pam-krb5/")
  3242. ;; Dual licenced under a homebrew non-copyleft OR GPL (any version)
  3243. ;; However, the tarball does not contain a copy of the GPL, so unless
  3244. ;; we put one in, we cannot distribute it under GPL without violating
  3245. ;; clause requiring us to give all recipients a copy.
  3246. (license license:gpl1+)))
  3247. (define (sunxi-tools-source version)
  3248. (origin
  3249. (method git-fetch)
  3250. (uri (git-reference
  3251. (url "https://github.com/linux-sunxi/sunxi-tools")
  3252. (commit (string-append "v" version))))
  3253. (sha256
  3254. (base32 "04f3jqg8ww4jxsf9c6ddcdgy2xbhkyp0b3l5f1hvvbv94p81rjxd"))
  3255. (patches
  3256. (search-patches "sunxi-tools-remove-sys-io.patch"))
  3257. (modules '((guix build utils)))
  3258. (snippet
  3259. ;; Remove binaries contained in the tarball which are only for the
  3260. ;; target and can be regenerated anyway.
  3261. '(begin
  3262. (delete-file-recursively "bin")
  3263. #t))
  3264. (file-name (git-file-name "sunxi-tools" version))))
  3265. (define sunxi-target-tools
  3266. (package
  3267. (name "sunxi-target-tools")
  3268. (version "1.4.2")
  3269. (build-system gnu-build-system)
  3270. (source
  3271. (sunxi-tools-source version))
  3272. (arguments
  3273. `(#:system "armhf-linux"
  3274. #:tests? #f
  3275. #:make-flags (list (string-append "PREFIX="
  3276. (assoc-ref %outputs "out"))
  3277. (string-append "CROSS_COMPILE=")
  3278. "CC=gcc")
  3279. #:phases
  3280. (modify-phases %standard-phases
  3281. (delete 'configure)
  3282. (replace 'build
  3283. (lambda* (#:key make-flags #:allow-other-keys)
  3284. (apply invoke "make" "target-tools" make-flags)))
  3285. (replace 'install
  3286. (lambda* (#:key make-flags #:allow-other-keys)
  3287. (apply invoke "make" "install-target-tools"
  3288. make-flags))))))
  3289. (home-page "https://github.com/linux-sunxi/sunxi-tools")
  3290. (synopsis "Hardware management tools for Allwinner computers")
  3291. (description "This package contains tools for Allwinner devices:
  3292. @enumerate
  3293. @item @command{sunxi-meminfo}: Prints memory bus settings.
  3294. @end enumerate")
  3295. (license license:gpl2+)))
  3296. (define-public sunxi-tools
  3297. (package
  3298. (name "sunxi-tools")
  3299. (version "1.4.2")
  3300. (source
  3301. (sunxi-tools-source version))
  3302. (native-inputs
  3303. `(("sunxi-target-tools" ,sunxi-target-tools)
  3304. ("pkg-config" ,pkg-config)))
  3305. (inputs
  3306. `(("libusb" ,libusb)))
  3307. (build-system gnu-build-system)
  3308. (arguments
  3309. `(#:tests? #f ; no tests exist
  3310. #:make-flags (list (string-append "PREFIX="
  3311. (assoc-ref %outputs "out"))
  3312. (string-append "CROSS_COMPILE=disabled")
  3313. "CC=gcc")
  3314. #:phases
  3315. (modify-phases %standard-phases
  3316. (delete 'configure)
  3317. (replace 'build
  3318. (lambda* (#:key make-flags #:allow-other-keys)
  3319. (apply invoke "make" "tools" "misc" make-flags)))
  3320. (replace 'install
  3321. (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
  3322. ;; Those tools have been built for armhf but are part of the
  3323. ;; installation in the upstream package. So do the same
  3324. ;; here.
  3325. (copy-recursively (assoc-ref inputs "sunxi-target-tools")
  3326. (assoc-ref outputs "out"))
  3327. (apply invoke "make" "install-tools" "install-misc"
  3328. make-flags))))))
  3329. (home-page "https://github.com/linux-sunxi/sunxi-tools")
  3330. (synopsis "Hardware management tools for Allwinner computers")
  3331. (description "This package contains tools for Allwinner devices:
  3332. @enumerate
  3333. @item @command{sunxi-fexc}, @command{bin2fex}, @command{fex2bin}: Compile
  3334. a textual description of a board (.fex) to a binary representation (.bin).
  3335. @item @command{sunxi-fel}: Puts an Allwinner device into FEL mode which
  3336. makes it register as a special USB device (rather than USB host).
  3337. You can then connect it to another computer and flash it from there.
  3338. @item @command{sunxi-nand-part}: Partitions NAND flash.
  3339. @item @command{sunxi-bootinfo}: Reads out boot0 and boot1 (Allwinner
  3340. bootloader) parameters.
  3341. @item @command{sunxi-pio}: Sets GPIO parameters and oscillates a GPIO
  3342. in order to be able to find it.
  3343. @item @command{sunxi-meminfo}: Prints memory bus settings.
  3344. @item @command{sunxi-nand-image-builder}: Prepares raw NAND images.
  3345. @end enumerate")
  3346. (license license:gpl2+)))
  3347. (define-public sedsed
  3348. (package
  3349. (name "sedsed")
  3350. (version "1.1")
  3351. (source
  3352. (origin
  3353. (method git-fetch)
  3354. (uri (git-reference
  3355. (url "https://github.com/aureliojargas/sedsed")
  3356. (commit (string-append "v" version))))
  3357. (file-name (git-file-name name version))
  3358. (sha256
  3359. (base32 "05cl35mwljdb9ynbbsfa8zx6ig8r0xncbg2cir9vwn5manndjj18"))))
  3360. (build-system python-build-system)
  3361. (arguments
  3362. `(#:tests? #f ; no tests
  3363. #:phases
  3364. (modify-phases %standard-phases
  3365. (add-after 'unpack 'patch-sed-in
  3366. (lambda _
  3367. (substitute* "sedsed.py"
  3368. (("sedbin = 'sed'")
  3369. (string-append "sedbin = '" (which "sed") "'")))
  3370. #t))
  3371. (delete 'build)
  3372. (replace 'install
  3373. (lambda* (#:key outputs #:allow-other-keys)
  3374. (let* ((out (assoc-ref outputs "out"))
  3375. (bin (string-append out "/bin")))
  3376. ;; Just one file to copy around
  3377. (install-file "sedsed.py" bin)
  3378. #t)))
  3379. (add-after 'wrap 'symlink
  3380. ;; Create 'sedsed' symlink to "sedsed.py".
  3381. (lambda* (#:key outputs #:allow-other-keys)
  3382. (let* ((out (assoc-ref outputs "out"))
  3383. (bin (string-append out "/bin"))
  3384. (sed (string-append bin "/sedsed"))
  3385. (sedpy (string-append bin "/sedsed.py")))
  3386. (symlink sedpy sed)
  3387. #t))))))
  3388. (home-page "https://aurelio.net/projects/sedsed")
  3389. (synopsis "Sed sed scripts")
  3390. (description
  3391. "@code{sedsed} can debug, indent, tokenize and HTMLize your @command{sed}
  3392. script.
  3393. In debug mode, it reads your script and adds extra commands to it. When
  3394. executed you can see the data flow between the commands, revealing all the
  3395. magic sed performs on its internal buffers.
  3396. In indent mode, your script is reformatted with standard spacing.
  3397. In tokenize mode, you can see the elements of every command you use.
  3398. In HTMLize mode, your script is converted to a beautiful colored HTML file,
  3399. with all the commands and parameters identified for your viewing pleasure.
  3400. With sedsed you can master any sed script. No more secrets, no more hidden
  3401. buffers.")
  3402. (license license:expat)))
  3403. (define-public igt-gpu-tools
  3404. (package
  3405. (name "igt-gpu-tools")
  3406. (version "1.26")
  3407. (source
  3408. (origin
  3409. (method git-fetch)
  3410. (uri (git-reference
  3411. (url "https://gitlab.freedesktop.org/drm/igt-gpu-tools.git")
  3412. (commit (string-append "igt-gpu-tools-" version))))
  3413. (file-name (git-file-name name version))
  3414. (sha256
  3415. (base32 "0m124pqv7zna25jnvk566c4kk628jr0w8mgnp8mr5xqz9cprgczm"))))
  3416. (build-system meson-build-system)
  3417. (arguments
  3418. `(#:tests? #f)) ; many of the tests try to load kernel modules
  3419. (inputs
  3420. `(("cairo" ,cairo)
  3421. ("elfutils" ,elfutils) ; libdw
  3422. ("eudev" ,eudev)
  3423. ("kmod" ,kmod)
  3424. ("libdrm" ,libdrm)
  3425. ("libpciaccess" ,libpciaccess)
  3426. ("libunwind" ,libunwind)
  3427. ("procps" ,procps)))
  3428. (native-inputs
  3429. `(("bison" ,bison)
  3430. ("flex" ,flex)
  3431. ("pkg-config" ,pkg-config)))
  3432. (home-page "https://gitlab.freedesktop.org/drm/igt-gpu-tools")
  3433. (synopsis "Tools for development and testing of the Intel DRM driver")
  3434. (description "IGT GPU Tools is a collection of tools for development and
  3435. testing of the Intel DRM driver. There are many macro-level test suites that
  3436. get used against the driver, including xtest, rendercheck, piglit, and
  3437. oglconform, but failures from those can be difficult to track down to kernel
  3438. changes, and many require complicated build procedures or specific testing
  3439. environments to get useful results. Therefore, IGT GPU Tools includes
  3440. low-level tools and tests specifically for development and testing of the
  3441. Intel DRM Driver.")
  3442. (supported-systems '("i686-linux" "x86_64-linux"))
  3443. (license license:expat)))
  3444. (define-public neofetch
  3445. (package
  3446. (name "neofetch")
  3447. (version "7.1.0")
  3448. (source (origin
  3449. (method git-fetch)
  3450. (uri (git-reference
  3451. (url "https://github.com/dylanaraps/neofetch")
  3452. (commit version)))
  3453. (file-name (git-file-name name version))
  3454. (sha256
  3455. (base32
  3456. "0i7wpisipwzk0j62pzaigbiq42y1mn4sbraz4my2jlz6ahwf00kv"))))
  3457. (build-system gnu-build-system)
  3458. (arguments
  3459. `(#:tests? #f ; there are no tests
  3460. #:make-flags
  3461. (list (string-append "PREFIX=" %output))
  3462. #:phases
  3463. (modify-phases %standard-phases
  3464. (delete 'configure)))) ; no configure script
  3465. (home-page "https://github.com/dylanaraps/neofetch")
  3466. (synopsis "System information script")
  3467. (description "Neofetch is a command-line system information tool written in
  3468. Bash. Neofetch displays information about your system next to an image, your OS
  3469. logo, or any ASCII file of your choice. The main purpose of Neofetch is to be
  3470. used in screenshots to show other users what operating system or distribution
  3471. you are running, what theme or icon set you are using, etc.")
  3472. (license license:expat)))
  3473. (define-public screenfetch
  3474. (package
  3475. (name "screenfetch")
  3476. (version "3.9.1")
  3477. (source (origin
  3478. (method git-fetch)
  3479. (uri (git-reference
  3480. (url "https://github.com/KittyKatt/screenFetch")
  3481. (commit (string-append "v" version))))
  3482. (file-name (git-file-name name version))
  3483. (sha256
  3484. (base32
  3485. "04l8aqr474pb115nagn9f6y48jw92n1qfszgw7dbhgl4mpn95lcr"))))
  3486. (build-system trivial-build-system)
  3487. (arguments
  3488. `(#:modules ((guix build utils))
  3489. #:builder
  3490. (begin
  3491. (use-modules (guix build utils))
  3492. (let ((source (assoc-ref %build-inputs "source"))
  3493. (out (assoc-ref %outputs "out")))
  3494. (mkdir-p (string-append out "/bin/"))
  3495. (copy-file (string-append source "/screenfetch-dev")
  3496. (string-append out "/bin/screenfetch"))
  3497. (install-file (string-append source "/screenfetch.1")
  3498. (string-append out "/man/man1/"))
  3499. (install-file (string-append source "/COPYING")
  3500. (string-append out "/share/doc/" ,name "-" ,version))
  3501. (substitute* (string-append out "/bin/screenfetch")
  3502. (("/usr/bin/env bash")
  3503. (string-append (assoc-ref %build-inputs "bash")
  3504. "/bin/bash")))
  3505. (wrap-program
  3506. (string-append out "/bin/screenfetch")
  3507. `("PATH" ":" prefix
  3508. (,(string-append (assoc-ref %build-inputs "bc") "/bin:"
  3509. (assoc-ref %build-inputs "scrot") "/bin:"
  3510. (assoc-ref %build-inputs "xdpyinfo") "/bin"
  3511. (assoc-ref %build-inputs "xprop") "/bin"))))
  3512. (substitute* (string-append out "/bin/screenfetch")
  3513. (("#!#f")
  3514. (string-append "#!" (assoc-ref %build-inputs "bash")
  3515. "/bin/bash")))))))
  3516. (inputs
  3517. `(("bash" ,bash)
  3518. ("bc" ,bc)
  3519. ("scrot" ,scrot)
  3520. ("xdpyinfo" ,xdpyinfo)
  3521. ("xprop" ,xprop)))
  3522. (home-page "https://github.com/KittyKatt/screenFetch")
  3523. (synopsis "System information script")
  3524. (description "Bash screenshot information tool which can be used to
  3525. generate those nifty terminal theme information and ASCII distribution logos in
  3526. everyone's screenshots nowadays.")
  3527. (license license:gpl3)))
  3528. (define-public ufetch
  3529. (let ((commit "98b622023e03fe24dbc137e9a68104dfe1fbd04a")
  3530. (revision "1"))
  3531. (package
  3532. (name "ufetch")
  3533. (version (git-version "0.2" revision commit))
  3534. (source (origin
  3535. (method git-fetch)
  3536. (uri (git-reference
  3537. (url "https://gitlab.com/jschx/ufetch.git")
  3538. (commit commit)))
  3539. (file-name (git-file-name name version))
  3540. (sha256
  3541. (base32
  3542. "09c4zmikza16xpydinnqbi3hmcibfrrn10wij7j0j1wv1pj2sl2l"))))
  3543. (build-system trivial-build-system)
  3544. (inputs
  3545. `(("bash" ,bash)
  3546. ("tput" ,ncurses)))
  3547. (arguments
  3548. `(#:modules ((guix build utils))
  3549. #:builder
  3550. (begin
  3551. (use-modules (guix build utils))
  3552. (let* ((source (assoc-ref %build-inputs "source"))
  3553. (output (assoc-ref %outputs "out"))
  3554. (bindir (string-append output "/bin"))
  3555. (docdir (string-append output "/share/doc/ufetch-" ,version))
  3556. (tput (string-append (assoc-ref %build-inputs "tput") "/bin/tput")))
  3557. (install-file (string-append source "/LICENSE") docdir)
  3558. (setenv "PATH" (string-append (assoc-ref %build-inputs "bash") "/bin"))
  3559. (mkdir-p bindir)
  3560. (for-each (lambda (src)
  3561. (let ((dst (string-append bindir "/" (basename src))))
  3562. (copy-file src dst)
  3563. (patch-shebang dst)
  3564. (substitute* dst (("tput") tput))))
  3565. (find-files source "ufetch-[[:alpha:]]*$"))
  3566. ;; Note: the `ufetch` we create below will only work if run under
  3567. ;; the Guix System. I.e. a user trying to run `ufetch` on a
  3568. ;; foreign distro will not get great results. The `screenfetch`
  3569. ;; program does actual runtime detection of the operating system,
  3570. ;; and would be a better choice in such a situation.
  3571. (symlink "ufetch-guix" (string-append bindir "/ufetch"))))))
  3572. (home-page "https://gitlab.com/jschx/ufetch")
  3573. (synopsis "Tiny system info")
  3574. (description "This package provides a tiny system info utility.")
  3575. (license license:isc))))
  3576. (define-public pfetch
  3577. (let ((commit "e18a0959ab98b963744755ec4687e59dc11db3c5")
  3578. (revision "0"))
  3579. (package
  3580. (name "pfetch")
  3581. (version (git-version "0.7.0" revision commit))
  3582. (source (origin
  3583. (method git-fetch)
  3584. (uri (git-reference
  3585. (url "https://github.com/dylanaraps/pfetch")
  3586. (commit commit)))
  3587. (file-name (git-file-name name version))
  3588. (sha256
  3589. (base32
  3590. "1md40av6i3xvvwig5jzhy4kf3s5sgxxk35r0vcyrjd8qyndk927l"))))
  3591. (build-system trivial-build-system)
  3592. (inputs `(("bash" ,bash)))
  3593. (arguments
  3594. `(#:modules ((guix build utils))
  3595. #:builder
  3596. (begin
  3597. (use-modules (guix build utils))
  3598. (let* ((source (lambda (f)
  3599. (string-append (assoc-ref %build-inputs "source") "/" f)))
  3600. (output (assoc-ref %outputs "out"))
  3601. (docdir (string-append output "/share/doc/pfetch-" ,version)))
  3602. (install-file (source "LICENSE.md") docdir)
  3603. (install-file (source "README.md") docdir)
  3604. (install-file (source "pfetch") (string-append output "/bin"))
  3605. (patch-shebang
  3606. (string-append output "/bin/pfetch")
  3607. (list (string-append (assoc-ref %build-inputs "bash") "/bin")))
  3608. #t))))
  3609. (home-page "https://github.com/dylanaraps/pfetch")
  3610. (synopsis "System information tool")
  3611. (description "This package provides a simple, configurable system
  3612. information tool.")
  3613. (license license:expat))))
  3614. (define-public nnn
  3615. (package
  3616. (name "nnn")
  3617. (version "4.1.1")
  3618. (source
  3619. (origin
  3620. (method url-fetch)
  3621. (uri (string-append "https://github.com/jarun/nnn/releases/download/v"
  3622. version "/nnn-v" version ".tar.gz"))
  3623. (sha256
  3624. (base32 "1fnf35s3b2nfp18s712n5vhg6idx4rfgwdfv74nc2933v9l2dq7h"))))
  3625. (build-system gnu-build-system)
  3626. (inputs
  3627. `(("ncurses" ,ncurses)
  3628. ("readline" ,readline)))
  3629. (native-inputs
  3630. `(("pkg-config" ,pkg-config)))
  3631. (arguments
  3632. `(#:tests? #f ; no tests
  3633. #:phases
  3634. (modify-phases %standard-phases
  3635. (delete 'configure)) ; no configure script
  3636. #:make-flags
  3637. (list
  3638. (string-append "PREFIX="
  3639. (assoc-ref %outputs "out"))
  3640. (string-append "CC=" ,(cc-for-target))
  3641. (string-append "PKG_CONFIG=" ,(pkg-config-for-target)))))
  3642. (home-page "https://github.com/jarun/nnn")
  3643. (synopsis "Terminal file browser")
  3644. (description
  3645. "@command{nnn} is a fork of @command{noice}, a fast and minimal text
  3646. terminal file browser with keyboard shortcuts for navigation, opening files and
  3647. running tasks. There is no configuration file and MIME associations are
  3648. hard-coded.")
  3649. (license license:bsd-2)))
  3650. (define-public thermald
  3651. (package
  3652. (name "thermald")
  3653. (version "2.4.6")
  3654. (source
  3655. (origin
  3656. (method git-fetch)
  3657. (uri (git-reference
  3658. (url "https://github.com/intel/thermal_daemon")
  3659. (commit (string-append "v" version))))
  3660. (file-name (git-file-name name version))
  3661. (sha256
  3662. (base32 "1lgaky8cmxbi17zpymy2v9wgknx1g92bq50j6kfpsm8qgb7djjb6"))))
  3663. (build-system gnu-build-system)
  3664. (arguments
  3665. `(#:configure-flags
  3666. (let ((out (assoc-ref %outputs "out")))
  3667. (list (string-append "--with-dbus-sys-dir="
  3668. out "/etc/dbus-1/system.d")
  3669. "--localstatedir=/var"))
  3670. #:make-flags
  3671. (list "V=1") ; log build commands
  3672. #:phases
  3673. (modify-phases %standard-phases
  3674. (add-before 'bootstrap 'no-early-./configure
  3675. (lambda _
  3676. (setenv "NO_CONFIGURE" "yet"))))))
  3677. (native-inputs
  3678. `(("autoconf" ,autoconf)
  3679. ("autoconf-archive" ,autoconf-archive)
  3680. ("automake" ,automake)
  3681. ("glib" ,glib "bin") ; for glib-genmarshal, etc.
  3682. ("gtk-doc" ,gtk-doc)
  3683. ("pkg-config" ,pkg-config)))
  3684. (inputs
  3685. `(("dbus-glib" ,dbus-glib)
  3686. ("libevdev" ,libevdev)
  3687. ("libxml2" ,libxml2)
  3688. ("upower" ,upower)
  3689. ("xz" ,xz)))
  3690. (home-page "https://01.org/linux-thermal-daemon/")
  3691. (synopsis "CPU scaling for thermal management")
  3692. (description "The Linux Thermal Daemon helps monitor and control temperature
  3693. on systems running the Linux kernel.")
  3694. ;; arm and aarch64 don't have cpuid.h.
  3695. (supported-systems '("i686-linux" "x86_64-linux"))
  3696. (license license:gpl2)))
  3697. (define-public masscan
  3698. (package
  3699. (name "masscan")
  3700. (version "1.0.5")
  3701. (source
  3702. (origin
  3703. (method git-fetch)
  3704. (uri (git-reference
  3705. (url "https://github.com/robertdavidgraham/masscan")
  3706. (commit version)))
  3707. (file-name (git-file-name name version))
  3708. (sha256
  3709. (base32 "0q0c7bsf0pbl8napry1qyg0gl4pd8wn872h4mz9b56dx4rx90vqg"))))
  3710. (build-system gnu-build-system)
  3711. (inputs
  3712. `(("libpcap" ,libpcap)))
  3713. (arguments
  3714. `(#:test-target "regress"
  3715. #:make-flags
  3716. (list (string-append "CC=" ,(cc-for-target))
  3717. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  3718. #:phases
  3719. (modify-phases %standard-phases
  3720. (delete 'configure) ; no ./configure script
  3721. (add-after 'unpack 'patch-path
  3722. (lambda* (#:key outputs inputs #:allow-other-keys)
  3723. (let* ((out (assoc-ref outputs "out"))
  3724. (pcap (assoc-ref inputs "libpcap")))
  3725. (substitute* "src/rawsock-pcap.c"
  3726. (("libpcap.so") (string-append pcap "/lib/libpcap.so")))
  3727. #t))))))
  3728. (synopsis "TCP port scanner")
  3729. (description "MASSCAN is an asynchronous TCP port scanner. It can detect
  3730. open ports, and also complete the TCP connection and interact with the remote
  3731. application, collecting the information received.")
  3732. (home-page "https://github.com/robertdavidgraham/masscan")
  3733. ;; 'src/siphash24.c' is the SipHash reference implementation, which
  3734. ;; bears a CC0 Public Domain Dedication.
  3735. (license license:agpl3+)))
  3736. (define-public hungrycat
  3737. (package
  3738. (name "hungrycat")
  3739. (version "0.4.1")
  3740. (source (origin
  3741. (method url-fetch)
  3742. (uri (string-append "https://github.com/jwilk/hungrycat/"
  3743. "releases/download/" version "/"
  3744. "hungrycat-" version ".tar.gz"))
  3745. (sha256
  3746. (base32
  3747. "03fc1zsrf99lvxa7b4ps6pbi43304wbxh1f6ci4q0vkal370yfwh"))))
  3748. (build-system gnu-build-system)
  3749. (native-inputs
  3750. ;; For tests.
  3751. `(("python" ,python-wrapper)
  3752. ("python-nose" ,python-nose)))
  3753. (arguments
  3754. `(#:test-target "test"))
  3755. (synopsis "A single tool that combines @command{cat} & @command{rm}")
  3756. (description
  3757. "hungrycat prints the contents of a file to standard output, while
  3758. simultaneously freeing the disk space it occupied. It is useful if you need
  3759. to process a large file, don't have enough space to store both the input and
  3760. output files, and don't need the input file afterwards.
  3761. While similar in principle to running @command{cat} immediately followed by
  3762. @command{rm}, @command{hungrycat} actually frees blocks as soon as they are
  3763. printed instead of after the entire file has been read, which is often too
  3764. late.")
  3765. (home-page "https://jwilk.net/software/hungrycat")
  3766. (license license:expat)))
  3767. (define-public launchmon
  3768. (package
  3769. (name "launchmon")
  3770. (version "1.0.2")
  3771. (source (origin
  3772. (method url-fetch)
  3773. (uri (string-append
  3774. "https://github.com/LLNL/LaunchMON/releases/download/v"
  3775. version "/launchmon-v" version ".tar.gz"))
  3776. (sha256
  3777. (base32
  3778. "0fm3nd9mydm9v2bf7bh01dbgrfnpwkapxa3dsvy3x1z0rz61qc0x"))
  3779. (modules '((guix build utils)))
  3780. (snippet
  3781. '(begin
  3782. ;; Fix build failure with GCC 7 due to a conversion error.
  3783. ;; Remove for versions > 1.0.2.
  3784. (substitute* "launchmon/src/linux/lmon_api/lmon_coloc_spawner.cxx"
  3785. ((" lmonpl = '\\\\0'")
  3786. " *lmonpl = '\\0'"))
  3787. #t))))
  3788. (build-system gnu-build-system)
  3789. (inputs
  3790. `(("mpi" ,openmpi)
  3791. ("munge" ,munge)
  3792. ("boost" ,boost)
  3793. ("libelf" ,libelf)
  3794. ("libgcrypt" ,libgcrypt)
  3795. ("libgpg-error" ,libgpg-error)))
  3796. (synopsis "Infrastructue for large scale tool daemon launching")
  3797. (description
  3798. "LaunchMON is a software infrastructure that enables HPC run-time
  3799. tools to co-locate tool daemons with a parallel job. Its API allows a
  3800. tool to identify all the remote processes of a job and to scalably
  3801. launch daemons into the relevant nodes.")
  3802. (home-page "https://github.com/LLNL/LaunchMON")
  3803. (supported-systems '("i686-linux" "x86_64-linux"))
  3804. (license license:lgpl2.1)))
  3805. (define-public spindle
  3806. (package
  3807. (name "spindle")
  3808. (version "0.10")
  3809. (source (origin
  3810. ;; We use git checkout to avoid github auto-generated tarballs
  3811. (method git-fetch)
  3812. (uri (git-reference
  3813. (url "https://github.com/hpc/Spindle")
  3814. (commit (string-append "v" version))))
  3815. (file-name (git-file-name name version))
  3816. (sha256
  3817. (base32
  3818. "15n3ay0qq81r5v7fif61q1vdjcq44pp2nynkh3fvbzc9fj3c39wd"))))
  3819. (build-system gnu-build-system)
  3820. (arguments '(#:configure-flags '("--enable-sec-launchmon"
  3821. "--enable-sec-munge"
  3822. "--enable-sec-none")))
  3823. (inputs
  3824. `(("mpi" ,openmpi)
  3825. ("munge" ,munge)
  3826. ("launchmon" ,launchmon)
  3827. ("libgcrypt" ,libgcrypt)))
  3828. (synopsis "Scalable library loading in HPC environments")
  3829. (description
  3830. "Spindle is a tool for improving the performance of dynamic library and
  3831. Python loading in HPC environments.")
  3832. (home-page "https://github.com/hpc/Spindle")
  3833. ;; This package supports x86_64 and PowerPC64
  3834. (supported-systems '("x86_64-linux"))
  3835. (license license:lgpl2.1)))
  3836. (define-public inxi-minimal
  3837. (let ((real-name "inxi"))
  3838. (package
  3839. (name "inxi-minimal")
  3840. (version "3.3.06-1")
  3841. (source
  3842. (origin
  3843. (method git-fetch)
  3844. (uri (git-reference
  3845. (url "https://github.com/smxi/inxi")
  3846. (commit version)))
  3847. (file-name (git-file-name real-name version))
  3848. (sha256
  3849. (base32 "1qk40iyrdp52vmbiqwxicvlcycm2v2bf1gg4lzq0b4619sd6d1m7"))))
  3850. (build-system trivial-build-system)
  3851. (inputs
  3852. `(("bash" ,bash-minimal)
  3853. ("perl" ,perl)
  3854. ("procps" ,procps)))
  3855. (native-inputs
  3856. `(("gzip" ,gzip)))
  3857. (arguments
  3858. `(#:modules ((guix build utils))
  3859. #:builder
  3860. (begin
  3861. (use-modules (guix build utils)
  3862. (ice-9 match)
  3863. (srfi srfi-26))
  3864. (setenv "PATH" (string-append
  3865. (assoc-ref %build-inputs "bash") "/bin" ":"
  3866. (assoc-ref %build-inputs "gzip") "/bin" ":"
  3867. (assoc-ref %build-inputs "perl") "/bin" ":"))
  3868. (copy-recursively (assoc-ref %build-inputs "source")
  3869. ,(string-append real-name "-" version))
  3870. (with-directory-excursion ,(string-append real-name "-" version)
  3871. (with-fluids ((%default-port-encoding #f))
  3872. (substitute* "inxi" (("/usr/bin/env perl") (which "perl"))))
  3873. (let ((bin (string-append %output "/bin")))
  3874. (install-file "inxi" bin)
  3875. (wrap-program (string-append bin "/inxi")
  3876. `("PATH" ":" =
  3877. ("$PATH"
  3878. ,@(map (lambda (input)
  3879. (match input
  3880. ((name . store)
  3881. (let ((store-append
  3882. (cut string-append store <>)))
  3883. (cond
  3884. ((member name '("util-linux"))
  3885. (string-append (store-append "/bin") ":"
  3886. (store-append "/sbin")))
  3887. ((member name '("dmidecode" "iproute2"))
  3888. (store-append "/sbin"))
  3889. (else (store-append "/bin")))))))
  3890. %build-inputs)))
  3891. `("PERL5LIB" ":" =
  3892. ,(delete
  3893. ""
  3894. (map (match-lambda
  3895. (((? (cut string-prefix? "perl-" <>) name) . dir)
  3896. (string-append dir "/lib/perl5/site_perl"))
  3897. (_ ""))
  3898. %build-inputs)))))
  3899. (invoke "gzip" "inxi.1")
  3900. (install-file "inxi.1.gz"
  3901. (string-append %output "/share/man/man1")))
  3902. #t)))
  3903. (home-page "https://smxi.org/docs/inxi.htm")
  3904. (synopsis "Full-featured system information script")
  3905. (description "Inxi is a system information script that can display
  3906. various things about your hardware and software to users in an IRC chatroom or
  3907. support forum. It runs with the @code{/exec} command in most IRC clients.")
  3908. (license license:gpl3+))))
  3909. (define-public inxi
  3910. (package
  3911. (inherit inxi-minimal)
  3912. (name "inxi")
  3913. (inputs
  3914. `(("dmidecode" ,dmidecode)
  3915. ("file" ,file)
  3916. ("bind:utils" ,isc-bind "utils") ; dig
  3917. ("gzip" ,gzip)
  3918. ("iproute2" ,iproute) ; ip
  3919. ("kmod" ,kmod) ; modinfo
  3920. ("lm-sensors" ,lm-sensors)
  3921. ("mesa-utils" ,mesa-utils)
  3922. ("pciutils" ,pciutils)
  3923. ("tar" ,tar)
  3924. ("tree" ,tree)
  3925. ("util-linux" ,util-linux) ; lsblk
  3926. ("usbutils" ,usbutils) ; lsusb
  3927. ("wmctrl" ,wmctrl)
  3928. ("xdpyinfo" ,xdpyinfo)
  3929. ("xprop" ,xprop)
  3930. ("xrandr" ,xrandr)
  3931. ("coreutils" ,coreutils) ; uptime
  3932. ("inetutils" ,inetutils) ; ifconfig
  3933. ("perl-cpanel-json-xs" ,perl-cpanel-json-xs)
  3934. ("perl-http-tiny" ,perl-http-tiny)
  3935. ("perl-io-socket-ssl" ,perl-io-socket-ssl)
  3936. ("perl-json-xs" ,perl-json-xs)
  3937. ("perl-time-hires" ,perl-time-hires)
  3938. ("lvm2" ,lvm2) ; lvs
  3939. ("mdadm" ,mdadm)
  3940. ;; TODO: Add more inputs:
  3941. ;; ipmi-sensors
  3942. ;; hddtemp
  3943. ;; perl-xml-dumper
  3944. ;; ipmitool
  3945. ,@(package-inputs inxi-minimal)))))
  3946. (define-public pscircle
  3947. (package
  3948. (name "pscircle")
  3949. (version "1.3.1")
  3950. (source
  3951. (origin
  3952. (method git-fetch)
  3953. (uri (git-reference
  3954. (url "https://gitlab.com/mildlyparallel/pscircle.git")
  3955. (commit (string-append "v" version))))
  3956. (file-name (git-file-name name version))
  3957. (sha256
  3958. (base32 "1sm99423hh90kr4wdjqi9sdrrpk65j2vz2hzj65zcxfxyr6khjci"))))
  3959. (build-system meson-build-system)
  3960. (native-inputs
  3961. `(("pkg-config" ,pkg-config)))
  3962. (inputs
  3963. `(("cairo" ,cairo)
  3964. ("libpng" ,libpng)
  3965. ("libx11" ,libx11)))
  3966. (home-page "https://gitlab.com/mildlyparallel/pscircle")
  3967. (synopsis "Visualize Linux processes in a form of radial tree")
  3968. (description
  3969. "@code{pscircle} visualizes Linux processes in the form of a radial tree.")
  3970. (license license:gpl2+)))
  3971. (define-public python-pyudev
  3972. (package
  3973. (name "python-pyudev")
  3974. (version "0.22.0")
  3975. (source
  3976. (origin
  3977. (method url-fetch)
  3978. (uri (pypi-uri "pyudev" version))
  3979. (sha256
  3980. (base32
  3981. "0xmj6l08iih2js9skjqpv4w7y0dhxyg91zmrs6v5aa65gbmipfv9"))))
  3982. (build-system python-build-system)
  3983. (arguments
  3984. `(#:tests? #f ; Tests require /sys
  3985. #:phases
  3986. (modify-phases %standard-phases
  3987. (add-after 'unpack 'patch-ctypes-udev
  3988. (lambda* (#:key inputs outputs #:allow-other-keys)
  3989. (let ((eudev (assoc-ref inputs "eudev")))
  3990. (substitute* "src/pyudev/core.py"
  3991. (("'udev'")
  3992. (string-append "'" eudev "/lib/libudev.so'")))
  3993. (substitute* "src/pyudev/_ctypeslib/utils.py"
  3994. ;; Use absolute paths instead of keys.
  3995. (("= find_library") "= "))
  3996. #t))))))
  3997. (inputs
  3998. `(("eudev" ,eudev)))
  3999. (propagated-inputs
  4000. `(("python-six" ,python-six)))
  4001. (native-inputs
  4002. `(("python-docutils" ,python-docutils)
  4003. ("python-hypothesis" ,python-hypothesis)
  4004. ("python-mock" ,python-mock)
  4005. ("python-pytest" ,python-pytest)
  4006. ("python-sphinx" ,python-sphinx)))
  4007. (home-page "https://pyudev.readthedocs.io/")
  4008. (synopsis "Python udev binding")
  4009. (description "This package provides @code{udev} bindings for Python.")
  4010. (license license:lgpl2.1)))
  4011. (define-public vmtouch
  4012. (package
  4013. (name "vmtouch")
  4014. (version "1.3.1")
  4015. (source
  4016. (origin
  4017. (method git-fetch)
  4018. (uri (git-reference
  4019. (url "https://github.com/hoytech/vmtouch/")
  4020. (commit (string-append "v" version))))
  4021. (file-name (git-file-name name version))
  4022. (sha256
  4023. (base32 "08da6apzfkfjwasn4dxrlfxqfx7arl28apdzac5nvm0fhvws0dxk"))))
  4024. (build-system gnu-build-system)
  4025. (native-inputs
  4026. `(("perl" ,perl)))
  4027. (arguments
  4028. `(#:tests? #f ; no tests
  4029. #:make-flags
  4030. (list
  4031. (string-append "CC=" ,(cc-for-target))
  4032. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  4033. #:phases
  4034. (modify-phases %standard-phases
  4035. (delete 'configure))))
  4036. (home-page "https://github.com/hoytech/vmtouch/")
  4037. (synopsis "Portable file system cache diagnostics and control")
  4038. (description
  4039. "vmtouch is a tool for learning about and controlling the file system
  4040. cache of unix and unix-like systems.")
  4041. (license license:bsd-3)))
  4042. (define-public solaar
  4043. (package
  4044. (name "solaar")
  4045. (version "1.0.6")
  4046. (source (origin
  4047. (method git-fetch)
  4048. (uri (git-reference
  4049. (url "https://github.com/pwr-Solaar/Solaar")
  4050. (commit version)))
  4051. (file-name (git-file-name name version))
  4052. (sha256
  4053. (base32
  4054. "04zclzfc31l2fj5shcsngnmcvcmmhnc567l3wb9yfhs8k39k9kb2"))))
  4055. (build-system python-build-system)
  4056. (arguments
  4057. `(#:phases
  4058. (modify-phases %standard-phases
  4059. (add-before 'build 'setenv-PATH
  4060. (lambda _
  4061. (setenv "PYTHONPATH" "lib"))))))
  4062. (propagated-inputs
  4063. `(("python-pygobject" ,python-pygobject)
  4064. ("python-pyudev" ,python-pyudev)
  4065. ;; For GUI.
  4066. ("python-pyyaml" ,python-pyyaml)
  4067. ("python-psutil" ,python-psutil)
  4068. ("python-xlib" ,python-xlib)
  4069. ("gtk+" ,gtk+)
  4070. ("python-pygobject" ,python-pygobject)))
  4071. (home-page "https://pwr-solaar.github.io/Solaar/")
  4072. (synopsis "Linux devices manager for the Logitech Unifying Receiver")
  4073. (description "This package provides tools to manage clients of the
  4074. Logitech Unifying Receiver.")
  4075. (license license:gpl2)))
  4076. (define-public lynis
  4077. (package
  4078. (name "lynis")
  4079. ;; Also update the ‘lynis-sdk’ input to the commit matching this release.
  4080. (version "3.0.5")
  4081. (source
  4082. (origin
  4083. (method git-fetch)
  4084. (uri (git-reference
  4085. (url "https://github.com/CISOfy/lynis")
  4086. (commit version)))
  4087. (file-name (git-file-name name version))
  4088. (sha256
  4089. (base32 "11kl54hbvjl7q2i1jz8a726vlkdmknvbp4zac3j4fgljg27qp410"))
  4090. (modules '((guix build utils)))
  4091. (snippet
  4092. '(begin
  4093. ;; Remove proprietary plugins. As of now, all plugins supplied with
  4094. ;; lynis are proprietary. In the future, if free plugins are
  4095. ;; provided, whitelist them from deletion.
  4096. (for-each delete-file (find-files "plugins"))
  4097. #t))))
  4098. (build-system gnu-build-system)
  4099. (native-inputs
  4100. `(;; For tests
  4101. ("lynis-sdk"
  4102. ,(origin
  4103. (method git-fetch)
  4104. (uri (git-reference
  4105. (url "https://github.com/CISOfy/lynis-sdk")
  4106. (commit "99f79c4deb4cb2221d7fccfe82baf58c0a55b9e7")))
  4107. (file-name (git-file-name "lynis-sdk" version))
  4108. (sha256
  4109. (base32 "1nc2rhzj6l08d2mnjrzkm4mxla1mjkddcxl8n05c1kdz9ycn6cpl"))))))
  4110. (arguments
  4111. `(#:phases
  4112. (modify-phases %standard-phases
  4113. (replace 'configure
  4114. (lambda* (#:key inputs outputs #:allow-other-keys)
  4115. (substitute* "lynis"
  4116. (("/usr/share/lynis")
  4117. (string-append (assoc-ref outputs "out") "/share/lynis")))
  4118. (substitute* "include/functions"
  4119. (("/usr/local/etc/lynis")
  4120. (string-append (assoc-ref outputs "out") "/etc/lynis")))
  4121. #t))
  4122. (delete 'build)
  4123. (replace 'install
  4124. (lambda* (#:key outputs #:allow-other-keys)
  4125. (let ((out (assoc-ref outputs "out")))
  4126. (install-file "lynis" (string-append out "/bin/"))
  4127. (install-file "default.prf" (string-append out "/etc/lynis"))
  4128. (for-each
  4129. (lambda (dir)
  4130. (copy-recursively dir (string-append out "/share/lynis/" dir)))
  4131. (list "db" "include" "plugins"))
  4132. (install-file "lynis.8" (string-append out "/share/man/man8"))
  4133. #t)))
  4134. (replace 'check
  4135. (lambda* (#:key inputs #:allow-other-keys)
  4136. (copy-recursively (assoc-ref inputs "lynis-sdk") "../lynis-sdk")
  4137. (setenv "LANG" "en_US.UTF-8")
  4138. (let ((lynis-dir (getcwd)))
  4139. (with-directory-excursion "../lynis-sdk"
  4140. (substitute* "config"
  4141. (("\\.\\./lynis") lynis-dir))
  4142. (substitute* "unit-tests/tests-language-translations.sh"
  4143. (("\\.\\./lynis") lynis-dir))
  4144. (invoke "sh" "lynis-devkit" "run" "unit-tests"))))))))
  4145. (home-page "https://cisofy.com/lynis/")
  4146. (synopsis "Security auditing tool")
  4147. (description "Lynis is a security auditing tool. It performs an in-depth
  4148. security scan and runs on the system itself. The primary goal is to test
  4149. security defenses and provide tips for further system hardening. It will also
  4150. scan for general system information, vulnerable software packages, and
  4151. possible configuration issues.")
  4152. (license license:gpl3+)))
  4153. (define-public ngrep
  4154. (package
  4155. (name "ngrep")
  4156. (version "1.47")
  4157. (source
  4158. (origin
  4159. (method git-fetch)
  4160. (uri (git-reference
  4161. (url "https://github.com/jpr5/ngrep/")
  4162. (commit (string-append "V" (string-replace-substring version "." "_")))))
  4163. (file-name (git-file-name name version))
  4164. (sha256
  4165. (base32
  4166. "1x2fyd7wdqlj1r76ilal06cl2wmbz0ws6i3ys204sbjh1cj6dcl7"))))
  4167. (build-system gnu-build-system)
  4168. (inputs
  4169. `(("libpcap" ,libpcap)))
  4170. (arguments
  4171. `(#:tests? #f ;; No tests.
  4172. #:configure-flags (list (string-append "--with-pcap-includes="
  4173. (assoc-ref %build-inputs "libpcap")
  4174. "/include/pcap"))))
  4175. (home-page "https://github.com/jpr5/ngrep/")
  4176. (synopsis "Grep-like utility to search for network packets on an interface")
  4177. (description "@command{ngrep} is like GNU grep applied to the network
  4178. layer. It's a PCAP-based tool that allows you to specify an extended regular
  4179. or hexadecimal expression to match against data payloads of packets. It
  4180. understands many kinds of protocols, including IPv4/6, TCP, UDP, ICMPv4/6,
  4181. IGMP and Raw, across a wide variety of interface types, and understands BPF
  4182. filter logic in the same fashion as more common packet sniffing tools, such as
  4183. tcpdump and snoop.")
  4184. (license license:bsd-3)))
  4185. (define-public pam-mount
  4186. (package
  4187. (name "pam-mount")
  4188. (version "2.18")
  4189. (source
  4190. (origin
  4191. (method url-fetch)
  4192. (uri (string-append "mirror://sourceforge/pam-mount/pam_mount/"
  4193. "pam_mount-" version ".tar.xz"))
  4194. (sha256
  4195. (base32 "0832nh2qf9pisgwnbgx6hkylx5d7i416l19y3ly4ifv7k1p7mxqa"))))
  4196. (build-system gnu-build-system)
  4197. (native-inputs
  4198. `(("perl" ,perl)
  4199. ("pkg-config" ,pkg-config)))
  4200. (inputs
  4201. `(("cryptsetup" ,cryptsetup)
  4202. ("libhx" ,libhx)
  4203. ("libxml2" ,libxml2)
  4204. ("linux-pam" ,linux-pam)
  4205. ("lvm2" ,lvm2)
  4206. ("openssl" ,openssl)
  4207. ("pcre2" ,pcre2)
  4208. ("libmount" ,util-linux "lib")
  4209. ("util-linux" ,util-linux)))
  4210. (arguments
  4211. `(#:configure-flags
  4212. (list (string-append "--with-slibdir=" %output "/lib")
  4213. (string-append "--with-ssbindir=" %output "/sbin"))
  4214. #:phases
  4215. (modify-phases %standard-phases
  4216. (add-after 'unpack 'fix-program-paths
  4217. (lambda* (#:key inputs outputs #:allow-other-keys)
  4218. (let ((util-linux (assoc-ref inputs "util-linux"))
  4219. (out (assoc-ref outputs "out")))
  4220. (substitute* "src/mtcrypt.c"
  4221. (("\"mount\";")
  4222. (string-append "\"" util-linux "/bin/mount\";"))
  4223. (("\"umount\";")
  4224. (string-append "\"" util-linux "/bin/umount\";"))
  4225. (("\"fsck\",")
  4226. (string-append "\"" util-linux "/sbin/fsck\",")))
  4227. (substitute* "src/rdconf1.c"
  4228. (("\"mount\", \"")
  4229. (string-append "\"" util-linux "/bin/mount\", \""))
  4230. (("\"umount\", \"")
  4231. (string-append "\"" util-linux "/bin/umount\", \""))
  4232. (("\"fsck\", \"")
  4233. (string-append "\"" util-linux "/sbin/fsck\", \""))
  4234. (("\"pmvarrun\", \"")
  4235. (string-append "\"" out "/sbin/pmvarrun\", \""))))
  4236. #t)))))
  4237. (home-page "http://pam-mount.sourceforge.net")
  4238. (synopsis "PAM module to mount volumes for a user session")
  4239. (description
  4240. "Pam-mount is a PAM module that can mount volumes when a user logs in.
  4241. It supports mounting local filesystems of any kind the normal mount utility
  4242. supports. It can also mount encrypted LUKS volumes using the password
  4243. supplied by the user when logging in.")
  4244. (license (list license:gpl2+ license:lgpl2.1+))))
  4245. (define-public jc
  4246. (package
  4247. (name "jc")
  4248. (version "1.13.4")
  4249. (source
  4250. (origin
  4251. ;; The PyPI tarball lacks the test suite.
  4252. (method git-fetch)
  4253. (uri (git-reference
  4254. (url "https://github.com/kellyjonbrazil/jc")
  4255. (commit (string-append "v" version))))
  4256. (file-name (git-file-name name version))
  4257. (sha256
  4258. (base32 "0rwvyyrdnw43pixp8h51rncq2inc9pbbj1j2191y5si00pjw34zr"))))
  4259. (build-system python-build-system)
  4260. (propagated-inputs
  4261. `(("python-pygments" ,python-pygments)
  4262. ("python-ruamel.yaml" ,python-ruamel.yaml)
  4263. ("python-xmltodict" ,python-xmltodict)))
  4264. (home-page "https://github.com/kellyjonbrazil/jc")
  4265. (synopsis "Convert the output of command-line tools to JSON")
  4266. (description "@code{jc} JSONifies the output of many CLI tools and
  4267. file-types for easier parsing in scripts.")
  4268. (license license:expat)))
  4269. (define-public jtbl
  4270. (package
  4271. (name "jtbl")
  4272. (version "1.1.6")
  4273. (source (origin
  4274. (method git-fetch)
  4275. (uri (git-reference
  4276. (url "https://github.com/kellyjonbrazil/jtbl")
  4277. (commit (string-append "v" version))))
  4278. (file-name (git-file-name name version))
  4279. (sha256
  4280. (base32
  4281. "1zzd7rd63xva50f22d1rfja4r302aizrafarhwm67vv181swvdya"))))
  4282. (build-system python-build-system)
  4283. (inputs
  4284. `(("python-tabulate" ,python-tabulate)))
  4285. (home-page "https://github.com/kellyjonbrazil/jtbl")
  4286. (synopsis "Command-line tool to print JSON data as a table in the terminal")
  4287. (description "@code{jtbl} accepts piped JSON data from stdin and outputs a
  4288. text table representation to stdout.")
  4289. (license license:expat)))
  4290. (define-public hosts
  4291. (package
  4292. (name "hosts")
  4293. (version "3.6.3")
  4294. (source (origin
  4295. (method git-fetch)
  4296. (uri (git-reference
  4297. (url "https://github.com/xwmx/hosts")
  4298. (commit version)))
  4299. (file-name (git-file-name name version))
  4300. (sha256
  4301. (base32
  4302. "1ni4z89kxzgwm26hhx908g04f2h0fypy7lgfa0rvsz8d0wslgcsn"))))
  4303. (build-system trivial-build-system)
  4304. (inputs
  4305. `(("bats" ,bats) ;for test
  4306. ("awk" ,gawk)
  4307. ("bash" ,bash)
  4308. ("coreutils" ,coreutils)
  4309. ("diffutils" ,diffutils)
  4310. ("grep" ,grep)
  4311. ("ncurses" ,ncurses) ;tput
  4312. ("sed" ,sed)))
  4313. (arguments
  4314. `(#:modules ((guix build utils))
  4315. #:builder
  4316. (begin
  4317. (use-modules (guix build utils))
  4318. ;; copy source
  4319. (copy-recursively (assoc-ref %build-inputs "source") ".")
  4320. ;; patch-shebang phase
  4321. (setenv "PATH"
  4322. (string-append (assoc-ref %build-inputs "bash") "/bin"
  4323. ":" (assoc-ref %build-inputs "awk") "/bin"
  4324. ":" (assoc-ref %build-inputs "coreutils") "/bin"
  4325. ":" (assoc-ref %build-inputs "diffutils") "/bin"
  4326. ":" (assoc-ref %build-inputs "grep") "/bin"
  4327. ":" (assoc-ref %build-inputs "ncurses") "/bin"
  4328. ":" (assoc-ref %build-inputs "sed") "/bin"
  4329. ":" "/run/setuid-programs"
  4330. ":" (getenv "PATH")))
  4331. (substitute* "hosts"
  4332. (("#!/usr/bin/env bash")
  4333. (string-append "#!" (which "bash")
  4334. "\nPATH=" (getenv "PATH"))))
  4335. ;; check phase
  4336. (setenv "TERM" "linux") ;set to tty for test
  4337. (invoke (string-append (assoc-ref %build-inputs "bats") "/bin/bats")
  4338. "test")
  4339. ;; install phase
  4340. (install-file "hosts" (string-append %output "/bin"))
  4341. (let ((bash-completion
  4342. (string-append %output "/etc/bash_completion.d")))
  4343. (mkdir-p bash-completion)
  4344. (copy-file "etc/hosts-completion.bash"
  4345. (string-append bash-completion "/hosts")))
  4346. (let ((zsh-completion
  4347. (string-append %output "/share/zsh/site-functions")))
  4348. (mkdir-p zsh-completion)
  4349. (copy-file "etc/hosts-completion.zsh"
  4350. (string-append zsh-completion "/_hosts")))
  4351. (let ((doc (string-append %output "/share/doc/" ,name "-" ,version)))
  4352. (mkdir-p doc)
  4353. (install-file "LICENSE" doc)
  4354. (install-file "README.md" doc))
  4355. #t)))
  4356. (home-page "https://github.com/xwmx/hosts/")
  4357. (synopsis "Script for editing a foreign distro's @file{/etc/hosts} file")
  4358. (description "Hosts is a command line program for managing
  4359. @file{/etc/hosts} entries. On Guix System, @file{/etc/hosts} is managed from
  4360. the system configuration; hosts only works when using the Guix package manager
  4361. on a foreign distro. @command{hosts} works with existing hosts files and
  4362. entries, providing commands to add, remove, comment, and search.")
  4363. (license license:expat)))
  4364. (define-public nmrpflash
  4365. (package
  4366. (name "nmrpflash")
  4367. (version "0.9.15")
  4368. (source
  4369. (origin
  4370. (method git-fetch)
  4371. (uri
  4372. (git-reference
  4373. (url "https://github.com/jclehner/nmrpflash")
  4374. (commit (string-append "v" version))))
  4375. (sha256
  4376. (base32 "0ssfls1sfh8w748qsnkfgndlpw395100x2yynzbk5jd56scxvp20"))
  4377. (file-name (git-file-name name version))))
  4378. (build-system gnu-build-system)
  4379. (native-inputs
  4380. `(("pkg-config" ,pkg-config)))
  4381. (inputs
  4382. `(("libnl" ,libnl)
  4383. ("libpcap" ,libpcap)))
  4384. (arguments
  4385. `(#:tests? #f ; None exist
  4386. #:make-flags
  4387. (list (string-append "CC=" ,(cc-for-target))
  4388. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  4389. #:phases
  4390. (modify-phases %standard-phases
  4391. (delete 'configure)
  4392. (add-before 'install 'prepare-install
  4393. (lambda* (#:key outputs #:allow-other-keys)
  4394. (mkdir-p (string-append (assoc-ref outputs "out") "/bin"))
  4395. #t)))))
  4396. (home-page "https://github.com/jclehner/nmrpflash")
  4397. (synopsis "Netgear unbrick utility")
  4398. (description "This package provides a utility to flash a new firmware
  4399. image to a Netgear device. It has been tested on Netgear EX2700, EX6120,
  4400. EX6150v2, DNG3700v2, R6100, R6220, R7000, D7000, WNR3500, R6400, R6800,
  4401. R8000, R8500, WNDR3800, but is likely to be compatible with many other
  4402. Netgear devices.")
  4403. (license license:gpl3+)))
  4404. (define-public atop
  4405. (package
  4406. (name "atop")
  4407. (version "2.6.0")
  4408. (source (origin
  4409. (method url-fetch)
  4410. (uri (string-append "https://www.atoptool.nl/download/atop-"
  4411. version ".tar.gz"))
  4412. (sha256
  4413. (base32
  4414. "0wlg0n0h9vwpjp2dcb623jvvqck422jrjpq9mbpzg4hnawxcmhly"))))
  4415. (build-system gnu-build-system)
  4416. (arguments
  4417. `(#:tests? #f ; no test suite
  4418. #:make-flags
  4419. (list (string-append "CC=" ,(cc-for-target))
  4420. ;; The installer requires a choice between systemd or SysV.
  4421. "systemdinstall"
  4422. (string-append "DESTDIR=" (assoc-ref %outputs "out"))
  4423. (string-append "BINPATH=/bin")
  4424. (string-append "SBINPATH=/sbin")
  4425. (string-append "SYSDPATH=/etc/systemd/system")
  4426. (string-append "PMPATHD=/etc/systemd/system-sleep")
  4427. (string-append "MAN1PATH=/share/man/man1")
  4428. (string-append "MAN5PATH=/share/man/man5")
  4429. (string-append "MAN8PATH=/share/man/man8")
  4430. ;; Or else it tries to create /var/log/atop...
  4431. (string-append "LOGPATH="))
  4432. #:phases
  4433. (modify-phases %standard-phases
  4434. (delete 'configure) ; No ./configure script
  4435. (add-before 'build 'patch-build
  4436. (lambda* (#:key outputs #:allow-other-keys)
  4437. (substitute* "Makefile"
  4438. ;; We don't need to chown things in the build environment.
  4439. (("chown.*$") "")
  4440. ;; We can't toggle the setuid bit in the build environment.
  4441. (("chmod 04711") "chmod 0711")
  4442. ;; Otherwise, it creates a blank configuration file as a "default".
  4443. (("touch.*DEFPATH)/atop") "")
  4444. (("chmod.*DEFPATH)/atop") ""))
  4445. #t)))))
  4446. (inputs
  4447. `(("ncurses" ,ncurses)
  4448. ("python" ,python-wrapper) ; for `atopgpud`
  4449. ("zlib" ,zlib)))
  4450. (home-page "https://www.atoptool.nl/")
  4451. (synopsis "Linux performance monitoring console")
  4452. (description "Atop is an ASCII full-screen performance monitor for Linux
  4453. that is capable of reporting the activity of all processes (even processes have
  4454. finished during the monitoring interval), daily logging of system and process
  4455. activity for long-term analysis, highlighting overloaded system resources by
  4456. using colors, etc. At regular intervals, it shows system-level activity related
  4457. to the CPU, memory, swap, disks (including LVM) and network layers, and for
  4458. every process (and thread) it shows e.g. the CPU utilization, memory growth,
  4459. disk utilization, priority, username, state, and exit code.")
  4460. (license license:gpl2+)))
  4461. ;; TODO: Unvendor u-root (pkg: forth, golang, testutil).
  4462. (define fiano
  4463. (package
  4464. (name "fiano")
  4465. (version "5.0.0")
  4466. (source (origin
  4467. (method git-fetch)
  4468. (uri (git-reference
  4469. (url "https://github.com/linuxboot/fiano.git")
  4470. (commit (string-append "v" version))))
  4471. (file-name (string-append name "-" version "-checkout"))
  4472. (sha256
  4473. (base32
  4474. "03ihdwwhb7g6bihx141cn0924sjs5ps6q3ps58pk1cg0g0srrr9h"))
  4475. (modules '((guix build utils)))
  4476. (snippet
  4477. '(begin
  4478. (delete-file-recursively "vendor/golang.org")
  4479. (delete-file-recursively "vendor/github.com")
  4480. #t))))
  4481. (build-system go-build-system)
  4482. (arguments
  4483. `(#:import-path "github.com/linuxboot/fiano"
  4484. #:unpack-path "github.com/linuxboot/fiano"))
  4485. (native-inputs
  4486. `())
  4487. (inputs
  4488. `(("go-golang-org-x-text" ,go-golang-org-x-text)
  4489. ("go-github.com-ulikunitz-xz" ,go-github.com-ulikunitz-xz)))
  4490. (synopsis "UEFI image editor")
  4491. (description "This package provides a command-line UEFI image editor.")
  4492. (home-page "https://github.com/linuxboot/fiano")
  4493. (license license:bsd-3)))
  4494. (define-public fiano-utk
  4495. (package
  4496. (inherit fiano)
  4497. (name "fiano-utk")
  4498. (arguments
  4499. `(#:import-path "github.com/linuxboot/fiano/cmds/utk"
  4500. #:unpack-path "github.com/linuxboot/fiano"))))
  4501. (define-public fiano-fmap
  4502. (package
  4503. (inherit fiano)
  4504. (name "fiano-fmap")
  4505. (arguments
  4506. `(#:import-path "github.com/linuxboot/fiano/cmds/fmap"
  4507. #:unpack-path "github.com/linuxboot/fiano"))))
  4508. (define-public novena-eeprom
  4509. (package
  4510. (name "novena-eeprom")
  4511. (version "2.3")
  4512. (source (origin
  4513. (method git-fetch)
  4514. (uri (git-reference
  4515. (url "https://github.com/xobs/novena-eeprom.git")
  4516. (commit (string-append "v" version))))
  4517. (file-name (string-append name "-" version "-checkout"))
  4518. (sha256
  4519. (base32
  4520. "00pd71mg0g20v0820ggp3ghf9nyj5s4wavaz9mkmrmsr91hcnf7i"))))
  4521. (build-system gnu-build-system)
  4522. (arguments
  4523. `(#:tests? #f ; No tests exist
  4524. #:make-flags
  4525. (list (string-append "CC=" ,(cc-for-target)))
  4526. #:phases
  4527. (modify-phases %standard-phases
  4528. (delete 'configure)
  4529. (replace 'install
  4530. (lambda* (#:key outputs #:allow-other-keys)
  4531. (let* ((out (assoc-ref outputs "out"))
  4532. (out-bin (string-append out "/bin"))
  4533. (out-share-man (string-append out "/share/man/man8")))
  4534. (install-file "novena-eeprom" out-bin)
  4535. (install-file "novena-eeprom.8" out-share-man)))))))
  4536. (inputs
  4537. `(("i2c-tools" ,i2c-tools)))
  4538. (synopsis "Novena EEPROM editor")
  4539. (description "This package provides an editor for the Novena EEPROM.
  4540. Novena boards contain a device-dependent descriptive EEPROM that defines
  4541. various parameters such as serial number, MAC address, and featureset.
  4542. This program allows you to view and manipulate this EEPROM list.")
  4543. (home-page "https://github.com/xobs/novena-eeprom/")
  4544. (supported-systems '("armhf-linux"))
  4545. (license license:bsd-3)))
  4546. (define-public lrzsz
  4547. (package
  4548. (name "lrzsz")
  4549. (version "0.12.20")
  4550. (source (origin
  4551. (method url-fetch)
  4552. (uri (string-append "https://www.ohse.de/uwe/releases/lrzsz-"
  4553. version ".tar.gz"))
  4554. (sha256
  4555. (base32
  4556. "1wcgfa9fsigf1gri74gq0pa7pyajk12m4z69x7ci9c6x9fqkd2y2"))))
  4557. (build-system gnu-build-system)
  4558. (arguments
  4559. `(#:phases
  4560. (modify-phases %standard-phases
  4561. (replace 'configure
  4562. (lambda* (#:key outputs #:allow-other-keys)
  4563. (setenv "CONFIG_SHELL" (which "bash"))
  4564. (invoke "./configure"
  4565. (string-append "--prefix="
  4566. (assoc-ref outputs "out"))))))))
  4567. (synopsis "Implementation of XMODEM/YMODEM/ZMODEM transfer protocols")
  4568. (description "This package provides programs that transfer files using
  4569. the XMODEM/YMODEM/ZMODEM file transfer protocols.")
  4570. (home-page "https://ohse.de/uwe/software/lrzsz.html")
  4571. (license license:gpl2+)))
  4572. (define-public nq
  4573. (package
  4574. (name "nq")
  4575. (version "0.4")
  4576. (source
  4577. (origin
  4578. (method git-fetch)
  4579. (uri (git-reference
  4580. (url "https://github.com/leahneukirchen/nq")
  4581. (commit (string-append "v" version))))
  4582. (file-name (git-file-name name version))
  4583. (sha256
  4584. (base32 "0sdamjzvmf6cxhjmd1rjvn7zm6k10fp5n6vabyxd3yl30cgrxw2i"))))
  4585. (build-system gnu-build-system)
  4586. (native-inputs
  4587. `(("perl" ,perl)))
  4588. (arguments
  4589. `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
  4590. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  4591. #:phases
  4592. (modify-phases %standard-phases
  4593. (delete 'configure))))
  4594. (synopsis "Unix command line queue utility")
  4595. (description
  4596. "@code{nq} can create very lightweight job queue systems which require no
  4597. setup, maintenance, supervision, or any long-running processes.")
  4598. (home-page "https://github.com/leahneukirchen/nq")
  4599. (license license:public-domain)))
  4600. (define-public lsofgraph
  4601. (let ((commit "1d414bdc727c00a8c6cbfffc3c43128c60d6f0de")
  4602. (revision "1"))
  4603. (package
  4604. (name "lsofgraph")
  4605. (version (git-version "0.0.1" revision commit)) ;no upstream release
  4606. (source (origin
  4607. (method git-fetch)
  4608. (uri (git-reference
  4609. (url "https://github.com/zevv/lsofgraph")
  4610. (commit commit)))
  4611. (file-name (git-file-name name version))
  4612. (sha256
  4613. (base32
  4614. "058x04yp6bc77hbl3qchqm7pa8f9vqfl9jryr88m8pzl7kvpif54"))))
  4615. (build-system trivial-build-system)
  4616. (inputs
  4617. `(("lua" ,lua)))
  4618. (arguments
  4619. `(#:modules ((guix build utils))
  4620. #:builder
  4621. (begin
  4622. (use-modules (guix build utils))
  4623. ;; copy source
  4624. (copy-recursively (assoc-ref %build-inputs "source") ".")
  4625. ;; patch-shebang phase
  4626. (setenv "PATH"
  4627. (string-append (assoc-ref %build-inputs "lua") "/bin"
  4628. ":" (getenv "PATH")))
  4629. (substitute* "lsofgraph"
  4630. (("#!/usr/bin/env lua")
  4631. (string-append "#!" (which "lua"))))
  4632. ;; install phase
  4633. (install-file "lsofgraph" (string-append %output "/bin"))
  4634. (let ((doc (string-append
  4635. %output "/share/doc/" ,name "-" ,version)))
  4636. (mkdir-p doc)
  4637. (install-file "LICENSE" doc)
  4638. (install-file "README.md" doc))
  4639. #t)))
  4640. (home-page "https://github.com/zevv/lsofgraph")
  4641. (synopsis "Convert @code{lsof} output to @code{graphviz}")
  4642. (description "Utility to convert @code{lsof} output to a graph showing
  4643. FIFO and UNIX interprocess communication.")
  4644. (license license:bsd-2))))