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
| Host | Runtime | Targets |
|---|---|---|
| Linux | linux-x64 | deb, rpm, appimage, flatpak, tar, nix |
| Windows | win-x64 | zip, msi, exe |
| macOS | osx-arm64 | dmg |
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
| Workflow | Responsibility |
|---|---|
ci.yml | Core, Desktop, Local Node, and Packaging check groups |
test-core.yml, test-desktop.yml, test-local-node.yml | Separate Ubuntu, Windows, and macOS test matrices |
build.yml | Platform dispatcher |
build-linux.yml, build-windows.yml, build-macos.yml | Platform dependencies, Nix validation, and publisher calls |
release.yml | Version validation, shared package builds, release assets |
docs-pages.yml | Documentation validation and GitHub Pages deployment |
reuse.yml | License 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