nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 clangStdenv,
4 fetchFromGitHub,
5 fetchpatch,
6 libxml2,
7 openssl,
8 openldap,
9 mariadb,
10 libmysqlclient,
11 libpq,
12 gnustep-make,
13 gnustep-base,
14}:
15
16clangStdenv.mkDerivation rec {
17 pname = "sope";
18 version = "5.12.3";
19
20 src = fetchFromGitHub {
21 owner = "Alinto";
22 repo = "sope";
23 rev = "SOPE-${version}";
24 hash = "sha256-GeJ1o8Juw7jm3/pkfuMqVpfMxKewU6hQmBoPmb0HgTc=";
25 };
26
27 patches = [
28 (fetchpatch {
29 name = "CVE-2025-53603.patch";
30 url = "https://github.com/Alinto/sope/commit/e954ab0cd254dc1837af690329b04504410cbe63.patch";
31 hash = "sha256-F/dexphHH8S90njmTDvm+NZChbKekv78tUgB+VFOsSY=";
32 })
33 ];
34
35 nativeBuildInputs = lib.optional (libpq != null) [ libpq.pg_config ];
36 buildInputs = [
37 gnustep-base
38 libxml2
39 openssl
40 ]
41 ++ lib.optional (openldap != null) openldap
42 ++ lib.optionals (mariadb != null) [
43 libmysqlclient
44 mariadb
45 ]
46 ++ lib.optional (libpq != null) libpq;
47
48 # Configure directories where files are installed to. Everything is automatically
49 # put into $out (thanks GNUstep) apart from the makefiles location which is where
50 # makefiles are read from during build but also where the SOPE makefiles are
51 # installed to in the install phase. We move them over after the installation.
52 preConfigure = ''
53 mkdir -p /build/Makefiles
54 ln -s ${gnustep-make}/share/GNUstep/Makefiles/* /build/Makefiles
55 cat <<EOF > /build/GNUstep.conf
56 GNUSTEP_MAKEFILES=/build/Makefiles
57 EOF
58 '';
59
60 configureFlags = [
61 "--prefix="
62 "--disable-debug"
63 "--enable-xml"
64 "--with-ssl=ssl"
65 ]
66 ++ lib.optional (openldap != null) "--enable-openldap"
67 ++ lib.optional (mariadb != null) "--enable-mysql"
68 ++ lib.optional (libpq != null) "--enable-postgresql";
69
70 env = {
71 GNUSTEP_CONFIG_FILE = "/build/GNUstep.conf";
72 NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=int-conversion";
73 };
74
75 # Move over the makefiles (see comment over preConfigure)
76 postInstall = ''
77 mkdir -p $out/share/GNUstep/Makefiles
78 find /build/Makefiles -mindepth 1 -maxdepth 1 -not -type l -exec cp -r '{}' $out/share/GNUstep/Makefiles \;
79 '';
80
81 meta = {
82 description = "Extensive set of frameworks which form a complete Web application server environment";
83 license = lib.licenses.lgpl2Plus;
84 homepage = "https://github.com/Alinto/sope";
85 platforms = lib.platforms.linux;
86 maintainers = with lib.maintainers; [ jceb ];
87 knownVulnerabilities = [ ];
88 };
89}