Skip to main content

Packaging and releases

Packaging/ contains the maintained release entry points. Each publisher creates packages from one self-contained Desktop publish so Desktop and Local Node ship together

Platform targets

HostRuntimeTargets
Linuxlinux-x64deb, rpm, appimage, flatpak, tar, nix
Windowswin-x64zip, msi, exe
macOSosx-arm64dmg

Use a matching host for packaging. Native publishers accept all and --output; output defaults to dist

Linux

Install the tools needed by your selected targets: dpkg-deb, rpmbuild, appimagetool, flatpak, and flatpak-builder

./Packaging/publish-linux.sh deb rpm tar --output dist
./Packaging/publish-linux.sh all --output dist

AppImage tooling can be selected with --appimagetool or APPIMAGETOOL. Flatpak exports and bundles use the stable branch

The Flatpak bundle currently uses Avalonia's X11 backend through XWayland, so its manifest grants --socket=x11 and does not grant the conditional fallback-x11 or native wayland sockets. This keeps KDE Plasma Wayland launches working until native Wayland is enabled in the desktop host

Linux packages preserve the source artwork from logo.svg and publish it in a square SVG viewport required by application icon validators

NixOS

The repository contains a flake for the native x86_64-linux package. Install Nix with flakes enabled, then build or run Hyprism from the repository root

nix build ./Packaging/linux/flake#hyprism
nix run ./Packaging/linux/flake#hyprism
./Packaging/publish-linux.sh nix

The flake pins nixpkgs and restores NuGet dependencies from Packaging/linux/flake/nix/deps.json. Update that file when .NET package references change

Nix stores the result in /nix/store; the --output option applies only to native package targets

To regenerate the NuGet dependency lockfile, build the helper exposed by the package and run it with the lockfile path

nix build ./Packaging/linux/flake#hyprism.fetch-deps
./result ./Packaging/linux/flake/nix/deps.json

Windows

The publisher installs pinned WiX tooling in a temporary directory for MSI and EXE packaging

pwsh Packaging/publish-windows.ps1 all --output dist

It verifies both Hyprism.Desktop.exe and Hyprism.LocalNode.exe before producing artifacts. ZIP contains the same application payload as the installers

macOS

The publishers use logo.svg as the Linux application icon and derive the macOS icon set from the same logo asset. The macOS publisher uses the system sips, iconutil, plutil, hdiutil, codesign, and file tools

./Packaging/publish-macos.sh dmg --output dist

It builds an Apple Silicon app bundle, checks the Local Node apphost architecture, applies an ad hoc signature, verifies it, and creates a DMG. Ad hoc signing is not notarization

Version source

Version in Sources/Hyprism.Desktop/Hyprism.Desktop.csproj is the release version source. Publishers query it through MSBuild

dotnet msbuild Sources/Hyprism.Desktop/Hyprism.Desktop.csproj \
-nologo -getProperty:Version

A release tag must equal v<Version>. The release workflow rejects a mismatched tag before packaging

CI ownership

WorkflowResponsibility
ci.ymlCore, Desktop, Local Node, and Packaging check groups
test-core.yml, test-desktop.yml, test-local-node.ymlSeparate Ubuntu, Windows, and macOS test matrices
build.ymlPlatform dispatcher
build-linux.yml, build-windows.yml, build-macos.ymlPlatform dependencies, Nix validation, and publisher calls
release.ymlVersion validation, shared package builds, release assets
docs-pages.ymlDocumentation validation and GitHub Pages deployment
reuse.ymlLicense headers and REUSE compliance

The separate Flathub workflow and Scripts/update-flathub-manifest.sh contain legacy Electron/frontend paths. They are not the maintained native packaging entry point and require migration before reuse

The Linux build workflow publishes the native Linux packages and runs nix flake check --print-build-logs for the Nix package in the same job. In ci.yml, the Packaging group waits for the Core, Desktop, and Local Node test workflows

Source: Packaging, GitHub Actions

Edit this page on GitHub