Merge pull request #330634 from r-ryantm/auto-update/circumflex
[NixPkgs.git] / pkgs / servers / hylafaxplus / default.nix
blob246ad636ceb4ce013ca1adac90e0ccfb0461598b
1 { stdenv
2 , lib
3 , fakeroot
4 , fetchurl
5 , libfaketime
6 , substituteAll
7 ## runtime dependencies
8 , coreutils
9 , file
10 , findutils
11 , gawk
12 , ghostscript
13 , gnugrep
14 , gnused
15 , libtiff
16 , libxcrypt
17 , openssl
18 , psmisc
19 , sharutils
20 , util-linux
21 , zlib
22 ## optional packages (using `null` disables some functionality)
23 , jbigkit ? null
24 , lcms2 ? null  # for colored faxes
25 , openldap ? null
26 , pam ? null
27 ## system-dependent settings that have to be hardcoded
28 , maxgid ? 65534  # null -> try to auto-detect (bad on linux)
29 , maxuid ? 65534  # null -> hardcoded value 60002
32 let
34   pname = "hylafaxplus";
35   version = "7.0.8";
36   hash = "sha512-6wTLVcaHpASy+2i+jeoJ1cM2aLgI5vznGrLd4NCkLHiOxlfCh/ASRaj2Nxt9ZZ5NN/deEwf9tNSZ7MkFZHVsqA==";
38   configSite = substituteAll {
39     name = "${pname}-config.site";
40     src = ./config.site;
41     config_maxgid = lib.optionalString (maxgid!=null) ''CONFIG_MAXGID=${builtins.toString maxgid}'';
42     ghostscript_version = ghostscript.version;
43     out_ = "@out@";  # "out" will be resolved in post-install.sh
44     inherit coreutils ghostscript libtiff;
45   };
47   postPatch = substituteAll {
48     name = "${pname}-post-patch.sh";
49     src = ./post-patch.sh;
50     inherit configSite;
51     maxuid = lib.optionalString (maxuid!=null) (builtins.toString maxuid);
52     faxcover_binpath = lib.makeBinPath
53       [stdenv.shellPackage coreutils];
54     faxsetup_binpath = lib.makeBinPath
55       [stdenv.shellPackage coreutils findutils gnused gnugrep gawk];
56   };
58   postInstall = substituteAll {
59     name = "${pname}-post-install.sh";
60     src = ./post-install.sh;
61     inherit fakeroot libfaketime;
62   };
66 stdenv.mkDerivation {
67   inherit pname version;
68   src = fetchurl {
69     url = "mirror://sourceforge/hylafax/hylafax-${version}.tar.gz";
70     inherit hash;
71   };
72   patches = [
73     # adjust configure check to work with libtiff > 4.1
74     ./libtiff-4.patch
75   ];
76   # Note that `configure` (and maybe `faxsetup`) are looking
77   # for a couple of standard binaries in the `PATH` and
78   # hardcode their absolute paths in the new package.
79   buildInputs = [
80     file  # for `file` command
81     ghostscript
82     libtiff
83     libxcrypt
84     openssl
85     psmisc  # for `fuser` command
86     sharutils  # for `uuencode` command
87     util-linux  # for `agetty` command
88     zlib
89     jbigkit  # optional
90     lcms2  # optional
91     openldap  # optional
92     pam  # optional
93   ];
94   # Disable parallel build, errors:
95   #  *** No rule to make target '../util/libfaxutil.so.7.0.4', needed by 'faxmsg'.  Stop.
96   enableParallelBuilding = false;
98   postPatch = ". ${postPatch}";
99   dontAddPrefix = true;
100   postInstall = ". ${postInstall}";
101   postInstallCheck = ". ${./post-install-check.sh}";
102   meta = {
103     changelog = "https://hylafax.sourceforge.io/news/${version}.php";
104     description = "enterprise-class system for sending and receiving facsimiles";
105     downloadPage = "https://hylafax.sourceforge.io/download.php";
106     homepage = "https://hylafax.sourceforge.io";
107     license = lib.licenses.bsd3;
108     maintainers = [ lib.maintainers.yarny ];
109     platforms = lib.platforms.linux;
110     longDescription = ''
111       HylaFAX is a scalable and time-proven solution
112       for sending and receiving facsimiles via modem(s).
113       It is based on a client-server architecture,
114       loosely comparable to CUPS:
115       A client connects to a server to issue outbound jobs,
116       the server then chooses a modem to
117       connect to the receiving fax machine.
118       The server notifies users about their
119       outbound jobs as well as about inbound jobs.
120       HylaFAX+ is a fork of HylaFAX that -- in general --
121       contains a superset of the features of
122       HylaFAX and produces releases more often.
123       This package contains the client
124       and the server parts of HylaFAX+.
125     '';
126   };