Introduction

Nim is a fast, statically typed language that compiles to C (and other languages). The language is a recent development and was consequently only recently introduced to Debian. Most (almost all) common libraries are still missing. This page collects/archives all the thoughts to help nim libraries to have a coherent representation in Debian and likely also its derivative distributions.

Disclaimer: Everything collected on this page is new to Debian. If something does not suit your needs, contact the nim-team.

References

Nim in Debian

The nim compiler is packaged.

Packaging Nim projects

See the packaging guide: https://nim-lang.github.io/Nim/packaging.html

Nim-specific packaging helpers are not yet available in the distribution. See https://salsa.debian.org/nim-team/dh-make-nim to get inspired.

Add the "nim" package to Build-Depends. You likely want to specify a minimum and/or maximum version of Nim as the compiler is always evolving.

Get involved with the packaging

Packaging best practices

Host your packaging using Git on Salsa under nim-team. This will allow people to comaintain the packages or even take over easily.

Use Maintainer: Debian Nim Team <team+nim@tracker.debian.org> - see Debian Nim Team

Build using git-buildpackage

Create packages using dh-make-nim - it will provide reasonable default settings - Warning: while usable, it is not yet perfect.

Do not package experimental software. If an upstream project does not have a version number you can use 0.0_gitYYYYMMDD-x as a version number. (x is the Debian version number)

Libraries are packaged to allow building other Nim libraries and applications. End users will not install them.

Build-Depends and Depends lines: The dependencies need to be available at build time to run the tests (if any) and at installation time so that other packages can be built.

libraries

The source package name should be "nim-<name>". (nim- prevents naming collisions with other projects)

The generated package should be "nim-<name>-dev" (because it's a development library used only at build time)

If the library also generates a shared object that can be used by other languages it should be "lib<name>"

Impure libraries

See above. Also make sure to specify the Depends: to the right shared library and version.

Applications

The source and binary package name does not need to start with "nim-". E.g. vim, nmap, firefox

Javascript libraries/applications

Nim can generate ?JavaScript "binaries". The binary package name should be "libjs-<name>" or "libjs-<name>-dev".

dh_nim will detect the name and run Nim with a JS target. (Not implemented yet)

TODO