Skip to content

feat(nixos): add Orca desktop AppImage for Linux - #2243

Closed
shunkakinoki wants to merge 1 commit into
mainfrom
feat/orca-desktop-nixos
Closed

feat(nixos): add Orca desktop AppImage for Linux#2243
shunkakinoki wants to merge 1 commit into
mainfrom
feat/orca-desktop-nixos

Conversation

@shunkakinoki

@shunkakinoki shunkakinoki commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add orca-desktop overlay wrapping the Orca AppImage (v1.4.168) with appimageTools.wrapType2
  • Supports both x86_64 and aarch64 Linux
  • Add to Linux desktop packages list (isLinux && isDesktop)
  • Installs .desktop file and icons from the AppImage

Test plan

  • darwin build passes (overlay parses cleanly)
  • nixos-rebuild switch on matic installs orca-desktop

Generated with Claude Code

https://claude.ai/code/session_01CvLckVfp8KatB5BBJw5GGt


Summary by cubic

Adds orca-desktop AppImage (v1.4.168) as a Nix overlay and includes it in the Linux desktop package set. Also bumps moshi-hook to 0.2.70.

  • New Features

    • Added orca-desktop overlay using appimageTools.wrapType2 for x86_64 and aarch64 Linux.
    • Installed .desktop file and icons; Exec updated to call the wrapped binary.
    • Included orca-desktop in home-manager packages for Linux desktops.
  • Dependencies

    • Updated moshi-hook to 0.2.70 with refreshed hashes.

Written for commit 24d7227. Summary will update on new commits.

Review in cubic

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@indent-zero

indent-zero Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Warning

Indent Zero is shutting down on August 7th. Please migrate over to Indent 2.0 to continue getting PR reviews.

PR Summary

