Request approval for nim classic snap

nim builds to C (or C++ or JS) and then to binary and needs access to system libraries.

Initial attempts resulted in bug reports about access to libraries: and

Efforts to make this work in strict confinement have been unsuccessful: Difficulty accessing libc6-dev headers from Nim language snap

After speaking with Sergio the best option I think for now is to go classic.

Even if we bundled gcc and all libraries and that worked nim also supports C++, JavaScript, and alternative compilers like clang and Intel which would be limited by strict confinement.

I have a stable, nightly, and LTS branch release of nim and nim docs building and being pushed to the store now via GitHub Actions: I just need approval for the classic snaps to get nim working correctly.


Note these are already in the store but hidden from search:

In the request, nim is a programming language and to compile code it needs access to C headers and a compiler. As with other languages of this nature, classic is required to have access to /usr/include, etc. The requirements are understood and this follows an established classic pattern.

I’ve vetted the publisher. Granting use of classic. This is now live.

nim-lang is pushing through (thank you!) but nim-lang-nightly and nim-lang-lts-1 are still getting rejected by Snapcraft for being classic.

I’ve taken care of those. Note, nightly and lts-1 seem to be great candidates for tracks rather than separate snaps.

Thank you. I will look into your note.

Sorry to interject - two things.

  1. nightly belongs in the edge channel :slight_smile:

  2. We have had one request for an lts track, but I had some concerns about the semantics and how a single lts track will lead to it being a “rolling lts” which kind of defeats the purpose (do read the thread to see my comments which also apply here). I feel it’s better to have per-supported-version tracks so users can choose, and wait a few weeks until the “default tracks” feature is finalized to use a default track to route users to a current, stable LTS. All of this is merely advice/suggestion from us, if you really want an lts track and are aware of the implications, it can be done.

  • Daniel

So I wanted to use the new tracks and I remember Alan and Martin talking about them, but I don’t know how.

I found the documentation on installing from channels.

But I did not find documentation in the publishing section on how to leverage these options:

There is a mention of grade in app metadata.

There is also some information on release management.

The actual YAML reference doesn’t mention how to publish to edge other than pulling in staged snap dependencies from edge.

See also

I think it would be helpful to add a section to the publishing section with some YAML examples of how to use channels.

This might help:

Part 2 (linked to from the above) tells you how to use tracks and branches from a publisher perspective.

Also note that your tracks haven’t yet been created, we will let you know when they are, so you can use them.