about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/graphics/drawpile/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/graphics/drawpile/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/graphics/drawpile/default.nix109
1 files changed, 109 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/graphics/drawpile/default.nix b/nixpkgs/pkgs/applications/graphics/drawpile/default.nix
new file mode 100644
index 000000000000..ea07e2314217
--- /dev/null
+++ b/nixpkgs/pkgs/applications/graphics/drawpile/default.nix
@@ -0,0 +1,109 @@
+{ stdenv
+, lib
+, mkDerivation
+, fetchFromGitHub
+, extra-cmake-modules
+
+# common deps
+, karchive
+
+# client deps
+, qtbase
+, qtkeychain
+, qtmultimedia
+, qtsvg
+, qttools
+, libsecret
+
+# optional client deps
+, giflib
+, kdnssd
+, libvpx
+, miniupnpc
+, qtx11extras # kis
+
+# optional server deps
+, libmicrohttpd
+, libsodium
+, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd
+, systemd ? null
+
+# options
+, buildClient ? true
+, buildServer ? true
+, buildServerGui ? true # if false builds a headless server
+, buildExtraTools ? false
+, enableKisTablet ? false # enable improved graphics tablet support
+}:
+
+with lib;
+
+let
+  clientDeps = [
+    qtbase
+    qtkeychain
+    qtmultimedia
+    qtsvg
+    qttools
+    libsecret
+    # optional:
+    giflib # gif animation export support
+    kdnssd # local server discovery with Zeroconf
+    libvpx # WebM video export
+    miniupnpc # automatic port forwarding
+  ];
+
+  serverDeps = [
+    # optional:
+    libmicrohttpd # HTTP admin api
+    libsodium # ext-auth support
+  ] ++ optional withSystemd systemd;
+
+  kisDeps = [
+    qtx11extras
+  ];
+
+  boolToFlag = bool:
+    if bool then "ON" else "OFF";
+
+in mkDerivation rec {
+  pname = "drawpile";
+  version = "2.1.20";
+
+  src = fetchFromGitHub {
+    owner = "drawpile";
+    repo = "drawpile";
+    rev = version;
+    sha256 = "sha256-HjGsaa2BYRNxaQP9e8Z7BkVlIKByC/ta92boGbYHRWQ=";
+  };
+
+  nativeBuildInputs = [ extra-cmake-modules ];
+
+  buildInputs = [
+    karchive
+  ]
+  ++ optionals buildClient      clientDeps
+  ++ optionals buildServer      serverDeps
+  ++ optionals enableKisTablet  kisDeps;
+
+  cmakeFlags = [
+    "-Wno-dev"
+    "-DINITSYS=systemd"
+    "-DCLIENT=${boolToFlag buildClient}"
+    "-DSERVER=${boolToFlag buildServer}"
+    "-DSERVERGUI=${boolToFlag buildServerGui}"
+    "-DTOOLS=${boolToFlag buildExtraTools}"
+    "-DKIS_TABLET=${boolToFlag enableKisTablet}"
+  ];
+
+  meta = {
+    description = "A collaborative drawing program that allows multiple users to sketch on the same canvas simultaneously";
+    homepage = "https://drawpile.net/";
+    downloadPage = "https://drawpile.net/download/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.unix;
+    broken = stdenv.isDarwin;
+  };
+}
+