x86_64
The primary target, and the one the release is built around.
Building
nix build .#kernel # or .#kernel-debug
nix build .#kexts
nix build .#kc
nix build .#image-minimal # or .#image for the full desktop image
nix run .#vm # or .#kvm
What works
Boot and core system. Boots to a zsh prompt from an ext4 root, on QEMU and on real
hardware. launchd, XPC and notifyd run; ioreg, sw_vers and the rest of the userland
work.
Filesystems. ext4 as root, with a journal, UBC coherence and a recursive filesystem
lock. HFS+ works too; image-hfs uses it both to bisect against ext4 and to give macOS
users an image they can actually mount. msdosfs and apfs are present.
Networking. DHCP end to end through IPConfiguration, unicast DNS through
mDNSResponder, and curl in the guest. Drivers for e1000 (PDE1000), Realtek 8111 and
virtio-net.
Graphics. Real Xorg from the xfree86 tree, on IOGOPFramebuffer through the
project’s own xf86-video-puredarwingop driver. Mesa provides llvmpipe for OpenGL and
lavapipe for Vulkan, both software rasterisers, with virgl as the default renderer when
the host offers it. There is a working OpenGL.framework over OSMesa, GLX reports GL
4.6 on llvmpipe, and vkcube renders on lavapipe.
Desktops. Xfce on X11, and sway on wlroots for Wayland, with Xwayland for X clients.
image-wayland is a Wayland-only build with the X client stack removed.
Applications. Wine runs GUI applications (notepad, winecfg on X11, explorer under sway through winewayland.drv). GTK3, WebKitGTK in progress, dillo, netsurf, xterm and the usual X utilities.
Toolchains in the guest. cmake, ninja, meson, clang, tcc and rustc all run on PureDarwin itself, which is what makes in-guest development possible at all.
Audio. RavynHDAudio against Intel HDA.
Known rough edges
- Some hardware needs the workarounds listed in Running on real hardware, notably the AMD PCI window and bridge aperture issues.
libm’spow()is inaccurate for fractional exponents. Avoid it in ports untilpd_libm_pow.cis fixed.
Hardware support
Storage over AHCI, ATA, NVMe and USB mass storage; USB through EHCI, OHCI, UHCI and
xHCI; PS/2 and USB input; Intel gen9 (Skylake, Kaby Lake, Gemini Lake) framebuffer
modesetting through lil; virtio block, net and GPU.