summary refs log tree commit diff
path: root/pkgs/misc/cups/drivers/googlecloudprint/default.nix
blob: 9b612c43a000704dffda5c9856c3a5974c33fe27 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
{ stdenv, lib, fetchFromGitHub, python2, python2Packages, file, makeWrapper, cups }:

# Setup instructions can be found at https://github.com/simoncadman/CUPS-Cloud-Print#configuration
# So the nix version is something like:
# nix run nixpkgs.cups-googlecloudprint -c sudo setupcloudprint
# nix run nixpkgs.cups-googlecloudprint -c sudo listcloudprinters

let pythonEnv = python2.buildEnv.override {
  extraLibs = with python2Packages; [
    six
    httplib2
    pycups
  ];
};

in stdenv.mkDerivation rec {
  pname = "cups-googlecloudprint";
  version = "20160502";

  src = fetchFromGitHub {
    owner  = "simoncadman";
    repo   = "CUPS-Cloud-Print";
    rev    = version;
    sha256 = "0760i12w7jrhq7fsgyz3yqla5cvpjb45n6m2jz96wsy3p3xf6dzz";
  };

  buildInputs = [ cups makeWrapper ];

  cupsgroup = "nonexistantgroup";
  NOPERMS = 1;

  postConfigure = ''
    substituteInPlace Makefile --replace "${cups}" "$out"
  '';

  postInstall = ''
    pushd "$out"
    for s in lib/cups/backend/gcp lib/cups/driver/cupscloudprint
    do
      echo "Wrapping $s..."
      wrapProgram "$out/$s" --set PATH "${lib.makeBinPath [pythonEnv file]}" --prefix PYTHONPATH : "$out/share/cloudprint-cups"
    done

    mkdir bin

    for s in share/cloudprint-cups/*.py
    do
      if [ -x "$s" ] # Only wrapping those Python scripts marked as executable
      then
        o="bin/$(echo $s | sed 's,share/cloudprint-cups/\(.*\).py,\1,')"
        echo "Wrapping $o -> $s..."
        makeWrapper "$out/$s" "$o" --set PATH "${lib.makeBinPath [pythonEnv file]}" --prefix PYTHONPATH : "$out/share/cloudprint-cups"
      fi
    done
    popd
  '';

  meta = with stdenv.lib; {
    description = "Google Cloud Print driver for CUPS, allows printing to printers hosted on Google Cloud Print";
    homepage    = "http://ccp.niftiestsoftware.com";
    platforms   = platforms.linux;
    license     = licenses.gpl3;
  };
}