stablyai / stablyai/orca

[Feature]: Provide a Nix flake / nixpkgs packaging for installation

Open
#20,128 1 comment 1 reaction 0 assignees View on GitHub
Dominant language
TypeScript
Stars
71.3k
Forks
4.7k
Avg merge
14h 54m
Merged PRs (30d)
520

Description

### Problem or use case

Nix users (NixOS, nix-darwin, home-manager, and non-NixOS Nix installs) have no first-class way to install Orca. The project ships Linux only as AppImage / `.deb` / `.rpm` (see `config/electron-builder.config.cjs`), and there is no `flake.nix`, no nixpkgs derivation, and no `nix run` / `nix profile install` path.

Today the only options are unofficial and undiscoverable: wrap the released AppImage with `appimage-run`, or hand-roll an `appimageTools.wrapType2` derivation. Every Nix user reinvents this, pins their own hashes, and gets no automatic updates when a new release ships.

This is adjacent to #18086 (publish a signed apt/yum repository) — the same goal of OS-native, package-manager-driven install/update, for the Nix ecosystem.

### Proposed solution

Provide official Nix packaging so Orca can be installed and run reproducibly:

- Add a `flake.nix` at the repo root exposing:
- `packages.{x86_64-linux,aarch64-linux}.default` — an `appimageTools.wrapType2` package that fetches the release AppImage (`orca-linux.AppImage` / `orca-linux-arm64.AppImage`) and extracts the `.desktop` entry + icon.
- `apps.default` so `nix run github:stablyai/orca` just works.
- (optional) a dev shell for contributors (node + pnpm + electron/native-module deps).
- Pin version + AppImage hashes per release; a small CI step on tag can bump them automatically.
- Longer term: a nixpkgs submission (`pkgs/by-name/or/orca`) with an update script, so `nix run nixpkgs#orca` / `nix profile install nixpkgs#orca` work out of the box.

Orca is MIT-licensed, so redistribution via Nix is unencumbered.

### Alternatives or additional context

- **Current unofficial workaround:** `nix run nixpkgs#appimage-run -- ./orca-linux.AppImage`, or a personal `appimageTools.wrapType2` derivation. These aren't discoverable, don't auto-update, and push hash maintenance onto each user.
- **Related:** #18086 (signed apt/yum repositories) — a Nix flake is the same idea for the Nix ecosystem.
- The only pre-existing Nix touch-point in the repo is #9198 (editor syntax highlighting for `.nix` files), which is unrelated to installation.
- Building from source under Nix is possible but heavy (pnpm + electron + native modules such as `sherpa-onnx`, `agent-browser`, and the computer-use runtime); wrapping the published AppImage is the low-friction path and keeps parity with official releases.

Happy to contribute the initial `flake.nix` (AppImage `wrapType2` package + `apps.default`) as a PR if there's interest.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing config/electron-builder.config.cjs and the released Linux AppImage names and hashes. Define the root flake around the published AppImages, then verify that packages.default and apps.default support the requested nix run and nix profile install flows, including desktop metadata and icons.

Written by the indexing model from the issue text.

Assessment

Domain
build-system, release
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.