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
|
{ stdenv
, lib
, fakeroot
, fetchurl
, libfaketime
, substituteAll
## runtime dependencies
, coreutils
, file
, findutils
, gawk
, ghostscript
, gnugrep
, gnused
, libtiff
, psmisc
, sharutils
, utillinux
, zlib
## optional packages (using `null` disables some functionality)
, jbigkit ? null
, lcms2 ? null # for colored faxes
, openldap ? null
, pam ? null
## system-dependent settings that have to be hardcoded
, maxgid ? 65534 # null -> try to auto-detect (bad on linux)
, maxuid ? 65534 # null -> hardcoded value 60002
}:
let
name = "hylafaxplus-${version}";
version = "7.0.0";
sha256 = "1ryqd8mcaj536pxykja3qzwgd985ad1nn5zfqr1wksf2mzqvwscy";
configSite = substituteAll {
name = "hylafaxplus-config.site";
src = ./config.site;
config_maxgid = lib.optionalString (maxgid!=null) ''CONFIG_MAXGID=${builtins.toString maxgid}'';
ghostscript_version = ghostscript.version;
out_ = "@out@"; # "out" will be resolved in post-install.sh
inherit coreutils ghostscript libtiff;
};
postPatch = substituteAll {
name = "hylafaxplus-post-patch.sh";
src = ./post-patch.sh;
inherit configSite;
maxuid = lib.optionalString (maxuid!=null) (builtins.toString maxuid);
faxcover_binpath = lib.makeBinPath
[stdenv.shellPackage coreutils];
faxsetup_binpath = lib.makeBinPath
[stdenv.shellPackage coreutils findutils gnused gnugrep gawk];
};
postInstall = substituteAll {
name = "hylafaxplus-post-install.sh";
src = ./post-install.sh;
inherit fakeroot libfaketime;
};
in
stdenv.mkDerivation {
inherit name version;
src = fetchurl {
url = "mirror://sourceforge/hylafax/hylafax-${version}.tar.gz";
inherit sha256;
};
# Note that `configure` (and maybe `faxsetup`) are looking
# for a couple of standard binaries in the `PATH` and
# hardcode their absolute paths in the new package.
buildInputs = [
file # for `file` command
ghostscript
libtiff
psmisc # for `fuser` command
sharutils # for `uuencode` command
utillinux # for `agetty` command
zlib
jbigkit # optional
lcms2 # optional
openldap # optional
pam # optional
];
postPatch = ''. ${postPatch}'';
dontAddPrefix = true;
postInstall = ''. ${postInstall}'';
postInstallCheck = ''. ${./post-install-check.sh}'';
meta = {
description = "enterprise-class system for sending and receiving facsimiles";
downloadPage = https://hylafax.sourceforge.io/download.php;
homepage = https://hylafax.sourceforge.io;
license = lib.licenses.bsd3;
maintainers = [ lib.maintainers.yarny ];
platforms = lib.platforms.linux;
longDescription = ''
HylaFAX is a scalable and time-proven solution
for sending and receiving facsimiles via modem(s).
It is based on a client-server architecture,
loosely comparable to CUPS:
A client connects to a server to issue outbound jobs,
the server then chooses a modem to
connect to the receiving fax machine.
The server notifies users about their
outbound jobs as well as about inbound jobs.
HylaFAX+ is a fork of HylaFAX that -- in general --
contains a superset of the features of
HylaFAX and produces releases more often.
This package contains the client
and the server parts of HylaFAX+.
'';
};
}
|