{ lib, stdenv, pkgs, myCommitId, withDebug? false, withAsan? false, ... }: stdenv.mkDerivation { pname = "xcecore"; version = "0.0.1"; src = ./..; nativeBuildInputs = with pkgs; [ meson ninja capnproto pkg-config cmake go go-swag # swagger doc generation: swag init gotools # goimports, godoc gopls # Go language server delve # Go debugger (openssl.overrideAttrs (oldAttrs: { separateDebugInfo = true; })) libtirpc readline ncurses struct2json (capnpc.overrideAttrs (oldAttrs: { separateDebugInfo = true; })) which findutils (libuv.overrideAttrs (oldAttrs: { separateDebugInfo = true; })) (elogind.overrideAttrs (oldAttrs: { separateDebugInfo = true; })) (sqlite.overrideAttrs (oldAttrs: { separateDebugInfo = true; })) (hwloc.overrideAttrs (oldAttrs: { separateDebugInfo = true; })) linux-pam tinylog unity_test_with_color libcyaml libyaml libcgroup (extralib.overrideAttrs (oldAttrs: { separateDebugInfo = true; })) packcc cacert ] ++ (if withDebug then [ (librtti_debug.overrideAttrs (oldattrs: { separateDebugInfo = true; })) ] else [ librtti ]); build-system = [ pkgs.meson ]; dontStrip = (withDebug || withAsan); separateDebugInfo = (withDebug || withAsan); impureEnvVars = [ "HOME" ]; mesonFlags =[ (lib.optional withDebug "--buildtype=debug") (lib.optional withAsan "-Db_sanitize=address") ("-Dcommit_id=" + myCommitId) "-Dcomponent=xcecore" ]; }