-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Curated Packages
This list is fairly outdated. See instead: Awesome Nim and the Nimble package directory
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.
- The standard library already includes many optimized algorithms.
- 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
- 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 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
- 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/loopfusion
- 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
- 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
- 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
- Process
- Multiplexing
- Routines
- Scheduler
- nim-schedules: https://github.com/soasme/nim-schedules
- 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
- JSON parser, generator
- CSV parser
- csvtools: https://github.com/unicredit/csvtools
- SQL parser
- Drivers
- SQLite
- SQLiteral: https://github.com/olliNiinivaara/SQLiteral
- 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
- Search
- 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
- 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
- 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
- JavaScript
- Websockets
- 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
- Distributed systems
- Map, reduce
- Streams
- HyperLogLog and family
- Cross-platform
- 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
- 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
- @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
- Blockchain
- Geo / GIS
- Office applications
- Natural language processing
- Security
- Platform specific
- Linux & *nix
- Windows
- OS X
- Tools
- Servers
- Intelligent Home
Intro
Getting Started
- Install
- Docs
- Curated Packages
- Editor Support
- Unofficial FAQ
- Nim for C programmers
- Nim for Python programmers
- Nim for TypeScript programmers
- Nim for D programmers
- Nim for Java programmers
- Nim for Haskell programmers
Developing
- Build
- Contribute
- Creating a release
- Compiler module reference
- Consts defined by the compiler
- Debugging the compiler
- GitHub Actions/Travis CI/Circle CI/Appveyor
- GitLab CI setup
- Standard library and the JavaScript backend
Misc