I maintain snap packages of Nim. * [nim-lang](https://snapcraft.io/nim-lang) is built from stable releases * [nim-lang-lts-1](https://snapcraft.io/nim-lang-lts-1) is built from releases on the 1.0 LTS branch * [nim-lang-nightly](https://snapcraft.io/nim-lang-nightly) are built nightly from the master branch * [nim-lang-docs](https://snapcraft.io/nim-lang-docs) contains a build of the most recent documentation for Nim
I have released snap builds for arm64, armhf, and i386, in addition to the existing amd64 builds, and I invite your testing and [bug reports](https://github.com/sirredbeard/nim_lang_snap/issues). Background: The [build code is hosted on GitHub](https://github.com/sirredbeard/nim_lang_snap). A [GitHub action](https://github.com/sirredbeard/nim_lang_snap/blob/master/.github/workflows/nightly.yml) triggers a build on push and daily on a cron timer, it sets up a build environment [using a Docker container](https://github.com/sirredbeard/snap-build/blob/master/Dockerfile) optimized for using snapcraft, it then [configures the snapcraft.yaml based on metadata](https://github.com/sirredbeard/nim_lang_snap/blob/master/.github/workflows/stable.yml#L22) from GitHub, and [pushes the snapcraft.yaml to Launchpad](https://github.com/sirredbeard/nim_lang_snap/blob/master/.github/workflows/stable.yml#L35) to be built for amd64, armhf, i386, and arm64 using [snapcraft remote-build](https://snapcraft.io/docs/remote-build). The compiled snaps are then collected and then [pushed to the Snap store](https://github.com/sirredbeard/nim_lang_snap/blob/master/.github/workflows/stable.yml#L45). Securing is maintained by storing authentication files as base64-encoded [encrypted environmental variables](https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets) in the GitHub Action, then [decoding them to file](https://github.com/sirredbeard/nim_lang_snap/blob/master/.github/workflows/nightly.yml#L31) as needed. Snaps now have [separate release channels built-in](https://snapcraft.io/docs/channels) but I still have separate packages for stable, nightly, and LTS so you can have multiple branches of Nim installed and test against each. My current plan is that when snaps get the ability to have multiple channels installed side-by-side these three packages will switch to a single package. Hayden [@unixterminal](https://twitter.com/unixterminal)