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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
{
lib,
stdenv,
fetchFromGitHub,
udev,
pkg-config,
glib,
xmlto,
wrapGAppsHook3,
docbook_xml_dtd_412,
docbook_xsl,
libxml2,
desktop-file-utils,
libusb1,
cups,
gdk-pixbuf,
pango,
atk,
libnotify,
gobject-introspection,
libsecret,
packagekit,
libcupsfilters,
gettext,
libtool,
autoconf-archive,
python3Packages,
autoreconfHook,
bash,
fetchpatch,
}:
stdenv.mkDerivation rec {
pname = "system-config-printer";
version = "1.5.18";
src = fetchFromGitHub {
owner = "openPrinting";
repo = pname;
rev = "v${version}";
sha256 = "sha256-l3HEnYycP56vZWREWkAyHmcFgtu09dy4Ds65u7eqNZk=";
};
prePatch = ''
# for automake
touch README ChangeLog
# for tests
substituteInPlace Makefile.am --replace /bin/bash ${bash}/bin/bash
'';
patches = [
./detect_serverbindir.patch
# fix typeerror, remove on next release
(fetchpatch {
url = "https://github.com/OpenPrinting/system-config-printer/commit/399b3334d6519639cfe7f1c0457e2475b8ee5230.patch";
sha256 = "sha256-JCdGmZk2vRn3X1BDxOJaY3Aw8dr0ODVzi0oY20ZWfRs=";
excludes = [ "NEWS" ];
})
# switch to pep517 build tools
./pep517.patch
# FIXME: remove when gettext is fixed
./gettext-0.25.patch
];
buildInputs = [
glib
udev
libusb1
cups
python3Packages.python
libnotify
gdk-pixbuf
pango
atk
packagekit
libsecret
];
nativeBuildInputs = [
pkg-config
gettext
libtool
autoconf-archive
xmlto
libxml2
docbook_xml_dtd_412
docbook_xsl
desktop-file-utils
python3Packages.wrapPython
python3Packages.build
python3Packages.installer
python3Packages.setuptools
python3Packages.wheel
wrapGAppsHook3
autoreconfHook
gobject-introspection
];
pythonPath =
with python3Packages;
requiredPythonModules [
pycups
pycurl
dbus-python
pygobject3
pycairo
pysmbc
];
configureFlags = [
"--with-udev-rules"
"--with-udevdir=${placeholder "out"}/etc/udev"
"--with-systemdsystemunitdir=${placeholder "out"}/etc/systemd/system"
];
stripDebugList = [
"bin"
"lib"
"etc/udev"
];
doCheck = true;
doInstallCheck = true;
postInstall = ''
buildPythonPath "$out ''${pythonPath[*]}"
gappsWrapperArgs+=(
--prefix PATH : "$program_PATH"
--set CUPS_DATADIR "${libcupsfilters}/share/cups"
)
find $out/share/system-config-printer -name \*.py -type f -perm -0100 -print0 | while read -d "" f; do
patchPythonScript "$f"
done
patchPythonScript $out/etc/udev/udev-add-printer
substituteInPlace $out/etc/udev/rules.d/70-printers.rules \
--replace "udev-configure-printer" "$out/etc/udev/udev-configure-printer"
'';
meta = {
homepage = "https://github.com/openprinting/system-config-printer";
platforms = lib.platforms.linux;
license = lib.licenses.gpl2Plus;
};
}
|