summary refs log tree commit diff
diff options
context:
space:
mode:
authorForkk <forkk@forkk.net>2015-04-14 18:35:41 -0500
committerForkk <forkk@forkk.net>2015-04-15 22:04:39 -0500
commitf7865c29c26fc0800cc69a34e0b10326efe28d69 (patch)
tree54c9e11a67f137f340844a5e8eea369d3e5dfa4f
parent78eb702d35c9d1bdb5d2ee8bf8c67d9c6ffb4c41 (diff)
downloadnixlib-f7865c29c26fc0800cc69a34e0b10326efe28d69.tar
nixlib-f7865c29c26fc0800cc69a34e0b10326efe28d69.tar.gz
nixlib-f7865c29c26fc0800cc69a34e0b10326efe28d69.tar.bz2
nixlib-f7865c29c26fc0800cc69a34e0b10326efe28d69.tar.lz
nixlib-f7865c29c26fc0800cc69a34e0b10326efe28d69.tar.xz
nixlib-f7865c29c26fc0800cc69a34e0b10326efe28d69.tar.zst
nixlib-f7865c29c26fc0800cc69a34e0b10326efe28d69.zip
screencloud: init at 1.2.0
Added a package for Screencloud, a program for taking screenshots and
uploading them to various websites.

This package was a bit finicky due to some nonsense in the CMakeLists
file, but it seems to work properly.

The package also includes API keys for the screencloud.net website.
According to the author of the Arch Linux User Repo package for
screencloud, these keys are only used for usage tracking, so we should
be fine including them in the package here.
-rw-r--r--pkgs/applications/graphics/screencloud/default.nix74
-rw-r--r--pkgs/top-level/all-packages.nix4
2 files changed, 78 insertions, 0 deletions
diff --git a/pkgs/applications/graphics/screencloud/default.nix b/pkgs/applications/graphics/screencloud/default.nix
new file mode 100644
index 000000000000..3ccbf7a404d3
--- /dev/null
+++ b/pkgs/applications/graphics/screencloud/default.nix
@@ -0,0 +1,74 @@
+{ stdenv, fetchurl, fetchFromGitHub, cmake, qt4, quazip, qt-mobility, qxt, python, pycrypto, glib }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  name = "screencloud-${version}";
+  version = "1.2.0";
+
+  # API Keys. According to the author of the AUR package, these are only used
+  # for tracking usage.
+  consumerKey = "23e747012c68601f27ab69c6de129ed70552d55b6";
+  consumerSecret = "4701cb00c1bd357bbcae7c3d713dd216";
+  
+  src = fetchFromGitHub {
+    owner = "olav-st";
+    repo = "screencloud";
+    rev = "v${version}";
+    sha256 = "1s0dxa1sa37nvna5nfqdsp294810favj68qb7ghl78qna7zw0cim";
+  };
+
+  buildInputs = [ cmake qt4 quazip qt-mobility qxt python pycrypto ];
+
+  patchPhase = ''
+    # Required to make the configure script work. Normally, screencloud's
+    # CMakeLists file sets the install prefix to /opt by force. This is stupid
+    # and breaks nix, so we force it to install where we want. Please don't
+    # write CMakeLists files like this, as things like this are why we can't
+    # have nice things.
+    substituteInPlace "CMakeLists.txt" --replace "set(CMAKE_INSTALL_PREFIX \"/opt\")" ""
+  '';
+
+  enableParallelBuilding = true;
+
+  # We need to append /opt to our CMAKE_INSTALL_PREFIX, so we tell the Nix not
+  # to add the argument for us.
+  dontAddPrefix = true;
+
+  cmakeFlags = [
+    "-DQXT_QXTCORE_INCLUDE_DIR=${qxt}/include/QxtCore"
+    "-DQXT_QXTCORE_LIB_RELEASE=${qxt}/lib/libQxtCore.so"
+    "-DQXT_QXTGUI_INCLUDE_DIR=${qxt}/include/QxtGui"
+    "-DQXT_QXTGUI_LIB_RELEASE=${qxt}/lib/libQxtGui.so"
+    "-DCONSUMER_KEY_SCREENCLOUD=${consumerKey}"
+    "-DCONSUMER_SECRET_SCREENCLOUD=${consumerSecret}"
+  ];
+
+  sourceRoot = "screencloud-v${version}-src/screencloud";
+
+  preConfigure = ''
+    # This needs to be set in preConfigure instead of cmakeFlags in order to
+    # access the $prefix environment variable.
+    export cmakeFlags="-DCMAKE_INSTALL_PREFIX=$prefix/opt $cmakeFlags"
+  '';
+
+  # There are a number of issues with screencloud's installation. We need to add
+  # pycrypto to the PYTHONPATH so that the SFTP plugin will work properly; and
+  # we need to move the libPythonQt library into a folder where it can actually
+  # be found.
+  postInstall = ''
+    patchShebangs $prefix/opt/screencloud/screencloud.sh
+    substituteInPlace "$prefix/opt/screencloud/screencloud.sh" --replace "/opt" "$prefix/opt"
+    sed -i "2 i\export PYTHONPATH=$(toPythonPath ${pycrypto}):\$PYTHONPATH" "$prefix/opt/screencloud/screencloud.sh"
+    mkdir $prefix/bin
+    mkdir $prefix/lib
+    ln -s $prefix/opt/screencloud/screencloud.sh $prefix/bin/screencloud
+    ln -s $prefix/opt/screencloud/libPythonQt.so $prefix/lib/libPythonQt.so
+  '';
+
+  meta = {
+    homepage = https://screencloud.net/;
+    description = "Client for Screencloud, an easy to use screenshot sharing tool";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ forkk ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 0a9dbd4e18dc..17ca65b4e719 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -2645,6 +2645,10 @@ let
 
   screen-message = callPackage ../tools/X11/screen-message { };
 
+  screencloud = callPackage ../applications/graphics/screencloud {
+    quazip = quazip.override { qt = qt4; };
+  };
+
   scrot = callPackage ../tools/graphics/scrot { };
 
   scrolls = callPackage ../games/scrolls { };