darling
Darwin/macOS emulation layer for Linux
Compatibility layer that lets Linux users run macOS command-line programs without a Mac, by reimplementing the system libraries those programs depend on.
Darling is a compatibility layer that lets Linux users run macOS command-line applications without owning a Mac. It works by reimplementing the low-level system calls and runtime libraries that macOS programs expect, so those programs behave as if they are running on a real Mac while the underlying operating system remains Linux. The project is written primarily in Objective-C and C, which are the same languages used by Apple's own system frameworks.
The project is in active development, and most GUI applications do not run yet. The current focus is command-line tools and developer utilities. You can run macOS shell commands through Darling, install macOS package files (.pkg), mount disk image files (.dmg), and even compile code with Apple's Xcode toolchain if you supply a copy of the Xcode installer.
Darling uses a concept called a prefix (borrowed from the WINE project, which does something similar for Windows software on Linux). A prefix is a sandboxed folder that mimics the macOS filesystem structure. Software you install inside Darling goes into this prefix, keeping it separate from your main Linux system. The default prefix lives at ~/.darling in your home folder and is created automatically on first use.
Note that prefixes cannot be stored on certain encrypted or network filesystems, including encrypted home directories on some Linux setups. Pre-built packages are available for several Linux distributions under the Releases tab. Full build instructions are in the project's online documentation.
Where it fits
- Run macOS shell tools and developer utilities on a Linux machine without owning a Mac
- Install and test macOS .pkg packages in a sandboxed folder on Linux
- Compile Apple platform code using the Xcode toolchain on a Linux server
- Experiment with macOS command-line scripts in an isolated prefix environment