Об этом проекте

Cider — это среда выполнения macOS-приложений на Linux, форк Darling, лицензированный под GPLv3 или более поздней версии. Он запускает бинарники Mach-O непосредственно на ядре Linux через собственные dyld, libSystem и слой эмуляции ядра, без виртуальной машины и без ядра Apple. Проект находится на ранней стадии: программы командной строки работают, но большинство графических приложений — нет. Автоматизированные проверки в репозитории проверяют оболочку, загрузку через launchd, работу Nix внутри контейнера, JavaScriptCore, libdispatch, Security, CoreAudio, мосты сценариев, простейшее окно AppKit на Wayland и достижение гостевым бинарником Wayland-композитора. Графический бэкенд работает только через Wayland; запасного варианта через X11 или DISPLAY нет. Документировано, что LibreOffice отрисовывается, принимает ввод с клавиатуры и мыши, изменяет размер, открывает меню и файловые диалоги и вставляет изображение, однако это выполняется вручную, а не автоматической проверкой. Cider собирается с помощью Nix и Buck2. Nix — единственный поддерживаемый способ упаковки; дистрибутивного пакета или тарбола нет. Полная сборка имеет большой размер, доступна минимальная сборка, исключающая GUI-фреймворки, приватные фреймворки и языки сценариев. Установка поддерживается на NixOS через модуль, а в других системах — командой nix profile install. Cider использует CIDERPREFIX, аналогичные WINEPREFIX: виртуальные chroot-подобные окружения с файловой системой в стиле macOS, где программное обеспечение можно устанавливать безопасно. Префикс по умолчанию — ~/.cider, его можно изменить через переменную окружения CIDERPREFIX. Префиксы используют overlayfs и поэтому не могут находиться на NFS или eCryptfs, а расположение по умолчанию не будет работать с зашифрованным домашним каталогом. Репозиторий организован на гостевыми исходниками Darwin, хостовыми исходниками Linux, правилами и инструментальными цепочками Buck2, встроенными сторонними компонентами, упаковкой Nix и скриптами разработчика на основе nushell. Разработку можно вести без Nix, напрямую используя Buck2 после получения инструментальной цепочки, что позволяет быстро пересобирать проект после изменения одного файла.