[Feature]: Provide a Nix flake / nixpkgs packaging for installation
- 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
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