Adds a new Linux-only orca-desktop package (Stably AI's Orca IDE) via appimageTools.wrapType2 and installs it into the Linux desktop home-manager package list. Also incidentally bumps moshi-hook from 0.2.69 to 0.2.70 with refreshed hashes.

  • New overlay entry in overlays/default.nix that packages orca-linux[-arm64].AppImage v1.4.168 for x86_64/aarch64 Linux, installs orca-ide.desktop (rewriting Exec=AppRunExec=$out/bin/orca-desktop), and copies the hicolor icon set so Icon=orca-ide resolves.
  • Adds orca-desktop to the stdenv.isLinux && isDesktop block in home-manager/packages/default.nix.
  • Version bump for moshi-hook (0.2.69 → 0.2.70) with new Darwin/Linux × x86_64/aarch64 sha256 values.

Issues

3 potential issues found:

  • Nit: orca-desktop uses appimageTools.wrapType2 (Linux-only) but sets no meta.platforms, so downstream consumers evaluating the overlay on Darwin surface a confusing appimageTools error instead of a standard unsupported-system message. Add meta.platforms = prev.lib.platforms.linux; (ideally with mainProgram/description/homepage too). → Autofix
  • Latent: cp -r ${contents}/usr/share/icons $out/share/icons 2>/dev/null || true swallows every error, so if a future Orca release reorganizes icon paths the derivation still succeeds but ships without icons and no build-time signal. → Autofix
  • Latent: substituteInPlace ... --replace-warn 'Exec=AppRun' only warns when the sentinel is missing, so a future upstream Exec-line change would ship a .desktop with Exec=AppRun ... that isn't on PATH — desktop launch silently breaks with no build signal. Use --replace-fail. → Autofix

CI Checks

All 9 failing checks are unrelated to this PR — they trace to files not modified here and reproduce on main. This PR touches only overlays/default.nix and home-manager/packages/default.nix; none of the failures reference either.

Failing nix-check / nix-format
  • treefmt --fail-on-change flags spec/dotfiles_updater_spec.sh:28 (wants 'HOST=${canonicalHost}' instead of "HOST=\${canonicalHost}"). That line was introduced by commit b885dc51 on main, not this PR.
Failing nix-check / nix-flake
  • nix flake check fails on checks.x86_64-linux.treefmt for the same spec/dotfiles_updater_spec.sh formatting issue — pre-existing on main.
Failing nix-check / nix-test
  • Same treefmt-check failure on spec/dotfiles_updater_spec.sh — pre-existing on main.
Failing nix-check (aggregate)
  • Aggregate failure driven by the three treefmt-related failures above.
Failing lua-check / lua-neovim
  • Luacheck error in home-manager/programs/neovim/init.lua — a file not touched by this PR.
Failing lua-check (aggregate)
  • Aggregate failure driven by the lua-neovim failure above.
Failing shell-check / shell-test
  • Shellspec failure in spec/openclaw_hydrate_spec.sh:242 (hydrate.sh declarative template contains no configured group identifiers WARNED) — a spec file not touched by this PR.
Failing shell-check (aggregate)
  • Aggregate failure driven by shell-test above.
Failing upgrade-check
  • make skills-install fails due to YAML parse errors in agent-compatibility/skills/check-agent-compatibility/SKILL.md and plugins/skill-scout/skills/skill-scout/SKILL.md (nested mappings in compact mappings). Unrelated to this PR.

⚡ Autofix All Issues

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added Orca Desktop to the Linux desktop package list.
    • Added Orca Desktop version 1.4.168 with desktop integration and application icon support.
  • Updates

    • Updated Moshi Hook to version 0.2.70 with refreshed platform support.

Walkthrough

Changes

orca-desktop package

Layer / File(s) Summary
Add and install orca-desktop
overlays/default.nix, home-manager/packages/default.nix
The overlay packages orca-desktop version 1.4.168 from an architecture-specific AppImage. It installs the desktop entry and bundled icons. Linux desktop configurations include the package.

moshi-hook package

Layer / File(s) Summary
Update moshi-hook sources
overlays/default.nix
moshi-hook changes from version 0.2.69 to 0.2.70. Platform-specific source hashes are updated.

Estimated code review effort: 2 (Simple) | ~10 minutes

Sequence Diagram(s)

sequenceDiagram
  participant DesktopPackages as Linux desktop package list
  participant OrcaDesktop as orca-desktop derivation
  participant AppImageSource as AppImage source
  participant InstallTree as Installation tree
  DesktopPackages->>OrcaDesktop: Include orca-desktop
  OrcaDesktop->>AppImageSource: Select architecture-specific download and hash
  AppImageSource-->>OrcaDesktop: Provide AppImage
  OrcaDesktop->>InstallTree: Extract AppImage and install desktop entry
  OrcaDesktop->>InstallTree: Copy bundled icons when available
Loading

Possibly related PRs

Poem

A rabbit hops past packages bright,
Orca joins the desktop night.
Moshi’s hook gets version-new,
With hashes checked for platforms too.
AppImage icons bloom in place.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the primary change: adding the Orca desktop AppImage for Linux.
Description check ✅ Passed The description directly explains the Orca overlay, supported platforms, package integration, installed files, and test status.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/orca-desktop-nixos

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Comment thread overlays/default.nix
in
''
install -Dm644 ${contents}/orca-ide.desktop $out/share/applications/orca-ide.desktop
substituteInPlace $out/share/applications/orca-ide.desktop \

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Silent Exec breakage on upstream change: --replace-warn only warns when Exec=AppRun isn't found. If a future Orca release rewords the Exec line (e.g., ships Exec=./AppRun or Exec=orca-ide), this substitution will no-op, and orca-ide.desktop will be installed with the original Exec=AppRun --no-sandbox %U — which is not on user PATH, so the desktop launcher stops working with no build-time signal. Prefer --replace-fail 'Exec=AppRun' so the build fails loudly and forces the fix.

Suggested change
substituteInPlace $out/share/applications/orca-ide.desktop \
substituteInPlace $out/share/applications/orca-ide.desktop \
--replace-fail 'Exec=AppRun' "Exec=$out/bin/${pname}"

Comment thread overlays/default.nix
install -Dm644 ${contents}/orca-ide.desktop $out/share/applications/orca-ide.desktop
substituteInPlace $out/share/applications/orca-ide.desktop \
--replace-warn 'Exec=AppRun' "Exec=$out/bin/${pname}"
cp -r ${contents}/usr/share/icons $out/share/icons 2>/dev/null || true

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Silent icon loss on upstream restructure: 2>/dev/null || true masks every failure mode of this copy — missing source dir, permission errors, etc. Today the AppImage does ship usr/share/icons/hicolor/*/apps/orca-ide.png (verified via --appimage-extract), so the guard is unnecessary. If upstream later moves icons, the build will still succeed and users get a .desktop with Icon=orca-ide that resolves to nothing. Recommend dropping the guard (or replacing it with an explicit if [ -d ... ] + comment explaining why it's optional).

Suggested change
cp -r ${contents}/usr/share/icons $out/share/icons 2>/dev/null || true
cp -r ${contents}/usr/share/icons $out/share/icons

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
overlays/default.nix (1)

104-127: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Add a meta block to the derivation.

The derivation lacks meta.platforms, meta.description, and meta.mainProgram. Add these for consistency with other package derivations and to improve discoverability with nix search and platform filtering.

♻️ Proposed addition
       extraInstallCommands =
         let
           contents = prev.appimageTools.extractType2 { inherit pname version src; };
         in
         ''
           install -Dm644 ${contents}/orca-ide.desktop $out/share/applications/orca-ide.desktop
           substituteInPlace $out/share/applications/orca-ide.desktop \
             --replace-warn 'Exec=AppRun' "Exec=$out/bin/${pname}"
           cp -r ${contents}/usr/share/icons $out/share/icons 2>/dev/null || true
         '';
+      meta = with prev.lib; {
+        description = "Orca desktop application";
+        homepage = "https://github.com/stablyai/orca";
+        platforms = [ "x86_64-linux" "aarch64-linux" ];
+        mainProgram = pname;
+      };
     };
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@overlays/default.nix` around lines 104 - 127, Add a meta block to the
orca-desktop derivation defining platforms, a concise description, and
mainProgram set to the package executable. Use the existing pname and supported
architecture condition to align metadata with the derivation.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@overlays/default.nix`:
- Around line 104-127: Add a meta block to the orca-desktop derivation defining
platforms, a concise description, and mainProgram set to the package executable.
Use the existing pname and supported architecture condition to align metadata
with the derivation.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f6734b8a-f06e-4a8d-9327-4b7ebd14ad1e

📥 Commits

Reviewing files that changed from the base of the PR and between 33caa5f and 24d7227.

📒 Files selected for processing (2)
  • home-manager/packages/default.nix
  • overlays/default.nix

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 2 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="overlays/default.nix">

<violation number="1" location="overlays/default.nix:125">
P3: The `cp -r ... 2>/dev/null || true` swallows every failure mode of this icon copy (missing source dir, permission errors, etc.), so if a future Orca release restructures or removes the icons directory, the build will still succeed silently while the installed `.desktop` entry's `Icon=orca-ide` resolves to nothing. Consider dropping the error-suppressing guard, or replace it with an explicit `if [ -d ... ]` check plus a comment explaining why missing icons are acceptable.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread overlays/default.nix
install -Dm644 ${contents}/orca-ide.desktop $out/share/applications/orca-ide.desktop
substituteInPlace $out/share/applications/orca-ide.desktop \
--replace-warn 'Exec=AppRun' "Exec=$out/bin/${pname}"
cp -r ${contents}/usr/share/icons $out/share/icons 2>/dev/null || true

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The cp -r ... 2>/dev/null || true swallows every failure mode of this icon copy (missing source dir, permission errors, etc.), so if a future Orca release restructures or removes the icons directory, the build will still succeed silently while the installed .desktop entry's Icon=orca-ide resolves to nothing. Consider dropping the error-suppressing guard, or replace it with an explicit if [ -d ... ] check plus a comment explaining why missing icons are acceptable.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At overlays/default.nix, line 125:

<comment>The `cp -r ... 2>/dev/null || true` swallows every failure mode of this icon copy (missing source dir, permission errors, etc.), so if a future Orca release restructures or removes the icons directory, the build will still succeed silently while the installed `.desktop` entry's `Icon=orca-ide` resolves to nothing. Consider dropping the error-suppressing guard, or replace it with an explicit `if [ -d ... ]` check plus a comment explaining why missing icons are acceptable.</comment>

<file context>
@@ -100,6 +100,32 @@
+          install -Dm644 ${contents}/orca-ide.desktop $out/share/applications/orca-ide.desktop
+          substituteInPlace $out/share/applications/orca-ide.desktop \
+            --replace-warn 'Exec=AppRun' "Exec=$out/bin/${pname}"
+          cp -r ${contents}/usr/share/icons $out/share/icons 2>/dev/null || true
+        '';
+    };
</file context>
Suggested change
cp -r ${contents}/usr/share/icons $out/share/icons 2>/dev/null || true
cp -r ${contents}/usr/share/icons $out/share/icons

@shunkakinoki

Copy link
Copy Markdown
Owner Author

Closing per maintainer decision — not moving forward with Orca desktop AppImage.\n\nIf this should stay for future reference, reopen and we can rebase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant