1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 cmake,
6 ninja,
7 pkg-config,
8 validatePkgConfig,
9 openssl,
10 sqlcipher,
11 boost,
12 curl,
13 glib,
14 libsecret,
15 libmaddy-markdown,
16 testers,
17 nix-update-script,
18}:
19
20stdenv.mkDerivation (finalAttrs: {
21 pname = "libnick";
22 version = "2025.6.1";
23
24 src = fetchFromGitHub {
25 owner = "NickvisionApps";
26 repo = "libnick";
27 tag = finalAttrs.version;
28 hash = "sha256-Ir2Jke1zK4pKldQJHaT0Ju0ubz7H6nx16hDNl6u48Ck=";
29 };
30
31 nativeBuildInputs = [
32 cmake
33 ninja
34 ]
35 ++ lib.optionals stdenv.hostPlatform.isUnix [
36 pkg-config
37 validatePkgConfig
38 ];
39
40 buildInputs = [
41 boost
42 libmaddy-markdown
43 ]
44 ++ lib.optionals stdenv.hostPlatform.isUnix [
45 glib
46 openssl
47 ]
48 ++ lib.optional stdenv.hostPlatform.isWindows sqlcipher;
49
50 propagatedBuildInputs = [
51 curl
52 libsecret
53 ];
54
55 cmakeFlags = [
56 (lib.cmakeBool "BUILD_TESTING" finalAttrs.finalPackage.doCheck)
57 (lib.cmakeFeature "USE_LIBSECRET" "true")
58 ];
59
60 postPatch = ''
61 substituteInPlace cmake/libnick.pc.in \
62 --replace-fail 'libdir=''${exec_prefix}/@CMAKE_INSTALL_LIBDIR@' \
63 'libdir=@CMAKE_INSTALL_FULL_LIBDIR@' \
64 --replace-fail 'includedir=''${prefix}/@CMAKE_INSTALL_INCLUDEDIR@' \
65 'includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@'
66 '';
67
68 passthru = {
69 tests.pkg-config = testers.hasPkgConfigModules { package = finalAttrs.finalPackage; };
70 updateScript = nix-update-script { };
71 };
72
73 meta = {
74 description = "Cross-platform development base for native Nickvision applications";
75 homepage = "https://github.com/NickvisionApps/libnick";
76 license = lib.licenses.gpl3Plus;
77 maintainers = [ lib.maintainers.normalcea ];
78 platforms = lib.platforms.unix ++ lib.platforms.windows;
79 pkgConfigModules = [ "libnick" ];
80 };
81})