Build and publish¶
Currently, we build NEST Desktop for multiple targets and publish them on various platforms.
Note
Please be aware that a lot of steps are already covered by our GitLab CI process.
Therefore, we recommend to inspect the .gitlab-ci.yml
file together with this chapter.
It might also be helpful to have a look at the commands defined in package.json
.
Docker¶

After building the app to the output folder with the command yarn build
, build a docker image
docker build -t nest/nest-desktop:latest -f docker/nest-desktop-build/Dockerfile .
Then tag image with other version
docker tag nest/nest-desktop:latest nest/nest-desktop:4.0
docker tag nest/nest-desktop:latest nest/nest-desktop:4.0.0
Finally push all docker images
docker push nest/desktop:latest nest/desktop:4.0 nest/desktop:4.0.0
Python¶

Building and pushing NEST Desktop on PyPI is a required step for the production. After that, Docker Hub can upgrade NEST Desktop in the provided Docker image.
- Requirements
build, twine
The Python Package Index nest-desktop includes an executive command nest-desktop
and a Python library
nest_desktop
.
Build¶
The current working directory is nest-desktop
.
The building phase contains two steps:
The first step is to build a package of NEST Desktop using vite
.
Initially, you have to upgrade the version of NEST Desktop in:
packages.json
nest_desktop/__init__.py
Then generate the app package using yarn
. It builds output into the folder nest_desktop/app
:
yarn build
Clean output files before you perform the second step:
yarn clean
The second step is to build the Python packages of nest-desktop for PyPI:
python3 -m build -o pydist
Upload¶
Finally, the package is ready for the the publication. You can upload the pip-package of nest-desktop
to PyPI:
python3 -m twine upload pydist/*
Do not forget to commit the changes you made and set a new version tag in git.
git tag v4.0 -m 'v4.0.x'
git push --tags
Conda¶

We have a conda-smithy repository for nest-desktop.
When a new Python package is released, we can change the version in meta.yaml
( the meta content online):
{% set version = "4.x.y" %}
Note
It is also important to change the sha256
checksum of the source of tar.gz
file.
conda smithy rerender -c auto
Then make a pull request on the upstream repository. The CI will build package for conda-forge.
AppImage¶
In package.json
, there are also yarn commands configured to build an Electron app.
yarn app:build --linux AppImage
Then upload the .appImage
file to the release on https://github.com/nest-desktop/nest-desktop-AppImage.
See also
If you want to build other Electron packages, please have a look into electron-builder.yml
file.
Flatpak¶
First install flatpak
sudo apt install flatpak
flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo
sudo apt install gnome-software-plugin-flatpak gnome-software
sudo apt install flatpak-builder
Change files and version in the io.github.nest_desktop.nest-desktop.yml
file from
https://github.com/nest-desktop/nest-desktop-flathub.
Build and install flatpak in user folder:
flatpak-builder --force-clean --user --install-deps-from=flathub --install builddir io.github.nest_desktop.nest-desktop.yml
If it worked locally, then make a pull request on the upstream repository. The CI will build flatpak for flathub.
See also
For more information, please read the guide https://docs.flatpak.org/en/latest/index.html
Snap¶
First, install snapcraft
sudo snap install snapcraft --classic
Note
Running LXD and Docker on the same host can cause connectivity issues. To fix it, please read this: https://documentation.ubuntu.com/lxd/en/latest/howto/network_bridge_firewalld/#prevent-connectivity-issues-with-lxd-and-docker
To build and pack NEST Desktop with snapcraft:
snapcraft
Then install the snap file locally:
sudo snap install <snap-file> --dangerous
Finally, upload the snap file:
snapcraft upload <snap-file>
See also
For Snap packages, you can find more information in the Snap repository for nest-desktop.