{ lib, stdenv, fetchFromGitHub, cmake, ninja, pkg-config, validatePkgConfig, openssl, sqlcipher, boost, curl, glib, libsecret, libmaddy-markdown, testers, nix-update-script, }: stdenv.mkDerivation (finalAttrs: { pname = "libnick"; version = "2025.1.0"; src = fetchFromGitHub { owner = "NickvisionApps"; repo = "libnick"; tag = finalAttrs.version; hash = "sha256-Y7Vn9KaZjEJ29o2GouNl5B/svAtJ24El9WYgXHhnxho="; }; nativeBuildInputs = [ cmake ninja ] ++ lib.optionals stdenv.hostPlatform.isUnix [ pkg-config validatePkgConfig ]; buildInputs = [ boost libmaddy-markdown ] ++ lib.optionals stdenv.hostPlatform.isUnix [ glib openssl ] ++ lib.optional stdenv.hostPlatform.isWindows sqlcipher; propagatedBuildInputs = [ curl libsecret ]; cmakeFlags = [ (lib.cmakeBool "BUILD_TESTING" finalAttrs.finalPackage.doCheck) (lib.cmakeFeature "USE_LIBSECRET" "true") ]; postPatch = '' substituteInPlace cmake/libnick.pc.in \ --replace-fail 'libdir=''${exec_prefix}/@CMAKE_INSTALL_LIBDIR@' \ 'libdir=@CMAKE_INSTALL_FULL_LIBDIR@' \ --replace-fail 'includedir=''${prefix}/@CMAKE_INSTALL_INCLUDEDIR@' \ 'includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@' ''; passthru = { tests.pkg-config = testers.hasPkgConfigModules { package = finalAttrs.finalPackage; }; updateScript = nix-update-script { }; }; meta = { description = "Cross-platform development base for native Nickvision applications"; homepage = "https://github.com/NickvisionApps/libnick"; license = lib.licenses.gpl3Plus; maintainers = [ lib.maintainers.normalcea ]; platforms = lib.platforms.unix ++ lib.platforms.windows; pkgConfigModules = [ "libnick" ]; }; })