From f7865c29c26fc0800cc69a34e0b10326efe28d69 Mon Sep 17 00:00:00 2001 From: Forkk Date: Tue, 14 Apr 2015 18:35:41 -0500 Subject: [PATCH] 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. --- .../graphics/screencloud/default.nix | 74 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 + 2 files changed, 78 insertions(+) create mode 100644 pkgs/applications/graphics/screencloud/default.nix 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 { };