{ description = "C++ RmlUI + Raylib development environemt"; 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; }; rmlui = pkgs.stdenv.mkDerivation rec { pname = "rmlui"; version = "master"; src = pkgs.fetchFromGitHub { owner = "mikke89"; repo = "RmlUi"; rev = "9c74c4fadc2ad7f1496239e560bab19ca2fe5072"; hash = "sha256-YZz41ViE3+a0VPypnbJ1Orlf5Hyxd65se5yzyHIY7ZI="; }; nativeBuildInputs = [ pkgs.cmake pkgs.pkg-config ]; buildInputs = [ pkgs.freetype pkgs.lunasvg pkgs.lua ]; cmakeFlags = [ "-DRMLUI_LUA_BINDINGS=ON" "-DRMLUI_LUA_BINDINGS_LIBRARY=lua" "-DRMLUI_SVG_PLUGIN=ON" "-DBUILD_SHARED_LIBS=ON" "-DBUILD_SAMPLES=OFF" "-DBUILD_TESTING=OFF" "-DNO_FONT_INTERFACE_DEFAULT=OFF" ]; }; buildDeps = with pkgs; [ cmake pkg-config gcc clang-tools lua-language-server ]; runtimeDeps = with pkgs; [ raylib glfw libGL clang-tools libX11 libXcursor libXrandr libXinerama libXi wayland libxkbcommon rmlui freetype lunasvg lua lua-language-server ]; in { devShells.default = pkgs.mkShell { nativeBuildInputs = buildDeps; buildInputs = runtimeDeps; shellHook = '' export CP_PATH="${pkgs.raylib}/include:${pkgs.glfw}/include:${rmlui}/include" export LIBRARY_PATH="${pkgs.raylib}/lib:${pkgs.glfw}/lib:${pkgs.libGL}/lib:${rmlui}/lib" export LD_LIBRARY_PATH="$LIBRARY_PATH:$LD_LIBRARY_PATH" echo "Env ready" ''; }; packages.default = pkgs.stdenv.mkDerivation { pname = "sessionzero"; version = "0.1.0"; src = ./.; nativeBuildInputs = buildDeps ++ [ pkgs.makeWrapper ]; buildInputs = runtimeDeps; cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" ]; postInstall = '' wrapProgram $out/bin/''$pname \ --prefix LD_LIBRARY_PATH : "${pkgs.lib.makeLibraryPath runtimeDeps}" ''; }; } ); }