Skip to main content

Prerequisites

Draconis++ requires C++26 support. We recommend Clang 21+ or the latest compiler toolchain.

Required tools

  • Meson ≥1.1
  • Ninja (build backend)
  • pkg-config (for dependency discovery)
  • C++26-capable compiler:
    • Clang 21+ (recommended)
    • GCC 15+ (experimental)
    • MSVC with /std:c++latest (Windows)

Platform-specific dependencies

Required:
# Debian/Ubuntu
sudo apt install meson ninja-build pkg-config clang-21

# Arch Linux
sudo pacman -S meson ninja pkgconf clang

# Fedora
sudo dnf install meson ninja-build pkgconfig clang
Optional (for display/window manager detection):
# XCB (X11 support)
sudo apt install libxcb1-dev libxcb-randr0-dev libxau-dev libxdmcp-dev

# Wayland support
sudo apt install libwayland-dev

# pugixml (for Void Linux XBPS metadata)
sudo apt install libpugixml-dev

Installation methods

1

Clone the repository

git clone https://github.com/yourusername/draconis++.git
cd draconis++
2

Configure the build

meson setup build
Common configuration options:
# Disable examples and tests
meson setup build -Dbuild_examples=false -Dbuild_tests=false

# Enable precompiled configuration
meson setup build -Dprecompiled_config=true

# Build with static plugins (requires plugins repo)
meson setup build -Dprecompiled_config=true -Dstatic_plugins=weather

# Release build with optimizations
meson setup build --buildtype=release

# Disable package counting feature
meson setup build -Dpackagecount=disabled
See Configuration for all available options.
3

Compile

meson compile -C build
Or using the provided justfile:
just build
4

Run the CLI (optional)

./build/src/CLI/draconis++
5

Install system-wide (optional)

meson install -C build

Method 2: vcpkg integration

Draconis++ provides a vcpkg.json manifest for dependency management.
1

Set up vcpkg

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh  # or bootstrap-vcpkg.bat on Windows
2

Clone and configure with vcpkg

cd draconis++
meson setup build --wrap-mode=forcefallback
Meson will automatically use vcpkg to fetch dependencies listed in vcpkg.json:
  • asio
  • curl
  • magic-enum
  • mimalloc
3

Build

meson compile -C build

Method 3: Nix flake

The Nix flake provides a fully reproducible build environment with all dependencies.
1

Enter the dev shell

nix develop
This provides:
  • Clang 21 toolchain
  • Meson, Ninja, pkg-config
  • All static dependencies (asio, curl, magic-enum, mimalloc, etc.)
  • Platform-specific libraries (XCB, Wayland on Linux)
2

Configure and build

# Clean setup with precompiled config
clean

# Build
build

# Or run directly
run
The flake provides these convenience scripts:
  • build: Compile the project
  • clean: Wipe and reconfigure build directory
  • run: Build and execute the CLI
3

Build the Nix package

nix build
Result will be in ./result/bin/draconis++
With static plugins:
# Set the plugins source directory
export DRACONIS_PLUGINS_SRC=/path/to/plugins

# Enter dev shell
nix develop

# Configure with static plugins
clean -Dstatic_plugins=weather

build

Precompiled configuration

Precompiled configuration embeds your settings at compile-time for a fully static, portable binary.
When using -Dprecompiled_config=true, you need to create config.hpp from the example:
cp config.example.hpp config.hpp
Edit config.hpp to customize:
  • Username display
  • Logo path and protocol (Kitty, iTerm2)
  • Enabled package managers
  • UI layout (which system info rows to display)
  • Static plugin configurations (e.g., weather location)
See the Configuration guide for detailed settings.

Verifying installation

./build/src/CLI/draconis++ --version
Expected output:
Draconis++ v0.1.0
Build date: 2026-03-03
Git hash: abc1234

Build options reference

OptionTypeDefaultDescription
build_examplesbooleantrueBuild example applications (HTTP/MCP servers)
build_testsbooleantrueBuild unit tests
build_clibooleantrueBuild the CLI application
packagecountfeatureenabledEnable package manager counting
cachingfeatureenabledEnable result caching
pluginsfeatureenabledEnable plugin system
precompiled_configbooleanfalseUse compile-time configuration (disables TOML)
static_pluginsarray[]List of plugins to statically compile
xcbfeatureenabledUse XCB for X11 support (Linux/BSD)
waylandfeatureenabledUse Wayland client library (Linux/BSD)
pugixmlfeatureautoUse pugixml for XBPS metadata (Void Linux)
default_languagestringenDefault localization language
See meson.options for the complete list.

Troubleshooting

Ensure you’re using a recent compiler:
  • Clang 21+
  • GCC 15+ (experimental)
  • MSVC with /std:c++latest
Set your compiler explicitly:
CXX=clang++-21 meson setup build
When using -Dprecompiled_config=true, you must create config.hpp:
cp config.example.hpp config.hpp
Meson will automatically fetch missing dependencies via wrap files in subprojects/. Ensure you have internet access during the first build.Force dependency download:
meson setup build --wrap-mode=forcefallback

Next steps

Quick start guide

Now that Draconis++ is installed, try building your first application

Build docs developers (and LLMs) love