Curated Packages - nim-lang/Nim GitHub Wiki
Table of contents
This list is fairly outdated. See instead: Awesome Nim and the Nimble package directory
Curated list of Nim packages
A common problem with Nim is finding packages as the search feature in Nimble is limited and package authors don't always make their package descriptors easily searchable. Here is a classified list of packages. The taxonomy can be improved: you can use it to find packages in some categories, but also to find categories without packages. This list favours pure Nim packages. Bindings and wrappers for external libraries or services could be added to another page eventually. Another limitation is that it does not specify with which version of Nim these packages can be used. This list has been curated to include quality packages well written and with supporting documentation.
Standard library
- The standard library already includes many optimized algorithms.
Nim distribution
Algorithms & data structures
- Cryptography
- nimcrypto: https://github.com/cheatfate/nimcrypto
- RollingHash: https://marcazar.github.io/RollingHash
- bslcurve: https://github.com/status-im/nim-blscurve
- fletcher: https://github.com/Akito13/nim-fletcher
- xxtea: https://github.com/xxtea/xxtea-nim
- des: https://github.com/LucaWolf/des.nim
- ed25519: https://github.com/niv/ed25519.nim
- murmurhash: https://github.com/cwpearson/nim-murmurhash
- NiMPC: https://github.com/markspanbroek/nimpc
- shimsham: https://github.com/apense/shimsham
- Constantine: https://github.com/mratsim/constantine
- Random
- Maths
- Numerical methods
- numericalnim: https://github.com/HugoGranstrom/numericalnim/
- Tensors, matrix
- Arraymancer: https://github.com/mratsim/Arraymancer
- neo: https://github.com/andreaferretti/neo
- Flambeau: https://github.com/SciNim/flambeau
- Statistics
- Sets
- Miscellaneous
- Numerical methods
- Compression
- Zip
- Tar
- Snappy
- supersnappy: https://github.com/guzba/supersnappy
- Data structures
- rbtree: https://github.com/Nycto/RBTreeNim
- BipBuffer: https://marcazar.github.io/BipBuffer
- BitVector: https://marcazar.github.io/BitVector
- bloom: https://www.github.com/boydgreenfield/nimrod-bloom
- binaryheap: https://github.com/bluenote10/nim-heap
- cdt: https://github.com/StefanSalewski/cdt
- faststack: https://github.com/Vladar4/FastStack
- minmaxheap: https://github.com/stefansalewski/minmaxheap
- quadtree: https://github.com/Nycto/QuadtreeNim
- k-d tree: https://github.com/jblindsay/kdtree
- RTree: https://github.com/StefanSalewski/RTree
- sorta: https://github.com/narimiran/sorta
- StashTable: https://github.com/olliNiinivaara/StashTable
- Collections
- Sorts
- Regular expressions
- Search and comparison
- Patterns
- citadino: https://github.com/makingspace/cittadino
- nimobserver: https://github.com/Tangdongle/nimobserver
- Graphics algorithms
- delaunay: https://github.com/Nycto/DelaunayNim
- rect_packer: https://github.com/yglukhov/rect_packer
- States machine and automata
- Synthesis: https://github.com/mratsim/Synthesis
Text
- Text algorithms
- cello: https://github.com/andreaferretti/cello
- porter: https://github.com/iourinski/porter
- strslice: https://github.com/PMunch/strslice
- alignment: https://github.com/jiro4989/alignment
- Enhanced Unicode support
- unicodedb: https://github.com/nitely/nim-unicodedb
- unicodeplus: https://github.com/nitely/nim-unicodeplus
- strunicode: https://github.com/nitely/nim-strunicode
- Calendar, date, time
- timezones: https://github.com/GULPF/timezones
- chrono: https://github.com/treeform/chrono
- Internationalization
- Rich text
- hastyscribe: https://h3rald.com/hastyscribe
- markdown: https://github.com/soasme/nim-markdown
- Typography
- typography: https://github.com/treeform/typography
Language
- C/C++ interop
- c2nim: https://github.com/nim-lang/c2nim
- nimterop: https://github.com/nimterop/nimterop
- futhark: https://github.com/PMunch/futhark
- Python interop
- Java interop
- Regular Expression
- Pattern matching
- ast_pattern_match: https://github.com/krux02/ast-pattern-matching
- patty: https://github.com/andreaferretti/patty
- gara: https://github.com/alehander92/gara
- With context
- subfield: https://github.com/jyapayne/subfield
- tuples: https://github.com/MasonMcGill/tuples
- with: https://github.com/zevv/with
- Contracts
- Functional programming
- nimfp: https://github.com/vegansk/nimfp
- zero-functional: https://github.com/zero-functional/zero-functional
- cascade: https://github.com/citycide/cascade
- Formatter
- Memory management
- Optimization
- Error handling
- optionsutils: https://github.com/PMunch/nim-optionsutils
- ur: https://github.com/JohnAD/ur
- Control structures
- itertools: https://github.com/narimiran/itertools
- loopfusion: https://github.com/numforge/loopfusiontha
- looper: https://github.com/b3liever/looper
- Metaprogramming
- Object orientation
- classy: https://github.com/nigredo-tori/classy
- interfaced: https://github.com/andreaferretti/interfaced
- protocoled: https://github.com/b3liever/protocoled
- oop_utils: https://github.com/bluenote10/oop_utils
- Toy languages
- Compiler
- Miscellaneous
Development
- Editor, IDE, & plugins
- nimlsp: https://github.com/PMunch/nimlsp
- nim.nvim: https://github.com/alaviss/nim.nvim
- vscode-nim: https://github.com/saem/vscode-nim
- REPL
- Parser:
- lilt: https://github.com/quelklef/lilt
- binaryparse: https://github.com/PMunch/binaryparse
- argparse: https://github.com/iffy/nim-argparse
- binarylang: https://github.com/sealmove/binarylang
- Lex, Yacc:
- AST tools
- Serializer
- serialization: https://github.com/status-im/nim-serialization
- protobuf: https://github.com/PMunch/protobuf-nim
- yaml: http://flyx.github.io/NimYAML/
- samson: https://github.com/GULPF/samson
- unpack: https://github.com/technicallyagd/unpack
- cbor: https://github.com/ehmry/nim-cbor
- nimpb: https://github.com/oswjk/nimpb
- packedjson: https://github.com/Araq/packedjson
- tnetstring: https://github.com/mahlonsmith/nim-tnetstring
- nimjson: https://github.com/jiro4989/nimjson
- msgpack4nim: https://github.com/jangko/msgpack4nim
- Command line
- Arguments parser
- Line-oriented command interpreter
- Text entry
- Config parser
- confutils: https://github.com/status-im/nim-confutils
- dotenv: https://github.com/euantorano/dotenv.nim
- parseini: https://github.com/lihf8515/parseini
- parsetoml: https://github.com/NimParsers/parsetoml
- envconfig: https://github.com/jiro4989/envconfig
- Useful Macros
- Documentation
- ntangle: https://github.com/OrgTangle/ntangle
- Tests
- einheit: https://github.com/jyapayne/einheit
- Installer
- Resource bundler
- Build system
- Package management
- Continuous integration
- DSL
- Version control
- p4ztag_to_json: https://github.com/kaushalmodi/p4ztag_to_json
- semver: https://github.com/euantorano/semver.nim
- spdx_licenses: https://github.com/euantorano/spdx_licenses.nim
- parseLicense Parse SPDX Licenses from string to Enum at compile-time
- Input validation
- validateip: https://github.com/Akito13/nim-validateip
- Code analysis
- Scripting
- Benchmarking
- criterion: https://github.com/disruptek/criterion
- nimbench: https://github.com/ivankoster/nimbench
- stopwatch: https://gitlab.com/define-private-public/stopwatch
- timeit: https://github.com/xflywind/timeit
- timespec_get: https://github.com/Matceporial/nim-timespec_get
- golden: https://github.com/disruptek/golden
- External libraries integration
System
- Platform
- Logs & syslog
- chronicles: https://github.com/status-im/nim-chronicles
- Concurrent
- Threading
- weave: https://github.com/mratsim/weave
- shared: https://github.com/genotrance/shared
- timerpool: https://github.com/mikra01/timerpool
- malebogia: https://github.com/Araq/malebolgia
- Process
- Multiplexing
- Routines
- Scheduler
- nim-schedules: https://github.com/soasme/nim-schedules
- at: https://github.com/capocasa/at
- Message passing
- Threading
- Publisher/Consumer
- cittadino: https://github.com/makingspace/cittadino
- Message Queues, pipes
- beanstalk: https://github.com/tormaroe/beanstalkd.nim
- Globbing
- IO
- serial: https://github.com/euantorano/serial.nim
- nimbluez: https://github.com/Electric-Blue/NimBluez
- Async
- asyncpythonfile: https://github.com/fallingduck/asyncpythonfile-nim
- Sync
- Networking
- Debugging
- Profiler, benchmarks
- Users, groups and passwords management
- RPC
- Containers
- asyncdocker: http://tulayang.github.io/asyncdocker.html
- Miscellaneous
Database
- JSON parser, generator
- CSV parser
- csvtools: https://github.com/unicredit/csvtools
- SQL parser
- Drivers
- SQLite
- SQLiteral: https://github.com/olliNiinivaara/SQLiteral
- tiny_sqlite: https://github.com/GULPF/tiny_sqlite
- MySQL
- asyncmysql: https://github.com/tulayang/asyncmysql
- PostgreSQL
- Others
- db_clickhouse: https://github.com/leonardoce/nim-clickhouse
- SQLite
- XML parser, generator
- xmltools: https://github.com/vegansk/xmltools
- xml.nim: https://github.com/ba0f3/xml.nim
- ORM
- NoSQL
- litestore: https://h3rald.com/litestore
- nimongo: https://github.com/SSPkrolik/nimongo
- redis: https://github.com/nim-lang/redis
- limdb: https://github.com/capocasa/limdb
- Search
Multimedia
- Magic file detection
- Audio and music
- Files/stream formats
- parasound: https://github.com/paranim/parasound
- Midi:
- rtmidi: https://github.com/johnnovak/nim-rtmidi
- nim_midi: https://github.com/jerous86/nim_midi
- paramidi: https://github.com/paranim/paramidi
- paramidib: https://github.com/pietroppeter/paramidib
- WAV:
- Files/stream formats
- Image
- Colors:
- Formats: BMP, GIF, JPEG, PNG, SVG
- Filters and effects
- imageman: https://github.com/SolitudeSF/imageman
- perlin: https://github.com/Nycto/PerlinNim
- blurhash: https://github.com/SolitudeSF/blurhash
- Video
- srt: https://github.com/achesak/nim-srt
- subviewer: https://github.com/achesak/nim-subviewer
- VapourSynth.nim: https://github.com/mantielero/VapourSynth.nim
- Raytracing
- trace of radiance: https://github.com/mratsim/trace-of-radiance
- 3D, VR
- @see: Algorithms > Graphics algorithms
- EBook
- biblioteca_guarrilla: https://github.com/juancarlospaco/biblioteca-guarrilla
Web
- Single page applications
- HTML and CSS helpers
- random_font_color: https://github.com/juancarlospaco/nim-random-font-color
- Parsing
- nimquery: https://github.com/GULPF/nimquery
- q.nim: https://github.com/OpenSystemsLab/q.nim
- Generator
- Generating
- rosencrantz: https://github.com/andreaferretti/rosencrantz
- HTTP tools: Request, Response, Encodings, Authentication, Status, Cookies
- httpauth: https://github.com/FedericoCeratto/nim-httpauth
- biscuits: https://github.com/achesak/nim-biscuits
- Websockets
- Templating
- emerald: https://flyx.github.io/emerald/
- moustachu: https://github.com/fenekku/moustachu
- mustache: https://github.com/soasme/nim-mustache
- templates: https://github.com/onionhammer/nim-templates
- CGI?
- Frameworks
- jester: https://github.com/dom96/jester
- prologue: https://github.com/planety/prologue
- Nexus: https://github.com/jfilby/nexus
- NimWC https://github.com/ThomasTJdev/nim_websitecreator
- Basolato: https://github.com/itsumura-h/nim-basolato
- Starlight: https://github.com/planety/starlight
- HappyX: https://github.com/HapticX/happyx
- Mummy: https://github.com/guzba/mummy
Internet
- URI, URL
- MIME
- SMTP
- easymail: https://github.com/coocheenin/easymail
- IMAP
- IRC
- SSL
- Telnet
- Authentication, OAuth
- Bot building
- telebot: https://github.com/ba0f3/telebot.nim
- Web services
- Webdav
- webdavclient: https://github.com/beshrkayali/webdavclient
Specific targets
- JavaScript
- Websockets
IoT & Embedded
- Hardware
- boneIO: https://github.com/xyz32/boneIO
- Microcontrollers
- MSP430f5510 (6kB): https://gitlab.com/jalexander8717/msp430f5510-nim
- STM32F3 (16 kB): https://github.com/mwbrown/nim_stm32f3
- Arduino + Mediatek LinkIt ONE SDK: https://github.com/gokr/ardunimo
- Arduino ESP8266 + Flashing Nim into Arduino: https://gitlab.com/NetaLabTek/Arduimesp
- Frameworks
Cloud
- Distributed systems
- Map, reduce
- Streams
- HyperLogLog and family
GUI
- Cross-platform
- nimx: https://github.com/yglukhov/nimx
- nigui: https://github.com/trustable-code/NiGui
- libui: https://github.com/nim-lang/ui
- imgui: https://github.com/nimgl/imgui
- uing: https://github.com/neroist/uing
- wiish: https://github.com/iffy/wiish
- koi: https://github.com/johnnovak/koi
- uing: https://github.com/neroist/uing
- MacOS
- Windows
- GTK
- gintro (GTK): https://github.com/StefanSalewski/gintro
- owlkettle: https://github.com/can-lehmann/owlkettle
- QT
- Web
- Console/Terminal
- progress: https://github.com/euantorano/progress.nim
- NimCx: https://github.com/qqtop/NimCx
- dashing: https://github.com/FedericoCeratto/nim-dashing
- illwill: https://github.com/johnnovak/illwill
- Curses
- Forms
- Reports
- Tabular
- terminaltables: https://github.com/xmonader/nim-terminaltables
- Plots
- nimgraphviz: https://github.com/QuinnFreedman/nimgraphviz
- ggplotnim: https://github.com/Vindaar/ggplotnim
- nim-plotly: https://github.com/brentp/nim-plotly
- matplotnim: https://github.com/ruivieira/matplotnim
- gnuplotnim: https://github.com/dvolk/gnuplot.nim
- graph: https://github.com/stisa/graph
- nimetry: https://github.com/benjif/nimetry
- gr.nim: https://github.com/mantielero/gr.nim
- Formats: PDF, Tex, RST, ePub...
- nimPDF: https://github.com/jangko/nimpdf
- Editor
- Windowing/Window Creation
- Fonts
- freetype: https://github.com/jangko/freetype
Games
- Games
- nim-chess4: https://github.com/StefanSalewski/nim-chess4
- tetris: https://github.com/Joco223/Tetris-In-Nim
- Engines
- Frameworks
- nico: https://github.com/ftsf/nico
- c4: https://github.com/c0ntribut0r/cat-400
- turn_based_game: https://github.com/JohnAD/turn_based_game
- Emulation
- Miscellaneous
- nasher: https://github.com/squattingmonk/nasher.nim
- neverwinter: https://github.com/niv/neverwinter.nim
Science
- Science
- @see: Algorithms > Graphics algorithms
- units: https://github.com/Udiknedormin/NimUnits
- metric: https://github.com/mjendrusch/metric
- Astronomy
- Mathematics
- @see Algorithms & data structures > Maths
- ski: https://github.com/jiro4989/ski
- chebyshev: https://github.com/jxy/chebyshev
- mathexpr: https://github.com/Yardanico/nim-mathexpr
- Constants Mathematical named static constants useful for different disciplines
- linear algebra: https://github.com/planetis-m/manu
- Biology
- falas: https://brentp.github.io/falas/falas.html
- nimna: https://github.com/mjendrusch/nimna
- polypbren: https://github.com/guibar64/polypbren
- Genomic
- nim-hts: https://github.com/brentp/hts-nim
- nim-hts-tools: https://github.com/brentp/hts-nim-tools
- slivar: https://github.com/brentp/slivar
- Data science
- @see GUI > Reports > Plots
- arraymancer: https://mratsim.github.io/Arraymancer/
- NimData: https://github.com/bluenote10/NimData
- nimdataframe: https://github.com/qqtop/nimdataframe
- Datamancer: https://github.com/SciNim/Datamancer
- laser: https://github.com/numforge/laser
- nimhdf5: https://github.com/Vindaar/nimhdf5
- pipelines: https://github.com/calebwin/pipelines
- mentat: https://github.com/ruivieira/nim-mentat
- mpfit: https://github.com/Vindaar/nim-mpfit
- teafiles: https://github.com/unicredit/nim-teafiles
- Machine Learning
- arraymancer_vision: https://github.com/edubart/arraymancer-vision
- nlopt: https://github.com/Vindaar/nimnlopt
- torch: https://github.com/fragcolor-xyz/nimtorch
- flambeau: https://github.com/SciNim/flambeau
- nimfastText: https://github.com/genotrance/nimfastText
- lda: https://github.com/unicredit/lda
- libsvm: https://github.com/genotrance/libsvm
- opencv: https://github.com/dom96/nim-opencv
Vertical domains
- Blockchain
- Geo / GIS
- Office applications
- Natural language processing
- Security
- Platform specific
- Linux & *nix
- Windows
- OS X
- Tools
- Servers
- Intelligent Home