# GitHub - darlinghq/darling: Darwin/macOS emulation layer for Linux

[![Darling logo](https://camo.githubusercontent.com/262059342f9683abbccd541060b4b343e74a21d5ad06f72b618aa41c090b6355/68747470733a2f2f6461726c696e6768712e6f72672f696d672f6461726c696e673235302e706e67)](https://darlinghq.org/)

* * *

[![Darling Latest Release](https://camo.githubusercontent.com/ca7caaa03fa10dda631b2c66945169658baa2ddcc22a356bec0c5c8eb089ef33/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c61746573742d72656c656173652d3036383843422e737667)](https://github.com/darlinghq/darling/releases/latest) [![License](https://camo.githubusercontent.com/22e943a5d111a9762062ccd7c8585ce7a7b190573bcf30b7a960a87a98e76f06/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d474e555f47504c5f332e302d4534344534412e737667)](https://github.com/darlinghq/darling/blob/master/LICENSE) [![Donate](https://camo.githubusercontent.com/828bdb8124be340920d5ecd204303fe7eb225c55d181193466b51169e66a2736/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2532342d646f6e6174652d4646383133462e737667)](https://opencollective.com/darlinghq)

## Quick links

[](#quick-links)

[Website](https://darlinghq.org/) • [Community Discord](https://discord.gg/XRD3mQA) • [Bug Tracker](https://github.com/darlinghq/darling/issues)

## Introduction

[](#introduction)

Darling is a runtime environment that allows running macOS applications on Linux without a virtual machine. It consists of a Mach-O binary loader and a userspace kernel server (darlingserver) that implements macOS's Mach IPC, POSIX, and Darwin syscall interfaces on top of Linux — along with reimplementations of Apple's frameworks, such as Foundation, AppKit (based on Cocotron), CoreAudio, and CoreFoundation.

Darling's low-level components (XNU, libSystem, Security) are based on [Apple's open-source](https://github.com/apple-oss-distributions) releases. Higher-level frameworks are being actively reimplemented, with many CLI tools already functional. GUI application support is in active development, backed by an AppKit implementation and an initial Metal backend powered by Vulkan translation.

The code of Darling is licensed under [GNU GPL 3.0](https://github.com/darlinghq/darling/blob/master/LICENSE). Individual submodules may be licensed differently, as indicated within each of them.

## Install

[](#install)

Official packages for some distributions are available under [releases](https://github.com/darlinghq/darling/releases).

### Community Packages

[](#community-packages)

Caution

**These packages are neither maintained nor vetted by the Darling team.**  
Use them at your own risk.

For a list of community packages, see the [Community Packages](https://docs.darlinghq.org/community/packages.html) section in the Darling documentation.

## Build Instructions

[](#build-instructions)

For build instructions, visit [Darling Docs](https://docs.darlinghq.org/build-instructions.html).

## Usage

[](#usage)

### Prefixes

[](#prefixes)

Darling has support for DPREFIXes, which are very similar to WINEPREFIXes. They are virtual “chroot” environments with a macOS-like filesystem structure, where you can install software safely. The default DPREFIX location is `~/.darling`, but this can be changed by exporting an identically named environment variable. A prefix is automatically created and initialized on first use.

Please note that we use `overlayfs` for creating prefixes, and so we cannot support putting prefix on a filesystem like NFS or eCryptfs. In particular, the default prefix location won't work if you have an encrypted home directory.

### Hello world

[](#hello-world)

Let's start with a Hello world:

```
$ darling shell echo Hello world
Hello world
```

Congratulations, you have printed Hello world through Darling's OS X system call emulation and runtime libraries.

### Installing software

[](#installing-software)

#### Working with `.pkg` files

[](#working-with-pkg-files)

You can install `.pkg` packages with the installer tool available inside shell. It is a somewhat limited cousin of OS X's installer:

```
$ darling shell
Darling [~]$ installer -pkg mc-4.8.7-0.pkg -target /
```

> Darling does not support installing [`.mpkg`](https://github.com/darlinghq/darling/issues/1662) files yet

The Midnight Commander package from the above example is [available for download](https://darling-misc.s3.eu-central-1.amazonaws.com/mc-4.8.7-0.pkg).

You can uninstall and list packages with the `uninstaller` command.

#### Working with DMG images

[](#working-with-dmg-images)

DMG images can be attached and detached from inside `darling shell` with `hdiutil`. This is how you can install Xcode along with its toolchain and SDKs (note that Xcode itself doesn't run yet):

```
Darling [~]$ hdiutil attach Xcode_7.2.dmg
/Volumes/Xcode_7.2
Darling [~]$ cp -r /Volumes/Xcode_7.2/Xcode.app /Applications
Darling [~]$ export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
Darling [~]$ echo 'void main() { puts("Hello world"); }' > helloworld.c
Darling [~]$ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang helloworld.c -o helloworld
Darling [~]$ ./helloworld
Hello world
```

Congratulations, you have just compiled and run your own Hello world application with Apple's toolchain.

#### Working with XIP archives

[](#working-with-xip-archives)

Xcode is now distributed in `.xip` files. These can be installed using `unxip`:

```
cd /Applications
unxip Xcode_11.3.xip
```