openAgent
gitlabThe open source UNIVERSAL agent.
clone
https://gitlab.com/bitzzdev/openAgent.gitAIagentautomationopen-sourceuniversal-agent
{lib,stdenv,bun,nodejs,darwin,electron_41,makeWrapper,writableTmpDirAsHomeHook,autoPatchelfHook,copyDesktopItems,makeDesktopItem,opencode,}:letelectron = electron_41;instdenv.mkDerivation (finalAttrs: {pname = "opencode-desktop";inherit (opencode)versionsrcnode_modulespatches;nativeBuildInputs = [bunnodejsmakeWrapperwritableTmpDirAsHomeHook]++ lib.optionals stdenv.hostPlatform.isLinux [autoPatchelfHookcopyDesktopItems]++ lib.optionals stdenv.hostPlatform.isDarwin [# Ad-hoc sign the .app: --config.mac.identity=null below skips signing.darwin.autoSignDarwinBinariesHook];buildInputs = lib.optionals stdenv.hostPlatform.isLinux [(lib.getLib stdenv.cc.cc)];desktopItems = lib.optional stdenv.hostPlatform.isLinux (makeDesktopItem {name = "ai.opencode.desktop";desktopName = "OpenCode";exec = "opencode-desktop %U";icon = "ai.opencode.desktop";# Electron 41 derives X11 WM_CLASS from app.name.startupWMClass = "OpenCode";categories = [ "Development" ];});env = opencode.env // {ELECTRON_SKIP_BINARY_DOWNLOAD = "1";};postPatch =# NOTE: Relax Bun version check to be a warning instead of an error''substituteInPlace packages/script/src/index.ts \--replace-fail 'throw new Error(`This script requires bun@''${expectedBunVersionRange}' \'console.warn(`Warning: This script requires bun@''${expectedBunVersionRange}'''# https://github.com/electron/electron/issues/31121# mac builds use a .app bundle which doesnt have this issue+ lib.optionalString stdenv.isLinux ''BASE_PATH=packages/desktopFILES=(src/main/windows.ts)for file in "''${FILES[@]}"; dosubstituteInPlace $BASE_PATH/$file \--replace-fail "process.resourcesPath" "'$out/opt/opencode-desktop/resources'"done'';preBuild = ''cp -r "${electron.dist}" $HOME/.electron-distchmod -R u+w $HOME/.electron-distcp -R ${finalAttrs.node_modules}/. .patchShebangs node_modulespatchShebangs packages/*/node_modules'';buildPhase = ''runHook preBuildcd packages/desktopbun run buildnpx electron-builder --dir \--config electron-builder.config.ts \--config.mac.identity=null \--config.electronDist="$HOME/.electron-dist"runHook postBuild'';installPhase = ''runHook preInstall''+ lib.optionalString stdenv.hostPlatform.isDarwin ''mkdir -p $out/Applicationsmv dist/mac*/*.app $out/ApplicationsmakeWrapper "$out/Applications/OpenCode.app/Contents/MacOS/OpenCode" $out/bin/opencode-desktop''+ lib.optionalString stdenv.hostPlatform.isLinux ''mkdir -p $out/opt/opencode-desktopcp -r dist/linux*-unpacked/{resources,LICENSE*} $out/opt/opencode-desktopinstall -Dm644 resources/icons/32x32.png \"$out/share/icons/hicolor/32x32/apps/ai.opencode.desktop.png"install -Dm644 resources/icons/64x64.png \"$out/share/icons/hicolor/64x64/apps/ai.opencode.desktop.png"install -Dm644 resources/icons/128x128.png \"$out/share/icons/hicolor/128x128/apps/ai.opencode.desktop.png"install -Dm644 resources/icons/128x128@2x.png \"$out/share/icons/hicolor/256x256/apps/ai.opencode.desktop.png"install -Dm644 resources/icons/icon.png \"$out/share/icons/hicolor/512x512/apps/ai.opencode.desktop.png"install -Dm644 resources/ai.opencode.desktop.metainfo.xml \"$out/share/metainfo/ai.opencode.desktop.metainfo.xml"makeWrapper ${lib.getExe electron} $out/bin/opencode-desktop \--inherit-argv0 \--set ELECTRON_FORCE_IS_PACKAGED 1 \--add-flags $out/opt/opencode-desktop/resources/app.asar \--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"''+ ''runHook postInstall'';autoPatchelfIgnoreMissingDeps = ["libc.musl-x86_64.so.1"];meta = {description = "OpenCode Desktop App";mainProgram = "opencode-desktop";inherit (opencode.meta) homepage license platforms;};})