nixpkgs/pkgs/applications/graphics/screencloud/default.nix
Forkk f7865c29c2 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.
2015-04-15 22:04:39 -05:00

74 lines
2.8 KiB
Nix

{ 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 ];
};
}