Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 118 lines 2.9 kB view raw
1{ 2 lib, 3 stdenv, 4 cmake, 5 curl, 6 fetchFromGitHub, 7 hunspell, 8 pkg-config, 9 qmake, 10 qtbase, 11 qtwebengine, 12 wrapGAppsHook3, 13 wrapQtAppsHook, 14}: 15let 16 version = "2.0.0"; 17 srcs = { 18 mindforger = fetchFromGitHub { 19 owner = "dvorka"; 20 repo = "mindforger"; 21 rev = version; 22 sha256 = "sha256-+8miV2xuQcaWGdWCEXPIg6EXjAHtgD9pX7Z8ZNhpMjA="; 23 }; 24 cmark-gfm = fetchFromGitHub { 25 owner = "dvorka"; 26 repo = "cmark"; 27 rev = "4ca8688093228c599432a87d7bd945804c573d51"; 28 sha256 = "sha256-0WiG8aot8mc0h1BKPgC924UKQrgunZvKKBy9bD7nhoQ="; 29 }; 30 mindforger-repository = fetchFromGitHub { 31 owner = "dvorka"; 32 repo = "mindforger-repository"; 33 rev = "ec81a27e5de6408bbcd3f6d7733a7c6f3b52e433"; 34 sha256 = "sha256-JGTP1He7G2Obmsav64Lf7BLHp8OTvPtg38VHsrEC36o="; 35 }; 36 }; 37in 38stdenv.mkDerivation { 39 pname = "mindforger"; 40 inherit version; 41 42 src = srcs.mindforger; 43 44 nativeBuildInputs = [ 45 cmake 46 pkg-config 47 qmake 48 wrapGAppsHook3 49 wrapQtAppsHook 50 ]; 51 buildInputs = [ 52 curl 53 hunspell 54 qtbase 55 qtwebengine 56 ]; 57 58 # Disable the cmake hook (so we don't try to build MindForger with it), and 59 # build MindForger's internal fork of cmark-gfm ahead of MindForger itself. 60 # 61 # Moreover unpack the docs that are needed for the MacOS build. 62 postUnpack = '' 63 cp -TR ${srcs.cmark-gfm} $sourceRoot/deps/cmark-gfm 64 '' 65 + lib.optionalString stdenv.hostPlatform.isDarwin '' 66 cp -TR ${srcs.mindforger-repository} $sourceRoot/doc 67 ''; 68 dontUseCmakeConfigure = true; 69 preBuild = '' 70 ( 71 mkdir deps/cmark-gfm/build && 72 cd deps/cmark-gfm/build && 73 cmake -DCMARK_TESTS=OFF -DCMARK_SHARED=OFF .. && 74 cmake --build . --parallel 75 )''; 76 77 doCheck = true; 78 79 patches = [ 80 ./hunspell_pkgconfig.patch 81 ]; 82 83 postPatch = '' 84 substituteInPlace lib/src/install/installer.cpp --replace /usr "$out" 85 substituteInPlace app/resources/gnome-shell/mindforger.desktop --replace /usr "$out" 86 for f in app/app.pro lib/lib.pro; do 87 substituteInPlace "$f" --replace "QMAKE_CXX = g++" "" 88 done 89 ''; 90 91 qmakeFlags = [ 92 "-r" 93 "mindforger.pro" 94 "CONFIG+=mfnoccache" 95 "CONFIG+=mfwebengine" 96 ]; 97 98 postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' 99 mkdir "$out"/Applications 100 mv app/mindforger.app "$out"/Applications/ 101 ''; 102 103 meta = with lib; { 104 description = "Thinking Notebook & Markdown IDE"; 105 longDescription = '' 106 MindForger is actually more than an editor or IDE - it's human 107 mind inspired personal knowledge management tool 108 ''; 109 homepage = "https://www.mindforger.com"; 110 license = licenses.gpl2Plus; 111 platforms = [ 112 "aarch64-linux" 113 "x86_64-linux" 114 ]; 115 maintainers = with maintainers; [ cyplo ]; 116 mainProgram = "mindforger"; 117 }; 118}