{ description = "Raylib + RmlUi dev shell"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, utils }: utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; rmluiSrc = pkgs.fetchFromGitHub { owner = "mikke89"; repo = "RmlUi"; rev = "9c74c4fadc2ad7f1496239e560bab19ca2fe5072"; hash = "sha256-YZz41ViE3+a0VPypnbJ1Orlf5Hyxd65se5yzyHIY7ZI="; }; rmluiCmakeFlags = [ "-DRMLUI_LUA_BINDINGS=OFF" "-DRMLUI_SVG_PLUGIN=OFF" "-DBUILD_SAMPLES=OFF" "-DBUILD_TESTING=OFF" ]; rmlui = pkgs.stdenv.mkDerivation { pname = "rmlui"; version = "master"; src = rmluiSrc; nativeBuildInputs = [ pkgs.cmake pkgs.pkg-config ]; buildInputs = [ pkgs.freetype ]; cmakeFlags = rmluiCmakeFlags ++ [ "-DBUILD_SHARED_LIBS=ON" ]; }; nativeBuildTools = with pkgs; [ cmake pkg-config clang-tools ]; nativeRuntimeDeps = with pkgs; [ raylib libGL libX11 libXcursor libXrandr libXinerama libXi wayland libxkbcommon rmlui freetype ]; in { devShells.default = pkgs.mkShell { nativeBuildInputs = nativeBuildTools; buildInputs = nativeRuntimeDeps; shellHook = '' export C_INCLUDE_PATH="${rmlui}/include:${pkgs.raylib}/include" export CPLUS_INCLUDE_PATH="$C_INCLUDE_PATH" export LIBRARY_PATH="${pkgs.lib.makeLibraryPath nativeRuntimeDeps}" export LD_LIBRARY_PATH="$LIBRARY_PATH:$LD_LIBRARY_PATH" echo "dev shell ready (raylib + rmlui)" ''; }; packages.default = pkgs.stdenv.mkDerivation { pname = "rrmlui"; version = "0.1.0"; src = ./.; nativeBuildInputs = nativeBuildTools ++ [ pkgs.makeWrapper ]; buildInputs = nativeRuntimeDeps; cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" ]; postInstall = '' wrapProgram $out/bin/rrmlui \ --prefix LD_LIBRARY_PATH : "${pkgs.lib.makeLibraryPath nativeRuntimeDeps}" ''; }; } ); }